{"version":3,"sources":["../node_modules/react/index.js","../node_modules/prop-types/index.js","../node_modules/@luma.gl/gltools/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../../src/context/context.js","../../../src/index.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/lodash/isNil.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/lodash/isFunction.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/gl-matrix/esm/common.js","../node_modules/@material-ui/styles/esm/getThemeProps/getThemeProps.js","../node_modules/@material-ui/styles/esm/withStyles/withStyles.js","../node_modules/@material-ui/core/esm/styles/withStyles.js","../node_modules/classnames/index.js","../../../../src/utils/utils.js","../../../../src/utils/device-pixels.js","../../../../src/utils/webgl-checks.js","../../../../src/utils/index.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../../src/utils/log.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../src/lib/constants.js","../node_modules/gl-matrix/esm/mat4.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/lodash/isArray.js","../../../../src/utils/assert.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../../src/lib/common.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@material-ui/core/esm/utils/capitalize.js","../node_modules/webpack/buildin/global.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../src/math-utils.js","../../../src/assert.js","../../../src/web-mercator-utils.js","../../../src/viewport.js","../../../src/fit-bounds.js","../../../src/web-mercator-viewport.js","../node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/inherits.js","../../../src/normalize-viewport-props.js","../../../src/fly-to-viewport.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/core-js/internals/export.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@material-ui/core/esm/styles/colorManipulator.js","../node_modules/probe.gl/env.js","../../../../src/lib/validators.js","../node_modules/react-dom/index.js","../node_modules/@material-ui/core/esm/utils/useForkRef.js","../../../../src/debug/index.js","../../../../src/lifecycle/constants.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../../../../src/classes/buffer.js","../node_modules/process/browser.js","../node_modules/@luma.gl/engine/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../src/classes/resource.js","../node_modules/jss/dist/jss.esm.js","../node_modules/gl-matrix/esm/vec2.js","../node_modules/lodash/get.js","../node_modules/lodash/isObject.js","../node_modules/@luma.gl/engine/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@luma.gl/engine/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/gl-matrix/esm/vec3.js","../node_modules/core-js/internals/global.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/history/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/axios/lib/utils.js","../../../../src/classes/texture.js","../node_modules/lodash/isEqual.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../../../../src/utils/globals.js","../../../../src/env/globals.js","../node_modules/@material-ui/core/esm/styles/transitions.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@material-ui/core/esm/utils/useEventCallback.js","../node_modules/probe.gl/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/construct.js","../../../../src/classes/accessor.js","../../../../src/utils/math-utils.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/@material-ui/core/esm/transitions/utils.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@luma.gl/gltools/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@luma.gl/gltools/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@luma.gl/gltools/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@luma.gl/gltools/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@luma.gl/gltools/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@luma.gl/gltools/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@luma.gl/gltools/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@luma.gl/gltools/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../../src/state-tracker/webgl-parameter-tables.js","../node_modules/lodash/_root.js","../node_modules/@material-ui/core/esm/styles/useTheme.js","../../../../src/state-tracker/track-context-state.js","../node_modules/@material-ui/core/esm/styles/defaultTheme.js","../../../../src/classes/framebuffer.js","../../../../src/transitions/transition.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/recompose/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/recompose/dist/Recompose.esm.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@material-ui/core/esm/utils/setRef.js","../../../../src/utils/iterable-utils.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/lodash/max.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/core-js/internals/fails.js","../node_modules/lodash/_baseIteratee.js","../node_modules/gl-matrix/esm/vec4.js","../../../../src/webgl-utils/attribute-utils.js","../../../../../src/lib/loader-utils/normalize-loader.js","../../../../src/utils/typed-array-manager.js","../node_modules/lodash/isString.js","../../../../src/classes/texture-formats.js","../node_modules/recharts/es6/polyfill.js","../node_modules/react-smooth/es6/setRafTimeout.js","../node_modules/react-smooth/es6/AnimateManager.js","../node_modules/react-smooth/es6/util.js","../node_modules/react-smooth/es6/easing.js","../node_modules/react-smooth/es6/configUpdate.js","../node_modules/react-smooth/es6/Animate.js","../node_modules/react-smooth/es6/AnimateGroupChild.js","../node_modules/react-smooth/es6/AnimateGroup.js","../node_modules/react-smooth/es6/index.js","../node_modules/recharts/es6/util/DataUtils.js","../node_modules/recharts/es6/component/DefaultTooltipContent.js","../node_modules/recharts/es6/util/ShallowEqual.js","../node_modules/recharts/es6/util/ReactUtils.js","../node_modules/recharts/es6/component/Tooltip.js","../node_modules/raf-schd/dist/raf-schd.esm.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/now.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/toNumber.js","../node_modules/lodash-es/debounce.js","../node_modules/lodash-es/throttle.js","../node_modules/react-resize-detector/lib/esm/lib/utils.js","../node_modules/react-resize-detector/lib/esm/components/ChildWrapper.js","../node_modules/react-resize-detector/lib/esm/components/ResizeDetector.js","../node_modules/react-resize-detector/lib/esm/index.js","../node_modules/recharts/es6/util/LogUtils.js","../node_modules/recharts/es6/component/ResponsiveContainer.js","../node_modules/d3-shape/src/noop.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/linearClosed.js","../node_modules/d3-shape/src/curve/linear.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-path/src/path.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/area.js","../node_modules/recharts/es6/util/types.js","../node_modules/recharts/es6/shape/Curve.js","../node_modules/recharts/es6/shape/Dot.js","../node_modules/recharts/es6/container/Layer.js","../node_modules/recharts/es6/util/DOMUtils.js","../node_modules/recharts/es6/component/Text.js","../node_modules/d3-scale/node_modules/d3-array/src/range.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-scale/node_modules/d3-array/src/ticks.js","../node_modules/d3-scale/node_modules/d3-array/src/ascending.js","../node_modules/d3-scale/node_modules/d3-array/src/bisector.js","../node_modules/d3-scale/node_modules/d3-array/src/bisect.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/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/exponent.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/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-scale/src/linear.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-scale/node_modules/d3-array/src/max.js","../node_modules/d3-scale/node_modules/d3-array/src/min.js","../node_modules/d3-scale/node_modules/d3-array/src/quickselect.js","../node_modules/d3-scale/node_modules/d3-array/src/number.js","../node_modules/d3-scale/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/interval.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcYear.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-time/src/utcMonth.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcMinute.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-interpolate/src/piecewise.js","../node_modules/d3-scale/src/diverging.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/recharts/es6/container/Surface.js","../node_modules/d3-shape/src/math.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/recharts/es6/shape/Symbols.js","../node_modules/d3-shape/src/symbol.js","../node_modules/recharts/es6/component/DefaultLegendContent.js","../node_modules/recharts/es6/component/Legend.js","../node_modules/recharts/es6/util/ChartUtils.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/recharts/es6/util/PolarUtils.js","../node_modules/recharts/es6/component/Label.js","../node_modules/recharts/es6/component/LabelList.js","../node_modules/recharts/es6/cartesian/ErrorBar.js","../node_modules/recharts/es6/cartesian/Line.js","../node_modules/recharts/es6/cartesian/Area.js","../node_modules/recharts/es6/cartesian/XAxis.js","../node_modules/recharts/es6/cartesian/YAxis.js","../node_modules/recharts/es6/shape/Cross.js","../node_modules/recharts/es6/shape/Sector.js","../node_modules/recharts/es6/shape/Rectangle.js","../node_modules/recharts/es6/cartesian/CartesianAxis.js","../node_modules/recharts/es6/util/CssPrefixUtils.js","../node_modules/recharts/es6/cartesian/Brush.js","../node_modules/recharts/es6/util/IfOverflowMatches.js","../node_modules/recharts/es6/util/CartesianUtils.js","../node_modules/recharts/es6/cartesian/ReferenceDot.js","../node_modules/recharts/es6/cartesian/ReferenceLine.js","../node_modules/recharts/es6/cartesian/ReferenceArea.js","../node_modules/recharts/es6/util/DetectReferenceElementsDomain.js","../node_modules/recharts/es6/util/Events.js","../node_modules/recharts/es6/chart/generateCategoricalChart.js","../node_modules/recharts/es6/component/Cell.js","../node_modules/recharts/es6/cartesian/Bar.js","../node_modules/recharts/es6/cartesian/ZAxis.js","../node_modules/recharts/es6/cartesian/Scatter.js","../node_modules/recharts/es6/chart/ComposedChart.js","../node_modules/recharts/es6/index.js","../../../../src/webgl-utils/webgl-checks.js","../node_modules/core-js/internals/has.js","../node_modules/lodash/isObjectLike.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../../../../src/state-tracker/unified-parameter-api.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@material-ui/system/esm/merge.js","../../../../src/utils/flatten.js","../node_modules/@material-ui/core/esm/List/ListContext.js","../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/withRouter.js","../../modules/hooks.js","../node_modules/raf/index.js","../../../../src/webgl-utils/constants-to-keys.js","../node_modules/buffer/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/core-js/internals/is-object.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_getNative.js","../../../../src/lib/assert.js","../../../../../src/modules/fp32/fp32.js","../../../../../src/shaderlib/project/project.glsl.js","../../../../../src/shaderlib/project/project.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/lodash/isNaN.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/is-in-browser/dist/module.js","../../../../src/classes/renderbuffer-formats.js","../../../../src/classes/renderbuffer.js","../../../../src/webgl-utils/typed-array-utils.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/core-js/internals/descriptors.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/identity.js","../node_modules/notistack/build/index.js","../node_modules/@material-ui/styles/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/url/url.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/lodash/isNumber.js","../node_modules/lodash/sortBy.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../../../../src/utils/load-file.js","../../../../src/classes/texture-2d.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@material-ui/core/esm/utils/ownerDocument.js","../node_modules/@material-ui/core/esm/utils/createChainedFunction.js","../node_modules/@luma.gl/shadertools/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../src/lib/gl-matrix-extras.js","../../../../../src/lib/utils/globals.js","../node_modules/lodash/uniqBy.js","../node_modules/lodash/range.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../../src/polyfill/get-parameter-polyfill.js","../../../../src/polyfill/polyfill-table.js","../node_modules/notistack/build/utils/constants.js","../node_modules/core-util-is/lib/util.js","../node_modules/probe.gl/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/an-object.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_arrayMap.js","../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../../../../src/utils/hi-res-timestamp.js","../node_modules/fbjs/lib/shallowEqual.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../src/utils/memoize.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/hammerjs/hammer.js","../../../src/init.js","../../../../../src/lib/env-utils/assert.js","../node_modules/lodash/min.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/inherits.js","../../../../src/utils/style-utils.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../../src/utils/transition/transition-interpolator.js","../../../../../src/utils/transition/transition-utils.js","../../../../../src/utils/transition/viewport-fly-to-interpolator.js","../../../../../src/utils/transition/linear-interpolator.js","../../../../src/utils/map-state.js","../../../../src/utils/map-constraints.js","../../../../src/components/map-context.js","../../../../src/components/static-map.js","../../../../src/utils/transition-manager.js","../../../../src/utils/map-controller.js","../../../../src/utils/debounce.js","../../../../src/utils/deprecate-warn.js","../../../../src/components/interactive-map.js","../../../../src/utils/deep-equal.js","../../../../src/components/source.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../src/components/layer.js","../../../../src/components/base-control.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/react-map-gl/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../../../../src/components/draggable-control.js","../../../../src/components/marker.js","../../../../src/utils/dynamic-position.js","../../../../src/components/popup.js","../../../../src/utils/geolocate-utils.js","../../../../src/components/fullscreen-control.js","../../../../src/components/geolocate-control.js","../../../../src/components/navigation-control.js","../../../../src/utils/version.js","../../../../src/components/scale-control.js","../../../../src/overlays/canvas-overlay.js","../../../../src/overlays/html-overlay.js","../../../../src/overlays/svg-overlay.js","../node_modules/@material-ui/core/esm/SvgIcon/index.js","../node_modules/react-is/index.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/process-nextick-args/index.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/to-integer.js","../node_modules/core-js/internals/math-expm1.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/keys.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/@material-ui/core/esm/styles/createStyles.js","../node_modules/@material-ui/core/esm/styles/cssUtils.js","../node_modules/@material-ui/core/esm/styles/responsiveFontSizes.js","../node_modules/@material-ui/styles/esm/withTheme/withTheme.js","../node_modules/@material-ui/core/esm/styles/withTheme.js","../node_modules/@material-ui/styles/esm/ServerStyleSheets/ServerStyleSheets.js","../node_modules/@material-ui/core/esm/styles/index.js","../node_modules/events/events.js","../node_modules/@material-ui/core/esm/styles/createBreakpoints.js","../node_modules/@material-ui/core/esm/styles/createMixins.js","../node_modules/@material-ui/core/esm/colors/common.js","../node_modules/@material-ui/core/esm/colors/grey.js","../node_modules/@material-ui/core/esm/colors/indigo.js","../node_modules/@material-ui/core/esm/colors/pink.js","../node_modules/@material-ui/core/esm/colors/red.js","../node_modules/@material-ui/core/esm/colors/orange.js","../node_modules/@material-ui/core/esm/colors/blue.js","../node_modules/@material-ui/core/esm/colors/green.js","../node_modules/@material-ui/core/esm/styles/createPalette.js","../node_modules/@material-ui/core/esm/styles/createTypography.js","../node_modules/@material-ui/core/esm/styles/shadows.js","../node_modules/@material-ui/core/esm/styles/shape.js","../node_modules/@material-ui/core/esm/styles/createSpacing.js","../node_modules/@material-ui/core/esm/styles/zIndex.js","../node_modules/@material-ui/core/esm/styles/createMuiTheme.js","../node_modules/@material-ui/styles/esm/styled/styled.js","../node_modules/@material-ui/core/esm/styles/styled.js","../node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@material-ui/system/esm/breakpoints.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@material-ui/core/esm/SvgIcon/SvgIcon.js","../node_modules/@material-ui/styles/esm/ThemeProvider/nested.js","../node_modules/@material-ui/core/esm/utils/focusVisible.js","../node_modules/querystring-es3/index.js","../../../../../src/shaderlib/project/viewport-uniforms.js","../../../../src/env/is-browser.js","../../../../src/env/is-electron.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@luma.gl/engine/node_modules/@babel/runtime/helpers/esm/objectSpread.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@material-ui/icons/esm/utils/createSvgIcon.js","../node_modules/react-smooth/node_modules/react-transition-group/index.js","../node_modules/lodash/every.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/@material-ui/core/esm/ExpansionPanel/ExpansionPanelContext.js","../../../../../src/lib/attribute/shader-attribute.js","../../../../../src/lib/attribute/data-column.js","../../../../../src/lib/attribute/gl-utils.js","../../../../src/utils/range.js","../../../../src/utils/array-utils.js","../../../../../src/lib/attribute/attribute-transition-utils.js","../../../../../src/lib/attribute/attribute.js","../../../../src/utils/shader-utils.js","../../../../src/transform/buffer-transform.js","../../../../src/glsl-utils/get-shader-version.js","../../../../../src/modules/transform/transform.js","../../../../src/transform/transform-shader-utils.js","../../../../src/transform/texture-transform.js","../../../../src/transform/transform.js","../../../../src/transitions/gpu-interpolation-transition.js","../../../../../src/lib/attribute/attribute-transition-manager.js","../../../../src/transitions/gpu-spring-transition.js","../../../../../src/lib/attribute/attribute-manager.js","../../../../src/transitions/cpu-interpolation-transition.js","../../../../src/transitions/cpu-spring-transition.js","../../../../src/lib/uniform-transition-manager.js","../../../../src/lifecycle/props.js","../../../../src/utils/count.js","../../../../src/utils/shader.js","../../../../../src/shaderlib/project/project-functions.js","../../../../src/lifecycle/prop-types.js","../../../../src/lifecycle/create-props.js","../node_modules/@babel/runtime/helpers/esm/asyncIterator.js","../../../../src/lifecycle/component-state.js","../../../../src/lifecycle/component.js","../../../../src/lib/layer-state.js","../../../../src/javascript-utils/is-type.js","../../../../../src/lib/path-utils/file-aliases.js","../../../../../src/lib/fetch/fetch-file.browser.js","../../../../../src/lib/fetch/fetch-file.js","../../../../src/lib/validate-loader-version.js","../../../../../src/lib/loader-utils/loggers.js","../../../../../src/lib/loader-utils/merge-options.js","../node_modules/@babel/runtime/helpers/esm/AwaitValue.js","../node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js","../../../../../src/lib/loader-utils/check-errors.js","../../../../../src/lib/loader-utils/get-data.js","../../../../../src/lib/loader-utils/get-loader-context.js","../../../../src/javascript-utils/binary-utils.js","../../../../src/worker-utils/get-worker-url.js","../../../../src/worker-utils/get-transfer-list.js","../../../../src/worker-utils/worker-thread.js","../../../../src/worker-utils/worker-pool.js","../../../../src/worker-utils/worker-farm.js","../../../../../src/lib/loader-utils/parse-with-worker.js","../../../../src/lib/select-loader.js","../../../../src/lib/parse.js","../../../../src/lib/load.js","../../../../src/lib/layer.js","../node_modules/mjolnir.js/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/mjolnir.js/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/mjolnir.js/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/mjolnir.js/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/mjolnir.js/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/mjolnir.js/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../src/utils/hammer-overrides.js","../../../../src/utils/hammer.browser.js","../../../src/constants.js","../../../../src/inputs/wheel-input.js","../../../../src/inputs/move-input.js","../../../../src/inputs/key-input.js","../../../../src/inputs/contextmenu-input.js","../node_modules/mjolnir.js/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../src/utils/event-utils.js","../../../../src/utils/event-registrar.js","../../../src/event-manager.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/@luma.gl/shadertools/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@luma.gl/shadertools/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@luma.gl/shadertools/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@luma.gl/shadertools/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../../../../../src/classes/base/math-array.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/symbol-observable/es/index.js","../../../../src/mapbox/mapbox.js","../node_modules/reduce-css-calc/index.js","../node_modules/notistack/build/SnackbarContext.js","../node_modules/webpack/buildin/module.js","../node_modules/readable-stream/node_modules/safe-buffer/index.js","../node_modules/probe.gl/node_modules/@babel/runtime/helpers/typeof.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/set-global.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/math-sign.js","../node_modules/core-js/internals/string-trim.js","../node_modules/core-js/internals/whitespaces.js","../node_modules/lodash/eq.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/isLength.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_isKey.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/stream-http/index.js","../node_modules/lodash/debounce.js","../node_modules/change-emitter/lib/index.js","../../../../src/classes/clear.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/regenerator/index.js","../../../../src/features/webgl-features-table.js","../node_modules/@luma.gl/engine/node_modules/@babel/runtime/regenerator/index.js","../node_modules/mini-create-react-context/node_modules/@babel/runtime/helpers/inheritsLoose.js","../node_modules/path-to-regexp/index.js","../node_modules/recharts-scale/lib/index.js","../node_modules/axios/index.js","../../../../src/lib/inject-shader.js","../../../../src/modules/module-injectors.js","../../../../src/webgl-utils/format-utils.js","../../../../src/classes/copy-and-blit.js","../node_modules/@material-ui/core/esm/Paper/Paper.js","../node_modules/@material-ui/core/esm/NoSsr/NoSsr.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@material-ui/core/esm/ButtonBase/Ripple.js","../node_modules/@material-ui/core/esm/ButtonBase/TouchRipple.js","../node_modules/@material-ui/core/esm/ButtonBase/ButtonBase.js","../node_modules/object-assign/index.js","../node_modules/@material-ui/core/esm/styles/makeStyles.js","../node_modules/@material-ui/core/esm/SnackbarContent/SnackbarContent.js","../node_modules/@material-ui/core/esm/Collapse/index.js","../node_modules/@material-ui/core/esm/Collapse/Collapse.js","../node_modules/@material-ui/core/esm/SnackbarContent/index.js","../node_modules/notistack/build/utils/warning.js","../node_modules/timers-browserify/main.js","../node_modules/mapbox-gl/dist/mapbox-gl.js","../node_modules/isarray/index.js","../node_modules/stream-http/lib/capability.js","../node_modules/stream-http/lib/response.js","../node_modules/readable-stream/readable-browser.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/readable-stream/lib/_stream_transform.js","../../../../../src/shaderlib/project32/project32.js","../../../../src/polyfill/polyfill-context.js","../node_modules/@material-ui/core/node_modules/react-is/index.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/redefine.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/math-log1p.js","../node_modules/core-js/internals/native-symbol.js","../node_modules/core-js/internals/is-integer.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/_arrayIncludesWith.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_baseForOwn.js","../node_modules/react-smooth/node_modules/react-transition-group/Transition.js","../node_modules/react-smooth/node_modules/react-transition-group/utils/PropTypes.js","../node_modules/react-smooth/node_modules/react-transition-group/TransitionGroup.js","../node_modules/lodash/_baseFlatten.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/_baseExtremum.js","../node_modules/decimal.js-light/decimal.js","../node_modules/recharts-scale/lib/util/utils.js","../node_modules/lodash/toFinite.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@math.gl/core/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../../src/classes/base/matrix.js","../../../../src/classes/matrix4.js","../../../../../src/modules/picking/picking.js","../../../../../src/shaderlib/picking/picking.js","../../../../../src/classes/base/vector.js","../../../../src/classes/vector3.js","../../node_modules/tslib/tslib.es6.js","../../node_modules/core-js/internals/global.js","../../node_modules/core-js/internals/fails.js","../../node_modules/core-js/internals/descriptors.js","../../node_modules/core-js/internals/object-property-is-enumerable.js","../../node_modules/core-js/internals/create-property-descriptor.js","../../node_modules/core-js/internals/classof-raw.js","../../node_modules/core-js/internals/indexed-object.js","../../node_modules/core-js/internals/require-object-coercible.js","../../node_modules/core-js/internals/to-indexed-object.js","../../node_modules/core-js/internals/is-object.js","../../node_modules/core-js/internals/to-primitive.js","../../node_modules/core-js/internals/has.js","../../node_modules/core-js/internals/document-create-element.js","../../node_modules/core-js/internals/ie8-dom-define.js","../../node_modules/core-js/internals/object-get-own-property-descriptor.js","../../node_modules/core-js/internals/an-object.js","../../node_modules/core-js/internals/object-define-property.js","../../node_modules/core-js/internals/create-non-enumerable-property.js","../../node_modules/core-js/internals/set-global.js","../../node_modules/core-js/internals/shared-store.js","../../node_modules/core-js/internals/inspect-source.js","../../node_modules/core-js/internals/internal-state.js","../../node_modules/core-js/internals/native-weak-map.js","../../node_modules/core-js/internals/shared.js","../../node_modules/core-js/internals/uid.js","../../node_modules/core-js/internals/shared-key.js","../../node_modules/core-js/internals/hidden-keys.js","../../node_modules/core-js/modules/es.string.starts-with.js","../../node_modules/core-js/internals/redefine.js","../../node_modules/core-js/internals/path.js","../../node_modules/core-js/internals/get-built-in.js","../../node_modules/core-js/internals/to-integer.js","../../node_modules/core-js/internals/to-length.js","../../node_modules/core-js/internals/to-absolute-index.js","../../node_modules/core-js/internals/array-includes.js","../../node_modules/core-js/internals/object-keys-internal.js","../../node_modules/core-js/internals/enum-bug-keys.js","../../node_modules/core-js/internals/object-get-own-property-names.js","../../node_modules/core-js/internals/object-get-own-property-symbols.js","../../node_modules/core-js/internals/own-keys.js","../../node_modules/core-js/internals/copy-constructor-properties.js","../../node_modules/core-js/internals/is-forced.js","../../node_modules/core-js/internals/export.js","../../node_modules/core-js/internals/native-symbol.js","../../node_modules/core-js/internals/use-symbol-as-uid.js","../../node_modules/core-js/internals/well-known-symbol.js","../../node_modules/core-js/internals/is-regexp.js","../../node_modules/core-js/internals/not-a-regexp.js","../../node_modules/core-js/internals/correct-is-regexp-logic.js","../../node_modules/core-js/internals/a-function.js","../../node_modules/core-js/internals/iterators-core.js","../../node_modules/core-js/internals/function-bind-context.js","../../node_modules/core-js/internals/entry-unbind.js","../../node_modules/core-js/internals/string-multibyte.js","../../node_modules/core-js/es/string/starts-with.js","../../node_modules/core-js/internals/to-object.js","../../node_modules/core-js/internals/correct-prototype-getter.js","../../node_modules/core-js/internals/object-get-prototype-of.js","../../node_modules/core-js/internals/object-create.js","../../node_modules/core-js/internals/object-keys.js","../../node_modules/core-js/internals/object-define-properties.js","../../node_modules/core-js/internals/html.js","../../node_modules/core-js/internals/set-to-string-tag.js","../../node_modules/core-js/internals/iterators.js","../../node_modules/core-js/internals/create-iterator-constructor.js","../../node_modules/core-js/internals/object-set-prototype-of.js","../../node_modules/core-js/internals/a-possible-prototype.js","../../node_modules/core-js/internals/define-iterator.js","../../node_modules/core-js/modules/es.string.iterator.js","../../node_modules/core-js/internals/call-with-safe-iteration-closing.js","../../node_modules/core-js/internals/is-array-iterator-method.js","../../node_modules/core-js/internals/create-property.js","../../node_modules/core-js/internals/to-string-tag-support.js","../../node_modules/core-js/internals/classof.js","../../node_modules/core-js/internals/get-iterator-method.js","../../node_modules/core-js/internals/check-correctness-of-iteration.js","../../node_modules/core-js/modules/es.array.from.js","../../node_modules/core-js/internals/array-from.js","../../node_modules/core-js/es/array/from.js","../../node_modules/core-js/internals/array-buffer-view-core.js","../../node_modules/core-js/internals/array-buffer-native.js","../../node_modules/core-js/internals/species-constructor.js","../../node_modules/core-js/modules/es.typed-array.slice.js","../../node_modules/core-js/internals/add-to-unscopables.js","../../node_modules/core-js/internals/array-method-uses-to-length.js","../../node_modules/core-js/modules/es.array.includes.js","../../node_modules/promise-polyfill/src/finally.js","../../node_modules/core-js/es/array/includes.js","../../node_modules/core-js/modules/es.string.includes.js","../../node_modules/core-js/es/string/includes.js","../../node_modules/promise-polyfill/src/index.js","../../node_modules/promise-polyfill/src/polyfill.js","../../node_modules/fast-text-encoding/text.min.js","../../node_modules/browser-tabs-lock/processLock.js","../../node_modules/browser-tabs-lock/index.js","../../node_modules/unfetch/src/index.mjs","../../src/constants.ts","../../src/utils.ts","../../src/cache.ts","../../node_modules/es-cookie/src/es-cookie.js","../../src/storage.ts","../../src/transaction-manager.ts","../../src/jwt.ts","../../src/errors.ts","../../src/Auth0Client.ts","../../src/version.ts","../../src/index.ts","../node_modules/recompose/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/react-virtualized-auto-sizer/dist/index.esm.js","../node_modules/@mike/mike-shared-frontend/media/icons/Minus.svg","../node_modules/@mike/mike-shared-frontend/media/icons/Plus.svg","../../node_modules/mapbox/vendor/invariant.js","../../node_modules/mapbox/lib/constants.js","../../node_modules/rest/client/default.js","../../node_modules/es6-promise/dist/es6-promise.js","../../node_modules/rest/client.js","../../node_modules/mapbox/lib/promise.js","../../node_modules/rest/util/mixin.js","../../node_modules/rest/util/normalizeHeaderName.js","../../node_modules/rest/util/responsePromise.js","../../node_modules/rest/client/node.js","../../node_modules/rest/node.js","../../node_modules/rest/interceptor.js","../../node_modules/rest/mime/type/application/x-www-form-urlencoded.js","../../node_modules/rest/interceptor/errorCode.js","../../node_modules/rest/UrlBuilder.js","../../node_modules/rest/interceptor/pathPrefix.js","../../node_modules/rest/mime.js","../../node_modules/rest/util/uriEncoder.js","../../node_modules/rest/util/uriTemplate.js","../../node_modules/rest/interceptor/template.js","../../node_modules/rest/util/attempt.js","../../node_modules/rest/mime/type/application/hal.js","../../node_modules/rest/util/find.js","../../node_modules/rest/util/lazyPromise.js","../../node_modules/rest/mime/type/application/json.js","../../node_modules/rest/mime/type/multipart/form-data.js","../../node_modules/rest/mime/registry.js","../../node_modules/rest/interceptor/mime.js","../../node_modules/rest/mime/type/text/plain.js","../../node_modules/rest/interceptor/defaultRequest.js","../../node_modules/rest/parsers/rfc5988.js","../../node_modules/mapbox/lib/paginator.js","../../node_modules/mapbox/lib/standard_response.js","../../node_modules/mapbox/lib/callbackify.js","../../node_modules/rest/util/base64.js","../../node_modules/mapbox/lib/get_user.js","../../node_modules/mapbox/lib/make_service.js","../../node_modules/mapbox/lib/client.js","../../node_modules/mapbox/vendor/xtend.js","../../node_modules/mapbox/lib/services/geocoding.js","../../node_modules/mapbox/lib/invariant_location.js","../../node_modules/mapbox/lib/format_points.js","../../node_modules/mapbox/lib/services/surface.js","../../node_modules/mapbox/lib/services/directions.js","../../node_modules/mapbox/lib/services/uploads.js","../../node_modules/mapbox/lib/services/matching.js","../../node_modules/mapbox/vendor/hat.js","../../node_modules/mapbox/lib/services/datasets.js","../../node_modules/mapbox/lib/services/matrix.js","../../node_modules/mapbox/lib/services/tilestats.js","../../node_modules/mapbox/lib/services/styles.js","../../node_modules/mapbox/vendor/polyline.js","../../node_modules/mapbox/lib/encode_overlay.js","../../node_modules/mapbox/lib/services/static.js","../../node_modules/mapbox/lib/services/tilesets.js","../../node_modules/mapbox/lib/services/tokens.js","../../node_modules/mapbox/lib/mapbox.js","../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../node_modules/@babel/runtime/helpers/esm/createClass.js","../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../node_modules/math.gl/dist/esm/lib/common.js","../../node_modules/math.gl/dist/esm/lib/math-array.js","../../node_modules/math.gl/dist/esm/lib/vector.js","../../node_modules/gl-vec2/cross.js","../../node_modules/math.gl/dist/esm/vector2.js","../../node_modules/gl-vec3/fromValues.js","../../node_modules/gl-vec3/normalize.js","../../node_modules/gl-vec3/dot.js","../../node_modules/gl-vec3/angle.js","../../node_modules/gl-vec3/cross.js","../../node_modules/gl-vec3/rotateX.js","../../node_modules/gl-vec3/rotateY.js","../../node_modules/gl-vec3/rotateZ.js","../../node_modules/math.gl/dist/esm/vector3.js","../../node_modules/math.gl/dist/esm/vector4.js","../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../node_modules/gl-mat4/determinant.js","../../node_modules/gl-mat4/fromQuat.js","../../node_modules/gl-mat4/frustum.js","../../node_modules/gl-mat4/identity.js","../../node_modules/gl-mat4/lookAt.js","../../node_modules/gl-mat4/ortho.js","../../node_modules/gl-mat4/perspective.js","../../node_modules/gl-mat4/transpose.js","../../node_modules/gl-mat4/invert.js","../../node_modules/gl-mat4/multiply.js","../../node_modules/gl-mat4/rotate.js","../../node_modules/gl-mat4/scale.js","../../node_modules/gl-mat4/translate.js","../../node_modules/gl-vec2/transformMat4.js","../../node_modules/gl-vec3/transformMat4.js","../../node_modules/gl-vec4/transformMat4.js","../../node_modules/gl-mat4/rotateX.js","../../node_modules/gl-mat4/rotateY.js","../../node_modules/gl-mat4/rotateZ.js","../../node_modules/math.gl/dist/esm/matrix4.js","../../node_modules/gl-quat/fromMat3.js","../../node_modules/gl-quat/identity.js","../../node_modules/gl-quat/length.js","../../node_modules/gl-vec4/length.js","../../node_modules/gl-quat/squaredLength.js","../../node_modules/gl-vec4/squaredLength.js","../../node_modules/gl-quat/dot.js","../../node_modules/gl-vec4/dot.js","../../node_modules/gl-vec3/length.js","../../node_modules/gl-quat/normalize.js","../../node_modules/gl-vec4/normalize.js","../../node_modules/gl-quat/setAxisAngle.js","../../node_modules/gl-quat/rotationTo.js","../../node_modules/gl-quat/add.js","../../node_modules/gl-vec4/add.js","../../node_modules/gl-quat/calculateW.js","../../node_modules/gl-quat/conjugate.js","../../node_modules/gl-quat/invert.js","../../node_modules/gl-quat/lerp.js","../../node_modules/gl-vec4/lerp.js","../../node_modules/gl-quat/multiply.js","../../node_modules/gl-quat/rotateX.js","../../node_modules/gl-quat/rotateY.js","../../node_modules/gl-quat/rotateZ.js","../../node_modules/gl-vec4/scale.js","../../node_modules/gl-quat/scale.js","../../node_modules/gl-quat/set.js","../../node_modules/gl-vec4/set.js","../../node_modules/gl-quat/slerp.js","../../node_modules/math.gl/dist/esm/quaternion.js","../../node_modules/math.gl/dist/esm/euler.js","../../node_modules/math.gl/dist/esm/spherical-coordinates.js","../../node_modules/math.gl/dist/esm/pose.js","../../node_modules/math.gl/dist/esm/addons/polygon.js","../../node_modules/viewport-mercator-project/dist/esm/math-utils.js","../../node_modules/gl-vec2/lerp.js","../../node_modules/viewport-mercator-project/dist/esm/assert.js","../../node_modules/viewport-mercator-project/dist/esm/web-mercator-utils.js","../../node_modules/viewport-mercator-project/dist/esm/viewport.js","../../node_modules/viewport-mercator-project/dist/esm/fit-bounds.js","../../node_modules/gl-vec2/add.js","../../node_modules/gl-vec2/negate.js","../../node_modules/viewport-mercator-project/dist/esm/web-mercator-viewport.js","../../src/index.js","../node_modules/https-browserify/index.js","../node_modules/@mike/mike-shared-frontend/media/icons/CloseS.svg","../node_modules/@mike/mike-shared-frontend/media/icons/Search.svg","../node_modules/@luma.gl/gltools/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@luma.gl/gltools/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../src/lib/register-loaders.js","../node_modules/earcut/src/earcut.js","../node_modules/@luma.gl/engine/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/gud/index.js","../../../src/utils/isBrowser.js","../../../src/utils/debounce.js","../../../src/utils/isFunction.js","../../../src/utils/getStyleComputedProperty.js","../../../src/utils/getParentNode.js","../../../src/utils/getScrollParent.js","../../../src/utils/getReferenceNode.js","../../../src/utils/isIE.js","../../../src/utils/getOffsetParent.js","../../../src/utils/getRoot.js","../../../src/utils/findCommonOffsetParent.js","../../../src/utils/isOffsetContainer.js","../../../src/utils/getScroll.js","../../../src/utils/includeScroll.js","../../../src/utils/getBordersSize.js","../../../src/utils/getWindowSizes.js","../../../src/utils/getClientRect.js","../../../src/utils/getBoundingClientRect.js","../../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../../src/utils/isFixed.js","../../../src/utils/getFixedPositionOffsetParent.js","../../../src/utils/getBoundaries.js","../../../src/utils/computeAutoPlacement.js","../../../src/utils/getReferenceOffsets.js","../../../src/utils/getOuterSizes.js","../../../src/utils/getOppositePlacement.js","../../../src/utils/getPopperOffsets.js","../../../src/utils/find.js","../../../src/utils/runModifiers.js","../../../src/utils/findIndex.js","../../../src/methods/update.js","../../../src/utils/isModifierEnabled.js","../../../src/utils/getSupportedPropertyName.js","../../../src/methods/destroy.js","../../../src/utils/getWindow.js","../../../src/utils/setupEventListeners.js","../../../src/methods/enableEventListeners.js","../../../src/methods/disableEventListeners.js","../../../src/utils/removeEventListeners.js","../../../src/utils/isNumeric.js","../../../src/utils/setStyles.js","../../../src/modifiers/computeStyle.js","../../../src/utils/isModifierRequired.js","../../../src/methods/placements.js","../../../src/utils/clockwise.js","../../../src/modifiers/flip.js","../../../src/modifiers/offset.js","../../../src/modifiers/index.js","../../../src/methods/defaults.js","../../../src/modifiers/shift.js","../../../src/modifiers/preventOverflow.js","../../../src/modifiers/keepTogether.js","../../../src/modifiers/arrow.js","../../../src/utils/getOppositeVariation.js","../../../src/modifiers/inner.js","../../../src/modifiers/hide.js","../../../src/utils/getRoundedOffsets.js","../../../src/modifiers/applyStyle.js","../../../src/utils/setAttributes.js","../node_modules/lodash/intersection.js","../node_modules/lodash/filter.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash/flatMap.js","../node_modules/lodash/last.js","../node_modules/lodash/find.js","../node_modules/lodash/throttle.js","../node_modules/lodash/some.js","../node_modules/lodash/mapValues.js","../node_modules/react-spinners/BounceLoader.js","../node_modules/@babel/runtime/helpers/inheritsLoose.js","../../src/utils.js","../node_modules/@material-ui/icons/ExpandMore.js","../node_modules/@mike/mike-shared-frontend/media/icons/Info.svg","../node_modules/@mike/mike-shared-frontend/media/icons/Layer.svg","../node_modules/@mike/mike-shared-frontend/media/icons/Left.svg","../node_modules/@mike/mike-shared-frontend/media/icons/Right.svg","../node_modules/@luma.gl/shadertools/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../src/lib/transpile-shader.js","../node_modules/@luma.gl/shadertools/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../../src/lib/filters/prop-types.js","../../../../src/lib/shader-module.js","../node_modules/@luma.gl/shadertools/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../../src/lib/resolve-modules.js","../../../../src/utils/is-old-ie.js","../../../../src/utils/webgl-info.js","../../../../src/lib/assemble-shaders.js","../../../../src/lib/platform-defines.js","../../../../src/lib/program-manager.js","../../../../src/utils/array-utils-flat.js","../../../../src/env/get-browser.js","../../../../src/classes/vertex-array-object.js","../../../../src/classes/vertex-array.js","../../../../src/utils/format-value.js","../../../../src/debug/debug-vertex-array.js","../../../../src/debug/debug-uniforms.js","../../../../src/debug/debug-program-configuration.js","../../../../src/lib/model-utils.js","../../../../src/lib/model.js","../node_modules/@luma.gl/webgl/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../../../../src/classes/texture-cube.js","../../../../src/classes/texture-3d.js","../../../../src/webgl-utils/texture-utils.js","../node_modules/@material-ui/styles/esm/useTheme/useTheme.js","../../../../src/utils/check-props.js","../node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","../node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","../node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","../node_modules/hyphenate-style-name/index.js","../node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","../node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","../node_modules/css-vendor/dist/css-vendor.esm.js","../node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","../node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","../node_modules/@material-ui/styles/esm/jssPreset/jssPreset.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/notistack/build/SnackbarProvider.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/notistack/build/SnackbarItem/index.js","../node_modules/notistack/build/SnackbarItem/SnackbarItem.js","../node_modules/notistack/build/SnackbarItem/SnackbarItem.util.js","../node_modules/notistack/build/SnackbarItem/SnackbarItem.styles.js","../node_modules/notistack/build/SnackbarContainer.js","../node_modules/notistack/build/withSnackbar.js","../node_modules/notistack/build/utils/getDisplayName.js","../node_modules/notistack/build/useSnackbar.js","../node_modules/setimmediate/setImmediate.js","../node_modules/webpack/buildin/harmony-module.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/node-libs-browser/node_modules/punycode/punycode.js","../node_modules/url/util.js","../node_modules/querystring-es3/decode.js","../node_modules/querystring-es3/encode.js","../node_modules/stream-http/lib/request.js","../node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/util-deprecate/browser.js","../node_modules/safe-buffer/index.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/to-arraybuffer/index.js","../node_modules/xtend/immutable.js","../node_modules/builtin-status-codes/browser.js","../../../../src/env/index.js","../node_modules/probe.gl/node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/@material-ui/core/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/core-js/modules/es.math.acosh.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/native-weak-map.js","../node_modules/core-js/internals/is-pure.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/path.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/modules/es.math.asinh.js","../node_modules/core-js/modules/es.math.atanh.js","../node_modules/core-js/modules/es.math.cbrt.js","../node_modules/core-js/modules/es.math.clz32.js","../node_modules/core-js/modules/es.math.cosh.js","../node_modules/core-js/modules/es.math.expm1.js","../node_modules/core-js/modules/es.math.fround.js","../node_modules/core-js/internals/math-fround.js","../node_modules/core-js/modules/es.math.hypot.js","../node_modules/core-js/modules/es.math.imul.js","../node_modules/core-js/modules/es.math.log10.js","../node_modules/core-js/modules/es.math.log1p.js","../node_modules/core-js/modules/es.math.log2.js","../node_modules/core-js/modules/es.math.sign.js","../node_modules/core-js/modules/es.math.sinh.js","../node_modules/core-js/modules/es.math.tanh.js","../node_modules/core-js/modules/es.math.to-string-tag.js","../node_modules/core-js/internals/set-to-string-tag.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/core-js/modules/es.math.trunc.js","../node_modules/core-js/modules/es.number.constructor.js","../node_modules/core-js/internals/inherit-if-required.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/object-create.js","../node_modules/core-js/internals/object-define-properties.js","../node_modules/core-js/internals/object-keys.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/modules/es.number.epsilon.js","../node_modules/core-js/modules/es.number.is-finite.js","../node_modules/core-js/internals/number-is-finite.js","../node_modules/core-js/modules/es.number.is-integer.js","../node_modules/core-js/modules/es.number.is-nan.js","../node_modules/core-js/modules/es.number.is-safe-integer.js","../node_modules/core-js/modules/es.number.max-safe-integer.js","../node_modules/core-js/modules/es.number.min-safe-integer.js","../node_modules/core-js/modules/es.number.parse-float.js","../node_modules/core-js/internals/number-parse-float.js","../node_modules/core-js/modules/es.number.parse-int.js","../node_modules/core-js/internals/number-parse-int.js","../node_modules/core-js/modules/es.number.to-fixed.js","../node_modules/core-js/internals/this-number-value.js","../node_modules/core-js/internals/string-repeat.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/memoize.js","../node_modules/lodash/toString.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_baseUniq.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/lodash/_createSet.js","../node_modules/lodash/noop.js","../../src/performance-now.coffee","../node_modules/lodash/_baseIntersection.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/constant.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_castArrayLikeObject.js","../node_modules/lodash/isArrayLikeObject.js","../node_modules/lodash/_baseFilter.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createBaseEach.js","../node_modules/react-smooth/node_modules/react-transition-group/CSSTransition.js","../node_modules/react-smooth/node_modules/dom-helpers/class/addClass.js","../node_modules/react-smooth/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/react-smooth/node_modules/dom-helpers/class/hasClass.js","../node_modules/react-smooth/node_modules/dom-helpers/class/removeClass.js","../node_modules/react-smooth/node_modules/react-transition-group/ReplaceTransition.js","../node_modules/react-smooth/node_modules/react-transition-group/utils/ChildMapping.js","../node_modules/lodash/_isFlattenable.js","../node_modules/lodash/_baseOrderBy.js","../node_modules/lodash/_baseSortBy.js","../node_modules/lodash/_compareMultiple.js","../node_modules/lodash/_compareAscending.js","../node_modules/lodash/now.js","../node_modules/lodash/_baseGt.js","../node_modules/lodash/_baseLt.js","../node_modules/lodash/map.js","../node_modules/recharts-scale/lib/getNiceTickValues.js","../node_modules/recharts-scale/lib/util/arithmetic.js","../node_modules/reduce-css-calc/node_modules/balanced-match/index.js","../node_modules/reduce-function-call/index.js","../node_modules/balanced-match/index.js","../node_modules/math-expression-evaluator/src/formula_evaluator.js","../node_modules/math-expression-evaluator/src/postfix_evaluator.js","../node_modules/math-expression-evaluator/src/postfix.js","../node_modules/math-expression-evaluator/src/lexer.js","../node_modules/math-expression-evaluator/src/math_function.js","../node_modules/lodash/_arrayEvery.js","../node_modules/lodash/_baseEvery.js","../node_modules/lodash/_createFind.js","../node_modules/lodash/findIndex.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/_createRange.js","../node_modules/lodash/_baseRange.js","../node_modules/lodash/_baseSome.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/react-spinners/helpers/index.js","../node_modules/react-spinners/helpers/proptypes.js","../node_modules/react-spinners/helpers/colors.js","../node_modules/react-spinners/helpers/unitConverter.js","../node_modules/nouislider/distribute/nouislider.js","../node_modules/@material-ui/icons/utils/createSvgIcon.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/axios/lib/axios.js","../node_modules/axios/node_modules/is-buffer/index.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/@emotion/sheet/dist/sheet.browser.esm.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/cache/dist/cache.browser.esm.js","../node_modules/@emotion/utils/dist/utils.browser.esm.js","../node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/@emotion/serialize/dist/serialize.browser.esm.js","../node_modules/@emotion/css/dist/css.browser.esm.js","../node_modules/@emotion/core/dist/core.browser.esm.js","../node_modules/@material-ui/core/esm/Slide/Slide.js","../node_modules/@material-ui/core/esm/utils/debounce.js","../node_modules/@material-ui/core/esm/Slide/index.js","../node_modules/@material-ui/core/esm/Snackbar/Snackbar.js","../node_modules/@material-ui/core/esm/Snackbar/index.js","../node_modules/@material-ui/utils/esm/deepmerge.js","../node_modules/@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js","../node_modules/@material-ui/core/esm/IconButton/IconButton.js","../../../../src/utils/stub-methods.js","../../../../src/features/features.js","../node_modules/@material-ui/core/esm/Typography/Typography.js","../node_modules/probe.gl/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/probe.gl/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/probe.gl/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/probe.gl/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/probe.gl/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/probe.gl/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../src/utils/local-storage.js","../../../../src/utils/formatters.js","../../../../src/utils/color.js","../../../../src/utils/autobind.js","../../../../src/lib/log.js","../node_modules/probe.gl/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@material-ui/styles/esm/mergeClasses/mergeClasses.js","../node_modules/@material-ui/styles/esm/makeStyles/multiKeyStore.js","../node_modules/@material-ui/styles/esm/makeStyles/indexCounter.js","../node_modules/@material-ui/styles/esm/getStylesCreator/getStylesCreator.js","../node_modules/@material-ui/styles/esm/getStylesCreator/noopTheme.js","../node_modules/@material-ui/styles/esm/makeStyles/makeStyles.js","../node_modules/@probe.gl/stats/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@probe.gl/stats/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../src/lib/stat.js","../../../../src/lib/stats.js","../node_modules/@material-ui/styles/esm/StylesProvider/StylesProvider.js","../node_modules/@material-ui/styles/esm/ThemeProvider/ThemeProvider.js","../node_modules/@material-ui/core/esm/Grow/Grow.js","../node_modules/@material-ui/core/esm/ClickAwayListener/ClickAwayListener.js","../node_modules/@material-ui/core/esm/CircularProgress/CircularProgress.js","../node_modules/@material-ui/core/esm/LinearProgress/LinearProgress.js","../node_modules/@material-ui/core/esm/Grid/Grid.js","../node_modules/d3-ease/src/cubic.js","../../../../src/classes/transform-feedback.js","../../../../src/geometry/geometry.js","../../../../../src/lib/env-utils/globals.js","../node_modules/@material-ui/core/esm/Divider/Divider.js","../node_modules/@material-ui/core/esm/ListItemIcon/ListItemIcon.js","../node_modules/@material-ui/icons/esm/ExitToApp.js","../node_modules/@material-ui/icons/esm/AccountCircle.js","../node_modules/@material-ui/core/esm/AppBar/AppBar.js","../node_modules/@material-ui/core/esm/Toolbar/Toolbar.js","../node_modules/@material-ui/core/esm/Button/Button.js","../node_modules/@material-ui/core/esm/Link/Link.js","../node_modules/@material-ui/core/esm/ExpansionPanelSummary/ExpansionPanelSummary.js","../node_modules/@material-ui/core/esm/ExpansionPanelDetails/ExpansionPanelDetails.js","../node_modules/@material-ui/core/esm/Card/Card.js","../node_modules/@material-ui/core/esm/CardContent/CardContent.js","../node_modules/@luma.gl/engine/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@luma.gl/engine/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@luma.gl/engine/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@luma.gl/engine/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../src/animation/timeline.js","../../../../src/viewports/viewport.js","../../../../../src/shaderlib/misc/geometry.js","../../../../src/shaderlib/index.js","../../../../src/lib/layer-manager.js","../../../../src/lib/view-manager.js","../../../../src/utils/positions.js","../../../../src/views/view.js","../../../../src/viewports/web-mercator-viewport.js","../../../../src/transitions/transition-interpolator.js","../../../../src/transitions/linear-interpolator.js","../../../../src/controllers/transition-manager.js","../../../../src/controllers/controller.js","../../../../src/controllers/view-state.js","../../../../src/controllers/map-controller.js","../../../../src/views/map-view.js","../../../../../src/effects/lighting/ambient-light.js","../../../../../src/effects/lighting/directional-light.js","../../../../src/lib/effect.js","../../../../src/passes/pass.js","../../../../src/passes/layers-pass.js","../../../../src/passes/shadow-pass.js","../../../../../src/shaderlib/shadow/shadow.js","../../../../../src/effects/lighting/lighting-effect.js","../../../../src/lib/effect-manager.js","../../../../src/passes/draw-layers-pass.js","../../../../src/passes/pick-layers-pass.js","../../../../src/lib/deck-renderer.js","../../../../../src/lib/picking/query-object.js","../../../../../src/lib/picking/pick-info.js","../../../../src/lib/deck-picker.js","../../../../src/lib/tooltip.js","../../../../../src/lib/utils/assert.js","../../../../../src/lib/parsed-image-api/image-type.js","../../../../../src/lib/parsers/get-image-output-format.js","../../../../../src/lib/binary-image-api/binary-image-parsers.js","../../../../../src/lib/binary-image-api/binary-image-api.js","../../../../../src/lib/parsers/parse-to-node-image.js","../../../../../src/lib/parsers/parse-to-html-image.js","../../../../../src/lib/parsers/parse-to-image-bitmap.js","../../../../../src/lib/parsers/parse-svg.js","../../../../../src/lib/parsers/parse-image.js","../../../src/image-loader.js","../../../../src/utils/json-loader.js","../../../../src/lib/init.js","../node_modules/@luma.gl/engine/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../../../../src/classes/query.js","../../../../src/webgl-utils/request-animation-frame.js","../../../../src/lib/animation-loop.js","../../../../src/lib/deck.js","../../../../src/utils/inherits-from.js","../../../../src/utils/extract-jsx-layers.js","../../../../src/utils/evaluate-children.js","../../../../src/utils/position-children-under-views.js","../../../../src/utils/extract-styles.js","../../../src/deckgl.js","../../../../src/lib/composite-layer.js","../../../../src/scatterplot-layer/scatterplot-layer.js","../../../../src/scatterplot-layer/scatterplot-layer-vertex.glsl.js","../../../../src/scatterplot-layer/scatterplot-layer-fragment.glsl.js","../../../../src/utils/tesselator.js","../../../../src/path-layer/path-tesselator.js","../../../../src/path-layer/path-layer.js","../../../../src/path-layer/path-layer-vertex.glsl.js","../../../../src/path-layer/path-layer-fragment.glsl.js","../../../../src/solid-polygon-layer/polygon.js","../../../../src/solid-polygon-layer/polygon-tesselator.js","../../../../src/solid-polygon-layer/solid-polygon-layer-vertex-main.glsl.js","../../../../src/solid-polygon-layer/solid-polygon-layer-vertex-top.glsl.js","../../../../src/solid-polygon-layer/solid-polygon-layer-vertex-side.glsl.js","../../../../src/solid-polygon-layer/solid-polygon-layer.js","../../../../src/solid-polygon-layer/solid-polygon-layer-fragment.glsl.js","../../../src/utils.js","../../../../src/geojson-layer/geojson.js","../../../../src/geojson-layer/geojson-layer.js","../node_modules/@material-ui/system/esm/css.js","../node_modules/@material-ui/system/esm/compose.js","../node_modules/@material-ui/system/esm/style.js","../node_modules/@material-ui/system/esm/borders.js","../node_modules/@material-ui/system/esm/display.js","../node_modules/@material-ui/system/esm/flexbox.js","../node_modules/@material-ui/system/esm/grid.js","../node_modules/@material-ui/system/esm/positions.js","../node_modules/@material-ui/system/esm/palette.js","../node_modules/@material-ui/system/esm/shadows.js","../node_modules/@material-ui/system/esm/sizing.js","../node_modules/@material-ui/system/esm/typography.js","../node_modules/@material-ui/core/esm/Box/Box.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/index.js","../../../../src/classes/uniforms.js","../../../../src/glsl-utils/get-shader-name.js","../../../../src/glsl-utils/format-glsl-error.js","../../../../src/glsl-utils/get-shader-type-name.js","../../../../src/classes/shader.js","../../../../src/classes/program-configuration.js","../../../../src/classes/program.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/format/index.js","../../../../../src/modules/lights/lights.glsl.js","../../../../../src/modules/lights/lights.js","../../../../../src/modules/phong-lighting/phong-lighting.glsl.js","../../../../../src/modules/phong-lighting/phong-lighting.js","../node_modules/@material-ui/core/esm/List/List.js","../node_modules/@material-ui/core/esm/MenuList/MenuList.js","../node_modules/@material-ui/core/esm/utils/getScrollbarSize.js","../node_modules/@material-ui/core/esm/ListItem/ListItem.js","../node_modules/@material-ui/core/esm/utils/isMuiElement.js","../node_modules/@material-ui/core/esm/MenuItem/MenuItem.js","../node_modules/@material-ui/core/esm/internal/svg-icons/Person.js","../node_modules/@material-ui/core/esm/internal/svg-icons/createSvgIcon.js","../node_modules/@material-ui/core/esm/Avatar/Avatar.js","../node_modules/@material-ui/core/esm/ExpansionPanel/ExpansionPanel.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@material-ui/core/esm/utils/useControlled.js","../../../../src/bitmap-layer/bitmap-layer.js","../../../../src/bitmap-layer/bitmap-layer-vertex.js","../../../../src/bitmap-layer/bitmap-layer-fragment.js","../node_modules/@material-ui/core/esm/Portal/Portal.js","../node_modules/@material-ui/core/esm/Popper/Popper.js","../node_modules/@material-ui/system/esm/spacing.js","../node_modules/@material-ui/system/esm/memoize.js"],"names":["module","exports","require","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_extends","assign","target","i","arguments","length","source","prototype","hasOwnProperty","call","apply","this","_defineProperties","props","descriptor","_createClass","Constructor","protoProps","staticProps","_classCallCheck","instance","TypeError","isBrowser","getIsBrowser","isPage","document","CONTEXT_DEFAULTS","webgl2","webgl1","throwOnError","manageState","canvas","debug","width","height","createGLContext","options","assert","Error","targetCanvas","getCanvas","onError","gl","createBrowserContext","logInfo","instrumentGLContext","getVersion","trackContextState","copyState","log","args","global","Math","resizeGLContext","devicePixelRatio","getDevicePixelRatio","setDevicePixelRatio","ext","message","onCreateError","error","Number","webGL","isWebGL2","info","vendorMasked","rendererMasked","vendor","renderer","version","shadingLanguageVersion","getContextDebugInfo","driver","WebGL2RenderingContext","clientWidth","clientHeight","cachedSize","clampedPixelRatio","canvasWidth","canvasHeight","_objectWithoutProperties","excluded","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","toVal","mix","k","y","str","push","x","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","baseGetTag","isObject","tag","EPSILON","ARRAY_TYPE","Float32Array","Array","RANDOM","random","PI","hypot","sqrt","getThemeProps","params","theme","name","propName","defaultProps","undefined","withStyles","stylesOrCreator","Component","defaultTheme","_options$withTheme","withTheme","stylesOptions","classNamePrefix","useStyles","makeStyles","displayName","WithStyles","React","forwardRef","ref","classes","innerRef","other","more","useTheme","createElement","hoistNonReactStatics","withStylesWithoutDefault","hasOwn","classNames","arg","argType","isArray","inner","join","default","isArrayX","ArrayBuffer","isArrayY","cssToDeviceRatio","cssToDevicePixels","cssPixel","yInvert","ratio","scalePixels","useDevicePixels","windowRatio","window","pixel","scaleX","scaleY","t","xHigh","yHigh","isWebGL","Boolean","id","_possibleConstructorReturn","self","_setPrototypeOf","p","_inherits","subClass","superClass","create","constructor","COORDINATE_SYSTEM","DEFAULT","LNGLAT","METER_OFFSETS","LNGLAT_OFFSETS","CARTESIAN","get","PROJECTION_MODE","WEB_MERCATOR","WEB_MERCATOR_AUTO_OFFSET","IDENTITY","EVENTS","click","handler","panstart","panmove","panend","transpose","out","a","a01","a02","a03","a12","a13","a23","invert","a00","a10","a11","a20","a21","a22","a30","a31","a32","a33","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","det","determinant","multiply","b","b0","b1","b2","b3","translate","v","z","scale","rotate","rad","axis","s","c","b12","b20","b21","b22","len","glMatrix","sin","cos","rotateX","rotateY","rotateZ","fromQuat","q","w","x2","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","frustum","left","right","bottom","top","near","far","rl","tb","nf","perspective","fovy","aspect","f","tan","Infinity","ortho","lr","bt","lookAt","eye","center","up","x0","x1","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","abs","identity","equals","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a14","a15","b4","b5","b6","b7","b8","b9","b13","b14","b15","max","_slicedToArray","arr","Symbol","iterator","toString","_arr","_n","_d","_e","_s","_i","next","done","err","config","round","formatValue","precision","parseFloat","map","func","result","array","clamp","min","lerp","ai","epsilon","oldEpsilon","asyncGeneratorStep","gen","resolve","reject","_next","_throw","Promise","then","_asyncToGenerator","fn","toInteger","dirtyNumber","NaN","number","isNaN","ceil","floor","arrayWithHoles","nonIterableRest","_typeof2","_typeof","capitalize","string","charAt","toUpperCase","slice","g","Function","e","toDate","argument","argStr","Date","getTime","console","warn","stack","_assertThisInitialized","ReferenceError","transformVector","matrix","vector","vec4","mod","divisor","modulus","start","end","step","condition","PI_4","DEGREES_TO_RADIANS","RADIANS_TO_DEGREES","zoomToScale","zoom","scaleToZoom","lngLatToWorld","lng","lat","phi2","worldToLngLat","lambda2","getMeterZoom","latitude","getDistanceScales","longitude","highPrecision","latCosine","unitsPerDegreeY","altUnitsPerMeter","latCosine2","unitsPerDegreeY2","altUnitsPerDegree2","altUnitsPerMeter2","addMetersToLngLat","lngLatZ","xyz","unitsPerMeter","unitsPerMeter2","worldspace","newLngLat","newZ","getViewMatrix","pitch","bearing","altitude","vm","mat4","vec3","getProjectionParameters","nearZMultiplier","farZMultiplier","pitchRadians","halfFov","topHalfSurfaceDistance","fov","focalDistance","getProjectionMatrix","worldToPixels","pixelProjectionMatrix","pixelsToWorld","pixelUnprojectionMatrix","targetZ","coord","coord0","coord1","vec2","bounds","minExtent","maxZoom","padding","offset","west","south","east","north","viewport","nw","se","size","targetSize","offsetX","offsetY","centerLngLat","WebMercatorViewport","projectionMatrix","viewMatrix","lngLat","xy","fromLocation","pos","toLocation","getMapCenterByLngLatPosition","fitBounds","vpm","m","mInverse","bind","project","unproject","projectPosition","unprojectPosition","projectFlat","unprojectFlat","topLeft","worldPosition","targetZWorld","X","Y","Z","normalizeViewportProps","flatViewport","topY","bottomY","shiftY","VIEWPORT_TRANSITION_PROPS","DEFAULT_OPTS","curve","speed","flyToViewport","startProps","endProps","opts","getFlyToTransitionParams","startZoom","startCenterXY","uDelta","w0","u1","S","rho","rho2","r0","startValue","endValue","u","scaleIncrement","newZoom","newCenterWorld","newCenter","getFlyToDuration","screenSpeed","maxDuration","duration","startCenter","startScale","endZoom","endCenter","endCenterXY","w1","_u1","r1","property","receiver","Reflect","base","object","desc","getOwnPropertyDescriptor","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","sham","assertThisInitialized","_toConsumableArray","arr2","iterableToArray","hexToRgb","color","substr","re","RegExp","concat","colors","match","n","parseInt","rgbToHex","values","decomposeColor","int","hex","intToHex","hslToRgb","h","l","type","rgb","recomposeColor","marker","substring","split","getContrastRatio","foreground","background","lumA","getLuminance","lumB","val","pow","toFixed","emphasize","coefficient","darken","lighten","fade","checkNumber","checkVector","callerName","validateVector","deprecated","method","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","process","useForkRef","refA","refB","refValue","setRef","loggers","register","handlers","eventType","deckLog","LIFECYCLE","NO_STATE","MATCHED","INITIALIZED","AWAITING_GC","AWAITING_FINALIZATION","FINALIZED","PROP_SYMBOLS","COMPONENT","ASYNC_DEFAULTS","ASYNC_ORIGINAL","ASYNC_RESOLVED","DEPRECATED_PROPS","stride","normalized","integer","instanced","isInstanced","PROP_CHECKS_INITIALIZE","removedProps","replacedProps","bytes","deprecatedProps","PROP_CHECKS_SET_PROPS","Buffer","accessor","byteLength","Accessor","data","checkProps","initialize","srcOffset","assertWebGL2Context","sourceBuffer","readOffset","writeOffset","dstData","srcByteOffset","dstOffset","ArrayType","getTypedArrayFromGLType","clamped","sourceAvailableElementCount","_getAvailableElementCount","dstElementOffset","dstAvailableElementCount","dstElementCount","copyElementCount","index","isIndexedBuffer","changed","getData","usage","getGLTypeFromTypedArray","sourceElementOffset","getElementCount","pname","getBufferParameter","reallocate","Resource","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","ERR_RESOURCE_METHOD_UNDEFINED","assertWebGLContext","userData","uid","_handle","deleteChildren","children","_deleteHandle","child","funcOrHandle","handle","getKeyValue","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","webgl1Default","webgl2Default","defaultValue","_getParameter","keys","parameterKeys","getKey","getParameter","className","methodNames","stubRemovedMethods","luma","stats","lumaStats","plainObjectConstrurctor","cloneStyle","style","newStyle","createRule","decl","jss","declCopy","rule","plugins","onCreateRule","by","toCssValue","ignoreImportant","cssValue","indentStr","indent","toCss","selector","_options$indent","fallbacks","fallback","prop","_prop","_value","_prop2","_value2","allowEmpty","escapeRegex","nativeEscape","CSS","escape","replace","BaseStyleRule","isProcessed","renderable","sheet","Renderer","force","newValue","onChangeValue","isEmpty","isDefined","remove","removeProperty","setProperty","attached","StyleRule","_BaseStyleRule","_this","selectorText","scoped","generateId","_inheritsLoose","_proto2","applyTo","json","toJSON","link","set","setSelector","replaceRule","pluginStyleRule","parent","defaultToStringOptions","atRegExp","ConditionalRule","styles","at","query","rules","atMatch","RuleList","add","_proto","getRule","addRule","onProcessRule","keyRegExp","pluginConditionalRule","test","defaultToStringOptions$1","nameRegExp","KeyframesRule","frames","nameMatch","keyRegExp$1","refRegExp","findReferencedKeyframe","keyframes","replaceRef","refKeyframe","plugin","onProcessStyle","KeyframeRule","_len","_key","pluginKeyframeRule","FontFaceRule","pluginFontFaceRule","ViewportRule","pluginViewportRule","SimpleRule","keysMap","defaultUpdateOptions","forceUpdateOptions","raw","counter","ruleOptions","_this$options","splice","unregister","plugins$$1","forEach","update","updateOne","_this$options2","styleRule","onUpdate","nextValue","_nextValue","_prevValue","css","StyleSheet","deployed","attach","deploy","detach","insertRule","addRules","added","deleteRule","_this$rules","PluginsRegistry","internal","external","registry","onProcessSheet","processedValue","use","newPlugin","reduce","SheetsRegistry","reset","_temp","_ref","_objectWithoutPropertiesLoose","sheets","globalThis","ns","moduleId","createGenerateId","ruleCounter","jssId","prefix","String","minify","memoize","getPropertyValue","cssRule","attributeStyleMap","delete","getHead","querySelector","findPrevNode","insertionPoint","findHigherSheet","element","parentNode","node","findHighestSheet","nextSibling","comment","text","head","childNodes","nodeType","nodeValue","trim","findCommentNode","getNonce","getAttribute","_insertRule","container","maxIndex","cssRules","appendRule","DomRenderer","hasInsertedRules","media","meta","el","textContent","createStyle","setAttribute","nonce","nextNode","insertBefore","insertionPointElement","appendChild","insertStyle","removeChild","insertRules","nativeParent","latestNativeParent","parentStyleSheet","ruleStr","nativeRule","getRules","instanceCounter","Jss","isInBrowser","setup","createStyleSheet","removeStyleSheet","getDynamicStyles","to","extracted","hasCSSTOMSupport","negate","ax","ay","transformMat4","sub","vec","baseGet","path","fromValues","normalize","cross","az","bx","bz","transformMat3","transformQuat","qx","qy","qz","qw","uvx","uvy","uvz","uuvx","uuvy","uuvz","w2","r","angle","tempA","tempB","cosine","dot","acos","check","it","isAbsolute","pathname","spliceOne","list","pop","resolvePathname","from","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","part","unshift","valueOf","valueEqual","every","item","aValue","bValue","addLeadingSlash","stripLeadingSlash","stripBasename","toLowerCase","hasBasename","stripTrailingSlash","createPath","location","search","hash","createLocation","state","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","callback","appendListener","isActive","listener","filter","notifyListeners","canUseDOM","getConfirmation","confirm","getHistoryState","history","createBrowserHistory","invariant","globalHistory","canUseHistory","ua","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","setState","nextState","handlePopState","event","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","href","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","url","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","pushHashPath","nextPaths","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","entry","nextIndex","nextEntries","canGo","isBuffer","isFunction","isArrayBuffer","isFormData","FormData","isArrayBufferView","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","merge","assignValue","deepMerge","extend","thisArg","NPOT_MIN_FILTERS","WebGLBuffer","Texture","format","linearFiltering","supported","isFormatSupported","isLinearFilteringSupported","resolvedImageData","pixels","border","recreate","pixelStore","textureUnit","mipmaps","dataFormat","depth","_deduceParameters","compressed","withParameters","level","dataType","_getDataType","channels","DATA_FORMAT_CHANNELS","channelSize","TYPE_SIZES","ndarray","textureFormat","TEXTURE_FORMATS","_deduceImageSize","ImageData","HTMLImageElement","naturalHeight","HTMLCanvasElement","ImageBitmap","HTMLVideoElement","videoHeight","getTexParameter","param","_getNPOTParam","isPowerOfTwo","baseIsEqual","window_","document_","globals","process_","easing","easeInOut","easeOut","easeIn","sharp","shortest","shorter","short","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","_options$duration","durationOption","_options$easing","easingOption","_options$delay","delay","animatedProp","getAutoHeightDuration","constant","useEnhancedEffect","useEventCallback","current","isNativeReflectConstruct","construct","Proxy","Parent","Class","DEFAULT_ACCESSOR_VALUES","PROP_CHECKS","accessors","JSON","viewMatrixInverse","direction","cameraPosition","cameraDirection","cameraUp","cameraRight","nearCenter","farCenter","fovyRadians","position","nearFarScale","widthScale","nearHeight","nearWidth","normal","distance","planes","startIndex","endIndex","typedArray","count","scratchArray","sourceIndex","targetIndex","j","fp64LowPart","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","startOfUTCWeek","dirtyDate","dirtyOptions","locale","localeWeekStartsOn","weekStartsOn","defaultWeekStartsOn","RangeError","date","day","getUTCDay","diff","setUTCDate","getUTCDate","setUTCHours","reflow","scrollTop","getTransitionProps","_props$style","transitionDuration","mode","transitionDelay","iter","GL_PARAMETER_DEFAULTS","Int32Array","enable","hint","pixelStorei","GL_PARAMETER_SETTERS","framebuffer","mask","backMask","backFunc","backRef","sfail","dpfail","dppass","backSfail","backDpfail","backDppass","getValue","glEnum","cache","GL_COMPOSITE_PARAMETER_SETTERS","blendEquation","blendFunc","polygonOffset","sampleCoverage","stencilFuncFront","stencilFuncBack","stencilOpFront","stencilOpBack","GL_HOOKED_SETTERS","disable","bindFramebuffer","blendColor","blendEquationSeparate","blendFuncSeparate","clearColor","clearDepth","clearStencil","colorMask","cullFace","depthFunc","depthRange","zNear","depthMask","frontFace","lineWidth","scissor","stencilMask","stencilMaskSeparate","face","stencilFunc","stencilFuncSeparate","stencilOp","stencilOpSeparate","isEnabled","GL_PARAMETER_GETTERS","freeGlobal","freeSelf","root","useThemeWithoutDefault","installGetterOverride","functionName","originalGetterFunc","installSetterSpy","setter","originalSetterFunc","valueChanged","oldValue","installProgramSpy","originalUseProgram","GLState","getParameters","_updateCache","stateStack","oldValues","setParameters","cached","deepArrayEqual","global_","pushContextState","popContextState","createMuiTheme","Framebuffer","colorBufferFloat","colorBufferHalfFloat","attachments","stencil","readBuffer","drawBuffers","_createDefaultAttachments","clearAttachments","resizeAttachments","prevHandle","newAttachments","attachment","renderbuffer","texture","layer","status","_getFrameBufferStatus","clear","clearBuffer","drawBuffer","_getAttachmentParameterFallback","getFramebufferAttachmentParameter","ATTACHMENT_PARAMETERS","getAttachmentParameter","attachmentName","getAttachmentParameters","copyToDataUrl","logLevel","image","maxHeight","defaultAttachments","oldAttachment","mapIndexToCubeMapFace","caps","getFeatures","STATUS","DEFAULT_SETTINGS","onStart","onInterrupt","onEnd","Transition","timeline","settings","isFinished","config$$1","compose","funcs","_config","fromESObservable","toESObservable","observable","stream","EMPTY_ARRAY","placeholderArray","createIterable","startRow","endRow","iterable","objectInfo","isAsyncIterable","getAccessorFromBuffer","startIndices","nested","bytesPerElement","elementStride","elementOffset","vertexCount","startOfUTCISOWeek","VERTEX_SHADER","FRAGMENT_SHADER","baseExtremum","baseGt","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","token","isProtectedWeekYearToken","throwProtectedError","exec","baseMatches","baseMatchesProperty","COMPOSITE_GL_TYPES","getPrimitiveDrawMode","drawMode","decomposeCompositeGLType","compositeGLType","typeAndSize","components","getCompositeGLType","compType","compComponents","glType","isLoaderObject","loader","hasParser","loaderOptions","normalizeLoader","TypedArrayManager","overAlloc","poolSize","copy","Type","newSize","newArray","_allocate","pool","isObjectLike","types","gl2","nativeGetPrototypeOf","setRafTimeout","currTime","shouldUpdate","now","raf","_toArray","_arrayWithHoles","_iterableToArray","_nonIterableRest","createAnimateManager","handleChange","shouldStop","stop","setStyle","_style","_styles","curr","restStyles","subscribe","_handleChange","_objectSpread","PREFIX_LIST","IN_LINE_PREFIX_LIST","IN_COMPATIBLE_PROPERTY","mapObject","res","translateStyle","isTransition","camelName","styleVal","generatePrefixStyle","getTransitionVal","_iterableToArrayLimit","_arrayWithoutHoles","_nonIterableSpread","cubicBezierFactor","c1","c2","multyTime","pre","cubicBezier","derivativeCubicBezier","newParams","configBezier","_easing$1$split$0$spl","_easing$1$split$0$spl2","num","curveX","curveY","derCurveX","rangeValue","bezier","_t","evalT","derVal","isStepper","configSpring","_config$stiff","stiff","_config$damping","damping","_config$dt","dt","stepper","currX","destX","currV","newV","newX","alpha","begin","needContinue","render","preObj","nextObj","preTime","beginTime","interKeys","_intersection","timingStyle","stepperStyle","velocity","cafId","steps","calStepperVals","preVals","nextStepVals","_easing2","_filter","currStyle","finalStyle","caf","sourceKeys","Animate","_PureComponent","context","_this$props","attributeName","handleStyleChange","changeStyle","_this$props2","canBegin","mounted","runAnimation","prevProps","_this$props3","shouldReAnimate","_isEqual","isTriggered","manager","stopJSAnimation","unSubscribe","_this2","onAnimationEnd","onAnimationStart","startAnimation","configUpdate","_len2","_key2","configEasing","_this3","_steps$","initialStyle","_steps$$duration","initialTime","sequence","nextItem","_nextItem$easing","nextProperties","properties","preItem","runJSAnimation","transition","propsTo","runStepAnimation","_this$props4","others","onAnimationReStart","Children","stateStyle","cloneContainer","_container$props","_container$props$styl","cloneElement","only","PureComponent","propTypes","PropTypes","oneOfType","arrayOf","shape","isRequired","oneOf","bool","parseDurationOfSingleTransition","_isNumber","AnimateGroupChild","_Component","_getPrototypeOf2","handleEnter","isAppearing","appearOptions","enterOptions","handleStyleActive","handleExit","leaveOptions","onEnter","onExit","parseTimeout","AnimateGroup","component","appear","enter","leave","TransitionGroup","any","mathSign","isPercent","_isString","_isNaN","isNumOrStr","idCounter","uniqueId","getPercentValue","percent","totalValue","validate","getAnyElementOfObject","interpolateNumber","numberA","numberB","findEntryInArray","ary","specifiedKey","specifiedValue","find","_get","defaultFormatter","_isArray","DefaultTooltipContent","payload","separator","formatter","itemStyle","itemSorter","items","_sortBy","finalItemStyle","display","paddingTop","paddingBottom","finalFormatter","formatted","_formatted","unit","margin","wrapperClassName","contentStyle","labelClassName","labelStyle","label","labelFormatter","backgroundColor","whiteSpace","finalLabelStyle","hasLabel","finalLabel","wrapperCN","labelCN","renderContent","shallowEqual","REACT_BROWSER_EVENT_MAP","mousedown","mouseup","mouseover","mousemove","mouseout","mouseenter","mouseleave","touchcancel","touchend","touchmove","touchstart","getDisplayName","Comp","findAllByType","childType","findChildByType","validateWidthHeight","_el$props","isSsr","SVG_TAGS","isSingleChildEqual","nextChild","prevChild","_isNil","nextChildren","nextProps","_ref2","prevChildren","isChildrenEqual","renderByOrder","renderMap","elements","record","isSvgElement","_renderMap$displayNam","results","parseChildIndex","CLS_PREFIX","defaultUniqBy","dataKey","Tooltip","boxWidth","boxHeight","wrapperNode","getTranslate","tooltipDimension","viewBoxDimension","allowEscapeViewBox","coordinate","viewBox","restricted","unrestricted","updateBBox","_this$state","getBoundingClientRect","box","_classNames","translateX","translateY","isAnimationActive","animationDuration","animationEasing","filterNull","finalPayload","option","_uniqBy","_isFunction","getUniqPayload","payloadUniqBy","hasPayload","content","active","outerStyle","pointerEvents","visibility","wrapperStyle","_this$state2","transform","useTranslate3d","cls","isValidElement","cursorStyle","cursor","rafSchd","lastArgs","frameId","wrapperFn","requestAnimationFrame","cancel","cancelAnimationFrame","objectProto","nativeObjectToString","symToStringTag","toStringTag","getRawTag","isOwn","unmasked","objectToString","isSymbol","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","isBinary","nativeMax","nativeMin","debounce","wait","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","flush","throttle","listHandle","isSSR","ChildWrapper","ResizeDetector","resizeHandler","getElement","resizeObserver","targetDomEl","Element","HTMLDocument","currentElement","findDOMNode","parentElement","rafClean","onResize","widthCurrent","heightCurrent","handleWidth","handleHeight","updater","createUpdater","contentRect","isSizeChanged","skipOnMount","childProps","getRenderType","refreshMode","refreshRate","refreshOptions","unmounted","createResizeHandler","ResizeObserver","toggleObserver","cancelHandler","onRef","getTargetComponent","ResponsiveContainer","handleResize","updateDimensionsImmediate","getContainerSize","oldWidth","containerWidth","oldHeight","containerHeight","_debounce","minWidth","minHeight","calculatedWidth","calculatedHeight","renderChart","ReactResizeDetector","point","that","_context","bezierCurveTo","_x0","_x1","_y0","_y1","Basis","areaStart","_line","areaEnd","lineStart","_point","lineEnd","lineTo","closePath","moveTo","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","LinearClosed","Linear","sign","slope3","h0","h1","s0","s1","slope2","t0","t1","dx","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","_t0","_x","_y","px","py","i0","i1","Step","pi","tau","tauEpsilon","Path","_","quadraticCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","arc","ccw","dy","cw","da","rect","pointX","pointY","defined","curveLinear","output","line","d","defined0","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","SVGPropKeys","EventKeys","filterProps","includeEvents","inputProps","_isObject","includes","adaptEventHandlers","newHandler","_loop","getEventHandlerOfChild","originalHandler","adaptEventsOfChild","CURVE_FACTORIES","curveBasisClosed","curveBasisOpen","curveBasis","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","getX","getY","Curve","lineFunction","points","baseLine","layout","connectNulls","curveFactory","getCurveFactory","formatPoints","formatBaseLine","areaPoints","shapeArea","shapeLine","pathRef","realPath","getPath","Dot","cx","cy","layerClass","Layer","stringCache","widthCache","cacheCount","SPAN_STYLE","STYLE_LIST","getStyleString","getStringSize","styleString","cacheKey","measurementSpan","getElementById","body","measurementSpanStyle","styleKey","BREAKING_SPACES","Text","getWordsWithoutCalculate","words","wordsByLines","getWordsByLines","updateWordsByLines","scaleToFit","needCalculate","wordsWithComputedWidth","spaceWidth","wordWidths","word","calculateWordWidths","calculateWordsByLines","currentLine","newLine","textAnchor","verticalAnchor","lineHeight","capHeight","textProps","startDy","reduceCSSCalc","transforms","range","initRange","domain","initInterpolator","interpolator","implicit","ordinal","Map","unknown","has","band","bandwidth","ordinalRange","paddingInner","paddingOuter","align","rescale","reverse","rangeRound","pointish","e10","e5","e2","ticks","tickIncrement","isFinite","power","LN10","tickStep","step0","step1","compare","ascending","lo","hi","mid","ascendingBisect","bisector","bisectRight","factory","definition","Color","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","rgb_formatRgb","Hsl","hslConvert","hsl2rgb","m1","m2","basis","v0","v1","v2","v3","t2","t3","define","displayable","formatHsl","brighter","darker","linear","gamma","nogamma","exponential","rgbGamma","colorRgb","rgbSpline","spline","isNumberArray","DataView","genericArray","nb","na","setTime","reA","reB","am","bm","bs","bi","lastIndex","one","zero","numberArray","bimap","interpolate","d0","d1","polymap","bisect","transformer","untransform","piecewise","input","interpolateValue","clamper","interpolateRound","continuous","formatSpecifier","specifier","FormatSpecifier","fill","symbol","comma","prefixExponent","formatPrefix","toExponential","formatDecimal","exponent","toPrecision","formatRounded","prefixes","grouping","thousands","group","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","charCodeAt","formatLocale","precisionPrefix","precisionRound","precisionFixed","linearish","tickFormat","nice","interval","transformLog","transformExp","exp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","E","log10","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","square","unsquare","radial","squared","valueof","swap","numbers","quantile","Float64Array","value0","quickselect","sd","newLeft","newRight","subarray","thresholds","threshold","invertExtent","sort","quantiles","quantize","newInterval","floori","offseti","field","previous","year","setMonth","setHours","setFullYear","getFullYear","month","setDate","getMonth","weekday","getDate","getDay","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","hour","getMilliseconds","getSeconds","getMinutes","getHours","minute","second","getUTCSeconds","millisecond","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","localDate","H","M","L","utcDate","UTC","newDate","timeFormat","utcFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","names","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","timeDay","timeYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","timeSunday","formatWeekNumberISO","timeThursday","formatWeekdayNumberSunday","formatWeekNumberMonday","timeMonday","formatYear","formatFullYear","formatZone","formatUTCDayOfMonth","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","getUTCMonth","formatUTCMinutes","getUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","newParse","week","parse","utcParse","defaultLocale","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","durationSecond","durationMinute","durationHour","durationDay","tickInterval","timeMonth","timeWeek","timeHour","timeMinute","timeSecond","timeMillisecond","utcMonth","utcHour","setUTCMinutes","utcMinute","setUTCSeconds","utcWeek","utcSecond","utcMillisecond","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","I","k21","r2","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","series","order","stackValue","Surface","svgView","atan2","draw","tan30","tan30_2","kr","kx","ky","sqrt3","SYMBOL_FACTORIES","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","RADIAN","Symbols","sizeType","symbolFactory","getSymbolFactory","circle","shapeSymbol","calculateAreaSize","DefaultLegendContent","inactiveColor","inactive","strokeWidth","stroke","strokeDasharray","SIZE","iconSize","marginRight","svgStyle","verticalAlign","renderIcon","textAlign","renderItems","Legend","chartWidth","hPos","vPos","chartHeight","getBBox","onBBoxUpdate","_box3","getDefaultPosition","getValueByDataKey","getDomainOfDataByKey","filterNil","flattenData","_flatMap","_min","_max","getMainColorOfGraphicItem","_item$props","getLegendProps","legendData","formatedGraphicalItems","legendWidth","legendContent","legendItem","_ref3","sectors","iconType","legendType","_ref4","_item$props2","hide","getWithHeight","getDomainOfErrorBars","axisType","errorBars","errorBarChild","entryValue","mainValue","errorDomain","prevErrorArr","errorValue","lowerValue","upperValue","getDomainOfItemsWithSameAxis","domains","isCategorialAxis","getCoordinatesOfGrid","hasMin","hasMax","getTicksOfAxis","isGrid","isAll","duplicateDomain","niceTicks","scaleContent","isCategorial","categoricalDomain","tickCount","combineEventHandlers","defaultHandler","parentHandler","childHandler","customizedHandler","arg1","arg2","arg3","arg4","parseScale","chartType","d3Scales","realScaleType","checkDomainOfScale","first","STACK_OFFSET_MAP","positive","negative","expand","none","stackOffsetNone","silhouette","wiggle","s2","si","sij0","s3","sk","getStackedData","stackItems","offsetType","dataKeys","orderNone","offsetNone","oz","kz","sz","sij","ki","shapeStack","stackOrderNone","getTicksOfScale","originalDomain","allowDecimals","scaleType","tickValues","getNiceTickValues","calculateDomainOfTicks","_domain","getTickValuesFixedDomain","getCateCoordinateOfLine","_ref7","bandSize","allowDuplicatedCategory","matchedTick","getCateCoordinateOfBar","_ref8","getDomainOfStackGroups","stackGroups","stackId","stackedData","MIN_VALUE_REG","MAX_VALUE_REG","parseSpecifiedDomain","specifiedDomain","dataDomain","allowDataOverflow","getBandSizeOfAxis","orderedTicks","cur","prev","parseDomainOfCategoryAxis","calculatedDomain","axisChild","radianToDegree","angleInRadian","polarToCartesian","radius","getAngleOfPoint","anotherPoint","distanceBetweenPoints","reverseFormatAngleOfSetor","startAngle","endAngle","startCnt","endCnt","inRangeOfSector","_ref5","sector","_getAngleOfPoint","innerRadius","outerRadius","inRange","_formatAngleOfSector","formatAngleOfSector","formatAngle","renderRadialLabel","labelProps","attrs","labelAngle","clockWise","deltaAngle","getDeltaAngle","startPoint","endPoint","dominantBaseline","xlinkHref","Label","_props$className","getLabel","isPolarLabel","isPolar","positionAttrs","midAngle","_polarToCartesian","_polarToCartesian2","getAttrsOfPolarLabel","getAttrsOfCartesianLabel","parseViewBox","parseLabel","renderCallByParent","parentProps","ckeckPropsLabel","parentViewBox","explicitChilren","implicitLabel","valueAccessor","_last","LabelList","idProps","parseLabelList","implicitLabelList","ErrorBar","dataPointFormatter","xAxis","yAxis","svgProps","_dataPointFormatter","errorVal","lowBound","highBound","lineCoordinates","_errorVal","yMid","yMin","yMax","xMin","xMax","_scale","xMid","_xMin","_xMax","_yMin","_yMax","coordinates","Line","mainCurve","isAnimationFinished","totalLength","cachePrevData","prevPoints","handleAnimationEnd","handleAnimationStart","lines","linesUnit","dotItem","getTotalLength","animationId","curveDom","lineLength","remainLength","restLength","remainLines","sum","emptyLines","repeat","errorBarItems","dataPoint","needClip","clipPathId","lineProps","customDotProps","dots","dotProps","renderDotItem","dotsProps","clipPath","curveProps","_this$props5","animationBegin","animateNewValues","prevPointsDiffFactor","stepData","prevPointIndex","interpolatorX","interpolatorY","_interpolatorX","_interpolatorY","renderCurveStatically","currentStrokeDasharray","curLength","getStrokeDasharray","_this$props6","renderCurveWithAnimation","_this$props7","hasSinglePoint","renderCurve","renderErrorBar","renderDots","xAxisId","yAxisId","activeDot","getComposedData","xAxisTicks","yAxisTicks","displayedData","Area","prevBaseLine","areaProps","startX","endX","maxY","startY","endY","maxX","renderVerticalRect","renderHorizontalRect","isRange","stepBaseLine","stepPoints","_interpolator","renderAreaStatically","renderClipRect","renderAreaWithAnimation","_this$props8","renderArea","fillOpacity","getBaseValue","baseValue","numericAxis","dataStartIndex","hasStack","XAxis","orientation","mirror","reversed","YAxis","Cross","getTangentCircle","isExternal","cornerRadius","cornerIsExternal","centerRadius","theta","asin","centerAngle","lineTangencyAngle","circleTangency","lineTangency","getSectorPath","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","Sector","forceCornerRadius","deltaRadius","cr","_getTangentCircle","soct","solt","sot","_getTangentCircle2","eoct","eolt","eot","outerArcAngle","_getTangentCircle3","sict","silt","sit","_getTangentCircle4","eict","eilt","eit","innerArcAngle","getSectorWithCorner","getRectangePath","maxRadius","ySign","xSign","newRadius","_newRadius","Rectangle","isUpdateAnimationActive","currWidth","currHeight","currY","CartesianAxis","tick","minTickGap","tickFormatter","getNumberIntervalTicks","getTicksStart","getTicksEnd","preserveEnd","sizeKey","unitSize","tail","tailContent","tailSize","tailGap","tickCoord","isShow","gap","_i2","restProps","viewBoxOld","restPropsOld","tx","ty","tickSize","tickMargin","finalTickSize","needHeight","needWidth","tickLine","finalTicks","getTicks","getTickTextAnchor","getTickVerticalAnchor","axisProps","customTickProps","tickLineProps","_this$getTickLineCoor","getTickLineCoord","lineCoord","tickProps","visibleTicksCount","renderTickItem","axisLine","ticksGenerator","noTicksProps","renderAxisLine","renderTicks","isTouch","changedTouches","Brush","leaveTimer","scaleValues","travellerDragStartHandlers","handleDrag","isTravellerMoving","handleTravellerMove","isSlideMoving","handleSlideDrag","handleTouchMove","handleDragEnd","handleLeaveWrapper","leaveTimeOut","handleEnterSlideOrTraveller","isTextActive","handleLeaveSlideOrTraveller","handleSlideDragStart","slideMoveStartX","pageX","handleTravellerDragStart","updateScale","middle","travellerWidth","updateId","minIndex","getIndexInRange","onChange","newIndex","getIndex","movingTravellerId","brushMoveStartX","_this$setState","prevValue","isFullGap","scalePoint","_range","chartElement","compact","travellerX","lineY","onMouseEnter","onMouseLeave","onMouseDown","onTouchStart","_this$props9","_this$props10","_this$state3","getTextOfTick","_this$props11","alwaysShowText","_this$state4","isPanoramic","onMouseMove","onMouseUp","onTouchEnd","onTouchMove","renderBackground","renderPanorama","renderSlide","renderTraveller","renderText","ifOverflowMatches","alwaysShow","ifOverflow","rectWithPoints","ScaleHelper","bandAware","_offset","_offset2","EPS","createLabeldScales","scales","_mapValues","isInRange","_every","ReferenceDot","isX","isY","getCoordinate","renderDot","isFront","ReferenceLine","fixedX","fixedY","segment","endPoints","isFixedX","isFixedY","isSegment","_props$viewBox","yCoord","xCoord","_orientation","_coord","_points","_points2","_some","getEndPoints","_endPoints","_endPoints$","_endPoints$2","renderLine","rectWithCoords","ReferenceArea","hasX1","hasX2","hasY1","hasY2","xValue1","xValue2","yValue1","yValue2","p1","rangeMin","p2","rangeMax","getRect","renderRect","detectReferenceElementsDomain","axisId","specifiedTicks","areas","idKey","valueKey","finalDomain","key1","key2","value1","value2","eventCenter","EventEmitter","setMaxListeners","SYNC_EVENT","ORIENT_MAP","originCoordinate","generateCategoricalChart","chartName","GraphicalChild","_ref$eventType","axisComponents","formatAxisMap","CategoricalChartWrapper","uniqueChartId","legendInstance","handleLegendBBoxUpdate","dataEndIndex","updateStateOfAxisMapsOffsetAndStackGroups","handleReceiveSyncEvent","cId","chartId","syncId","activeTooltipIndex","chartX","chartY","tooltipTicks","validateChartX","validateChartY","activeLabel","activePayload","getTooltipContent","activeCoordinate","handleBrushChange","triggerSyncEvent","handleMouseEnter","mouse","getMouseInfo","isTooltipActive","triggeredAfterMouseMove","handleItemMouseEnter","activeItem","tooltipPayload","tooltipPosition","handleItemMouseLeave","handleMouseMove","persist","handleMouseLeave","handleOuterEvent","eventName","getReactEventByType","handleClick","onClick","handleMouseDown","handleMouseUp","handleTouchStart","handleTouchEnd","verticalCoordinatesGenerator","horizontalCoordinatesGenerator","axesTicksGenerator","tooltipTicksGenerator","axisMap","orderedTooltipTicks","tooltipAxis","tooltipAxisBandSize","renderCursor","cursorComp","getCursorRectangle","_this$getCursorPoints","getCursorPoints","cursorProps","renderPolarAxis","axisOption","renderXAxis","axisObj","xAxisMap","renderAxis","renderYAxis","yAxisMap","renderGrid","_find","renderPolarGrid","_this$state5","radiusAxisMap","angleAxisMap","radiusAxis","angleAxis","polarAngles","polarRadius","renderLegend","otherProps","legend","renderTooltip","tooltipItem","_this$state6","renderBrush","_this$state7","brushBottom","renderReferenceElement","_this$state8","_element$props","renderGraphicChild","filterFormatItem","graphicalItem","_this$state9","_item$item$props","activePoint","basePoint","renderActivePoints","childIndex","renderCustomized","defaultState","createDefaultState","throttleDelay","_throttle","numericAxisName","cateAxisName","stackOffset","newUpdateId","prevState","_ref5$axisType","AxisComp","graphicalItems","axisIdKey","axes","getAxisMapByAxes","getAxisMapByItems","Axis","_ref6","_child$props","getDisplayedData","duplicate","hasDuplicate","errorBarsDomain","parseErrorBarsOfAxis","activeIndex","rangeObj","_angle","_radius","pageY","calculateChartCoordinate","html","ownerDocument","documentElement","pageYOffset","clientTop","pageXOffset","clientLeft","getOffset","_this$state10","xScale","yScale","xValue","yValue","_this$state11","unsortedTicks","before","after","sameDirectionCoord","diffInterval","curInRange","afterInRange","sameInterval","calculateActiveTickIndex","calculateTooltipPos","getActiveCoordinate","_this$state12","_child$props2","tooltipType","currentState","barSize","barGap","barCategoryGap","globalMaxBarSize","maxBarSize","_CategoricalChartWrap","getAxisNameByLayout","hasBar","sizeList","globalSize","_ref5$stackGroups","numericAxisIds","sgs","stackIds","sLen","_sgs$stackIds$j","cateAxisId","barItems","selfSize","cateId","stackList","getBarSizeList","formatedItems","_objectSpread5","childMaxBarSize","numericAxisId","_objectSpread4","cateAxis","cateTicks","itemIndex","getStackedDataOfItem","barPosition","_ref6$sizeList","realBarGap","useFull","fullBarSize","newRes","originalSize","getBarPosition","componsedFn","onItemMouseLeave","onItemMouseEnter","_this$state13","halfSize","_this$state14","_cx","_cy","innerPoint","outerPoint","_this$state15","tooltipEvents","_this4","reverseStackOrder","_CategoricalChartWrap2","_items","_item$props3","parentGroup","childGroup","getStackGroupsByAxisId","getAxisMap","calculateOffset","cateAxisMap","ticksObj","getFormatItems","_maxListeners","_ref9","_ref9$xAxisMap","_ref9$yAxisMap","brushItem","offsetH","offsetV","legendBox","legendProps","newOffset","appendOffsetOfLegend","axisOptions","_ref10","_item$item$props2","renderActiveDot","_this$state$offset","_this5","CartesianGrid","Bar","Radar","RadialBar","Scatter","Pie","Funnel","PolarGrid","PolarAngleAxis","PolarRadiusAxis","Customized","renderClipPath","events","parseEventsOfWrapper","defaultShowTooltip","some","_ref11","itemsData","itemData","Cell","_objectDestructuringEmpty","prevData","baseProps","renderRectangle","interpolatorWidth","interpolatorHeight","_interpolatorHeight","renderRectanglesStatically","renderRectanglesWithAnimation","backgroundProps","rest","renderRectangles","minPointSize","findPositionOfBar","stackedDomain","getBaseValueOfBar","cells","rects","truncateByDomain","ZAxis","zAxisId","cachePrevPoints","activeShape","renderSymbolItem","interpolatorCx","interpolatorCy","interpolatorSize","renderSymbolsStatically","renderSymbolsWithAnimation","dataPointFormatterY","dataPointFormatterX","linePoints","lineItem","lineType","lineJointType","scatterProps","customLineProps","_getLinearRegression","xsum","ysum","xysum","xxsum","xmin","xmax","getLinearRegression","linearExp","renderSymbols","zAxis","xAxisDataKey","yAxisDataKey","zAxisDataKey","defaultRangeZ","defaultZ","xBandSize","yBandSize","ids","leftMirror","rightMirror","topMirror","bottomMirror","needSpace","_axis$padding","offsetKey","_parseScale","finalAxis","warning","isObjectEmpty","compositeSetters","glConstant","compositeSetter","getter","resetParameters","nocatch","acc","deepmerge","clone","flatten","flattenArray","fillArray","total","copied","ListContext","createEventEmitter","changedBits","createContext","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","gud","Provider","emitter","getChildContext","componentWillReceiveProps","objectIs","childContextTypes","Consumer","_Component2","observedBits","componentDidMount","componentWillUnmount","contextTypes","createNamedContext","Router","computeRootMatch","isExact","_pendingLocation","RouterContext","staticContext","matchPath","exact","strict","sensitive","matched","pathCache","regexp","pathToRegexp","compilePath","memo","createURL","staticHandler","methodName","withRouter","C","wrappedComponentRef","remainingProps","hoistStatics","vendors","_now","cp","cancelled","polyfill","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","Uint8Array","encodingOrOffset","allocUnsafe","byteOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","fromString","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","ret","toHex","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","ctor","superCtor","super_","TempCtor","baseIsNative","vs","fs","COORDINATE_SYSTEM_GLSL_CONSTANTS","PROJECTION_MODE_GLSL_CONSTANTS","INITIAL_MODULE_OPTIONS","dependencies","getUniforms","getUniformsFromViewport","EXT_FLOAT_WEBGL2","bpp","Renderbuffer","samples","RENDERBUFFER_FORMATS","getRenderbufferParameter","passiveSupported","arrayOrType","Uint8ClampedArray","flipRows","bytesPerPixel","temp","bytesPerRow","topOffset","bottomOffset","newWidth","newHeight","newData","pna","objectKeys","Duplex","util","inherits","Readable","Writable","readable","allowHalfOpen","onend","_writableState","ended","onEndNT","highWaterMark","_readableState","destroyed","_destroy","cb","fails","isLength","_SnackbarProvider","_interopRequireDefault","_withSnackbar","_useSnackbar","__esModule","reactIs","REACT_STATICS","contextType","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","getOwnPropertyNames","objectPrototype","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","punycode","Url","protocol","slashes","auth","host","port","hostname","urlParse","relative","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","proto","lowerProto","atSign","hostEnd","hec","decodeURIComponent","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","ae","esc","encodeURIComponent","qm","stringify","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","baseFlatten","baseOrderBy","baseRest","isIterateeCall","sortBy","collection","iteratees","getUTCWeekYear","localeFirstWeekContainsDate","firstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","pathPrefix","loadImage","Texture2D","createChainedFunction","vec2_transformMat4AsVector","vec3_transformMat4AsVector","vec3_transformMat2","matches","baseIteratee","baseUniq","iteratee","createRange","getWebGL2ValueOrZero","WEBGL_PARAMETERS","WEBGL2_CONTEXT_POLYFILLS","createVertexArray","deleteVertexArray","bindVertexArray","isVertexArray","vertexAttribDivisor","drawElementsInstanced","drawArraysInstanced","createQuery","deleteQuery","beginQuery","endQuery","getQuery","getQueryObject","getQueryParameter","WEBGL2_CONTEXT_OVERRIDES","originalFunc","getVertexAttrib","extension","getExtensionData","getProgramParameter","program","getInternalformatParameter","originalGetParameter","uidCounters","REASONS","originKeyExtractor","capitalise","SNACKBAR_INDENTS","MESSAGES","defaultIconVariant","allClasses","_react2","_SvgIcon2","mui","anchorOriginTopCenter","anchorOriginBottomCenter","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft","containerAnchorOriginTopCenter","containerAnchorOriginBottomCenter","containerAnchorOriginTopRight","containerAnchorOriginBottomRight","containerAnchorOriginTopLeft","containerAnchorOriginBottomLeft","iconStyles","fontSize","success","NO_PERSIST_ALL","NO_CHILDREN_OPTION","view","dense","snackbar","anchor","vertical","horizontal","CLICKAWAY","MAXSNACK","isBoolean","isRegExp","isError","isPrimitive","DESCRIPTORS","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","navigate","ex","isModifiedEvent","forwardedRef","Link","ariaCurrent","activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","componentWillMount","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","__suppressDeprecationWarning","timestamp","timeParts","is","objA","objB","keysA","keysB","isEqual","compute","cachedArgs","cachedResult","exportName","VENDOR_PREFIXES","TEST_ELEMENT","setTimeoutContext","bindFn","invokeArrayArg","each","deprecate","deprecationMessage","nextKey","dest","inherit","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","hasParent","inStr","inArray","findByKey","toArray","uniqueArray","prefixed","camelProp","_uniqueId","getWindowForElement","doc","defaultView","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","PROPS_XY","PROPS_CLIENT_XY","Input","inputTarget","domHandler","ev","init","inputHandler","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","timeStamp","deltaTime","getAngle","getDistance","offsetDelta","prevDelta","prevInput","deltaX","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","rotation","getRotation","maxPointers","velocityX","velocityY","lastInterval","computeIntervalInputData","srcEvent","computeInputData","recognize","clientX","clientY","evEl","evTarget","evWin","destroy","MOUSE_INPUT_MAP","MouseInput","pressed","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","SingleTouchInput","started","normalizeSingleTouches","all","touches","TOUCH_INPUT_MAP","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","touch","TouchMouseInput","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","supports","getTouchActionProps","TouchAction","actions","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","preventDefault","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","Recognizer","defaults","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","attrTest","optionPointers","isRecognized","isValid","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","createInputInstance","toggleCssProps","stopped","curRecognizer","existing","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","modules","nodeIO","baseLt","refProps","normalizeStyle","layerIndex","layers","layerRef","normalizedLayer","TransitionInterpolator","currentProps","propNames","WRAPPED_ANGULAR_PROPS","getEndValueByShortestPath","isWrappedAngularProp","REQUIRED_PROPS","LINEARLY_INTERPOLATED_PROPS","ViewportFlyToInterpolator","startViewportProps","endViewportProps","LinearInterpolator","transitionProps","aroundLngLat","around","MAPBOX_LIMITS","minZoom","minPitch","maxPitch","DEFAULT_STATE","MapState","transitionEasing","transitionInterpolator","transitionInterruption","startPanLngLat","startZoomLngLat","startBearing","startPitch","_applyConstraints","_getUpdatedMapState","_unproject","startPos","_interactiveState","_calculateNewLngLat","_viewportProps","deltaScaleX","deltaScaleY","_calculateNewPitchAndBearing","_calculateNewZoom","newProps","decapitalize","mapContainer","onViewportChange","onViewStateChange","eventManager","isDragging","NO_TOKEN_WARNING","CONTAINER_STYLE","overflow","Mapbox","preventStyleDiffing","disableTokenWarning","visible","visibilityConstraints","StaticMap","accessTokenInvalid","createRef","evt","mapStyle","mapboxgl","_mapboxMapRef","_mapbox","_width","_height","oldProps","dimensions","interactiveContext","mapContainerStyle","constraints","constraintName","checkVisibilityConstraints","viewState","_mapContainerRef","disableWidth","disableHeight","_renderOverlays","TRANSITION_EVENTS","DEFAULT_PROPS","onTransitionStart","onTransitionInterrupt","onTransitionEnd","onStateChange","TransitionManager","_animationFrame","_shouldIgnoreViewportChange","_isTransitionEnabled","interruption","currentTime","cropEasingFunction","arePropsEqual","_isUpdateDueToCurrentTransition","initialProps","interactionState","inTransition","isZooming","isPanning","isRotating","startTime","animation","propsInTransition","shouldEnd","mapState","NO_TRANSITION_PROPS","LINEAR_TRANSITION_PROPS","EVENT_TYPES","MapController","handleEvent","executeNow","_arguments","_onPanStart","_onPan","_onPanEnd","_onPinchStart","_onPinch","_onPinchEnd","_onDoubleTap","_onWheel","_onKeyDown","newMapState","extraProps","extraState","oldViewport","newViewport","viewStateChanged","overrides","isInteractive","scrollZoom","dragPan","dragRotate","doubleClickZoom","touchZoom","touchRotate","keyboard","dimensionChanged","mapStateProps","eventNames","enabled","panStart","isFunctionKeyPressed","_onPanRotate","_onPanMove","panEnd","pan","centerY","zoomStart","startPinchRotation","zoomEnd","isZoomOut","funcKey","getMapState","updateViewport","old","new","getDeprecatedText","getNewText","checkDeprecatedProps","depProp","warnMessage","onInteractionStateChange","onHover","onDblClick","onContextMenu","onMouseOut","onWheel","clickRadius","interactiveLayerIds","getCursor","controller","onNativeClick","isHovering","InteractiveMap","isLoaded","oldViewState","features","isEntering","isExiting","callbacks","isDoubleClickEnabled","deprecateWarn","_eventManager","_eventCanvasRef","pointerleave","_onEvent","anyclick","dblclick","wheel","contextmenu","queryParams","bbox","updatedContext","eventCanvasStyle","_interactiveContext","onLoad","_staticMapRef","deepEqual","aKeys","bKeys","sourceCounter","Source","sourceOptions","changedKey","changedKeyCount","_render","beforeId","layerCounter","layerOptions","paint","minzoom","maxzoom","diffLayerStyles","captureScroll","captureDrag","captureClick","captureDoubleClick","BaseControl","_containerRef","_onDblClick","draggable","onDrag","onDragEnd","onDragStart","offsetLeft","offsetTop","DraggableControl","dragPos","dragOffset","callbackEvent","pancancel","_onDragCancel","_getDraggedPosition","Marker","div","_control","containerStyle","ANCHOR_POSITION","ANCHOR_TYPES","tipSize","closeButton","closeOnClick","dynamicPosition","sortByDepth","onClose","Popup","_contentRef","selfWidth","selfHeight","anchorX","anchorY","xStep","positionType","anchorPosition","getDynamicPosition","zIndex","borderWidth","_getPosition","_getContainerStyle","_renderTip","FullscreenControl","isFullscreen","showButton","_mapboxFullscreenControl","_checkFullscreenSupport","aria-hidden","_renderButton","positionOptions","fitBoundsOptions","trackUserLocation","showUserLocation","onGeolocate","GeolocateControl","supportsGeolocation","markerPosition","controlOptions","coords","newViewState","isGeolocationSupported","geolocationWatchID","_mapboxGeolocateControl","showCompass","showZoom","zoomInLabel","zoomOutLabel","compassLabel","getUIVersion","mapboxVersion","version1","version2","part1","part2","compareVersions","NavigationControl","_uiVersion","maxWidth","ScaleControl","mapboxScaleControl","redraw","CanvasOverlay","ctx","pixelRatio","HTMLOverlay","SVGOverlay","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","mark","awrap","async","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","definePropertyModule","createPropertyDescriptor","nativeExpm1","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","eq","nativeCreate","getNative","isKeyable","__data__","arrayLikeKeys","baseKeys","isArrayLike","baseForOwn","baseEach","createBaseEach","isIndex","createStyles","isUnitless","toUnitless","convertLength","baseFontSize","toUnit","fromUnit","pxLength","outputLength","alignProperty","grid","sizeBelow","sizeAbove","fontGrid","htmlFontSize","responsiveProperty","cssProperty","_ref3$unit","_ref3$breakpoints","breakpoints","_ref3$transform","factor","breakpoint","responsiveFontSizes","themeInput","_options$breakpoints","_options$disableAlign","disableAlign","_options$factor","_options$variants","variants","typography","convert","breakpointValues","variant","remFontSize","maxFontSize","minFontSize","withThemeCreator","WithTheme","ServerStyleSheets","sheetsManager","sheetsRegistry","generateClassName","createGenerateClassName","StylesProvider","serverGenerateClassName","dangerouslySetInnerHTML","__html","ReflectOwnKeys","R","ReflectApply","NumberIsNaN","_events","_eventsCount","defaultMaxListeners","$getMaxListeners","_addListener","prepend","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","getMaxListeners","doError","er","originalListener","rawListeners","createBreakpoints","_breakpoints$values","xs","sm","md","lg","xl","_breakpoints$unit","_breakpoints$step","between","down","upperbound","createMixins","spacing","_toolbar","gutters","paddingLeft","paddingRight","toolbar","common","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","light","primary","secondary","disabled","divider","paper","hover","hoverOpacity","selected","selectedOpacity","disabledBackground","disabledOpacity","focus","focusOpacity","activatedOpacity","dark","icon","addLightOrDark","intent","shade","tonalOffset","main","createPalette","palette","_palette$primary","_palette$secondary","_palette$error","_palette$warning","_palette$info","_palette$success","_palette$type","_palette$contrastThre","contrastThreshold","_palette$tonalOffset","getContrastText","augmentColor","mainShade","lightShade","darkShade","contrastText","caseAllCaps","textTransform","createTypography","_ref$fontFamily","fontFamily","_ref$fontSize","_ref$fontWeightLight","fontWeightLight","_ref$fontWeightRegula","fontWeightRegular","_ref$fontWeightMedium","fontWeightMedium","_ref$fontWeightBold","fontWeightBold","_ref$htmlFontSize","allVariants","pxToRem2","pxToRem","coef","buildVariant","fontWeight","letterSpacing","casing","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","caption","overline","createShadow","shadows","borderRadius","createSpacing","spacingInput","createUnarySpacing","mobileStepper","speedDial","appBar","drawer","modal","tooltip","breakpointsInput","_options$mixins","mixinsInput","_options$palette","paletteInput","_options$typography","typographyInput","muiTheme","transitions","omit","fields","styled","componentCreator","StyledComponent","ComponentProp","clsx","spread","FinalComponent","styledWithoutDefault","ThemeContext","defaultBreakpoints","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","_themeBreakpoints","SvgIcon","_props$color","_props$component","_props$fontSize","htmlColor","titleAccess","focusable","role","muiName","flexShrink","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeLarge","hasSymbol","for","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","tel","email","password","datetime","handleKeyDown","metaKey","altKey","ctrlKey","handlePointerDown","handleVisibilityChange","visibilityState","isFocusVisible","tagName","readOnly","isContentEditable","focusTriggersKeyboardModality","handleBlurVisible","useIsFocusVisible","onBlurVisible","ReactDOM","decode","encode","ZERO_VECTOR","VECTOR_TO_POINT_MATRIX","IDENTITY_MATRIX","DEFAULT_PIXELS_PER_UNIT2","DEFAULT_COORDINATE_ORIGIN","LNGLAT_AUTO_OFFSET_ZOOM_THRESHOLD","getMemoizedViewportUniforms","coordinateSystem","coordinateOrigin","viewMatrixUncentered","projectionMode","viewProjectionMatrix","projectionCenter","cameraPosCommon","shaderCoordinateOrigin","offsetMode","positionCommonSpace","calculateMatrixAndOffset","distanceScales","viewportSize","uniforms","project_uCoordinateSystem","project_uProjectionMode","project_uCoordinateOrigin","project_uCenter","project_uAntimeridian","project_uViewportSize","project_uDevicePixelRatio","project_uFocalDistance","project_uCommonUnitsPerMeter","project_uCommonUnitsPerWorldUnit","project_uCommonUnitsPerWorldUnit2","project_uScale","project_uViewProjectionMatrix","project_uCameraPosition","distanceScalesAtOrigin","modelMatrix","wrapLongitude","positionOrigin","isElectron","mockUserAgent","realUserAgent","_construct","createSvgIcon","_CSSTransition","_ReplaceTransition","_TransitionGroup","_Transition","ReplaceTransition","CSSTransition","arrayEvery","baseEvery","predicate","guard","getTimezoneOffsetInMilliseconds","baseTimezoneOffset","setSeconds","dateLongFormatter","pattern","formatLong","timeLongFormatter","longFormatters","dateTimeFormat","matchResult","datePattern","timePattern","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","ExpansionPanelContext","ShaderAttribute","constantValue","getStride","resolveShaderAttribute","baseAccessor","shaderAttributeOptions","vertexOffset","DataColumn","logicalType","doublePrecision","bufferType","hasFeature","FEATURES","defaultType","glArrayFromType","externalBuffer","bufferAccessor","allocatedValue","typedArrayManager","shaderAttributes","isBuffer64Bit","doubleShaderAttributeDefs","resolvedOptions","high","low","resolveDoublePrecisionShaderAttributes","shaderAttributeDef","_normalizeValue","_normalizeConstant","_areValuesEqual","toDoublePrecisionArray","startOffset","endOffset","numInstances","illegalArrayType","isIndexed","EMPTY","FULL","rangeList","newRangeList","insertPosition","range0","padArrayChunk","sourceLength","targetLength","datum","DEFAULT_TRANSITION_SETTINGS","interpolation","spring","stiffness","normalizeTransitionSettings","userSettings","layerSettings","getSourceBufferAttribute","attribute","getAttributeTypeFromSize","cycleBuffers","buffers","getAttributeBufferLength","multiplier","padBuffer","fromLength","fromStartIndices","precisionMultiplier","toStartIndices","hasStartIndices","toLength","isConstant","toData","getMissingData","sourceStartIndices","targetStartIndices","getChunkData","nextSourceIndex","nextTargetIndex","padArray","Attribute","noAlloc","lastExternalBuffer","binaryValue","binaryAccessor","needsUpdate","needsRedraw","updateRanges","clearChangedFlags","reason","dataRange","updated","getVertexOffset","setData","needsNormalize","row","shaderAttributeDefs","accessorFunc","objectValue","numVertices","FS100","FS_GLES","FS300","getQualifierDetails","qualifiers","qualifier","getPassthroughFS","inputType","outputValue","convertToVec4","typeToChannelCount","variable","BufferTransform","varyings","bindings","sourceBuffers","transformFeedback","attributes","varyingName","feedbackBuffers","bufferOrParams","getBuffer","feedbackName","feedbackMap","sourceName","bufferOrRef","_createNewBuffer","bufferName","_getFeedbackBuffers","model","_updateBinding","_swapBuffers","dstName","resources","currentIndex","getShaderVersion","updateForTextures","sourceTextureMap","targetTextureVarying","targetTexture","sourceCount","targetTextureType","samplerTextureMap","updatedVs","finalInject","vsLines","updateVsLines","textureMap","attributeData","getAttributeDefinition","updatedLine","textureName","samplerName","sizeName","uniformDeclerations","getSamplerDeclerations","typeToChannelSuffix","sampleInstruction","inject","processAttributeDefinition","combineInjects","varying","qualaiferDetails","getVaryingType","getSizeUniforms","SRC_TEX_PARAMETER_OVERRIDES","TextureTransform","updatedModelProps","_processVertexShader","sourceTextures","discard","hasSourceTextures","sizeUniforms","packed","readPixelsToArray","channelCount","packedPixels","packCount","_targetTextureVarying","_swapTexture","textureOrReference","refTexture","_createNewTexture","_sourceTextures","_targetTexture","_createTargetTexture","elementCount","elementIds","_swapTextures","cloneTextureFrom","combinedInject","Transform","bufferTransform","textureTransform","clearRenderTarget","updatedOpts","_updateDrawOptions","swapped","resourceTransforms","resourceTransform","_updateModelProps","setupResources","updatedProps","canCreateBufferTransform","canCreateTextureTransform","GPUInterpolationTransition","attributeType","defines","ATTRIBUTE_TYPE","getTransform","bufferOpts","transitionSettings","padBufferOpts","currentLength","aFrom","aTo","vCurrent","TRANSITION_TYPES","getTexture","getFramebuffer","aPrev","aCur","vNext","depthTest","blend","AttributeTransitionManager","animatedAttributes","isNew","TransitionType","AttributeManager","clearRedrawFlags","updaters","attributeNameArray","triggerName","invalidatedAttributes","_invalidateTrigger","accessorName","transitionUpdated","attributeTransitionManager","changedAttributes","excludeAttributes","newAttributes","newAttribute","_createAttribute","triggers","CPUInterpolationTransition","fromValue","toValue","updateSpringElement","distanceSquare","_currValue","updateSpring","UniformTransitionManager","propsChangedReason","compareProps","getPropTypes","ignoreProps","updateTriggers","extensions","dataChangedReason","dataChanged","dataComparator","_dataDiff","diffDataProps","updateTriggersChangedReason","diffUpdateTrigger","triggerChanged","diffUpdateTriggers","propsChanged","updateTriggersChanged","extensionsChanged","diffExtensions","transitionsChanged","diffTransitions","propType","comparePropValues","newProp","oldProp","equal","oldExtensions","newTriggers","oldTriggers","LayerType","isPlainObject","mergeShaders","mergedInjection","lngLatZToWorldPosition","getWorldPosition","normalizedParams","fromCoordinateSystem","fromCoordinateOrigin","normalizeParameters","originWorld","TYPE_DEFINITIONS","boolean","arrayEqual","valueType","getTypeOf","function","array1","array2","parsePropType","propDef","normalizePropDefinition","createProps","propsPrototype","getPropsPrototype","propsInstance","componentClass","getOwnProperty","parentClass","parentDefaultProps","componentPropDefs","propDefs","parsePropTypes","getComponentName","createPropsPrototype","defaultValues","descriptors","getDescriptorForAsyncProp","addAsyncPropsToPropPrototype","nameStr","newPropName","addDeprecatedPropsToPropPrototype","createPropsPrototypeAndTypes","_asyncIterator","EMPTY_PROPS","ComponentState","oldAsyncProps","asyncProp","asyncProps","resolvedValues","originalValues","_didAsyncInputValueChange","fetch","loadCount","promise","onDataLoad","pendingLoadCount","chunk","_postProcessValue","previousValue","dataTransform","lastValue","resolvedValue","resolvedLoadCount","internalState","LayerState","attributeManager","isFetchResponse","Response","isFileReadable","File","Blob","fileAliases","resolvePath","filename","replacement","FileReadableResponse","_getFileReader","reader","Headers","_fileOrBlob","fetchFileReadable","fileOrBlob","validateLoaderVersion","coreVersion","loaderVersion","parseVersion","parts","major","minor","NullLog","DEFAULT_LOADER_OPTIONS","CDN","worker","isPureObject","globalOptions","mergeOptions","mergedOptions","addUrlOptions","mergeNestedFields","_AwaitValue","AsyncGenerator","front","back","resume","wrappedAwait","settle","request","response","errorMessage","ERR_DATA","getUrlFromData","getArrayBufferOrStringFromDataSync","arrayBuffer","TextDecoder","textDecoder","checkFetchResponseStatus","getLoaderContext","previousContext","fetchFile","getLoaders","loaders","candidateLoaders","contextLoaders","toArrayBuffer","bufferToArrayBuffer","TextEncoder","workerURLCache","buildScript","workerUrl","isTransferable","MessagePort","OffscreenCanvas","getTransferList","recursive","transfers","defaultOnMessage","WorkerThread","onMessage","workerSource","workerURL","blob","URL","getWorkerURL","Worker","betterError","transferList","WorkerPool","maxConcurrency","onDebug","jobName","jobQueue","job","backlog","idleQueue","WorkerFarm","workerPool","workerName","_getWorkerPool","workerPools","canParseWithWorker","parseWithWorker","workerFarm","_workerFarm","onWorkerMessage","getWorkerFarm","arraybuffer","EXT_PATTERN","DATA_URL_PATTERN","selectLoader","nothrow","normalizeLoaders","getRegisteredLoaders","findLoaderByUrl","findLoaderByContentType","findLoaderByExamingInitialData","getFirstCharacters","mimeType","findLoaderByMimeType","loaderExtension","findLoaderByExtension","testText","testBinary","getMagicString","dataView","magic","autoUrl","parseWithLoader","getArrayBufferOrStringFromData","pickingColorCache","optional","load","pickable","positionFormat","colorFormat","getPolygonOffset","highlightedObjectIndex","autoHighlight","highlightColor","layerName","updateObject","stateChanged","_getNeedsRedraw","shouldUpdateState","uniformTransitions","models","pickingEvent","shaders","changeFlags","getNumInstances","getStartIndices","ignoreUnknownAttributes","cacheSize","newCacheSize","pickingColor","getAttributeManager","pickingColors","instancePickingColors","decodePickingColor","viewportChanged","stateNeedsUpdate","updateParams","moduleParameters","offsets","flags","propsOrDataChanged","somethingChanged","diffProps","setChangeFlags","validateProps","encodePickingColor","attributeManagerNeedsRedraw","calculateInstancePickingColors","_onAsyncPropUpdated","oldLayer","oldHandler","predict","enhancePointerEventInput","hammerjs","enhanceMouseInput","RECOGNIZERS","RECOGNIZER_COMPATIBLE_MAP","doubletap","anytap","RECOGNIZER_FALLBACK_MAP","BASIC_EVENT_ALIASES","INPUT_EVENT_TYPES","EVENT_RECOGNIZER_MAP","tap","press","pinch","pinchin","pinchout","pinchstart","pinchmove","pinchend","pinchcancel","rotatestart","rotatemove","rotateend","rotatecancel","panup","pandown","panleft","panright","swipe","swipeleft","swiperight","swipeup","swipedown","GESTURE_EVENT_ALIASES","firefox","WHEEL_EVENTS","WheelInput","passive","wheelPosition","MOUSE_EVENTS","MoveInput","KEY_EVENTS","KeyInput","targetElement","enableDownEvent","enableUpEvent","ContextmenuInput","DEFAULT_OPTIONS","srcElement","priority","EventRegistrar","handlersByElement","mjolnirEvent","_normalizeEvent","immediatePropagationStopped","stopPropagation","stopImmediatePropagation","entriesToRemove","rootElement","buttons","leftButton","middleButton","rightButton","whichButtons","getOffsetPosition","handled","recognizerOptions","EventManager","_onBasicInput","_onOtherEvent","ManagerClass","otherName","recognizerOption","eventAlias","eventRegistrar","fallbackRecognizers","recognizerName","isRecognizerUsed","eh","alias","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","full","long","medium","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","argumentCallback","buildMatchFn","dirtyString","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","findIndex","findKey","valueCallback","formatDistance","addSuffix","comparison","formatRelative","_date","_baseDate","_options","localize","ordinalNumber","_dirtyOptions","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","_cache","Wrapper","MathArray","arrayOrObject","toObject","formatString","minVector","maxVector","vectors","subtract","addScalar","scalar","valid","addMilliseconds","dirtyAmount","amount","subMilliseconds","startOfUTCWeekYear","firstWeek","getUTCWeek","startOfUTCISOWeekYear","fourthOfJanuary","getUTCISOWeek","ponyfill","mapboxApiAccessToken","mapboxApiUrl","attributionControl","preserveDrawingBuffer","reuseMaps","transformRequest","mapOptions","asyncRender","accessToken","getAccessToken","checkPropTypes","_map","oldContainer","newContainer","getContext","interactive","trackResize","_updateMapViewport","sizeChanged","_updateMapSize","_getViewState","_viewStateToMapboxProps","testElement","isCssLoaded","balanced","reduceFunctionCall","mexp","NESTED_CALC_RE","decimalPrecision","evaluateExpression","expression","functionIdentifier","uniqueUnits","uniqueLowerCaseUnits","unitRegEx","getUnitsInExpression","evaluatedPart","nonEvaluatedPart","balancedExpr","evaluated","post","evaluateNestedExpression","toEvaluate","eval","_react","webpackPolyfill","paths","copyProps","SafeBuffer","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","IndexedObject","requireObjectCoercible","PREFERRED_STRING","whitespace","ltrim","rtrim","createMethod","TYPE","$this","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","baseIsEqualDeep","bitmask","customizer","setCacheAdd","setCacheHas","SetCache","baseIsArguments","isArguments","reIsUint","reIsDeepProp","reIsPlainProp","ReactIs","ClientRequest","statusCodes","http","defaultProtocol","headers","req","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","createChangeEmitter","currentListeners","nextListeners","ensureCanMutateNextListeners","isSubscribed","clearFlags","WEBGL2","VERTEX_ARRAY_OBJECT","TIMER_QUERY","INSTANCED_RENDERING","MULTIPLE_RENDER_TARGETS","ELEMENT_INDEX_UINT32","BLEND_EQUATION_MINMAX","FLOAT_BLEND","COLOR_ENCODING_SRGB","TEXTURE_DEPTH","TEXTURE_FLOAT","TEXTURE_HALF_FLOAT","TEXTURE_FILTER_LINEAR_FLOAT","TEXTURE_FILTER_LINEAR_HALF_FLOAT","TEXTURE_FILTER_ANISOTROPIC","COLOR_ATTACHMENT_RGBA32F","COLOR_ATTACHMENT_FLOAT","COLOR_ATTACHMENT_HALF_FLOAT","GLSL_FRAG_DATA","GLSL_FRAG_DEPTH","GLSL_DERIVATIVES","GLSL_TEXTURE_LOD","testTexture","testFb","isarray","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","delimiter","escaped","capture","modifier","asterisk","partial","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","pretty","attachKeys","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","_getNiceTickValues","getTickValues","MODULE_INJECTORS","DECLARATION_INJECT_MARKER","REGEX_START_OF_MAIN","REGEX_END_OF_MAIN","fragments","injectShader","injectStandardStubs","isVertex","fragmentData","fragmentString","injects","glFormatToComponents","sourceX","sourceY","sourceFormat","sourceAttachment","sourceWidth","sourceHeight","sourceType","deleteFramebuffer","getPixelArray","targetMaxHeight","MAX_SAFE_INTEGER","imageData","toFramebuffer","pixelArray","Paper","_props$square","_props$elevation","elevation","_props$variant","outlined","rounded","elevations","shadow","boxShadow","NoSsr","_props$defer","defer","_props$fallback","_React$useState","mountedState","setMountedState","getChildMapping","mapFn","mapper","getProp","getNextChildMapping","prevChildMapping","onExited","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","pendingNextKey","mergeChildMappings","hasPrev","hasNext","isLeaving","in","exit","_React$Component","handleExited","contextValue","isMounting","firstRender","currentChildMapping","childFactory","TransitionGroupContext","Ripple","_props$pulsate","pulsate","rippleX","rippleY","rippleSize","inProp","_props$onExited","leaving","setLeaving","rippleClassName","ripple","rippleVisible","ripplePulsate","rippleStyles","childClassName","childLeaving","childPulsate","timeoutId","TouchRipple","_props$center","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","startTimerCommit","startCommit","oldRipples","_options$pulsate","_options$center","_options$fakeElement","fakeElement","sizeX","sizeY","flip","ButtonBase","buttonRefProp","buttonRef","_props$centerRipple","centerRipple","_props$disabled","_props$disableRipple","disableRipple","_props$disableTouchRi","disableTouchRipple","_props$focusRipple","focusRipple","focusVisibleClassName","onBlur","onFocus","onFocusVisible","onKeyDown","onKeyUp","onDragLeave","_props$tabIndex","tabIndex","TouchRippleProps","_props$type","rippleRef","focusVisible","setFocusVisible","_useIsFocusVisible","focusVisibleRef","useRippleHandler","rippleAction","eventCallback","skipRippleAction","handleDragLeave","handleBlur","handleFocus","currentTarget","isNonNativeButton","keydownRef","handleKeyUp","defaultPrevented","buttonProps","handleUserRef","handleOwnRef","handleRef","alignItems","justifyContent","WebkitTapHighlightColor","outline","textDecoration","borderStyle","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","makeStylesWithoutDefault","SnackbarContent","_props$role","emphasis","flexWrap","flexGrow","marginLeft","Collapse","_props$collapsedHeigh","collapsedHeight","collapsedHeightProp","onEntered","onEntering","onExiting","_props$timeout","timer","wrapperRef","autoTransitionDuration","wrapperHeight","duration2","addEndListener","entered","hidden","wrapper","wrapperInner","muiSupportAuto","scope","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","close","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","setImmediate","clearImmediate","shared","workerBundleString","sharedChunk","createObjectURL","p1x","p1y","p2x","p2y","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","solve","_add","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_mult","_div","_rotate","rotateAround","_rotateAround","matMult","_matMult","_unit","perp","_perp","_round","mag","dist","distSqr","angleTo","angleWith","angleWithSep","A","WorkerGlobalScope","safari","B","setItem","removeItem","T","performance","F","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","msCancelAnimationFrame","frame","getImageData","drawImage","resolveURL","hardwareConcurrency","matchMedia","D","API_URL","FEEDBACK_URL","REQUIRE_ACCESS_TOKEN","ACCESS_TOKEN","MAX_PARALLEL_IMAGE_REQUESTS","testSupport","createTexture","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","isContextLost","deleteTexture","onload","onerror","N","K","_transformRequestFn","_customAccessToken","_createSkuToken","tokenExpiresAt","_skuToken","_skuTokenExpiresAt","_isSkuTokenExpired","normalizeStyleURL","_makeAPIURL","normalizeGlyphsURL","normalizeSourceURL","authority","normalizeSpriteURL","normalizeTileURL","canonicalizeTileURL","canonicalizeTileset","tiles","G","J","$","atob","anonId","pendingRequest","getStorageKey","btoa","fetchEventData","localStorage","getItem","saveEventData","processRequests","postEvent","EVENTS_URL","created","toISOString","sdkIdentifier","sdkVersion","skuId","userId","queueRequest","tt","et","skuToken","postMapLoadEvent","rt","postTurnstileEvent","lastSuccess","tokenU","nt","ot","st","ut","pt","caches","open","ht","yt","Unknown","Style","Tile","Glyphs","SpriteImage","SpriteJSON","Image","freeze","mt","vt","referrer","gt","AbortController","Request","credentials","signal","statusText","catch","toUTCString","ReadableStream","put","ct","ft","abort","wt","At","xt","actor","send","XMLHttpRequest","responseType","setRequestHeader","withCredentials","getResponseHeader","kt","It","zt","Ct","Bt","_oneTimeListeners","fire","listens","_eventedParent","_eventedParentData","setEventedParent","Tt","$version","$root","required","metadata","period","sources","sprite","glyphs","source_vector","scheme","tms","attribution","source_raster","raster","tileSize","source_raster_dem","terrarium","mapbox","source_geojson","geojson","maximum","minimum","tolerance","cluster","clusterRadius","clusterMaxZoom","clusterProperties","lineMetrics","source_video","video","urls","source_image","heatmap","hillshade","layout_background","layout_fill","interpolated","layout_circle","layout_heatmap","layout_line","butt","bevel","miter","requires","layout_symbol","auto","both","uppercase","lowercase","layout_raster","layout_hillshade","filter_operator","geometry_type","Point","LineString","Polygon","stops","categorical","colorSpace","lab","hcl","function_stop","expression_name","let","var","literal","case","coalesce","ln2","typeof","collator","accumulated","ln","atan","upcase","downcase","intensity","paint_fill","paint_line","paint_circle","paint_heatmap","paint_symbol","overridable","paint_raster","nearest","paint_hillshade","paint_background","Pt","__line__","Et","Mt","Vt","Ft","Lt","Ot","Dt","kind","Rt","Ut","jt","qt","Nt","Kt","Xt","Zt","Gt","Jt","itemType","Ht","Yt","$t","Wt","transparent","parseCSSColor","Qt","te","sensitivity","Intl","Collator","resolvedLocale","ee","fontStack","textColor","sections","serialize","ne","available","ie","oe","expectedType","evaluate","eachChild","possibleOutputs","ue","le","pe","ce","font","he","availableImages","fe","ye","parseColor","de","me","feature","featureState","formattedSection","_parseColorCache","geometryType","ve","_evaluate","definitions","overloads","Ae","checkSubtype","errors","ge","caseSensitive","diacriticSensitive","xe","be","we","boundExpression","Se","_parse","typeAnnotation","ke","labels","outputs","Ie","ze","Ee","Me","Fe","Le","Oe","De","Re","Ue","je","qe","Ne","Ke","forward","Xe","Ze","Ge","operator","Je","interpolationFactor","He","Ye","$e","We","needle","haystack","Qe","cases","otherwise","outputIndex$1","tr","branches","rr","nr","lhs","rhs","hasUntypedArgument","ir","ar","or","sr","ur","pr","minFractionDigits","maxFractionDigits","NumberFormat","minimumFractionDigits","maximumFractionDigits","hr","fr","yr","dr","mr","vr","gr","xr","br","_r","wr","Ar","Sr","Ir","zr","Cr","Br","heatmapDensity","lineProgress","LN2","isSupportedScript","Tr","_warningHistory","_evaluator","_defaultValue","_enumValues","Pr","Er","enum","resolvedImage","evaluateWithoutErrorHandling","Mr","_styleExpression","isStateDependent","Vr","zoomStops","interpolationType","Fr","Lr","_parameters","_specification","Or","valueSpec","objectElementValidators","styleSpec","un","objectKey","Dr","arrayElementValidator","arrayIndex","Rr","Ur","jr","expressionContext","propertyKey","propertyType","qr","Nr","deserialize","Kr","Xr","Gr","Zr","Jr","$r","Hr","Yr","Wr","Qr","layerType","tn","en","rn","nn","an","sn","constants","pn","cn","hn","paintProperty","layoutProperty","yn","dn","mn","vn","gn","bn","bboxes","insert","_insertReadonly","extent","_forEachCell","_insertCell","_queryCell","_convertToCellCoord","_convertFromCellCoord","wn","An","writeable","klass","shallow","Sn","_classRegistryKey","kn","In","$name","zn","Cn","lastIntegerZoom","lastIntegerZoomTime","lastZoom","lastFloorZoom","Bn","Arabic","Khmer","Hiragana","Katakana","Bopomofo","Kanbun","Tn","En","Pn","Mn","Vn","Fn","Ln","On","Dn","Rn","Un","jn","qn","Nn","Kn","Xn","pluginStatus","pluginURL","Zn","Gn","Jn","applyArabicShaping","processBidirectionalText","processStyledBidirectionalText","isLoading","isParsed","getPluginURL","Hn","fadeDuration","zoomHistory","crossFadingFactor","getCrossfadeParameters","fromScale","toScale","Yn","specification","isDataDriven","possiblyEvaluate","$n","transitioned","Qn","untransitioned","Wn","_properties","_values","defaultTransitionablePropertyValues","setValue","getTransition","setTransition","ti","prior","defaultTransitioningPropertyValues","ni","hasTransition","ei","defaultPropertyValues","ri","constantOr","defaultPossiblyEvaluatedValues","ii","oi","_calculate","ui","li","overridableProperties","_featureFilter","sourceLayer","_unevaluatedLayout","_transitionablePaint","setPaintProperty","setLayoutProperty","_transitioningPaint","_crossfadeParameters","getLayoutProperty","_validate","getPaintProperty","_handleSpecialPaintPropertyUpdate","_handleOverridablePaintPropertyUpdate","isHidden","updateTransitions","recalculate","is3D","isTileClipped","hasOffscreenPass","resize","ci","Int8","Int8Array","Uint8","Int16","Int16Array","Uint16","Uint16Array","Int32","Uint32","Uint32Array","Float32","_structArray","_pos1","_pos2","_pos4","_pos8","fi","isTransferred","capacity","yi","members","BYTES_PER_ELEMENT","di","alignment","_trim","_refreshViews","reserve","uint8","mi","int16","emplaceBack","emplace","vi","gi","xi","uint16","wi","float32","Ai","uint32","Si","Ii","zi","Ci","Bi","Ti","Pi","Ei","Mi","Vi","Fi","Li","Oi","anchorPointX","anchorPointY","featureIndex","sourceLayerIndex","bucketIndex","signedDistanceFromAnchor","anchorPoint","Di","Ri","glyphStartIndex","numGlyphs","vertexStartIndex","lineStartIndex","lowerSize","upperSize","lineOffsetX","lineOffsetY","writingMode","placedOrientation","crossTileID","associatedIconIndex","Ui","ji","rightJustifiedTextSymbolIndex","centerJustifiedTextSymbolIndex","leftJustifiedTextSymbolIndex","verticalPlacedTextSymbolIndex","placedIconSymbolIndex","verticalPlacedIconSymbolIndex","textBoxStartIndex","textBoxEndIndex","verticalTextBoxStartIndex","verticalTextBoxEndIndex","iconBoxStartIndex","iconBoxEndIndex","verticalIconBoxStartIndex","verticalIconBoxEndIndex","numHorizontalGlyphVertices","numVerticalGlyphVertices","numIconVertices","numVerticalIconVertices","textBoxScale","textOffset0","textOffset1","qi","Ni","Ki","getoffsetX","Xi","tileUnitDistanceFromAnchor","Zi","getx","gety","gettileUnitDistanceFromAnchor","Gi","Ji","Hi","Yi","segments","$i","prepareSegment","MAX_VERTEX_ARRAY_LENGTH","vertexLength","sortKey","primitiveOffset","primitiveLength","vaos","simpleSegment","Wi","positions","indexed","Qi","getPositions","ta","ea","uniform1i","ra","uniform1f","uniform2f","ia","uniform3f","aa","uniform4f","oa","sa","uniformMatrix4fv","la","pa","uniformNames","maxValue","setConstantPatternPositions","populatePaintArray","updatePaintArray","upload","setUniforms","getBinding","ca","patternPositions","patternTo","patternFrom","tlbr","ha","paintVertexAttributes","paintVertexArray","paintVertexBuffer","updateData","createVertexBuffer","fa","useIntegerZoom","ya","layerId","zoomInPaintVertexArray","zoomOutPaintVertexArray","patterns","tl","zoomInPaintVertexBuffer","zoomOutPaintVertexBuffer","binders","_buffers","createDynamic","va","ga","populatePaintArrays","updatePaintArrays","getPaintVertexBuffers","updatePatternPaintBuffers","ma","programConfigurations","layoutAttributes","needsUpload","_featureMap","_bufferOffset","composite","xa","_a","ba","wa","loadGeometry","Aa","Sa","overscaling","layerIds","hasPattern","layoutVertexArray","indexArray","stateDependentLayerIds","ka","Va","Ba","Ia","Pa","za","Ma","Ca","Ta","Ea","Fa","La","Oa","Da","populate","geometry","addFeature","stateDependentLayers","uploadPending","uploaded","layoutVertexBuffer","indexBuffer","createIndexBuffer","qa","Ra","Ua","ja","Ka","Xa","createBucket","queryRadius","queryIntersectsFeature","Za","cameraToCenterDistance","Ga","Ja","Ha","Ya","$a","Wa","Qa","eo","_updateColorRamp","colorRamp","colorRampTexture","heatmapFbo","ro","no","io","ao","so","oo","uo","steiner","bo","mo","vo","po","Mo","To","So","Po","Ao","xo","prevZ","nextZ","ho","co","fo","yo","_o","ko","Co","wo","Bo","zo","Io","Eo","Vo","Fo","Lo","Oo","Do","Ro","patternDependencies","Uo","deviation","vertices","holes","jo","patternFeatures","indexArray2","segments2","addFeatures","indexBuffer2","qo","No","Ko","Xo","Zo","Go","_pbf","_geometry","_keys","readFields","Jo","readVarint","Ho","readSVarint","toGeoJSON","Yo","$o","_features","Wo","readString","readFloat","readDouble","readVarint64","readBoolean","Qo","ts","VectorTile","VectorTileFeature","VectorTileLayer","es","rs","as","os","ss","us","ps","ls","cs","hs","ys","ds","addLine","scaledDistance","totalDistance","clipStart","mapbox_clip_start","clipEnd","mapbox_clip_end","e1","updateDistance","addCurrentVertex","addHalfVertex","ms","gs","_updateGradient","gradient","gradientTexture","ws","As","Ss","ks","Is","toLocaleUpperCase","toLocaleLowerCase","zs","Bs","Ts","Ps","Es","Varint","Fixed64","Bytes","Fixed32","Ms","Vs","Fs","Ls","realloc","Os","writeVarint","Ds","writeSVarint","Rs","Us","js","writeBoolean","qs","writeFixed32","Ns","writeSFixed32","Ks","writeFixed64","Xs","writeSFixed64","Zs","Gs","Js","Ys","readMessage","$s","Ws","bitmap","advance","metrics","readBytes","tu","skip","readFixed32","readSFixed32","readFixed64","readSFixed64","readPackedVarint","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","writeString","writeBytes","writeRawMessage","writeMessage","writePackedVarint","writePackedSVarint","writePackedBoolean","writePackedFloat","writePackedDouble","writePackedFixed32","writePackedSFixed32","writePackedFixed64","writePackedSFixed64","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","ru","stretchX","stretchY","paddedRect","nu","displaySize","iu","haveRenderCallbacks","addImages","iconPositions","hasRenderCallback","patchUpdatedImages","dispatchRenderCallbacks","updatedImages","patchUpdatedImage","getImage","au","horizontalOnly","su","imageName","forText","forImage","uu","sectionIndex","imageSectionID","lu","fromFeature","verticalizePunctuation","mu","positionedLines","iconsInText","verticalizable","getMaxScale","positionedGlyphs","lineOffset","getSection","getSectionIndex","getCharCode","pu","glyph","gu","vu","horizontalAlign","addImageSection","addTextSection","getNextImageSectionCharCode","9","10","11","12","13","32","cu","hu","fu","yu","du","badness","priorBreak","xu","collisionPadding","bu","_u","wu","layoutSize","minSize","maxSize","Au","uSize","uSizeT","Su","ku","getSizeData","evaluateSizeForFeature","evaluateSizeForZoom","SIZE_PACK_FACTOR","Iu","angleDelta","zu","Cu","Bu","Tu","Pu","Mu","Vu","Lu","stretch","Ou","fixed","bl","tex","glyphOffset","pixelOffsetTL","pixelOffsetBR","minFontScaleX","minFontScaleY","isSDF","Fu","Du","boxStartIndex","_addLineCollisionCircles","boxEndIndex","Ru","Uu","_down","ju","qu","Nu","SQRT2","_up","peek","Ku","Xu","Zu","Gu","Ju","murmur3","murmur2","Yu","POSITIVE_INFINITY","$u","Wu","Qu","Qs","sdf","Cs","allowVerticalPlacement","textSizeData","compositeTextSizes","addSymbols","placedSymbolArray","nl","compareText","il","al","ol","sl","ul","ll","dynamicLayoutVertexArray","opacityVertexArray","dynamicLayoutVertexBuffer","opacityVertexBuffer","itemSize","pl","collisionVertexArray","collisionVertexBuffer","cl","collisionBoxArray","hasPaintOverrides","hasRTLText","iconSizeData","sortFeaturesByKey","sortFeaturesByY","writingModes","sourceID","createArrays","dl","textCollisionBox","iconCollisionBox","textCollisionCircle","iconCollisionCircle","glyphOffsetArray","lineVertexArray","symbolInstances","calculateGlyphDependencies","iconDependencies","glyphDependencies","getValueAndResolveTokens","addToLineVertexArray","_addCollisionDebugVertex","addCollisionDebugVertices","addDebugCollisionBoxes","generateCollisionDebugBuffers","_deserializeCollisionBoxesForSymbol","textBox","textFeatureIndex","textCircles","verticalTextBox","verticalTextFeatureIndex","iconBox","iconFeatureIndex","verticalIconBox","verticalIconFeatureIndex","deserializeCollisionBoxes","collisionArrays","hasTextData","hasIconData","hasTextCollisionBoxData","hasIconCollisionBoxData","hasTextCollisionCircleData","hasIconCollisionCircleData","addIndicesForPlacedSymbol","getSortedSymbolIndexes","sortedAngle","symbolInstanceIndexes","sortFeatures","featureSortOrder","MAX_GLYPHS","addDynamicAttributes","hl","fl","runtimeType","getOverride","hasOverride","yl","_setPaintOverrides","hasPaintOverride","_interpolationType","ml","vl","implementation","renderingMode","prerender","onAdd","painter","onRemove","_l","wl","Al","Sl","kl","Il","useMipmap","pixelStoreUnpackFlipY","pixelStoreUnpack","pixelStoreUnpackPremultiplyAlpha","premultiply","texSubImage2D","isSizePowerOfTwo","generateMipmap","LINEAR_MIPMAP_NEAREST","LINEAR","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","zl","_callback","_triggered","MessageChannel","_channel","port2","onmessage","trigger","port1","postMessage","Cl","mapId","tasks","taskQueue","cancelCallbacks","invoker","receive","globalScope","Bl","hasCallback","targetMapId","mustQueue","sourceMapId","processTask","getWorkerSource","Tl","setSouthWest","setNorthEast","_ne","Pl","_sw","getSouthWest","getNorthEast","getNorthWest","getWest","getNorth","getSouthEast","getEast","getSouth","contains","toBounds","lon","El","Ml","Vl","Fl","Ll","Ol","Dl","fromLngLat","toLngLat","toAltitude","meterInMercatorCoordinateUnits","Rl","ql","getTilePoint","Ul","canonical","jl","overscaledZ","scaledTo","isChildOf","isLessThan","unwrapTo","overscaleFactor","toUnwrapped","Nl","dim","_idx","_unpackTerrarium","_unpackMapbox","getUnpackVector","getPixels","backfillBorder","Kl","Xl","_stringToNumber","_numberToString","Zl","_vectorTileFeature","_z","Gl","Jl","stateChanges","deletedStates","updateState","removeFeatureState","getState","initializeTileState","setFeatureState","coalesceChanges","Hl","tileID","grid3D","featureIndexArray","Yl","minX","minY","$l","loadVTLayers","vtLayers","rawTileData","sourceLayerCoder","queryGeometry","queryPadding","cameraQueryGeometry","loadMatchingFeature","pixelPosMatrix","bucketLayerIDs","intersectionZ","lookupSymbolFeatures","hasLayer","Wl","uses","buckets","expirationTime","hasSymbolBuckets","expiredRequestCount","registerFadeDuration","timeAdded","fadeEndTime","wasRequested","loadVectorData","hasData","unloadVectorData","latestFeatureIndex","latestRawTileData","getLayer","justReloaded","imageAtlas","glyphAtlasImage","imageAtlasTexture","glyphAtlasTexture","getBucket","ALPHA","prepare","queryRenderedFeatures","querySourceFeatures","_geojsonTileLayer","tile","clearMask","maskedBoundsBuffer","maskedIndexBuffer","setMask","0","patternsLoaded","setExpiryData","cacheControl","expires","getExpiryTimeout","holdingForFade","symbolFadeHoldUntil","symbolFadeFinished","clearFadeHold","setHoldDuration","setDependencies","hasDependency","Actor","AlphaImage","CanonicalTileID","CollisionBoxArray","DEMData","DataConstantProperty","DictionaryCoder","EXTENT","ErrorEvent","EvaluationParameters","Event","Evented","FeatureIndex","FillBucket","FillExtrusionBucket","ImageAtlas","ImagePosition","LineBucket","LngLat","LngLatBounds","MercatorCoordinate","ONE_EM","OverscaledTileID","Point$1","ProgramConfiguration","Properties","Protobuf","RGBAImage","RequestManager","ResourceType","SegmentVector","SourceFeatureState","StructArrayLayout1ui2","StructArrayLayout2i4","StructArrayLayout2ui4","StructArrayLayout3ui6","StructArrayLayout4i8","SymbolBucket","Transitionable","Uniform1f","Uniform1i","Uniform2f","Uniform3f","Uniform4f","UniformColor","UniformMatrix4f","UnwrappedTileID","ValidationError","WritingMode","ZoomHistory","asyncAll","bindAll","cacheEntryPossiblyAdded","getActor","clearTileCache","clone$1","create$1","create$2","createCommonjsModule","createExpression","createLayout","createStyleLayer","ease","emitValidationErrors","endsWith","enforceCacheSizeLimit","evaluateVariableOffset","evented","featureFilter","filterObject","fromRotation","getAnchorAlignment","getAnchorJustification","getArrayBuffer","St","accept","requestParameters","revokeObjectURL","getJSON","getRTLTextPluginStatus","getReferrer","getVideo","muted","onloadstart","crossOrigin","isChar","isMapboxURL","keysDifference","makeRequest","mercatorXfromLng","mercatorYfromLat","mercatorZfromAltitude","mvt","parseGlyphPBF","pbf","performSymbolLayout","tilePixelRatio","iconsNeedLinear","compositeIconSizes","layoutTextSize","layoutIconSize","textMaxSize","sdfIcons","pick","polygonIntersectsPolygon","potpack","rasterBoundsAttributes","refProperties","registerForPluginStateChange","setCacheLimits","setRTLTextPlugin","sphericalToCartesian","symbolSize","triggerPluginCompletionEvent","validateCustomStyleLayer","validateLight","validateStyle","vectorTile","warnOnce","webpSupported","keyCache","_layerConfigs","_layers","familiesBySource","showCollisionBoxes","collectResourceTiming","returnDependencies","stacks","icons","glyphMap","iconMap","glyphPositions","getEntriesByName","measure","clearMarks","clearMeasures","_marks","rawData","Performance","loading","loaded","loadTile","resourceTiming","reloadTile","reloadCallback","abortTile","removeTile","rawImageData","geometries","ring","_feature","tags","rawGeometry","keycache","valuecache","fromVectorTileJs","fromGeojsonVt","GeoJSONWrapper","nodeSize","within","trees","parentId","numPoints","cluster_id","point_count","point_count_abbreviated","promoteId","transformed","numSimplified","numFeatures","Pe","Te","tileCoords","timeEnd","indexMaxZoom","indexMaxPoints","splitTile","Ce","_geoJSONIndex","getTile","_cluster","getClusters","_limitZoom","getChildren","_getOriginId","_getOriginZoom","getLeaves","_appendLeaves","_addTileFeatures","getClusterExpansionZoom","loadGeoJSON","loadData","_pendingCallback","abandoned","_pendingLoadDataParams","_state","_loadData","superclusterOptions","geojsonVtOptions","removeSource","clusterId","getClusterChildren","getClusterLeaves","layerIndexes","workerSourceTypes","workerSources","demWorkerSources","registerWorkerSource","registerRTLTextPlugin","setReferrer","setImages","setLayers","getLayerIndex","updateLayers","removedIds","loadDEMTile","getDEMWorkerSource","removeDEMTile","loadWorkerSource","importScripts","syncRTLPluginState","getAvailableImages","reduceRight","isSealed","isFrozen","isExtensible","seal","preventExtensions","terminate","webGLContextAttributes","failIfMajorPerformanceCaveat","probablySupportsContext","supportsContext","antialias","createNS","createElementNS","disableDrag","enableDrag","setTransform","userImage","suppressClick","mousePos","TouchEvent","touchPos","mouseButton","InstallTrigger","platform","images","callbackDispatchedThisFrame","requestors","atlasImage","dirty","setLoaded","_notify","addImage","_validateStretch","_validateContent","updateImage","removeImage","listImages","getImages","getPixelSize","getPattern","bin","_updatePatternAtlas","atlasTexture","CLAMP_TO_EDGE","beginFrame","cutoff","textBaseline","fillStyle","gridOuter","gridInner","clearRect","fillText","requestManager","localIdeographFontFamily","setURL","getGlyphs","requests","_tinySDF","loadGlyphRange","_doesCharSupportLocalGlyph","tinySDF","TinySDF","_transitionable","setLight","_transitioning","getLight","nextRow","getDash","addDash","REPEAT","actors","currentActor","acquire","vector_layers","vectorLayers","vectorLayerIds","broadcast","release","validateBounds","dispatcher","reparseOverscaled","_loaded","_collectResourceTiming","_tileJSONRequest","_requestManager","tileBounds","_getMapId","sourceDataType","hasTile","aborted","_refreshExpiredTiles","unloadTile","roundZoom","getTileTexture","extTextureFilterAnisotropic","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","extTextureFilterAnisotropicMax","saveTileTexture","dem","needsHillshadePrepare","neighboringTiles","_getNeighboringTiles","backfilled","demTexture","fbo","_removed","_data","_resourceTiming","workerOptions","_updateWorkerData","_finishLoading","setCoordinates","_boundsArray","boundsBuffer","boundsSegments","loop","triggerRepaint","play","pause","seek","seekable","readyState","paused","animate","_hasInvalidDimensions","_playing","calculatePosMatrix","maxPitchScaleFactor","tilesIn","wrappedTileID","queryResults","getFeatureState","_getAndRemoveByKey","getAndRemove","setMaxSize","dynamicDraw","unbindVAO","bindElementBuffer","bufferData","ELEMENT_ARRAY_BUFFER","DYNAMIC_DRAW","STATIC_DRAW","bufferSubData","deleteBuffer","bindVertexBuffer","ARRAY_BUFFER","enableAttributes","enableVertexAttribArray","setVertexAttribPointers","vertexAttribPointer","getDefault","setDefault","ALWAYS","KEEP","STENCIL_TEST","DEPTH_TEST","LESS","BLEND","ONE","ZERO","FUNC_ADD","CULL_FACE","BACK","lt","CCW","useProgram","TEXTURE0","activeTexture","drawingBufferWidth","drawingBufferHeight","FRAMEBUFFER","bindRenderbuffer","RENDERBUFFER","bindBuffer","vao","extVertexArrayObject","bindVertexArrayOES","UNPACK_ALIGNMENT","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_FLIP_Y_WEBGL","setDirty","framebufferTexture2D","COLOR_ATTACHMENT0","framebufferRenderbuffer","DEPTH_ATTACHMENT","createFramebuffer","colorAttachment","depthAttachment","deleteRenderbuffer","ReadOnly","ReadWrite","fail","depthFail","pass","blendFunction","Replace","unblended","alphaBlended","backCCW","stencilTest","cullFaceSide","MAX_TEXTURE_MAX_ANISOTROPY_EXT","extTextureHalfFloat","extTimerQuery","createRenderbuffer","renderbufferStorage","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","setCullFace","setDepthMode","setStencilMode","setColorMode","_sourceLoaded","_paused","reload","_sourceErrored","_source","_tiles","_unloadTile","_timers","_cacheTimers","_maxTileCacheSize","_coveredTiles","getSource","_shouldReloadOnResume","_loadTile","_abortTile","imageManager","getIds","getRenderableIds","_isIdRenderable","hasRenderableParent","findLoadedParent","_reloadTile","_tileLoaded","refreshedUponExpiration","_setTileReloadTimer","_backfillDEM","getTileByID","_retainLoadedChildren","updateCacheSize","handleWrapJump","_prevLng","used","getVisibleUnwrappedCoordinates","coveringTiles","coveringZoomLevel","maxOverzooming","maxUnderzooming","_updateRetainedTiles","_addTile","_fadeDuration","_removeTile","releaseSymbolFadeTiles","clearTiles","getCameraQueryGeometry","pointCoordinate","getVisibleCoordinates","posMatrix","reloadTilesForDependencies","workers","workerCount","addLayer","removeLayer","setFilter","addSource","setGeoJSONSourceData","setLayerZoomRange","setLayerProperty","setCenter","setZoom","setBearing","setPitch","setSprite","setGlyphs","command","boxCells","circleCells","xCellCount","yCellCount","circleKeys","boxKeys","circles","boxUid","circleUid","labelPlaneMatrix","glCoordMatrix","signedDistanceFromCamera","useVertical","notEnoughRoom","needsFlipping","tileDistance","prevTileDistance","lastSegmentViewportDistance","keysLength","_insertBoxCell","insertCircle","_insertCircleCell","_query","hitTest","seenUids","_queryCircle","_queryCellCircle","hitTestCircle","_circleAndRectCollide","_circlesCollide","_convertToXCellCoord","_convertToYCellCoord","ignoredGrid","pitchfactor","_pitch","screenRightBoundary","screenBottomBoundary","gridRightBoundary","gridBottomBoundary","placeCollisionBox","projectAndGetPerspectiveRatio","perspectiveRatio","isInsideGrid","offscreen","isOffscreen","approximateTileDistance","placeCollisionCircles","projectAnchor","cameraDistance","projectPoint","queryRenderedSymbols","bucketInstanceId","insertCollisionBox","collisionGroupID","insertCollisionCircles","placed","skipFade","crossSourceCollisions","maxGroupID","collisionGroups","ID","collisionIndex","placements","opacities","variableOffsets","stale","commitTime","retainedQueryData","prevPlacement","placedOrientations","placeLayerTile","placeLayerBucket","attemptAnchorPlacement","textOffset","prevAnchor","markUsedJustification","markUsedOrientation","placedGlyphBoxes","commit","zoomAtLastRecencyCheck","prevZoomAdjustment","zoomAdjustment","symbolFadeChange","lastPlacementChangeTime","updateLayerOpacities","updateBucketOpacities","hasTransitions","stillRecent","setStale","_currentTileIndex","_seenCrossTileIDs","continuePlacement","placement","_currentPlacementIndex","_forceFullPlacement","_showCollisionBoxes","_done","isDone","_inProgressLayer","indexedSymbolInstances","getScaledCoordinates","findMatches","maxCrossTileID","generate","indexes","usedCrossTileIDs","addBucket","removeBucketCrossTileIDs","removeStaleBuckets","crossTileIDs","maxBucketInstanceId","bucketsInCurrentPlacement","pruneUnusedLayers","Be","glyphManager","lineAtlas","crossTileSymbolIndex","_order","sourceCaches","_resetUpdates","_rtlTextPluginCallback","sourceId","_validateLayer","loadURL","_request","_load","loadJSON","stylesheet","_spriteRequest","_serializeLayers","_updatedSources","_checkLoaded","_changed","_updatedLayers","_removedLayers","_updateWorkerLayers","_reloadSource","_clearSource","_updateTilesForChangedImages","_updatedPaintProps","_changedImages","isSourceLoaded","_layerOrderChanged","_updateLayer","moveLayer","getFilter","_flattenAndSortRenderedFeatures","addSourceType","getSourceType","setSourceType","workerSourceURL","_remove","_updateSources","_generateCollisionBoxes","_updatePlacement","pauseablePlacement","_releaseSymbolFadeTiles","getResource","Ve","fragmentSource","vertexSource","prelude","backgroundPattern","clippingMask","heatmapTexture","collisionBox","collisionCircle","fillOutline","fillOutlinePattern","fillPattern","fillExtrusion","fillExtrusionPattern","hillshadePrepare","lineGradient","linePattern","lineSDF","symbolIcon","symbolSDF","symbolTextAndIcon","boundProgram","boundLayoutVertexBuffer","boundPaintVertexBuffers","boundIndexBuffer","boundVertexOffset","boundDynamicVertexBuffer","boundDynamicVertexBuffer2","freshBind","numAttributes","createVertexArrayOES","currentNumAttributes","disableVertexAttribArray","deleteVertexArrayOES","createProgram","createShader","failedToCreate","shaderSource","compileShader","attachShader","bindAttribLocation","linkProgram","ACTIVE_ATTRIBUTES","getActiveAttrib","getAttribLocation","ACTIVE_UNIFORMS","getActiveUniform","getUniformLocation","fixedUniforms","binderUniforms","tileZoom","u_image","u_texsize","u_scale","u_fade","u_pixel_coord_upper","u_pixel_coord_lower","LINES","TRIANGLES","LINE_STRIP","drawElements","UNSIGNED_SHORT","u_matrix","u_lightpos","u_lightintensity","u_lightcolor","u_vertical_gradient","u_opacity","u_height_factor","u_world","pixelsToGLUnits","u_camera_to_center_distance","u_scale_with_map","translatePosMatrix","u_pitch_with_map","u_device_pixel_ratio","u_extrude_scale","u_pixels_to_tile_units","u_overscale_factor","u_color","u_intensity","u_ratio","u_units_to_pixels","u_patternscale_a","u_patternscale_b","u_sdfgamma","u_tex_y_a","u_tex_y_b","u_mix","u_tl_parent","u_scale_parent","u_buffer_scale","u_fade_t","u_image0","u_image1","u_brightness_low","u_brightness_high","u_saturation_factor","u_contrast_factor","u_spin_weights","u_is_size_zoom_constant","u_is_size_feature_constant","u_size_t","u_size","u_pitch","u_rotate_symbol","u_aspect_ratio","u_fade_change","u_label_plane_matrix","u_coord_matrix","u_is_text","u_texture","u_gamma_scale","u_is_halo","u_texsize_icon","u_texture_icon","u_pattern_tl_a","u_pattern_br_a","u_pattern_tl_b","u_pattern_br_b","u_pattern_size_a","u_pattern_size_b","u_scale_a","u_scale_b","u_tile_units_to_pixels","u_color_ramp","u_latrange","u_light","u_shadow","u_highlight","u_accent","u_dimension","u_zoom","u_maxzoom","u_unpack","colorModeForRenderPass","shiftedAnchor","depthModeForSublayer","rotating","zooming","NEAREST","uniformValues","atlasTextureIcon","atlasInterpolation","atlasInterpolationIcon","hasHalo","TEXTURE1","stencilModeForClipping","moving","rasterBoundsBuffer","quadTriangleIndexBuffer","rasterBoundsSegments","debugBuffer","tileBorderIndexBuffer","debugSegments","1","6","7","8","renderPass","programConfiguration","HALF_FLOAT_OES","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","viewportBuffer","viewportSegments","opaquePassEnabledForLayer","LEQUAL","depthRangeFor3D","stencilModeFor3D","isPatternMissing","tileExtentBuffer","tileExtentSegments","custom","setCustomLayerDefaults","customLayerMatrix","setBaseState","_tileTextures","numSublayers","depthEpsilon","depthRboNeedsClear","emptyProgramConfiguration","gpuTimers","depthRbo","stencilClearMode","nextStencilID","currentStencilSource","_renderTileClippingMasks","_tileClippingMaskIDs","REPLACE","NOTEQUAL","EQUAL","_showOverdrawInspector","CONSTANT_COLOR","currentLayer","opaquePassCutoff","renderLayer","showOverdrawInspector","showTileBoundaries","setupOffscreenDepthRenderbuffer","DEPTH_COMPONENT16","gpuTimingStart","gpuTimingEnd","gpuTiming","calls","cpuTime","createQueryEXT","beginQueryEXT","TIME_ELAPSED_EXT","endQueryEXT","collectGpuTimers","queryGpuTimers","getQueryObjectEXT","QUERY_RESULT_EXT","deleteQueryEXT","maxValidLatitude","_renderWorldCopies","_minZoom","_maxZoom","_minPitch","_maxPitch","setMaxBounds","_center","_fov","_unmodified","_posMatrixCache","_alignedPosMatrixCache","renderWorldCopies","worldSize","centerPoint","unmodified","latRange","_calcMatrices","rotationMatrix","_zoom","zoomScale","zoomFraction","_constrain","scaleZoom","setLocationAtPoint","locationCoordinate","coordinateLocation","locationPoint","coordinatePoint","pointLocation","pixelMatrixInverse","pixelMatrix","getBounds","getMaxBounds","lngRange","alignedProjMatrix","projMatrix","mercatorMatrix","_constraining","getCameraPoint","_hashName","_updateHash","_updateHashUnthrottled","addTo","_onHashChange","getHashString","getZoom","getBearing","getPitch","_getCurrentHash","jumpTo","getCanvasContainer","originalEvent","_defaultPrevented","lngLats","_el","_delta","_defaultZoomRate","_wheelZoomRate","setZoomRate","setWheelZoomRate","_enabled","_active","_zooming","_aroundCenter","deltaMode","WheelEvent","DOM_DELTA_LINE","_lastWheelEventTime","_type","_lastValue","_timeout","shiftKey","_lastWheelEvent","_start","_frameId","_cancelRenderFrame","_finishTimeout","_around","_aroundPoint","_requestRenderFrame","_onScrollFrame","_targetZoom","_startZoom","_easing","_smoothOutEasing","_prevEase","_container","getContainer","_clickTolerance","clickTolerance","_onMouseMove","_onMouseUp","_startPos","_lastPos","_box","classList","_fireEvent","_finish","fitScreenCoordinates","keyCode","_button","_bearingSnap","bearingSnap","_pitchWithRotate","pitchWithRotate","_unbind","_deactivate","_startTime","_eventButton","_onBlur","_inertia","_prevPos","_lastMoveEvent","_onDragFrame","_drainInertiaBuffer","_normalizeBearing","_inertialRotate","resetNorth","noMoveStart","rotateTo","linearity","maxSpeed","deceleration","_inertiaOptions","_onMove","_onTouchEnd","_mouseDownPos","_startTouch","_lastTouch","_touchesMatch","_shouldStart","touchZoomRotate","_abort","_inertialPan","panBy","delayEndEvents","easeTo","_tapped","_tappedPoint","_resetTapped","_onZoomEnd","zoomTo","disableRotation","_rotationDisabled","enableRotation","_gestureIntent","_startVec","_startAround","_onEnd","_getTouchEventData","_lastTouchEvent","_onTouchFrame","_startScale","_startBearing","snapToNorth","boxZoom","_moving","panTo","zoomIn","zoomOut","resetNorthPitch","cameraForBounds","_cameraForBoxAndBearing","_fitInternal","flyTo","essential","prefersReducedMotion","_normalizeCenter","_rotating","_pitching","_prepareEase","_easeEndTimeoutID","_ease","_fireMoveEvents","_afterEase","isEasing","_easeFrameId","_onEaseFrame","_onEaseEnd","_easeStart","_easeOptions","_renderFrameCallback","_innerContainer","_updateAttributions","_updateEditLink","_updateData","_updateCompact","_attribHTML","_editLink","styleOwner","styleId","_hash","customAttribution","owner","innerHTML","offsetWidth","_getUIString","_updateLogo","_logoRequired","mapbox_logo","_queue","_cleared","_currentlyRunning","HTMLElement","refreshExpiredTiles","maxTileCacheSize","_interactive","_failIfMajorPerformanceCaveat","_preserveDrawingBuffer","_antialias","_trackResize","_crossSourceCollisions","_crossFadingFactor","_renderTaskQueue","_controls","_mapId","_locale","maxBounds","_setupContainer","_setupPainter","_update","_onWindowOnline","_onWindowResize","_localIdeographFontFamily","addControl","logoPosition","repaint","_controlPositions","firstChild","removeControl","_containerDimensions","_resizeCanvas","setMinZoom","getMinZoom","setMaxZoom","getMaxZoom","setMinPitch","getMinPitch","setMaxPitch","getMaxPitch","getRenderWorldCopies","setRenderWorldCopies","isMoving","delegates","_delegatedListeners","_diffStyle","_updateStyle","_updateDiff","getStyle","isStyleLoaded","areTilesLoaded","hasImage","_canvasContainer","_canvas","_detectMissingCSS","getComputedStyle","_missingCSSCanary","_contextLost","_contextRestored","_controlContainer","_frame","_styleDirty","_sourcesDirty","_placementDirty","gpuTime","layerTimes","_repaint","loseContext","_showTileBoundaries","_vertices","_setCacheLimits","visualizePitch","_zoomInButton","_createButton","_zoomOutButton","_compass","_compassIcon","_updateZoomButtons","_rotateCompassArrow","_setButtonTitle","_handler","_anchor","_color","_draggable","_rotation","_rotationAlignment","rotationAlignment","_pitchAlignment","pitchAlignment","_element","_defaultMarker","setAttributeNS","rx","ry","scrollLeft","_popup","setDraggable","_onMapClick","_addDragHandler","_onUp","getLngLat","_lngLat","setLngLat","_pos","setPopup","_onKeyPress","_originalTabIndex","removeAttribute","charCode","togglePopup","getPopup","isOpen","setOffset","_positionDelta","isDraggable","setRotation","setRotationAlignment","getRotationAlignment","setPitchAlignment","getPitchAlignment","enableHighAccuracy","maximumAge","_setupUI","permissions","geolocation","_geolocationWatchID","clearWatch","_userLocationDotMarker","_isOutOfMapMaxBounds","_setErrorState","_watchState","_geolocateButton","_onSuccess","_updateMarker","_lastKnownPosition","_updateCamera","_dotElement","accuracy","geolocateSource","_onError","_clearWatch","_timeoutId","_setup","watchPosition","getCurrentPosition","setUnit","_fullscreen","_fullscreenchange","_changeIcon","fullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","webkitFullscreenEnabled","_fullscreenButton","_updateTitle","_onClickFullscreen","_getTitle","_isFullscreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","toggle","exitFullscreen","mozCancelFullScreen","msExitFullscreen","webkitCancelFullScreen","requestFullscreen","mozRequestFullScreen","msRequestFullscreen","webkitRequestFullscreen","_onClickClose","_trackPointer","_content","trackPointer","setText","setDOMContent","createTextNode","setHTML","createDocumentFragment","getMaxWidth","setMaxWidth","_createContent","addClassName","removeClassName","toggleClassName","_closeButton","_tip","offsetHeight","AttributionControl","clearStorage","writableStream","WritableStream","abortController","blobConstructor","xhr","getXHR","XDomainRequest","checkTypeSupport","haveArrayBuffer","haveSlice","msstream","mozchunkedarraybuffer","overrideMimeType","vbArray","VBArray","capability","rStates","readyStates","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","fetchTimer","_mode","rawHeaders","trailers","rawTrailers","_fetchResponse","statusCode","statusMessage","header","_destroyed","_resumeFetch","pipeTo","getReader","_xhr","responseURL","getAllResponseHeaders","_charset","charsetMatch","_read","_onXHRProgress","responseBody","responseText","MSStreamReader","onprogress","readAsArrayBuffer","Stream","PassThrough","ReadableState","EElistenerCount","OurUint8Array","debugUtil","debuglog","StringDecoder","BufferList","destroyImpl","kProxyEvents","isDuplex","objectMode","readableObjectMode","hwm","readableHwm","readableHighWaterMark","defaultHwm","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","defaultEncoding","awaitDrain","readingMore","decoder","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","needMoreData","_undestroy","undestroy","isPaused","setEncoding","enc","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","increasedAwaitDrain","dests","_fromList","emitErrorNT","readableDestroyed","writableDestroyed","errorEmitted","ending","finished","CorkedRequest","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","realHasInstance","nop","writableObjectMode","writableHwm","writableHighWaterMark","finalCalled","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","onwriteError","needFinish","bufferedRequest","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","final","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","afterTransform","_transformState","transforming","writechunk","needTransform","writeencoding","_transform","_flush","err2","polyfillExtension","target2","extKey","EXTENSIONS","initializeExtensions","polyfills","installPolyfills","installOverrides","self_","console_","EXISTS","inspectSource","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","unsafe","simple","functionToString","IS_PURE","copyright","postfix","aFunction","namespace","internalObjectKeys","hiddenKeys","detection","POLYFILL","NATIVE","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","funcToString","arraySome","cacheHas","equalFunc","isPartial","othLength","stacked","seen","arrValue","othValue","compared","othIndex","resIndex","stubFalse","freeExports","freeModule","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","Set","srcValue","castPath","toKey","isKey","stringToPath","baseIndexOf","fromRight","comparator","overRest","setToString","baseFor","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","newObj","_interopRequireWildcard","_reactDom","_reactLifecyclesCompat","initialStatus","transitionGroup","appearStatus","unmountOnExit","mountOnEnter","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","appearing","timeouts","enterTimeout","safeSetState","setNextCallback","doesNotHaveTimeoutOrListener","_default","classNamesShape","timeoutsShape","_propTypes","_ChildMapping","appeared","getInitialChildMapping","arrayPush","isFlattenable","isStrict","computed","Decimal","rounding","toExpNeg","toExpPos","decimalError","invalidArgument","exponentOutOfRange","mathfloor","mathpow","isDecimal","BASE","MAX_E","carry","xd","yd","Ctor","checkInt32","digitsToString","indexOfLastWord","getZeroString","absoluteValue","comparedTo","cmp","xdL","ydL","decimalPlaces","dp","dividedBy","divide","dividedToIntegerBy","idiv","getBase10Exponent","greaterThan","greaterThanOrEqualTo","gte","isInteger","isint","isNegative","isneg","isPositive","ispos","isZero","lessThan","lessThanOrEqualTo","lte","logarithm","wpr","modulo","times","naturalExponential","naturalLogarithm","negated","neg","plus","squareRoot","rL","toDecimalPlaces","todp","rm","toint","toPower","yIsInt","truncate","toSignificantDigits","tosd","multiplyInteger","aL","bL","prod","prodL","qd","rem","remL","rem0","xL","yd0","yL","yz","denominator","getLn10","c0","numerator","parseDecimal","rd","doRound","xdi","xLTy","isExp","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","curry","PLACE_HOLDER","isPlaceHolder","curry0","_curried","curryN","argsLength","restArgs","newArgs","_len3","_key3","fns","firstFn","tailsFn","lastResult","_len4","_key4","utils","paramsSerializer","serializedParams","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","getDefaultAdapter","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","username","Authorization","onreadystatechange","responseHeaders","onabort","ontimeout","cookies","xsrfValue","onDownloadProgress","onUploadProgress","cancelToken","enhanceError","config1","config2","Cancel","Matrix","col","columnIndex","firstIndex","columnVector","INDICES","COL0ROW0","COL0ROW1","COL0ROW2","COL0ROW3","COL1ROW0","COL1ROW1","COL1ROW2","COL1ROW3","COL2ROW0","COL2ROW1","COL2ROW2","COL2ROW3","COL3ROW0","COL3ROW1","COL3ROW2","COL3ROW3","Matrix4","m00","m10","m20","m30","m01","m11","m21","m31","m02","m12","m22","m32","m03","m13","m23","m33","halfY","scaleResult","getScale","inverseScale0","inverseScale1","inverseScale2","radians","rz","transformAsPoint","transformAsVector","column0Row0","column1Row1","column2Row0","column2Row1","column3Row2","DEFAULT_MODULE_OPTIONS","pickingSelectedColor","pickingHighlightColor","pickingActive","pickingAttribute","selectedColor","injection","Vector","mathArray","distanceSquared","ORIGIN","Vector3","origin","matrix4","matrix3","matrix2","quaternion","extendStatics","__assign","__rest","__awaiter","fulfilled","rejected","__generator","trys","ops","verb","throw","return","op","nativePropertyIsEnumerable","classof","WeakMap","NATIVE_WEAK_MAP","wmget","wmhas","wmset","STATE","sharedKey","objectHas","getterFor","IS_INCLUDES","require$$0","enumBugKeys","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getOwnPropertyDescriptorModule","NATIVE_SYMBOL","WellKnownSymbolsStore","createWellKnownSymbol","USE_SYMBOL_AS_UID","withoutSetter","MATCH","wellKnownSymbol","METHOD_NAME","nativeStartsWith","startsWith","CORRECT_IS_REGEXP_LOGIC","correctIsRegExpLogic","MDN_POLYFILL_BUG","searchString","notARegExp","PrototypeOfArrayIteratorPrototype","arrayIterator","CONSTRUCTOR","METHOD","entryUnbind","CONVERT_TO_STRING","codeAt","IE_PROTO","ObjectPrototype","CORRECT_PROTOTYPE_GETTER","ITERATOR","BUGGY_SAFARI_ITERATORS","activeXDocument","EmptyConstructor","scriptTag","LT","NullProtoObject","ActiveXObject","iframeDocument","iframe","documentCreateElement","contentWindow","TO_STRING_TAG","TAG","returnThis","CORRECT_SETTER","IteratorsCore","setInternalState","Iterable","NAME","IteratorConstructor","IS_SET","FORCED","setToStringTag","Iterators","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","nativeIterator","iterated","ENTRIES","returnMethod","ArrayPrototype","CORRECT_ARGUMENTS","classofRaw","TO_STRING_TAG_SUPPORT","SAFE_CLOSING","called","iteratorWithReturn","INCORRECT_ITERATION","SKIP_CLOSING","ITERATION_SUPPORT","arrayLike","argumentsLength","mapfn","mapping","getIteratorMethod","isArrayIteratorMethod","createProperty","callWithSafeIterationClosing","Int8ArrayPrototype","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","NATIVE_ARRAY_BUFFER","opera","TypedArrayConstructorsList","SPECIES","aTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","$slice","KEY","ArrayBufferViewCore","defaultConstructor","UNSCOPABLES","thrower","$includes","USES_TO_LENGTH","ACCESSORS","argument0","argument1","finallyConstructor","setTimeoutFunc","_handled","_deferreds","doResolve","deferred","_immediateFn","onFulfilled","onRejected","finale","_unhandledRejectionFn","Handler","prom","promiseFinally","race","globalNS","fatal","ProcessLocking","locked","addToLocked","toAdd","isLocked","lock","unlock","toCall","getInstance","generateRandomString","CHARS","randomstring","SuperTokensLock","acquiredIatSet","acquireLock","releaseLock","releaseLock__private__","waitForSomethingToChange","refreshLockWhileAcquired","waiters","lockKey","iat","MAX_TIME","STORAGE_KEY","STORAGE","TIMEOUT_KEY","lockObjPostDelay","LOCK_STORAGE_KEY","timeoutKey","timeAcquired","timeRefreshed","lockCorrector","storageKey","lockObj","processLock_1","resolvedCalled","startedAt","removedListeners","stopWaiting","removeFromWaiting","timeOutId","timeToWait","addToWaiting","notifyWaiters","MIN_ALLOWED_TIME","KEYS","LOCK_KEY","const","DEFAULT_POPUP_CONFIG_OPTIONS","dedupe","TIMEOUT_ERROR","error_description","getUniqueScopes","scopeString","scopes","runIframe","authorizeUrl","eventOrigin","timeoutInSeconds","rej","timeoutSetTimeoutId","iframeEventHandler","CLEANUP_IFRAME_TIMEOUT_IN_SECONDS","runPopup","popup","screenX","innerWidth","screenY","innerHeight","createRandomString","charset","getCrypto","getRandomValues","encodeState","createQueryParams","sha256","digestOp","getCryptoSubtle","digest","msCrypto","oncomplete","urlDecodeB64","bufferToBase64UrlEncoded","ie11SafeInput","b64Chars","+","/","=","oauthToken","baseUrl","grant_type","redirect_uri","Content-type","crypto","subtle","webkitSubtle","audience","Cache","expiresIn","expTime","expires_in","decodedToken","claims","stringifyAttribute","stringified","setMilliseconds","secure","sameSite","cookieString","rdecode","cookie","getAll","Cookies.get","save","Cookies.set","daysUntilExpire","Cookies.remove","getTransactionKey","transactions","Cookies.getAll","ClientStorage.get","TransactionManager","transaction","ClientStorage.save","ClientStorage.remove","idTokendecoded","decoded","appState","AuthenticationError","__","__extends","Lock","transactionManager","domainUrl","tokenIssuer","issuer","Auth0Client","telemetry","authorizeOptions","code_challenge","withoutDomain","DEFAULT_SCOPE","response_type","response_mode","code_challenge_method","_url","id_token","signature","payloadJSON","__raw","user","encoded","iss","alg","aud","azp","max_age","auth_time","leeway","expDate","nbfDate","authTimeDate","nbf","verifyIdToken","client_id","_parseNumber","stateIn","nonceIn","code_verifier","code_challengeBuffer","fragment","_getParams","_authorizeUrl","authorizeTimeoutInSeconds","codeResult","authResult","_verifyIdToken","cacheEntry","buildAuthorizeUrl","queryStringFragments","queryString","parsedQuery","tokenOptions","ignoreCache","additionalQueryParams","access_token","loginWithPopup","getUser","federated","localOnly","logoutOptions","federatedQuery","auth0","getTokenSilently","error_1","symbolObservablePonyfill","createDetectElementResize","_window","attachEvent","requestFrame","cancelFrame","resetTriggers","__resizeTriggers__","firstElementChild","contract","lastElementChild","expandChild","scrollWidth","scrollHeight","scrollListener","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","keyframeprefix","animationstartevent","domPrefixes","startEvents","elm","animationName","animationKeyframes","animationStyle","addResizeListener","elementStyle","getElementsByTagName","styleSheet","cssText","__animationListener__","removeResizeListener","detachEvent","classCallCheck","createClass","possibleConstructorReturn","AutoSizer","_React$PureComponent","defaultHeight","_onResize","_parentNode","_setRef","autoSizer","_autoSizer","_detectElementResize","childParams","bailoutOnChildren","fillRule","clipRule","SvgMinus","svgRef","SvgPlus","argIndex","framesToPop","client","platformDefault","vertxNext","customSchedulerFn","asap","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","isWorker","useSetTimeout","globalSetTimeout","onFulfillment","onRejection","PROMISE_ID","makePromise","invokeCallback","_result","resolve$1","iterations","observer","observe","characterData","useMutationObserver","channel","useMessageChannel","vertx","runOnLoop","runOnContext","attemptVertx","TRY_CATCH_ERROR","getThen","handleMaybeThenable","maybeThenable","then$$1","thenable","fulfill","handleOwnThenable","sealed","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","objectOrFunction","publishRejection","_onerror","publish","_subscribers","subscribers","settled","detail","succeeded","failed","Enumerator","_instanceConstructor","_remaining","_enumerate","_eachEntry","resolve$$1","_then","_settledAt","Promise$1","_willSettleAt","enumerator","resolver","needsResolver","initializePromise","needsNew","finally","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","local","promiseToString","cast","export","impl","interceptor","chain","defaultClient","setDefaultClient","getDefaultClient","resetDefaultClient","setPlatformDefaultClient","empty","entity","headerName","follow","rels","make","clientFor","responsePromise","errback","parser","https","mixin","httpsExp","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","clientRequest","canceled","clientResponse","defaultInitHandler","defaultRequestHandler","defaultResponseHandler","ComplexRequest","initHandler","requestHandler","successResponseHandler","errorResponseHandler","interceptedClient","originator","encodedSpaceRE","urlEncodedSpaceRE","urlEncode","urlDecode","xWWWFormURLEncoder","urlRE","absoluteUrlRE","fullyQualifiedUrlRE","UrlBuilder","pair","append","template","_template","_params","fullyQualify","isFullyQualified","build","isCrossOrigin","queryStringParams","buildUrl","charMap","mime","makeEncoder","allowed","unreserved","myChar","strings","digit","reserved","genDelims","subDelims","userinfo","pchar","chars","uriEncoder","operations","prefixRE","encodeURL","encodeScheme","encodeUserInfo","encodeHost","encodePort","encodePathSegment","encodeQuery","encodeFragment","expandExpression","operation","explode","maxLength","encoder","uriTemplate","uri","lazyPromise","work","findProperties","attempt","deprecationWarning","relationship","deprecation","lookup","converter","embedded","resource","related","links","templated","clientOverride","createConverter","reviver","replacer","noopConverter","missingConverter","isFormElement","formData","createFormDataFromObject","Registry","mimes","mixinUtil","defaulter","Accept","permissive","cause","mappings","quote","startRule","parseFunctions","result0","result1","result2","result3","result4","pos0","pos1","pos2","pos3","parse_LinkValue","parse_OptionalSP","matchFailed","parse_LinkParams","parse_URIReference","parse_LinkParam","parse_LinkParamName","parse_LinkParamValue","parse_PToken","parse_PTokenChar","parse_QuotedString","parse_QuotedStringInternal","parse_Char","parse_UpAlpha","parse_LoAlpha","parse_Alpha","parse_Digit","parse_SP","parse_DQ","parse_QDText","parse_QuotedPair","rightmostFailuresPos","rightmostFailuresExpected","failure","result5","errorPosition","column","seenCR","ch","computeErrorPosition","SyntaxError","expected","lastExpected","cleanExpected","cleanupExpected","toSource","expectedHumanized","buildMessage","nextLink","linkParser","nextPage","linkParts","linkQuery","digits","byteNum","b64","endpoint","account","require$$7","require$$8","MapboxGeocoding","makeService","roundTo","places","geocodeForward","dataset","queryOptions","proximity","country","language","autocomplete","geocodeReverse","waypoints","invariantLocation","MapboxSurface","surface","mapid","surfaceOptions","encoded_polyline","MapboxDirections","getDirections","encodedWaypoints","profile","alternatives","radiuses","allowedGeometries","allowedOverviews","overview","continue_straight","bearings","MapboxUploads","API_UPLOADS","API_UPLOAD","listUploads","createUploadCredentials","createUpload","readUpload","deleteUpload","MapboxMatching","matching","allowedOverview","timestamps","annotations","hat","bits","MapboxDatasets","API_DATASET_DATASET","API_DATASET_FEATURE","listDatasets","fresh","createDataset","readDataset","updateDataset","description","deleteDataset","listFeatures","insertFeature","readFeature","deleteFeature","MapboxMatrix","getMatrix","MapboxTilestats","getTilestats","tileset","putTilestats","statistics","MapboxStyles","listStyles","updateStyle","styleid","deleteStyle","readStyle","readSprite","retina","readFontGlyphRanges","addIcon","iconName","deleteIcon","embedStyle","zoomwheel","polyline","fromGeoJSON","flipped","markers","strokewidth","strokecolor","xtend","MapboxStatic","getStaticURL","xyzbp","userOptions","overlay","encodeOverlay","encodeMarkers","encodeGeoJSON","logo","before_layer","getStaticClassicURL","MapboxTilesets","tilequery","listTilesets","MapboxTokens","listTokens","createToken","note","createTemporaryToken","updateTokenAuthorization","authorization_id","deleteTokenAuthorization","retrieveToken","listScopes","extendMutable","MapboxClient","makeClient","iterableToArrayLimit","_ref$precision","degrees","printTypes","printDegrees","printRowMajor","_extendableBuiltin2","ELEMENTS","_equals","ExtendableBuiltin","_extendableBuiltin","_MathArray","lengthSquared","magnitude","_i3","_i4","multiplyScalar","Vector2","_Vector","vec2_cross","_operation","pz","sc","cc","vec3_angle","vec3_cross","_ref$origin","vec3_rotateX","_ref2$origin","vec3_rotateY","_ref3$origin","vec3_rotateZ","Vector4","arrayWithoutHoles","nonIterableSpread","setColumnMajor","columnMajor","mat4_determinant","mat4_fromQuat","mat4_frustum","_ref2$center","_ref2$up","mat4_lookAt","_ref3$near","_ref3$far","mat4_ortho","_ref4$fovy","_ref4$aspect","_ref4$focalDistance","_ref4$near","_ref4$far","_ref5$fov","_ref5$aspect","_ref5$near","_ref5$far","mat4_perspective","mat4_transpose","mat4_invert","mat4_multiply","mat4_rotateX","mat4_rotateY","mat4_rotateZ","mat4_rotate","mat4_scale","mat4_translate","vec2_transformMat4","vec3_transformMat4","vec4_transformMat4","transformVector2","transformVector3","transformVector4","_transformVector","fRoot","fTrace","vecDot","vecCross","tmpvec3","xUnitVec3","vecLength","yUnitVec3","vecNormalize","quatAxisAngle","quatNormalize","invDot","aw","bw","omega","cosom","sinom","scale0","scale1","IDENTITY_QUATERNION","Quaternion","quat_fromMat3","quat_identity","quat_length","quat_squaredLength","quat_dot","vectorA","vectorB","quat_rotationTo","quat_add","quat_calculateW","quat_conjugate","quat_invert","quat_lerp","quat_multiply","quat_normalize","quat_rotateX","quat_rotateY","quat_rotateZ","quat_scale","quat_set","quat_setAxisAngle","_ref$start","quat_slerp","ERR_UNKNOWN_ORDER","SphericalCoordinates","phi","_ref$radiusScale","radiusScale","vec3_length","Euler","DefaultOrder","fromVector3","RotationOrders","ZYX","optionalResult","roll","yaw","_fromRotationMatrix","fromQuaternion","_getRotationMatrix","XYZ","YXZ","ZXY","YZX","XZY","af","bf","cf","df","_ce","_cf","_de","_df","_ae","_af","_be","_bf","ac","ad","bc","bd","_ac","_ad","_bc","_bd","checkOrder","Pose","_ref$x","_ref$y","_ref$z","_ref$roll","_ref$pitch","_ref$yaw","RollPitchYaw","pose","exactEquals","sp","sw","setRowMajor","multiplyRight","getTransformationMatrix","isClosed","forEachSegment","getSignedArea","visitor","isPolygon","vec4_scale","_ref6$highPrecision","pixelsPerDegreeX","pixelsPerDegreeY","altPixelsPerMeter","pixelsPerMeter","metersPerPixel","pixelsPerDegree","degreesPerPixel","pixelsPerDegreeY2","altPixelsPerDegree2","altPixelsPerMeter2","pixelsPerDegree2","pixelsPerMeter2","_ref7$center","_ref7$flipY","flipY","_getProjectionParamet","_ref8$altitude","_ref8$pitch","_ref8$nearZMultiplier","_ref8$farZMultiplier","farZ","_xyz2","_xyz2$","_xyz3","vec2_lerp","Viewport","_ref$viewMatrix","_ref$projectionMatrix","_ref2$topLeft","_ref3$topLeft","_xyz","_this$unprojectPositi","_this$unprojectPositi2","_this$projectFlat2","_this$unprojectFlat2","_ref$padding","_ref$offset","_bounds","_bounds$","_bounds$2","_Viewport","_ref$latitude","_ref$longitude","_ref$zoom","_ref$bearing","_ref$altitude","vec2_add","vec2_negate","_fitBounds2","_fitBounds","Geocoder","debounceTimeout","localGeocoder","localResults","onSelected","hideOnSelect","pointZoom","formatItem","updateInputOnSelect","inputValue","showResults","hideResults","initialInputValue","validateParams","SvgCloseS","SvgSearch","registeredLoaders","registerLoaders","normalizedLoader","registeredLoader","earcut","holeIndices","invSize","hasHoles","outerLen","outerNode","linkedList","triangles","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","clockwise","signedArea","insertNode","removeNode","again","ear","zOrder","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","maxZ","intersects","locallyInside","isValidDiagonal","splitPolygon","hole","hx","hy","mx","my","tanMin","sectorContainsSector","findHoleBridge","leftmost","intersectsPolygon","inside","middleInside","q1","q2","o1","o2","o3","o4","onSegment","Node","bp","polygonArea","trianglesArea","holeIndex","timeoutDuration","longerTimeoutBrowsers","scheduled","functionToCheck","getType","getStyleComputedProperty","getParentNode","getScrollParent","overflowX","overflowY","getReferenceNode","reference","isIE11","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nodeName","getRoot","findCommonOffsetParent","element1","element2","commonAncestorContainer","isOffsetContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","getBordersSize","sideA","sideB","getSize","computedStyle","getWindowSizes","getClientRect","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","boundaries","boundariesElement","boundariesNode","popper","isPaddingNumber","getArea","computeAutoPlacement","refRect","sortedAreas","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","modifiers","ends","positionFixed","isModifierEnabled","modifierName","getSupportedPropertyName","upperProp","toCheck","getWindow","setupEventListeners","scrollElement","attachToScrollParents","scrollParents","isBody","enableEventListeners","disableEventListeners","isNumeric","setStyles","isFirefox","isModifierRequired","requesting","requested","validPlacements","BEHAVIORS","parseOffset","useHeight","basePlacement","frag","splitRegex","mergeWithPrevious","index2","shiftvariation","isVertical","shiftOffsets","transformProp","popperStyles","opSide","arrowElement","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flippedVariationByContent","flippedVariation","getOppositeVariation","subtractLength","bound","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","bothOddWidth","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","Popper","modifierOptions","eventsEnabled","Utils","PopperUtils","Defaults","arrayMap","baseIntersection","castArrayLikeObject","intersection","arrays","mapped","arrayFilter","baseFilter","MapShim","class_1","__entries__","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","subtree","disconnect","_b","propertyName","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","createFind","baseSome","baseAssignValue","__makeTemplateObject","cooked","__importStar","templateObject_1","templateObject_2","templateObject_3","core_1","helpers_1","bounce","Loader","jsx","sizeDefaults","sortObjectKeys","Nouislider","useState","slider","setSlider","sliderContainer","useEffect","instanceRef","isCreatedRef","clickOnPip","pip","toggleDisable","sliderHTML","setClickableListeners","clickablePips","querySelectorAll","createSlider","onSlide","onSet","sliderComponent","nouislider","noUiSlider","updateOptions","behaviour","connect","keyboardSupport","pips","snap","tooltips","SvgInfo","SvgLayer","SvgLeft","SvgRight","transpileShader","targetGLSLVersion","convertVertexShaderTo300","convertFragmentShaderTo300","convertVertexShaderTo100","convertFragmentShaderTo100","ShaderModule","deprecations","vertexShader","fragmentShader","_parseDeprecationDefinitions","injections","stage","hook","normalizeInjections","moduleSource","getModuleUniforms","_defaultGetUniforms","def","resolveModules","getShaderDependencies","instantiateModules","moduleMap","moduleDepth","getDependencyGraph","isOldIE","isMSIE","isTrident","WEBGL_FEATURES","compiledGlslExtensions","canCompileGLGSExtension","cap","extensionName","behavior","shader","canCompile","getFeature","hasFeatures","INJECT_SHADER_DECLARATIONS","SHADER_TYPE","assembleShaders","assembleShader","assembleGetUniforms","hookFunctions","prologue","sourceLines","glslVersion","versionLine","coreSource","allDefines","assembledSource","getShaderName","getShaderType","gpuVendor","identifyGPUVendor","getContextInfo","debugInfo","getPlatformShaderDefines","isFragment","versionDefines","getVersionDefines","sourceText","getApplicationDefines","normalizeHookFunctions","hookInjections","mainInjections","hookFunction","getHookFunctions","moduleUniforms","ProgramManager","_defaultModules","moduleName","bufferMode","_getModuleList","vsHash","_getHash","fsHash","moduleHashes","varyingHashes","defineKeys","injectKeys","defineHashes","injectHashes","_programCache","assembled","_hookFunctions","_getUniforms","_useCounts","_hashes","appModules","getScratchArray","getBrowser","navigator_","ERR_ELEMENTS","VertexArrayObject","isDefaultArray","setProps","elementBuffer","setElementBuffer","disablingAttributeZero","constantAttributeZero","_normalizeConstantArrayValue","updateNeeded","_compareConstantArrayValues","arrayValue","MULTI_LOCATION_ATTRIBUTE_REGEXP","DEPRECATIONS_V6","VertexArray","MAX_ATTRIBUTES","drawParams","vertexArrayObject","locationOrName","appAccessor","_resolveLocationAndAccessor","instanceCount","_getAttributeIndex","accessInfo","_getAttributeInfo","currentAccessor","configuration","getAttributeInfo","multiLocation","locationOffset","getAttributeLocation","getConstantBuffer","indexCount","elementsAccessor","formatArrayValue","maxElts","terminator","getDebugTableRow","vertexArray","verts","getGLSLDeclaration","typeAndName","getDebugTableForUniforms","undefinedOnly","SHADER_MODULE_UNIFORM_REGEXP","PROJECT_MODULE_UNIFORM_REGEXP","uniformLocations","table","uniformName","addUniformToTable","unusedCount","unusedTable","uniform","isUniformDefined","attributeInfo","GLTF_TO_LUMA_ATTRIBUTE_MAP","POSITION","NORMAL","COLOR_0","TEXCOORD_0","TEXCOORD_1","TEXCOORD_2","mapAttributeName","attributeMap","inferAttributeAccessor","category","NOOP","DRAW_PARAMS","Model","_attributes","indices","remappedName","getBuffersFromGeometry","normalizedAttributes","programManager","moduleSettings","logPriority","_logDrawCallStart","indexType","indexOffset","vertexArrayInstanced","onBeforeRender","onAfterRender","didDraw","unbindModels","_programDirty","stateHash","geometryBuffers","animationProps","animatedUniforms","_evaluateAnimateUniforms","logDrawTimeout","collapsed","attributeTable","rowHeader","getDebugTableForVertexArray","uniformTable","missingTable","configTable","glslDeclaration","varyingInfo","getDebugTableForProgramConfiguration","FACES","TextureCube","mipmapLevel","_subImage","imageDataMap","facePixels","resolvedFaces","Texture3D","unpackFlipY","TextureType","useContext","propChecks","replacementProp","fnValuesNs","fnRuleNs","functionPlugin","fnValues","fnRule","GlobalContainerRule","GlobalPrefixedRule","separatorRegExp","addScope","jssGlobal","handleNestedGlobalContainerRule","handlePrefixedGlobalRule","parentRegExp","jssNested","getReplaceRef","replaceParentRefs","nestedProp","parentProp","parentSelectors","nestedSelectors","getOptions","prevOptions","nestingLevel","isNested","isNestedConditional","uppercasePattern","msPattern","toHyphenLower","hyphenateStyleName","hName","convertCase","converted","hyphenate","camelCase","hyphenatedProp","addCamelCasedVersion","regExp","motion","iterate","innerProp","_innerProp","defaultUnit","camelCasedOptions","jsCssMap","Moz","Webkit","appearence","noPrefill","supportedProperty","colorAdjust","toUpper","camelize","pascalize","textOrientation","breakPropsOld","inlineLogicalOld","unprefixed","pascalized","scrollSnap","overscrollBehavior","propMap","flex2012","propMap$1","flex","propKeys","prefixCss","multiple","propertyDetectors","key$1","el$1","cache$1","transitionProperties","transPropsRegExp","prefixTransitionCallback","prefixedValue","supportedValue","jssVendorPrefixer","prefixStyle","changeProp","supportedProp","changeValue","supportedValue$$1","atRule","jssPropsSort","prop0","prop1","jssPreset","functions","vendorPrefixer","propsSort","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","forceUpdate","isPureReactComponent","__self","__source","$$typeof","_owner","keyPrefix","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Fragment","Profiler","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","createFactory","lazy","_ctor","_status","useCallback","useDebugValue","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","_debugOwner","_debugSource","fileName","lineNumber","Na","extractEvents","eventTypes","phasedRegistrationNames","registrationName","stateNode","ab","bb","db","eb","fb","gb","hb","ib","jb","kb","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","ob","pb","qb","mb","lb","rb","sb","xb","_valueTracker","stopTracking","yb","zb","defaultChecked","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","activeElement","Gb","Fb","Hb","defaultSelected","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","Rb","lastChild","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","Xb","Yb","Zb","$b","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","mc","nc","correspondingUseElement","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","eventSystemFlags","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","Mc","Nc","Pc","unstable_runWithPriority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","bubbled","captured","eventPriority","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexPositive","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","floodOpacity","stopOpacity","strokeDashoffset","strokeMiterlimit","strokeOpacity","kd","ld","nd","menuitem","embed","img","keygen","track","wbr","od","pd","td","ud","vd","HTMLIFrameElement","contentEditable","Dd","Ed","Fd","autoFocus","Gd","Hd","Id","Jd","Kd","previousSibling","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","Interface","isDefaultPrevented","returnValue","eventPool","destructor","getPooled","cancelBubble","eventPhase","bubbles","cancelable","isTrusted","documentMode","beforeInput","compositionEnd","compositionStart","compositionUpdate","char","change","_isInputEventSupported","Alt","Control","Meta","Shift","getModifierState","relatedTarget","fromElement","toElement","movementX","movementY","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","mouseEnter","mouseLeave","pointerEnter","pointerLeave","select","ef","ff","gf","hf","jf","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","elapsedTime","pseudoElement","mf","clipboardData","of","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","16","17","18","19","20","27","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","sf","dataTransfer","tf","uf","vf","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","Ff","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","mg","ng","og","pg","childExpirationTime","qg","firstContext","rg","sg","responders","tg","ug","updateQueue","baseState","baseQueue","pending","effects","vg","wg","suspenseConfig","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","shouldComponentUpdate","Lg","Mg","Ng","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","elementType","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","fh","gh","hh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","pendingContext","retryTime","unstable_avoidThisFallback","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","wasMultiple","onclick","WeakSet","__reactInternalSnapshotBeforeUpdate","_reactRootContainer","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","wd","compareDocumentPosition","setStart","removeAllRanges","addRange","setEnd","vb","Uj","Vj","Wj","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hasAttribute","hk","jk","kk","unmount","form","Lj","lk","Events","findFiberByHostInstance","isDisabled","supportsFiber","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","unstable_forceFrameRate","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","sliceIterator","_Slide2","_SnackbarContext2","_constants","_SnackbarItem2","_SnackbarContainer2","_warning2","getClasses","SnackbarProvider","enqueueSnackbar","preventDuplicate","userSpecifiedKey","snack","requestClose","anchorOrigin","autoHideDuration","compareFunction","inQueue","inView","snacks","handleDisplaySnack","maxSnack","handleDismissOldest","processQueue","popped","ignore","handleEnteredSnack","handleCloseSnack","shouldCloseAll","closeSnackbar","handleExitedSnack","newState","categ","existingOfCategory","iconVariant","hideIconVariant","TransitionComponent","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","instanceOf","objectOf","typeOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isValidElementType","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","_SnackbarItem","_classnames2","_Snackbar2","_Collapse2","_SnackbarContent2","_SnackbarItem3","SnackbarItem","handleClose","handleEntered","singleOnExited","handleExitedScreen","_props$ContentProps","ContentProps","contentAction","otherContentProps","singleContent","_snack$variant","singleAction","_snack$ContentProps","singleContentProps","singleSnackProps","contentProps","ariaDescribedby","finalAction","snackContent","getCollapseClasses","TransitionProps","getTransitionDirection","getSnackbarClasses","lessPadding","_classnames","DIRECTION","snackbarMuiClasses","wrappedRoot","collapseContainer","collapseWrapper","collapseWrapperDense","variantSuccess","variantError","variantInfo","variantWarning","marginBottom","SnackbarContainer","combinedClassname","reverseColumns","flexDirection","topDense","bottomDense","leftDense","rightDense","_hoistNonReactStatics2","WrappedComponent","_reactIs","fnNameMatchRegex","getFunctionName","getFunctionComponentName","outerType","innerType","wrapperName","getWrappedName","_SnackbarContext","_useContext","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","installMessageChannelImplementation","script","installReadyStateChangeImplementation","task","originalModule","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","extraBytes","len2","encodeChunk","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","ucs2decode","extra","ucs2encode","digitToBasic","flag","adapt","firstTime","baseMinusTMin","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","sep","maxKeys","kstr","vstr","idx","stringifyPrimitive","preferBinary","_opts","_body","_headers","setHeader","useFetch","decideMode","_fetchTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","headersObj","headersList","keyName","_fetchAbortController","requestTimeout","_connect","_response","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","msg","trace","arrayCopy","_getRequireWildcardCache","hasPropertyDescriptor","nativeAcosh","acosh","MAX_VALUE","NASHORN_BUG","toAbsoluteIndex","nativeAsinh","asinh","nativeAtanh","atanh","cbrt","LOG2E","clz32","nativeCosh","cosh","fround","EPSILON32","MAX32","MIN32","$abs","$sign","$hypot","aLen","larg","nativeImul","imul","xn","LOG10E","sinh","tanh","trunc","inheritIfRequired","NativeNumber","NumberPrototype","BROKEN_CLASSOF","third","radix","maxCode","NumberWrapper","dummy","NewTarget","NewTargetPrototype","aPossiblePrototype","NullProtoObjectViaActiveX","NullProtoObjectViaIFrame","globalIsFinite","isSafeInteger","MIN_SAFE_INTEGER","whitespaces","$parseFloat","trimmedString","$parseInt","thisNumberValue","nativeToFixed","fractionDigits","fractDigits","dataToString","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","objValue","COMPARE_PARTIAL_FLAG","assocIndexOf","pairs","LARGE_ARRAY_SIZE","isMasked","reIsHostCtor","funcProto","reIsNative","coreJsData","maskSrcKey","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","equalArrays","equalByTag","equalObjects","getTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","mapToArray","setToArray","symbolProto","symbolValueOf","getAllKeys","objProps","objLength","skipCtor","objCtor","othCtor","baseGetAllKeys","getSymbols","keysFunc","symbolsFunc","stubArray","nativeGetSymbols","baseTimes","inherited","isArr","isArg","isBuff","isType","skipIndexes","typedArrayTags","freeProcess","isPrototype","nativeKeys","overArg","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","isStrictComparable","hasIn","memoizeCapped","rePropName","reEscapeChar","subString","memoized","baseToString","symbolToString","baseHasIn","hasPath","hasFunc","baseProperty","basePropertyDeep","arrayIncludes","arrayIncludesWith","createSet","isCommon","outer","seenIndex","baseFindIndex","baseIsNaN","strictIndexOf","otherArgs","baseSetToString","shortOut","nativeNow","lastCalled","stamp","isArrayLikeObject","createBaseFor","eachFunc","_addClass","_removeClass","addClass","removeClass","getClassNames","removeClasses","reflowAndAddClass","appearClassName","doneClassName","enterClassName","isStringClassNames","_this$getClassNames6","_hasClass","baseVal","replaceClassName","origClass","classToRemove","_args","handleLifecycle","handleEntering","_len5","_key5","handleExiting","_len6","_key6","_len7","_key7","originalArgs","_React$Children$toArr","spreadableSymbol","isConcatSpreadable","baseMap","baseSortBy","compareMultiple","orders","comparer","compareAscending","objCriteria","criteria","othCriteria","ordersLength","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","_decimal","_utils","_arithmetic","getValidInterval","validMin","validMax","getFormatStep","roughStep","correctionFactor","digitCount","getDigitCount","digitCountValue","stepRatio","stepRatioScale","formatStep","getTickOfSingleValue","absVal","middleIndex","calculateStep","tickMin","tickMax","belowCount","upCount","scaleCount","_getValidInterval","_getValidInterval2","cormin","cormax","_calculateStep","rangeStep","_getValidInterval3","_getValidInterval4","_getValidInterval5","_getValidInterval6","newA","uninterpolateNumber","uninterpolateTruncation","maybeMatch","reg","begs","beg","functionRE","expressions","fnRE","searchMatch","getFunctionCalls","evalFunctionCall","Mexp","formulaEval","pop1","pop2","pop3","disp","show","postfixEval","UserDefined","lex","toPostfix","elem","prep","ele","inc","eva","math","fact","sigma","preced","type0","type1","type_1","type_3","type6","newAr","str1","str2","addToken","inp","ptc","inpStr","pcounter","bracToClose","asterick","sec","cToken","cType","cEv","cPre","cShow","hasDec","changeSign","isDegree","pro","choice","toRadian","inverse","pow10x","sinha","cosha","findIndexFunc","toFinite","remainder","baseRange","nativeCeil","__export","commonValues","sizeValue","heightWidthDefaults","sizeMarginDefaults","heightWidthRadiusDefaults","BasicColors","calculateRgba","res_1","cssUnit","cm","mm","em","vw","vmin","vmax","parseLengthAndUnit","valueString","lengthWithunit","removeElement","isSet","addClassFor","asArray","countDecimals","numStr","pieces","getPageOffset","supportPageOffset","isCSS1Compat","compatMode","subRangeRatio","fromPercentage","getJ","toStepping","xVal","xPct","toPercentage","getStep","xSteps","closest","handleEntryPoint","percentage","xHighestCompleteStep","handleStepPoint","totalSteps","xNumSteps","highestStep","Spectrum","singleStep","ordered","getMargin","fromStepping","isPercentage","getDefaultStep","isDown","getNearbySteps","stepBefore","thisStep","stepAfter","countStepDecimals","stepDecimals","validateFormat","isValidFormatter","testStep","testRange","spectrum","testStart","handles","testSnap","testAnimate","testAnimationDuration","testConnect","testOrientation","ort","testMargin","testLimit","testPadding","testDirection","testBehaviour","drag","unconstrained","testTooltips","testAriaFormat","ariaFormat","testFormat","testKeyboardSupport","testDocumentElement","testCssPrefix","cssPrefix","testCssClasses","cssClasses","testOptions","tests","handleLower","handleUpper","touchArea","connects","ltr","rtl","textDirectionLtr","textDirectionRtl","pipsHorizontal","pipsVertical","markerHorizontal","markerVertical","markerNormal","markerLarge","markerSub","valueHorizontal","valueVertical","valueNormal","valueLarge","valueSub","msPrefix","msTransform","noPrefix","transformRule","originalOptions","scope_Base","scope_Handles","scope_Connects","scope_Pips","scope_Tooltips","scope_Self","pointerEnabled","move","msPointerEnabled","supportsPassive","getSupportsPassive","scope_Target","scope_Spectrum","scope_Values","scope_Locations","scope_HandleNumbers","scope_ActiveHandlesCount","scope_Events","scope_Document","scope_DocumentElement","scope_Body","scope_DirOffset","addNodeTo","addTarget","addOrigin","handleNumber","isSliderDisabled","isHandleDisabled","horizontalKeys","verticalKeys","largeStepKeys","edgeKeys","isLargeDown","isLargeUp","isUp","isMin","isMax","getNextStepsForHandle","setHandle","fireEvent","eventKeydown","addConnect","addTooltip","removeTooltips","removeEvent","bindEvent","unencoded","formattedValue","addMarking","filterFunc","valueSizeClasses","markerSizeClasses","valueOrientationClasses","markerOrientationClasses","sizeClasses","addSpread","removePips","density","stepped","getGroup","firstInRange","lastInRange","ignoreFirst","ignoreLast","prevPct","newPct","pctDifference","pctPos","realSteps","stepSize","isSteps","generateSpread","baseSize","alt","pageOffset","eventTarget","pointer","isTouchOnTarget","checkTouch","targetTouch","fixEvent","doNotReject","calcPoint","methods","calcPointToPercentage","proposal","docElem","documentLeave","eventEnd","eventMove","appVersion","buttonsProperty","movement","startCalcPoint","moveHandles","locations","handleNumbers","setZindex","eventStart","moveEvent","endEvent","outEvent","eventTap","clickedPosition","smallestDifference","handlePosition","differenceWithThisHandle","getClosestHandle","eventHover","targetEvent","namespacedEvent","tEvent","tNamespace","checkHandlePosition","lookBackward","lookForward","inRuleOrder","upward","proposals","transformDirection","translateRule","updateConnect","updateHandlePosition","connectWidth","scaleRule","resolveToValue","valueSet","fireSetEvent","isInit","valueGet","nearbySteps","increment","decrement","connectOptions","connectBase","addElements","handleBefore","handleAfter","eventHolders","eventHolder","setupSlider","__moveHandles","optionsToUpdate","updateAble","newOptions","__spectrum","api","_SvgIcon","_extends2","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","CancelToken","isCancel","promises","InterceptorManager","dispatchRequest","interceptors","getUri","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","normalizedName","isAxiosError","columnNumber","ignoreDuplicateOf","originURL","msie","urlParsingNode","requestURL","toGMTString","relativeURL","executor","resolvePromise","isSpeedy","speedy","ctr","_tag","createStyleElement","styleSheets","ownerNode","sheetForTag","isImportRule","stylis_min","toSheet","Sheet","ruleSheet","selectors","parents","createCache","stylisOptions","stylis","Stylis","inserted","_insert","nodes","stylisPlugins","serialized","shouldCache","registered","getRegisteredStyles","registeredStyles","rawClassName","insertStyles","isStringTag","unitlessKeys","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","unitless","handleInterpolation","mergedProps","couldBeSelectorInterpolation","__emotion_styles","anim","createStringFromObject","previousCursor","labelPattern","serializeStyles","stringMode","identifierName","hashString","EmotionCacheContext","CacheProvider","withEmotionCache","typePropName","cssProp","Emotion","createElementArgArray","Global","InnerGlobal","nextElementSibling","insertable","ClassNames","setTranslateValue","fakeTransform","transformValues","getTranslateValue","webkitTransform","defaultTimeout","Slide","_props$direction","childrenRef","handleRefIntermediary","updatePosition","later","webkitTransition","Snackbar","_props$anchorOrigin","_props$autoHideDurati","ClickAwayListenerProps","_props$disableWindowB","disableWindowBlurListener","resumeHideDuration","_props$TransitionComp","Grow","_props$transitionDura","timerAutoHide","exited","setExited","setAutoHideTimer","autoHideDurationParam","handlePause","handleResume","ClickAwayListener","onClickAway","top1","bottom1","top3","bottom3","right3","left3","pseudoClasses","_options$disableGloba","disableGlobal","_options$productionPr","productionPrefix","_options$seed","seed","seedPrefix","IconButton","_props$edge","edge","_props$disableFocusRi","disableFocusRipple","_props$size","edgeStart","edgeEnd","colorInherit","sizeSmall","upgradeMessage","isFeatureSupported","featureDefinition","isSupported","queryFeature","defaultVariantMapping","Typography","_props$align","_props$display","_props$gutterBottom","gutterBottom","_props$noWrap","noWrap","_props$paragraph","paragraph","_props$variantMapping","variantMapping","srOnly","alignLeft","alignCenter","alignRight","alignJustify","textOverflow","colorTextPrimary","colorTextSecondary","displayInline","displayBlock","__VERSION__","checkIfBrowser","getStorage","storage","LocalStorage","updateConfiguration","serializedConfiguration","formatImage","imageUrl","COLOR","BLACK","RED","GREEN","YELLOW","BLUE","MAGENTA","CYAN","WHITE","BRIGHT_BLACK","BRIGHT_RED","BRIGHT_GREEN","BRIGHT_YELLOW","BRIGHT_BLUE","BRIGHT_MAGENTA","BRIGHT_CYAN","BRIGHT_WHITE","getColor","autobind","predefined","getHiResTimestamp","originalConsole","ONCE","getTableHeader","Log","_storage","_getLogFunction","oldUsage","newUsage","_shouldLog","logImageInBrowser","asciify","fit","logImageInNode","setting","normalizeArguments","getLevel","normalizeLogLevel","decorateMessage","newLevel","newPriority","resolvedLevel","messageType","padLength","leftPad","mergeClasses","baseClasses","newClasses","nextClasses","multiKeyStore","subCache","indexCounter","getStylesCreator","themingEnabled","stylesWithOverrides","noopTheme","disableGeneration","cacheClasses","lastProp","lastJSS","stylesCreator","sheetManager","staticSheet","dynamicStyles","sheetsCache","dynamicSheet","useSynchronousEffect","currentKey","classNamePrefixOption","_options$defaultTheme","stylesOptions2","StylesContext","Stat","sampleSize","lastSampleCount","lastSampleTime","_samples","Stats","_getOrCreate","average","hz","injectFirstNode","defaultOptions","_props$injectFirst","injectFirst","_props$disableGenerat","localOptions","outerOptions","createComment","ThemeProvider","localTheme","outerTheme","mergeOuterLocalTheme","entering","autoTimeout","_getTransitionProps","_getTransitionProps2","mapEventPropToEvent","eventProp","_props$mouseEvent","mouseEvent","_props$touchEvent","touchEvent","movedRef","nodeRef","mountedRef","handleNodeRef","handleClickAway","mappedTouchEvent","mappedMouseEvent","CircularProgress","_props$disableShrink","disableShrink","_props$thickness","thickness","_props$value","circleStyle","rootStyle","rootProps","circumference","indeterminate","static","svg","circleDisableShrink","circleIndeterminate","circleStatic","LinearProgress","valueBuffer","inlineStyles","bar1","bar2","determinate","dashed","bar","bar1Indeterminate","bar1Determinate","bar1Buffer","bar2Indeterminate","bar2Buffer","backgroundPrimary","backgroundSecondary","dashedColorPrimary","backgroundImage","backgroundSize","backgroundPosition","dashedColorSecondary","transformOrigin","barColorPrimary","barColorSecondary","SPACINGS","GRID_SIZES","Grid","_props$alignContent","alignContent","_props$alignItems","_props$container","_props$item","_props$justify","justify","_props$lg","_props$md","_props$sm","_props$spacing","_props$wrap","_props$xl","_props$xs","_props$zeroMinWidth","zeroMinWidth","StyledGrid","themeSpacing","generateGutter","accumulator","globalStyles","flexBasis","generateGrid","cubicInOut","TransformFeedback","_getVaryingIndex","_getBufferParams","byteSize","primitiveMode","getVaryingInfo","DRAW_MODE","POINTS","LINE_LOOP","TRIANGLE_STRIP","TRIANGLE_FAN","Geometry","_calculateVertexCount","_print","nodeVersion","Divider","_props$absolute","absolute","_props$flexItem","flexItem","_props$light","_props$orientation","inset","alignSelf","ListItemIcon","alignItemsFlexStart","AppBar","_props$position","backgroundColorDefault","positionAbsolute","positionSticky","positionStatic","positionRelative","colorDefault","colorTransparent","Toolbar","_props$disableGutters","disableGutters","regular","Button","_props$disableElevati","disableElevation","endIconProp","endIcon","_props$fullWidth","fullWidth","startIconProp","startIcon","textPrimary","textSecondary","outlinedPrimary","outlinedSecondary","contained","containedPrimary","containedSecondary","borderColor","textSizeSmall","textSizeLarge","outlinedSizeSmall","outlinedSizeLarge","containedSizeSmall","containedSizeLarge","sizeLarge","iconSizeSmall","iconSizeMedium","iconSizeLarge","TypographyClasses","_props$underline","underline","handlerRef","underlineNone","underlineHover","underlineAlways","ExpansionPanelSummary","expandIcon","IconButtonProps","focusedState","setFocusedState","_React$useContext","_React$useContext$dis","expanded","focused","ExpansionPanelDetails","Card","_props$raised","raised","CardContent","channelHandles","animationHandles","Timeline","rate","animationHandle","animations","animationData","channelHandle","lastEngineTime","engineTime","offsetTime","createMat4","DEFAULT_DISTANCE_SCALES","metersPerUnit","_frustumPlanes","getFrustumPlanes","orthographic","isGeospatial","_getCenterInWorld","meterOffset","center2d","commonPosition","_createProjectionMatrix","extractCameraVectors","viewportMatrix","DEFAULT_MODULES","SHADER_HOOKS","createProgramManager","shaderModule","shaderHook","INITIAL_CONTEXT","layerManager","deck","shaderCache","pickingFBO","mousePosition","LayerManager","activateViewport","layerNeedsRedraw","_needsRedraw","_needsUpdate","newLayers","oldLayers","oldLayerMap","generatedLayers","_updateSublayersRecursively","error2","_finalizeOldLayers","firstError","newLayer","sublayers","_debug","_initializeLayer","_finalizeLayer","ViewManager","onInteractiveStateChange","controllers","_viewports","viewMap","viewOrViewId","views","viewId","getView","_viewportMap","viewports","_diffViews","Controller","_onViewStateChange","_eventCallbacks","controllerProps","_createController","oldControllers","getViewState","_updateController","newViews","oldViews","PERCENT_OR_PIXELS_REGEX","parsePosition","getPosition","View","viewportInstance","filterViewState","viewportDimensions","getDimensions","_getViewport","defaultOpts","ViewportType","viewportOpts","extract","_propsToCompare","startViewStateProps","endViewStateProps","_onTransitionUpdate","transitionTriggered","startViewstate","_onTransitionEnd","ControllerState","newControllerState","controllerState","isPointInBounds","alternateMode","invertPan","customEvents","ViewState","_getUpdatedState","_zoomFromCenter","_panFromCenter","fromProps","MapView","_getControllerProps","DEFAULT_LIGHT_COLOR","idCount","AmbientLight","DEFAULT_LIGHT_DIRECTION","DirectionalLight","_shadow","Effect","Pass","LayersPass","_drawLayers","onViewportActive","clearCanvas","clearGLCanvas","renderStats","viewportOrDescriptor","layerFilter","glViewport","getGLViewport","clearOpts","scissorTest","renderStatus","totalCount","visibleCount","compositeCount","pickableCount","shouldDrawLayer","_moduleParameters","layerParameters","isPicking","effect","getModuleParameters","ShadowPass","drawToShadowMap","getMemoizedViewportCenterPosition","getMemoizedViewProjectionMatrices","shadowMatrices","projectionMatrices","corners","screenToCommonSpace","shadowMatrix","corner","DEFAULT_SHADOW_COLOR","createShadowUniforms","shadow_uDrawShadowMap","shadow_uUseShadowMap","shadow_uColor","shadow_uLightId","shadow_uLightCount","projectCenters","viewProjectionMatrices","viewProjectionMatrixCentered","shadowUniforms","shadowEnabled","DEFAULT_AMBIENT_LIGHT_PROPS","DEFAULT_DIRECTIONAL_LIGHT_PROPS","LightingEffect","lightSource","shadowPasses","shadowPass","shadowLightId","dummyShadowMap","shadowMaps","shadowColor","ambientLight","directionalLights","directionalLight","pointLights","pointLight","lightMatrices","DEFAULT_LIGHTING_EFFECT","EffectManager","DrawLayersPass","PICKING_PARAMETERS","PickLayersPass","deviceRect","redrawReason","pickZ","lightSources","pickParameters","DeckRenderer","drawPickingColors","layerPass","outputBuffer","lastPostProcessEffect","renderBuffers","inputBuffer","swapBuffer","NO_PICKED_OBJECT","pickedColor","pickedLayer","pickedObjectIndex","getClosestObject","pickedColors","deviceX","deviceY","deviceRadius","minSquareDistanceToCenter","closestPixelIndex","dy2","d2","pickedLayerIndex","pickedX","pickedY","processPickInfo","pickInfo","lastPickedInfo","affectedLayers","lastPickedObjectIndex","lastPickedLayerId","pickedLayerId","lastPickedLayer","baseInfo","picked","devicePixel","infos","getLayerPickingInfo","callLayerPickingCallbacks","unhandledPickInfos","DeckPicker","_pickClosestObject","_pickVisibleObjects","unproject3D","devicePixelRange","_getPickingRect","deviceWidth","deviceHeight","_drawAndSample","zValues","processedPickInfos","emptyInfo","leftTop","deviceLeft","deviceTop","rightBottom","deviceRight","deviceBottom","pickInfos","uniqueColors","colorKey","getUniqueObjects","uniqueInfos","pickableLayers","defaultStyle","canvasParent","displayInfo","IMAGE_BITMAP_SUPPORTED","HTML_IMAGE_SUPPORTED","NODE_IMAGE_SUPPORTED","isImageTypeSupported","getDefaultImageType","getImageOutputFormat","imageOptions","mimeTypeMap","tableMarkers","sofMarkers","getJpegMarkers","isPng","isGif","isBmp","isJpeg","getBinaryImageMIMEType","toDataView","parseToNodeImage","objectUrl","loadToHTMLImage","parseToImageBitmap","imagebitmapOptions","createImageBitmap","xmlText","SVG_DATA_URL_PATTERN","SVG_URL_PATTERN","parseSVG","parseToHTMLImage","mimeTypes","decodeHTML","firstChar","parseTextSync","existingVersion","_registerLoggers","Query","hasTimerQuery","conservative","resultAvailable","getResult","poll","statIdCounter","AnimationLoop","onCreateContext","onAddHTML","onInitialize","onRender","onFinalize","glOptions","autoResizeViewport","autoResizeDrawingBuffer","_onMousemove","_onMouseleave","appContext","offScreen","waitForRender","toDataURL","_requestAnimationFrame","renderFrame","renderFrameCallback","tock","_timeline","_animationLoop","_mousePosition","wrapperDiv","_gpuTimeQuery","pickingRadius","_framebuffer","_animate","onWebGLInitialized","_onMetrics","Deck","_onPointerDown","_onPointerMove","_pickAndCallback","_onRendererInitialized","_onRenderFrame","_onInteractiveStateChange","_createCanvas","_createAnimationLoop","fps","setPropsTime","updateAttributesTime","framesRedrawn","pickTime","pickCount","gpuTimePerFrame","cpuTimePerFrame","bufferMemory","textureMemory","renderbufferMemory","gpuMemory","_getViews","viewManagerNeedsRedraw","viewManager","layerManagerNeedsRedraw","effectManagerNeedsRedraw","effectManager","deckRendererNeedsRedraw","deckRenderer","getViewports","_pick","statKey","deckPicker","getLayers","_pickRequest","pickedInfo","getTooltip","polygonOffsetFill","renderOptions","getEffects","_metricsCounter","interactiveState","eventOptions","getLastPickedObject","layerHandler","rootHandler","pickObject","animationLoopStats","animationLoop","memoryStats","inheritsFrom","ParentType","wrapInView","extractJSXLayers","reactChildren","jsxLayers","jsxViews","reactElement","ElementType","reactProps","createLayer","deckGlobal","MAP_STYLE","evaluateChildren","componentProps","isReactMap","needsDeckGLViewProps","positionChildrenUnderViews","defaultViewId","viewChildren","viewElement","CANVAS_ONLY_STYLES","mixBlendMode","extractStyles","canvasStyle","DeckGL","DeckClass","_canvasRef","_customRender","childrenChanged","_parseJSX","viewsChanged","pickMultipleObjects","pickObjects","_extractJSXLayers","deckProps","_positionChildrenUnderViews","_extractStyles","CompositeLayer","overridingProps","DefaultLayerClass","sourceObject","sourceObjectIndex","sublayerProps","overridingSublayerProps","overridingSublayerTriggers","sublayerId","getSubLayerAccessor","passThroughProps","subLayers","DEFAULT_COLOR","radiusMinPixels","radiusMaxPixels","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","stroked","filled","getRadius","getFillColor","getLineColor","getLineWidth","deprecatedFor","ScatterplotLayer","project32","instancePositions","fp64","instanceRadius","instanceFillColors","instanceLineColors","instanceLineWidths","_getModel","widthMultiplier","Tesselator","getGeometry","geometryBuffer","getGeometryFromBuffer","_attributeDefs","indexStarts","vertexStarts","dataIndex","byteStride","positionSize","bufferValue","vertexEnd","PathTesselator","segmentTypes","getPathLength","isPathClosed","vertexStart","geometrySize","ptIndex","getPointOnPath","firstPoint","lastPoint","widthUnits","widthMinPixels","widthMaxPixels","miterLimit","billboard","_pathType","getWidth","ATTRIBUTE_TRANSITION","PathLayer","instanceLeftPositions","instanceStartPositions","instanceEndPositions","instanceRightPositions","instanceTypes","instanceStrokeWidths","instanceColors","pathTesselator","use64bitPositions","getDashArray","jointType","DEGREES_TO_RADIANS_HALF","polygon","isSimple","isNestedRingClosed","simplePolygon","p0","isFlatRingClosed","copyNestedRing","targetStartIndex","copyFlatRing","srcStartIndex","srcEndIndex","srcLength","getNestedVertexCount","getFlatVertexCount","getVertexCount","normalization","PolygonTesselator","IndexType","vertexValid","externalIndices","srcPositions","srcHoleIndices","geometryIndex","indexStart","normalizedPolygon","preproject","positionIndex","polygonPositions","extruded","wireframe","_normalize","elevationScale","getPolygon","getElevation","material","SolidPolygonLayer","polygonTesselator","nextPositions","instanceElevations","fillColors","lineColors","topModel","sideModel","renderUniforms","isWireframe","_getModels","getShaders","vertexPositions","isSideVertex","replaceInRange","replaceStart","replaceEnd","dataLengthChanged","endChunk","separateGeojsonFeatures","wrapFeature","separated","pointFeatures","lineFeatures","polygonFeatures","polygonOutlineFeatures","subGeometry","separateGeometry","sourceFeature","sourceFeatureIndex","nestLevel","COORDINATE_NEST_LEVEL","validateGeometry","MultiPoint","MultiLineString","MultiPolygon","lineJointRounded","lineMiterLimit","pointRadiusScale","pointRadiusMinPixels","pointRadiusMaxPixels","getCoordinates","GeoJsonLayer","getGeojsonFeatures","getSubLayerRow","oldFeatures","newFeatures","featuresDiff","partialFeatures","lineDashJustified","getLineDashArray","PolygonFillLayer","getSubLayerClass","PolygonStrokeLayer","LineStringsLayer","PointsLayer","polygonFillLayer","shouldRenderSubLayer","getSubLayerProps","dashJustified","styleFunction","newStyleFunction","_options$cssProperty","themeKey","themeMapping","propValueFinal","getBorder","borders","flexbox","sizing","Box","dirtyObject","setUTCDay","dirtyDay","currentDay","dayIndex","numericPatterns","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","parsers","incompatibleTokens","isTwoDigitYear","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","dirtyWeek","setUTCWeek","dirtyISOWeek","isoWeek","setUTCISOWeek","isLeapYear","wholeWeekDays","setUTCISODay","isPM","hours","setUTCMilliseconds","timestampIsSet","_token","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dirtyDateString","dirtyFormatString","dirtyBackupDate","dateString","subFnOptions","setters","dateToSystemTimezone","firstCharacter","longFormatter","usedTokens","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","incompatibleToken","usedToken","fullToken","cleanEscapedString","uniquePrioritySetters","setterArray","convertedDate","UNIFORM_SETTERS","getArraySetter","FLOAT_ARRAY","INT_ARRAY","UINT_ARRAY","toTypedArray","uniformLength","toFloatArray","toIntArray","toUIntArray","parseUniformName","getUniformSetter","checkUniformValues","uniformMap","checkUniformValue","checkLength","checkUniformArray","copyUniform","getSamplerSetter","uniformSetter","cacheLength","setVectorUniform","setMatrixUniform","defaultName","SHADER_NAME_REGEXP","parseGLSLCompilerError","errLog","shaderType","shaderName","errorStrings","warnings","shaderDescription","getShaderTypeName","errorString","delim","maxDigits","padLeft","addLineNumbers","formatErrors","Shader","getShaderParameter","getShaderSource","compileStatus","infoLog","getShaderInfoLog","VertexShader","FragmentShader","attributeInfosByLocation","attributeInfosByName","varyingInfos","varyingInfosByName","compositeType","V6_DEPRECATED_METHODS","Program","samplers","_uniformSetters","textureUpdate","textureIndex","_textureUniforms","_texturesRenderable","shaderHandles","getAttachedShaders","shaderHandle","programName","getName","uniformIndices","getActiveUniforms","blockName","getUniformBlockIndex","blockIndex","getActiveUniformBlockParameter","blockBinding","addLeadingZeros","formatters","signedYear","dayPeriodEnumValue","numberOfDigits","dayPeriodEnum","formatTimezoneShort","dirtyDelimiter","absOffset","minutes","formatTimezoneWithOptionalMinutes","formatTimezone","lightFormatters","signedWeekYear","weekYear","dayOfYear","startOfYearTimestamp","difference","getUTCDayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","_originalDate","originalDate","dirtyFormatStr","formatStr","formatterOptions","hasLights","getLightSourceUniforms","lighting_uEnabled","MAX_LIGHTS","convertColor","lightSourceUniforms","gouraudLighting","LIGHTING_VERTEX","getMaterialUniforms","ambient","diffuse","shininess","lighting_uAmbient","lighting_uDiffuse","lighting_uShininess","lighting_uSpecularColor","List","_props$dense","_props$disablePadding","disablePadding","subheader","listStyle","disableListWrap","previousItem","previousElementSibling","textCriteriaMatches","nextFocus","textCriteria","innerText","repeating","moveFocus","currentFocus","traversalFunction","wrappedOnce","MenuList","_props$autoFocus","_props$autoFocusItem","autoFocusItem","_props$disableListWra","listRef","textCriteriaRef","previousKeyMatched","lastTime","adjustStyleForScrollbar","containerElement","noExplicitWidth","scrollbarSize","scrollDiv","getScrollbarSize","activeItemIndex","newChildProps","lowerKey","keepFocusOnCurrent","ListItem","_props$button","childrenProp","componentProp","_props$ContainerCompo","ContainerComponent","_props$ContainerProps","ContainerProps","ContainerClassName","_props$divider","_props$selected","childContext","listItemRef","muiNames","hasSecondaryAction","secondaryAction","borderBottom","backgroundClip","MenuItem","tabIndexProp","Avatar","imgProps","srcSet","useLoaded","hasImg","hasImgNotFailing","Person","system","objectFit","textIndent","ExpansionPanel","_props$defaultExpande","defaultExpanded","expandedProp","_useControlled","defaultProp","isControlled","valueState","useControlled","_useControlled2","setExpandedState","_React$Children$toArr2","summary","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","DEFAULT_TEXTURE_PARAMETERS","BitmapLayer","texCoords","bitmapTexture","desaturate","transparentColor","tintColor","paramters","_props$disablePortal","disablePortal","onRendered","mountNode","setMountNode","getAnchorEl","anchorEl","defaultPopperOptions","_props$keepMounted","keepMounted","_props$placement","initialPlacement","_props$popperOptions","popperOptions","popperRefProp","popperRef","_props$transition","tooltipRef","ownRef","handlePopperRef","handlePopperRefRef","rtlPlacement","flipPlacement","_React$useState2","setPlacement","handleOpen","handlePopperUpdate","PopperJS","preventOverflow","onCreate","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","_prop$split","_prop$split2","spacingKeys","getStyleFromPropValue","cssProperties"],"mappings":"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AAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAIizC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK0zB,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI1mI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,IAAIC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAIC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,IAAIC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAIwmI,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAIC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,KAAKC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK7oC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI5hC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAIG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GA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AAIqB,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,IAAIrK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,IAAIH,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAIoJ,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE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","file":"static/js/2.62a031da.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","/* eslint-disable quotes */\n/* global document, WebGL2RenderingContext */\n// WebGLRenderingContext related methods\nimport GL from '@luma.gl/constants';\nimport {global, isBrowser as getIsBrowser} from 'probe.gl/env';\nimport trackContextState from '../state-tracker/track-context-state';\n\nimport {log, assert, getDevicePixelRatio, isWebGL2} from '../utils';\n\nexport const ERR_CONTEXT = 'Invalid WebGLRenderingContext';\nexport const ERR_WEBGL = ERR_CONTEXT;\nexport const ERR_WEBGL2 = 'Requires WebGL2';\n\nconst isBrowser = getIsBrowser();\nconst isPage = isBrowser && typeof document !== 'undefined';\n\nconst CONTEXT_DEFAULTS = {\n // COMMON CONTEXT PARAMETERS\n // Attempt to allocate WebGL2 context\n webgl2: true, // Attempt to create a WebGL2 context (false to force webgl1)\n webgl1: true, // Attempt to create a WebGL1 context (false to fail if webgl2 not available)\n throwOnError: false,\n manageState: true,\n // BROWSER CONTEXT PARAMETERS\n canvas: null, // A canvas element or a canvas string id\n debug: false, // Instrument context (at the expense of performance)\n // HEADLESS CONTEXT PARAMETERS\n width: 800, // width are height are only used by headless gl\n height: 600\n // WEBGL/HEADLESS CONTEXT PARAMETERS\n // Remaining options are passed through to context creator\n};\n\n/*\n * Creates a context giving access to the WebGL API\n */\n/* eslint-disable complexity, max-statements */\nexport function createGLContext(options = {}) {\n assert(\n isBrowser,\n \"createGLContext on available in the browser.\\nCreate your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils\"\n );\n\n options = Object.assign({}, CONTEXT_DEFAULTS, options);\n const {width, height} = options;\n\n // Error reporting function, enables exceptions to be disabled\n function onError(message) {\n if (options.throwOnError) {\n throw new Error(message);\n }\n return null;\n }\n\n let gl;\n // Get or create a canvas\n const {canvas} = options;\n const targetCanvas = getCanvas({canvas, width, height, onError});\n // Create a WebGL context in the canvas\n gl = createBrowserContext(targetCanvas, options);\n\n if (!gl) {\n return null;\n }\n\n gl = instrumentGLContext(gl, options);\n\n // Log some debug info about the newly created context\n logInfo(gl);\n\n // Add to seer integration\n return gl;\n}\n\nexport function instrumentGLContext(gl, options = {}) {\n // Avoid multiple instrumentations\n if (!gl || gl._instrumented) {\n return gl;\n }\n\n gl._version = gl._version || getVersion(gl);\n\n // Cache canvas size information to avoid setting it on every frame.\n gl.luma = gl.luma || {};\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n\n options = Object.assign({}, CONTEXT_DEFAULTS, options);\n const {manageState, debug} = options;\n\n // Install context state tracking\n if (manageState) {\n trackContextState(gl, {\n copyState: false,\n log: (...args) => log.log(1, ...args)()\n });\n }\n\n // Add debug instrumentation to the context\n if (isBrowser && debug) {\n if (!global.makeDebugContext) {\n log.warn('WebGL debug mode not activated. import \"@luma.gl/debug\" to enable.')();\n } else {\n gl = global.makeDebugContext(gl, options);\n // Debug forces log level to at least 1\n log.level = Math.max(log.level, 1);\n }\n }\n\n gl._instrumented = true;\n\n return gl;\n}\n\n/**\n * Provides strings identifying the GPU vendor and driver.\n * https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/\n * @param {WebGLRenderingContext} gl - context\n * @return {Object} - 'vendor' and 'renderer' string fields.\n */\nexport function getContextDebugInfo(gl) {\n const vendorMasked = gl.getParameter(GL.VENDOR);\n const rendererMasked = gl.getParameter(GL.RENDERER);\n const ext = gl.getExtension('WEBGL_debug_renderer_info');\n const vendorUnmasked = ext && gl.getParameter(ext.UNMASKED_VENDOR_WEBGL || GL.VENDOR);\n const rendererUnmasked = ext && gl.getParameter(ext.UNMASKED_RENDERER_WEBGL || GL.RENDERER);\n return {\n vendor: vendorUnmasked || vendorMasked,\n renderer: rendererUnmasked || rendererMasked,\n vendorMasked,\n rendererMasked,\n version: gl.getParameter(GL.VERSION),\n shadingLanguageVersion: gl.getParameter(GL.SHADING_LANGUAGE_VERSION)\n };\n}\n\n/**\n * Resize the canvas' drawing buffer.\n *\n * Can match the canvas CSS size, and optionally also consider devicePixelRatio\n * Can be called every frame\n *\n * Regardless of size, the drawing buffer will always be scaled to the viewport, but\n * for best visual results, usually set to either:\n * canvas CSS width x canvas CSS height\n * canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio\n * See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html\n *\n * resizeGLContext(gl, {width, height, useDevicePixels})\n */\nexport function resizeGLContext(gl, options = {}) {\n // Resize browser context\n if (gl.canvas) {\n const devicePixelRatio = getDevicePixelRatio(options.useDevicePixels);\n setDevicePixelRatio(gl, devicePixelRatio, options);\n return;\n }\n\n // Resize headless gl context\n const ext = gl.getExtension('STACKGL_resize_drawingbuffer');\n if (ext && `width` in options && `height` in options) {\n ext.resize(options.width, options.height);\n }\n}\n\n// HELPER METHODS\n\n/**\n * Create a WebGL context for a canvas\n * Note calling this multiple time on the same canvas does return the same context\n */\n\nfunction createBrowserContext(canvas, options) {\n const {onError = message => null} = options;\n\n // Try to extract any extra information about why context creation failed\n const onCreateError = error => onError(`WebGL context: ${error.statusMessage || 'error'}`);\n canvas.addEventListener('webglcontextcreationerror', onCreateError, false);\n\n const {webgl1 = true, webgl2 = true} = options;\n let gl = null;\n // Prefer webgl2 over webgl1, prefer conformant over experimental\n if (webgl2) {\n gl = gl || canvas.getContext('webgl2', options);\n gl = gl || canvas.getContext('experimental-webgl2', options);\n }\n if (webgl1) {\n gl = gl || canvas.getContext('webgl', options);\n gl = gl || canvas.getContext('experimental-webgl', options);\n }\n\n canvas.removeEventListener('webglcontextcreationerror', onCreateError, false);\n\n if (!gl) {\n return onError(`Failed to create ${webgl2 && !webgl1 ? 'WebGL2' : 'WebGL'} context`);\n }\n\n return gl;\n}\n\nfunction getCanvas({canvas, width = 800, height = 600, onError = () => {}}) {\n let targetCanvas;\n if (typeof canvas === 'string') {\n const isPageLoaded = isPage && document.readyState === 'complete';\n if (!isPageLoaded) {\n onError(`createGLContext called on canvas '${canvas}' before page was loaded`);\n }\n targetCanvas = document.getElementById(canvas);\n } else if (canvas) {\n targetCanvas = canvas;\n } else {\n targetCanvas = document.createElement('canvas');\n targetCanvas.id = 'lumagl-canvas';\n targetCanvas.style.width = Number.isFinite(width) ? `${width}px` : '100%';\n targetCanvas.style.height = Number.isFinite(height) ? `${height}px` : '100%';\n document.body.insertBefore(targetCanvas, document.body.firstChild);\n }\n\n return targetCanvas;\n}\n\nfunction logInfo(gl) {\n const webGL = isWebGL2(gl) ? 'WebGL2' : 'WebGL1';\n const info = getContextDebugInfo(gl);\n const driver = info ? `(${info.vendor},${info.renderer})` : '';\n const debug = gl.debug ? ' debug' : '';\n log.info(1, `${webGL}${debug} context ${driver}`)();\n}\n\nfunction getVersion(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n // WebGL2 context.\n return 2;\n }\n // Must be a WebGL1 context.\n return 1;\n}\n\n// use devicePixelRatio to set canvas width and height\nfunction setDevicePixelRatio(gl, devicePixelRatio, options) {\n // NOTE: if options.width and options.height not used remove in v8\n let clientWidth = 'width' in options ? options.width : gl.canvas.clientWidth;\n let clientHeight = 'height' in options ? options.height : gl.canvas.clientHeight;\n\n if (!clientWidth || !clientHeight) {\n log.log(1, 'Canvas clientWidth/clientHeight is 0')();\n // by forcing devicePixel ratio to 1, we do not scale gl.canvas.width and height in each frame.\n devicePixelRatio = 1;\n clientWidth = gl.canvas.width || 1;\n clientHeight = gl.canvas.height || 1;\n }\n\n gl.luma = gl.luma || {};\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n const cachedSize = gl.luma.canvasSizeInfo;\n // Check if canvas needs to be resized\n if (\n cachedSize.clientWidth !== clientWidth ||\n cachedSize.clientHeight !== clientHeight ||\n cachedSize.devicePixelRatio !== devicePixelRatio\n ) {\n let clampedPixelRatio = devicePixelRatio;\n\n const canvasWidth = Math.floor(clientWidth * clampedPixelRatio);\n const canvasHeight = Math.floor(clientHeight * clampedPixelRatio);\n gl.canvas.width = canvasWidth;\n gl.canvas.height = canvasHeight;\n\n // Note: when devicePixelRatio is too high, it is possible we might hit system limit for\n // drawing buffer width and hight, in those cases they get clamped and resulting aspect ration may not be maintained\n // for those cases, reduce devicePixelRatio.\n if (gl.drawingBufferWidth !== canvasWidth || gl.drawingBufferHeight !== canvasHeight) {\n log.warn(`Device pixel ratio clamped`)();\n clampedPixelRatio = Math.min(\n gl.drawingBufferWidth / clientWidth,\n gl.drawingBufferHeight / clientHeight\n );\n\n gl.canvas.width = Math.floor(clientWidth * clampedPixelRatio);\n gl.canvas.height = Math.floor(clientHeight * clampedPixelRatio);\n }\n\n Object.assign(gl.luma.canvasSizeInfo, {clientWidth, clientHeight, devicePixelRatio});\n }\n}\n","// STATS (PERFORMANCE PROFILING)\nexport {default as Stats} from './lib/stats';\nexport {default as Stat} from './lib/stat';\n\n// UTILITIES\nexport {default as _getHiResTimestamp} from './utils/hi-res-timestamp';\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","function toVal(mix) {\n\tvar k, y, str='';\n\tif (mix) {\n\t\tif (typeof mix === 'object') {\n\t\t\tif (!!mix.push) {\n\t\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\t\tif (mix[k] && (y = toVal(mix[k]))) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (k in mix) {\n\t\t\t\t\tif (mix[k] && (y = toVal(k))) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (typeof mix !== 'boolean' && !mix.call) {\n\t\t\tstr && (str += ' ');\n\t\t\tstr += mix;\n\t\t}\n\t}\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (x = toVal(arguments[i++])) {\n\t\t\tstr && (str += ' ');\n\t\t\tstr += x\n\t\t}\n\t}\n\treturn str;\n}\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","module.exports = require(\"regenerator-runtime\");\n","/**\r\n * Common utilities\r\n * @module glMatrix\r\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\r\n * Sets the type of array used when creating new vectors and matrices\r\n *\r\n * @param {Type} type Array type, such as Float32Array or Array\r\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\r\n * Convert Degree To Radian\r\n *\r\n * @param {Number} a Angle in Degrees\r\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\r\n * Tests whether or not the arguments have approximately the same value, within an absolute\r\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\r\n * than or equal to 1.0, and a relative tolerance is used for larger values)\r\n *\r\n * @param {Number} a The first number to test.\r\n * @param {Number} b The second number to test.\r\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","/* eslint-disable no-restricted-syntax */\nexport default function getThemeProps(params) {\n var theme = params.theme,\n name = params.name,\n props = params.props;\n\n if (!theme || !theme.props || !theme.props[name]) {\n return props;\n } // Resolve default props, code borrow from React source.\n // https://github.com/facebook/react/blob/15a8f031838a553e41c0b66eb1bcf1da8448104d/packages/react/src/ReactElement.js#L221\n\n\n var defaultProps = theme.props[name];\n var propName;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n\n return props;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport makeStyles from '../makeStyles';\nimport getThemeProps from '../getThemeProps';\nimport useTheme from '../useTheme'; // Link a style sheet with a component.\n// It does not modify the component passed to it;\n// instead, it returns a new component, with a `classes` property.\n\nvar withStyles = function withStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function (Component) {\n var defaultTheme = options.defaultTheme,\n _options$withTheme = options.withTheme,\n withTheme = _options$withTheme === void 0 ? false : _options$withTheme,\n name = options.name,\n stylesOptions = _objectWithoutProperties(options, [\"defaultTheme\", \"withTheme\", \"name\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (Component === undefined) {\n throw new Error(['You are calling withStyles(styles)(Component) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n }\n\n var classNamePrefix = name;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n var displayName = getDisplayName(Component);\n\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n\n var useStyles = makeStyles(stylesOrCreator, _extends({\n defaultTheme: defaultTheme,\n Component: Component,\n name: name || Component.displayName,\n classNamePrefix: classNamePrefix\n }, stylesOptions));\n var WithStyles = React.forwardRef(function WithStyles(props, ref) {\n var classesProp = props.classes,\n innerRef = props.innerRef,\n other = _objectWithoutProperties(props, [\"classes\", \"innerRef\"]); // The wrapper receives only user supplied props, which could be a subset of\n // the actual props Component might receive due to merging with defaultProps.\n // So copying it here would give us the same result in the wrapper as well.\n\n\n var classes = useStyles(_extends({}, Component.defaultProps, {}, props));\n var theme;\n var more = other;\n\n if (typeof name === 'string' || withTheme) {\n // name and withTheme are invariant in the outer scope\n // eslint-disable-next-line react-hooks/rules-of-hooks\n theme = useTheme() || defaultTheme;\n\n if (name) {\n more = getThemeProps({\n theme: theme,\n name: name,\n props: other\n });\n } // Provide the theme to the wrapped component.\n // So we don't have to use the `withTheme()` Higher-order Component.\n\n\n if (withTheme && !more.theme) {\n more.theme = theme;\n }\n }\n\n return React.createElement(Component, _extends({\n ref: innerRef || ref,\n classes: classes\n }, more));\n });\n process.env.NODE_ENV !== \"production\" ? WithStyles.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * Use that prop to pass a ref to the decorated component.\n * @deprecated\n */\n innerRef: chainPropTypes(PropTypes.oneOfType([PropTypes.func, PropTypes.object]), function (props) {\n if (props.innerRef == null) {\n return null;\n }\n\n return null; // return new Error(\n // 'Material-UI: the `innerRef` prop is deprecated and will be removed in v5. ' +\n // 'Refs are now automatically forwarded to the inner component.',\n // );\n })\n } : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n WithStyles.displayName = \"WithStyles(\".concat(getDisplayName(Component), \")\");\n }\n\n hoistNonReactStatics(WithStyles, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Exposed for test purposes.\n WithStyles.Naked = Component;\n WithStyles.options = options;\n WithStyles.useStyles = useStyles;\n }\n\n return WithStyles;\n };\n};\n\nexport default withStyles;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { withStyles as withStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nfunction withStyles(stylesOrCreator, options) {\n return withStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\n\nexport default withStyles;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import assert from './assert';\n\nconst uidCounters = {};\n\n/**\n * Returns a UID.\n * @param {String} id= - Identifier base name\n * @return {number} uid\n **/\nexport function uid(id = 'id') {\n uidCounters[id] = uidCounters[id] || 1;\n const count = uidCounters[id]++;\n return `${id}-${count}`;\n}\n\n/**\n * Verifies if a given number is power of two or not.\n * @param {object} n - The number to check.\n * @return {Array} Returns true if the given number is power of 2, false otherwise.\n **/\nexport function isPowerOfTwo(n) {\n assert(typeof n === 'number', 'Input must be a number');\n return n && (n & (n - 1)) === 0;\n}\n\n// Returns true if given object is empty, false otherwise.\nexport function isObjectEmpty(obj) {\n let isEmpty = true;\n /* eslint-disable no-unused-vars */\n for (const key in obj) {\n isEmpty = false;\n break;\n }\n /* eslint-enable no-unused-vars */\n return isEmpty;\n}\n","/* global window */\n\n// multiplier need to convert CSS size to Device size\nexport function cssToDeviceRatio(gl) {\n if (gl.canvas && gl.luma) {\n // For headless gl we might have used custom width and height\n // hence use cached clientWidth\n const {clientWidth} = gl.luma.canvasSizeInfo;\n return clientWidth ? gl.drawingBufferWidth / clientWidth : 1;\n }\n // use default device pixel ratio\n return 1;\n}\n\n// Maps CSS pixel position to device pixel position\nexport function cssToDevicePixels(gl, cssPixel, yInvert = true) {\n const ratio = cssToDeviceRatio(gl);\n const width = gl.drawingBufferWidth;\n const height = gl.drawingBufferHeight;\n return scalePixels(cssPixel, ratio, width, height, yInvert);\n}\n\n// HELPER METHODS\n\n/**\n * Calulates device pixel ratio, used during context creation\n *\n * @param {boolean or Number} useDevicePixels - boolean or a Number\n * @return {Number} - device pixel ratio\n */\nexport function getDevicePixelRatio(useDevicePixels) {\n const windowRatio = typeof window === 'undefined' ? 1 : window.devicePixelRatio || 1;\n if (Number.isFinite(useDevicePixels)) {\n return useDevicePixels <= 0 ? 1 : useDevicePixels;\n }\n return useDevicePixels ? windowRatio : 1;\n}\n\n// PRIVATE\n\nfunction scalePixels(pixel, ratio, width, height, yInvert) {\n const x = scaleX(pixel[0], ratio, width);\n let y = scaleY(pixel[1], ratio, height, yInvert);\n\n // Find boundaries of next pixel to provide valid range of device pixel locaitons\n\n let t = scaleX(pixel[0] + 1, ratio, width);\n // If next pixel's position is clamped to boundary, use it as is, otherwise subtract 1 for current pixel boundary\n const xHigh = t === width - 1 ? t : t - 1;\n\n t = scaleY(pixel[1] + 1, ratio, height, yInvert);\n let yHigh;\n if (yInvert) {\n // If next pixel's position is clamped to boundary, use it as is, otherwise clamp it to valid range\n t = t === 0 ? t : t + 1;\n // swap y and yHigh\n yHigh = y;\n y = t;\n } else {\n // If next pixel's position is clamped to boundary, use it as is, otherwise clamp it to valid range\n yHigh = t === height - 1 ? t : t - 1;\n // y remains same\n }\n return {\n x,\n y,\n // when ratio < 1, current css pixel and next css pixel may point to same device pixel, set width/height to 1 in those cases.\n width: Math.max(xHigh - x + 1, 1),\n height: Math.max(yHigh - y + 1, 1)\n };\n}\n\nfunction scaleX(x, ratio, width) {\n // since we are rounding to nearest, when ratio > 1, edge pixels may point to out of bounds value, clamp to the limit\n const r = Math.min(Math.round(x * ratio), width - 1);\n return r;\n}\n\nfunction scaleY(y, ratio, height, yInvert) {\n // since we are rounding to nearest, when ratio > 1, edge pixels may point to out of bounds value, clamp to the limit\n return yInvert\n ? Math.max(0, height - 1 - Math.round(y * ratio))\n : Math.min(Math.round(y * ratio), height - 1);\n}\n","import {assert} from './utils';\n\n// Heuristic testing of contexts (to indentify debug wrappers around gl contexts)\n// const GL_ARRAY_BUFFER = 0x8892;\n\nexport const ERR_CONTEXT = 'Invalid WebGLRenderingContext';\nexport const ERR_WEBGL = ERR_CONTEXT;\nexport const ERR_WEBGL2 = 'Requires WebGL2';\n\nexport function isWebGL(gl) {\n return Boolean(gl && Number.isFinite(gl._version));\n}\n\nexport function isWebGL2(gl) {\n return Boolean(gl && gl._version === 2);\n}\n\nexport function assertWebGLContext(gl) {\n // Need to handle debug context\n assert(isWebGL(gl), ERR_CONTEXT);\n}\n\nexport function assertWebGL2Context(gl) {\n // Need to handle debug context\n assert(isWebGL2(gl), ERR_WEBGL2);\n}\n","import {Log} from 'probe.gl';\n\nexport {assert, deepArrayEqual, isObjectEmpty} from './utils';\nexport {cssToDevicePixels, cssToDeviceRatio, getDevicePixelRatio} from './device-pixels';\nexport {isWebGL, isWebGL2} from './webgl-checks';\n\nexport const log = new Log({id: 'luma.gl'});\n","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import {Log} from 'probe.gl';\n\nexport default new Log({id: 'deck'});\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import {ConsoleLog} from './loader-utils/loggers';\n\n// TODO - document these options\nexport const DEFAULT_LOADER_OPTIONS = {\n CDN: 'https://unpkg.com/@loaders.gl',\n worker: true, // By default, use worker if provided by loader\n log: new ConsoleLog(), // A probe.gl compatible (`log.log()()` syntax) that just logs to console\n dataType: 'arraybuffer' // TODO - explain why this option is needed for parsing\n};\n","import * as glMatrix from \"./common.js\";\n/**\r\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\r\n * @module mat4\r\n */\n\n/**\r\n * Creates a new identity mat4\r\n *\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 initialized with values from an existing matrix\r\n *\r\n * @param {mat4} a matrix to clone\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Copy the values from one mat4 to another\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Create a new mat4 with the given values\r\n *\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} A new mat4\r\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set the components of a mat4 to the given values\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} out\r\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set a mat4 to the identity matrix\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @returns {mat4} out\r\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Transpose the values of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Inverts a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\r\n * Calculates the adjugate of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\r\n * Calculates the determinant of a mat4\r\n *\r\n * @param {mat4} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\r\n * Multiplies two mat4s\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\r\n * Translate a mat4 by the given vector\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to translate\r\n * @param {vec3} v vector to translate by\r\n * @returns {mat4} out\r\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\r\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to scale\r\n * @param {vec3} v the vec3 to scale the matrix by\r\n * @returns {mat4} out\r\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Rotates a mat4 by the given angle around the given axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {vec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the X axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Y axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Z axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\r\n * Creates a matrix from a vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {vec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.scale(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {vec3} v Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a given angle around a given axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotate(dest, dest, rad, axis);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {vec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the X axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateX(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Y axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateY(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Z axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateZ(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation and vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 from a dual quat.\r\n *\r\n * @param {mat4} out Matrix\r\n * @param {quat2} a Dual Quaternion\r\n * @returns {mat4} mat4 receiving operation result\r\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\r\n * Returns the translation vector component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslation,\r\n * the returned vector will be the same as the translation vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive translation component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\r\n * Returns the scaling factor component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslationScale\r\n * with a normalized Quaternion paramter, the returned vector will be\r\n * the same as the scaling vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive scaling factor component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\r\n * Returns a quaternion representing the rotational component\r\n * of a transformation matrix. If a matrix is built with\r\n * fromRotationTranslation, the returned quaternion will be the\r\n * same as the quaternion originally supplied.\r\n * @param {quat} out Quaternion to receive the rotation component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {quat} out\r\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @param {vec3} s Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * mat4.translate(dest, origin);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n * mat4.translate(dest, negativeOrigin);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @param {vec3} s Scaling vector\r\n * @param {vec3} o The origin vector around which to scale and rotate\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\r\n * Calculates a 4x4 matrix from the given quaternion\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat} q Quaternion to create matrix from\r\n *\r\n * @returns {mat4} out\r\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a frustum matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Number} left Left bound of the frustum\r\n * @param {Number} right Right bound of the frustum\r\n * @param {Number} bottom Bottom bound of the frustum\r\n * @param {Number} top Top bound of the frustum\r\n * @param {Number} near Near bound of the frustum\r\n * @param {Number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given bounds.\r\n * Passing null/undefined/no value for far will generate infinite projection matrix.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} fovy Vertical field of view in radians\r\n * @param {number} aspect Aspect ratio. typically viewport width/height\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum, can be null or Infinity\r\n * @returns {mat4} out\r\n */\n\nexport function perspective(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given field of view.\r\n * This is primarily useful for generating projection matrices to be used\r\n * with the still experiemental WebVR API.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\r\n * Generates a orthogonal projection matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} left Left bound of the frustum\r\n * @param {number} right Right bound of the frustum\r\n * @param {number} bottom Bottom bound of the frustum\r\n * @param {number} top Top bound of the frustum\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function ortho(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\r\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {vec3} eye Position of the viewer\r\n * @param {vec3} center Point the viewer is looking at\r\n * @param {vec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a matrix that makes something look at something else.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {vec3} eye Position of the viewer\r\n * @param {vec3} center Point the viewer is looking at\r\n * @param {vec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n;\n/**\r\n * Returns a string representation of a mat4\r\n *\r\n * @param {mat4} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\n\nexport function str(a) {\n return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' + a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' + a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')';\n}\n/**\r\n * Returns Frobenius norm of a mat4\r\n *\r\n * @param {mat4} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\r\n * Adds two mat4's\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\r\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat4} out the receiving vector\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {mat4} a The first matrix.\r\n * @param {mat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {mat4} a The first matrix.\r\n * @param {mat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\r\n * Alias for {@link mat4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link mat4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport assert from './assert';\n\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\n\n// TODO - remove\n/* eslint-disable no-shadow */\nconst config = {};\nconfig.EPSILON = 1e-12;\nconfig.debug = false;\nconfig.precision = 4;\nconfig.printTypes = false;\nconfig.printDegrees = false;\nconfig.printRowMajor = true;\n\nexport {config};\n\nexport function configure(options = {}) {\n // Only copy existing keys\n for (const key in options) {\n assert(key in config);\n config[key] = options[key];\n }\n return config;\n}\n\nfunction round(value) {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\nexport function formatValue(value, {precision = config.precision || 4} = {}) {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n\n// Returns true if value is either an array or a typed array\n// Note: does not return true for ArrayBuffers and DataViews\nexport function isArray(value) {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && value.length !== undefined);\n}\n\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array) {\n return array.clone ? array.clone() : new Array(array.length);\n}\n\nexport function clone(array) {\n return array.clone ? array.clone() : new Array(...array);\n}\n\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(value, func, result) {\n if (isArray(value)) {\n result = result || duplicateArray(value);\n for (let i = 0; i < result.length && i < value.length; ++i) {\n result[i] = func(value[i], i, result);\n }\n return result;\n }\n return func(value);\n}\n\nexport function toRadians(degrees) {\n return radians(degrees);\n}\n\nexport function toDegrees(radians) {\n return degrees(radians);\n}\n\n//\n// GLSL math function equivalents\n// Works on both single values and vectors\n//\n\nexport function radians(degrees, result) {\n return map(degrees, degrees => degrees * DEGREES_TO_RADIANS, result);\n}\n\nexport function degrees(radians, result) {\n return map(radians, radians => radians * RADIANS_TO_DEGREES, result);\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function sin(radians) {\n return map(radians, angle => Math.sin(angle));\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function cos(radians) {\n return map(radians, angle => Math.cos(angle));\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function tan(radians) {\n return map(radians, angle => Math.tan(angle));\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function asin(radians) {\n return map(radians, angle => Math.asin(angle));\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function acos(radians) {\n return map(radians, angle => Math.acos(angle));\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function atan(radians) {\n return map(radians, angle => Math.atan(angle));\n}\n\nexport function clamp(value, min, max) {\n return map(value, value => Math.max(min, Math.min(max, value)));\n}\n\n// Interpolate between two numbers or two arrays\nexport function lerp(a, b, t) {\n if (isArray(a)) {\n return a.map((ai, i) => lerp(ai, b[i], t));\n }\n return t * b + (1 - t) * a;\n}\n\n// eslint-disable-next-line complexity\nexport function equals(a, b, epsilon) {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a && a.equals) {\n return a.equals(b);\n }\n if (b && b.equals) {\n return b.equals(a);\n }\n if (Number.isFinite(a) && Number.isFinite(b)) {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n }\n return false;\n } finally {\n config.EPSILON = oldEpsilon;\n }\n}\n\n// eslint-disable-next-line complexity\nexport function exactEquals(a, b) {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\nexport function withEpsilon(EPSILON, func) {\n const oldPrecision = config.EPSILON;\n config.EPSILON = EPSILON;\n let value;\n try {\n value = func();\n } finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word a the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof string !== 'string') {\n throw new Error('Material-UI: capitalize(string) expects a string argument.');\n }\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import * as vec4 from 'gl-matrix/vec4';\n\n// Helper, avoids low-precision 32 bit matrices from gl-matrix mat4.create()\nexport function createMat4() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\n\n// Transforms a vec4 with a projection matrix\nexport function transformVector(matrix, vector) {\n const result = vec4.transformMat4([], vector, matrix);\n vec4.scale(result, result, 1 / result[3]);\n return result;\n}\n\nexport function mod(value, divisor) {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\n\nexport function lerp(start, end, step) {\n return step * end + (1 - step) * start;\n}\n","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n","// TODO - THE UTILITIES IN THIS FILE SHOULD BE IMPORTED FROM WEB-MERCATOR-VIEWPORT MODULE\n\nimport {createMat4, transformVector} from './math-utils';\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport assert from './assert';\n\n// CONSTANTS\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\n// Average circumference (40075 km equatorial, 40007 km meridional)\nconst EARTH_CIRCUMFERENCE = 40.03e6;\n\n// Mapbox default altitude\nconst DEFAULT_ALTITUDE = 1.5;\n\n/** Util functions **/\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\n\nexport function scaleToZoom(scale) {\n return Math.log2(scale);\n}\n\n/**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param {Array} lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return {Array} [x,y] coordinates.\n */\nexport function lngLatToWorld([lng, lat]) {\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = (TILE_SIZE * (lambda2 + PI)) / (2 * PI);\n const y = (TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5)))) / (2 * PI);\n return [x, y];\n}\n\n/**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param {object|Vector} xy - object with {x,y} members\n * representing point on projected map plane\n * @return {GeoCoordinates} - object with {lat,lon} of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\nexport function worldToLngLat([x, y]) {\n const lambda2 = (x / TILE_SIZE) * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp((y / TILE_SIZE) * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\n\n// Returns the zoom level that gives a 1 meter pixel at a certain latitude\n// 1 = C*cos(y)/2^z/TILE_SIZE = C*cos(y)/2^(z+9)\nexport function getMeterZoom({latitude}) {\n assert(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\n\n/**\n * Calculate distance scales in meters around current lat/lon, both for\n * degrees and pixels.\n * In mercator projection mode, the distance scales vary significantly\n * with latitude.\n */\n\nexport function getDistanceScales({latitude, longitude, highPrecision = false}) {\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n\n const result = {};\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n\n /**\n * Number of pixels occupied by one degree longitude around current lat/lon:\n unitsPerDegreeX = d(lngLatToWorld([lng, lat])[0])/d(lng)\n = scale * TILE_SIZE * DEGREES_TO_RADIANS / (2 * PI)\n unitsPerDegreeY = d(lngLatToWorld([lng, lat])[1])/d(lat)\n = -scale * TILE_SIZE * DEGREES_TO_RADIANS / cos(lat * DEGREES_TO_RADIANS) / (2 * PI)\n */\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n\n /**\n * Number of pixels occupied by one meter around current lat/lon:\n */\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n\n /**\n * LngLat: longitude -> east and latitude -> north (bottom left)\n * UTM meter offset: x -> east and y -> north (bottom left)\n * World space: x -> east and y -> south (top left)\n *\n * Y needs to be flipped when converting delta degree/meter to delta pixels\n */\n result.unitsPerMeter = [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter];\n result.metersPerUnit = [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter];\n\n result.unitsPerDegree = [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter];\n result.degreesPerUnit = [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter];\n\n /**\n * Taylor series 2nd order for 1/latCosine\n f'(a) * (x - a)\n = d(1/cos(lat * DEGREES_TO_RADIANS))/d(lat) * dLat\n = DEGREES_TO_RADIANS * tan(lat * DEGREES_TO_RADIANS) / cos(lat * DEGREES_TO_RADIANS) * dLat\n */\n if (highPrecision) {\n const latCosine2 = (DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS)) / latCosine;\n const unitsPerDegreeY2 = (unitsPerDegreeX * latCosine2) / 2;\n const altUnitsPerDegree2 = (worldSize / EARTH_CIRCUMFERENCE) * latCosine2;\n const altUnitsPerMeter2 = (altUnitsPerDegree2 / unitsPerDegreeY) * altUnitsPerMeter;\n\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n\n // Main results, used for converting meters to latlng deltas and scaling offsets\n return result;\n}\n\n/**\n * Offset a lng/lat position by meterOffset (northing, easting)\n */\nexport function addMetersToLngLat(lngLatZ, xyz) {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n\n const {unitsPerMeter, unitsPerMeter2} = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\n\n// ATTRIBUTION:\n// view and projection matrix creation is intentionally kept compatible with\n// mapbox-gl's implementation to ensure that seamless interoperation\n// with mapbox and react-map-gl. See: https://github.com/mapbox/mapbox-gl-js\n\nexport function getViewMatrix({\n // Viewport props\n height,\n pitch,\n bearing,\n altitude,\n // Pre-calculated parameters\n scale,\n center = null\n}) {\n // VIEW MATRIX: PROJECTS MERCATOR WORLD COORDINATES\n // Note that mercator world coordinates typically need to be flipped\n //\n // Note: As usual, matrix operation orders should be read in reverse\n // since vectors will be multiplied from the right during transformation\n const vm = createMat4();\n\n // Move camera to altitude (along the pitch & bearing direction)\n mat4.translate(vm, vm, [0, 0, -altitude]);\n\n // Rotate by bearing, and then by pitch (which tilts the view)\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n\n scale /= height;\n mat4.scale(vm, vm, [scale, scale, scale]);\n\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n\n return vm;\n}\n\n// PROJECTION MATRIX PARAMETERS\n// Variable fov (in radians)\nexport function getProjectionParameters({\n width,\n height,\n altitude = DEFAULT_ALTITUDE,\n pitch = 0,\n nearZMultiplier = 1,\n farZMultiplier = 1\n}) {\n // Find the distance from the center point to the center top\n // in altitude units using law of sines.\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n const halfFov = Math.atan(0.5 / altitude);\n const topHalfSurfaceDistance =\n (Math.sin(halfFov) * altitude) / Math.sin(Math.PI / 2 - pitchRadians - halfFov);\n\n // Calculate z value of the farthest fragment that should be rendered.\n const farZ = Math.cos(Math.PI / 2 - pitchRadians) * topHalfSurfaceDistance + altitude;\n\n return {\n fov: 2 * halfFov,\n aspect: width / height,\n focalDistance: altitude,\n near: nearZMultiplier,\n far: farZ * farZMultiplier\n };\n}\n\n// PROJECTION MATRIX: PROJECTS FROM CAMERA (VIEW) SPACE TO CLIPSPACE\n// To match mapbox's z buffer:\n// <= 0.28 - nearZMultiplier: 0.1, farZmultiplier: 1\n// >= 0.29 - nearZMultiplier: 1 / height, farZMultiplier: 1.01\nexport function getProjectionMatrix({\n width,\n height,\n pitch,\n altitude,\n nearZMultiplier,\n farZMultiplier\n}) {\n const {fov, aspect, near, far} = getProjectionParameters({\n width,\n height,\n altitude,\n pitch,\n nearZMultiplier,\n farZMultiplier\n });\n\n const projectionMatrix = mat4.perspective(\n [],\n fov, // fov in radians\n aspect, // aspect ratio\n near, // near plane\n far // far plane\n );\n\n return projectionMatrix;\n}\n\n/**\n * Project flat coordinates to pixels on screen.\n *\n * @param {Array} xyz - flat coordinate on 512*512 Mercator Zoom 0 tile\n * @param {Matrix4} pixelProjectionMatrix - projection matrix\n * @return {Array} [x, y, depth] pixel coordinate on screen.\n */\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n const [x, y, z = 0] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\n\n/**\n * Unproject pixels on screen to flat coordinates.\n *\n * @param {Array} xyz - pixel coordinate on screen.\n * @param {Matrix4} pixelUnprojectionMatrix - unprojection matrix\n * @param {Number} targetZ - if pixel coordinate does not have a 3rd component (depth),\n * targetZ is used as the elevation plane to unproject onto\n * @return {Array} [x, y, Z] flat coordinates on 512*512 Mercator Zoom 0 tile.\n */\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n const [x, y, z] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n if (Number.isFinite(z)) {\n // Has depth component\n const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n\n // since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that line with z=0\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n\n const z0 = coord0[2];\n const z1 = coord1[2];\n\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([], coord0, coord1, t);\n}\n","// View and Projection Matrix management\n\nimport {createMat4} from './math-utils';\nimport {worldToPixels, pixelsToWorld} from './web-mercator-utils';\n\nimport * as mat4 from 'gl-matrix/mat4';\n\nconst IDENTITY = createMat4();\n\nexport default class Viewport {\n /**\n * @classdesc\n * Manages coordinate system transformations for deck.gl.\n *\n * Note: The Viewport is immutable in the sense that it only has accessors.\n * A new viewport instance should be created if any parameters have changed.\n *\n * @class\n * @param {Object} opt - options\n * @param {Boolean} mercator=true - Whether to use mercator projection\n *\n * @param {Number} opt.width=1 - Width of \"viewport\" or window\n * @param {Number} opt.height=1 - Height of \"viewport\" or window\n * @param {Array} opt.center=[0, 0] - Center of viewport\n * [longitude, latitude] or [x, y]\n * @param {Number} opt.scale=1 - Either use scale or zoom\n * @param {Number} opt.pitch=0 - Camera angle in degrees (0 is straight down)\n * @param {Number} opt.bearing=0 - Map rotation in degrees (0 means north is up)\n * @param {Number} opt.altitude= - Altitude of camera in screen units\n *\n * Web mercator projection short-hand parameters\n * @param {Number} opt.latitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.longitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.zoom - Scale = Math.pow(2,zoom) on map (alternative to opt.scale)\n */\n // eslint-disable-next-line complexity, max-statements\n constructor({\n // Window width/height in pixels (for pixel projection)\n width,\n height,\n scale,\n // Desc\n viewMatrix = IDENTITY,\n projectionMatrix = IDENTITY\n } = {}) {\n // Silently allow apps to send in 0,0\n this.width = width || 1;\n this.height = height || 1;\n this.scale = scale;\n this.unitsPerMeter = 1;\n\n this.viewMatrix = viewMatrix;\n this.projectionMatrix = projectionMatrix;\n\n // Note: As usual, matrix operations should be applied in \"reverse\" order\n // since vectors will be multiplied in from the right during transformation\n const vpm = createMat4();\n mat4.multiply(vpm, vpm, this.projectionMatrix);\n mat4.multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n\n // Calculate matrices and scales needed for projection\n /**\n * Builds matrices that converts preprojected lngLats to screen pixels\n * and vice versa.\n * Note: Currently returns bottom-left coordinates!\n * Note: Starts with the GL projection matrix and adds steps to the\n * scale and translate that matrix onto the window.\n * Note: WebGL controls clip space to screen projection with gl.viewport\n * and does not need this step.\n */\n const m = createMat4();\n\n // matrix for conversion from location to screen coordinates\n mat4.scale(m, m, [this.width / 2, -this.height / 2, 1]);\n mat4.translate(m, m, [1, -1, 0]);\n\n mat4.multiply(m, m, this.viewProjectionMatrix);\n\n const mInverse = mat4.invert(createMat4(), m);\n if (!mInverse) {\n throw new Error('Pixel project matrix not invertible');\n }\n\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n\n // Bind methods for easy access\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n /* eslint-enable complexity */\n\n // Two viewports are equal if width and height are identical, and if\n // their view and projection matrices are (approximately) equal.\n equals(viewport) {\n if (!(viewport instanceof Viewport)) {\n return false;\n }\n\n return (\n viewport.width === this.width &&\n viewport.height === this.height &&\n mat4.equals(viewport.projectionMatrix, this.projectionMatrix) &&\n mat4.equals(viewport.viewMatrix, this.viewMatrix)\n );\n }\n\n /**\n * Projects xyz (possibly latitude and longitude) to pixel coordinates in window\n * using viewport projection parameters\n * - [longitude, latitude] to [x, y]\n * - [longitude, latitude, Z] => [x, y, z]\n * Note: By default, returns top-left coordinates for canvas/SVG type render\n *\n * @param {Array} lngLatZ - [lng, lat] or [lng, lat, Z]\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether projected coords are top left\n * @return {Array} - screen coordinates [x, y] or [x, y, z], z as pixel depth\n */\n project(xyz, {topLeft = true} = {}) {\n const worldPosition = this.projectPosition(xyz);\n const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n }\n\n /**\n * Unproject pixel coordinates on screen onto world coordinates,\n * (possibly [lon, lat]) on map.\n * - [x, y] => [lng, lat]\n * - [x, y, z] => [lng, lat, Z]\n * @param {Array} xyz - screen coordinates, z as pixel depth\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether projected coords are top left\n * @param {Object} opts.targetZ=0 - If pixel depth is unknown, targetZ is used as\n * the elevation plane to unproject onto\n * @return {Array} - [lng, lat, Z] or [X, Y, Z]\n */\n unproject(xyz, {topLeft = true, targetZ} = {}) {\n const [x, y, z] = xyz;\n\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.unitsPerMeter;\n const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n }\n\n // NON_LINEAR PROJECTION HOOKS\n // Used for web meractor projection\n\n projectPosition(xyz) {\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * this.unitsPerMeter;\n return [X, Y, Z];\n }\n\n unprojectPosition(xyz) {\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) / this.unitsPerMeter;\n return [X, Y, Z];\n }\n\n /**\n * Project map coordinates to world coordinates.\n * This should be overridden by each viewport that implements a specific\n * geographic projection.\n * @param {Array} xyz - map coordinates\n * @return {Array} [x,y,z] world coordinates.\n */\n projectFlat(xyz, scale = this.scale) {\n return xyz;\n }\n\n /**\n * Project world coordinates to map coordinates.\n * This should be overridden by each viewport that implements a specific\n * geographic projection.\n * @param {Array} xyz - world coordinates\n * @return {Array} [x,y,z] map coordinates.\n */\n unprojectFlat(xyz, scale = this.scale) {\n return xyz;\n }\n}\n","import WebMercatorViewport from './web-mercator-viewport';\nimport assert from './assert';\n\n/**\n * * An object describing the padding to add to the bounds.\n * @typedef {Object} PaddingObject\n * @property {Number} top - Padding from top in pixels to add to the given bounds\n * @property {Number} bottom - Padding from bottom in pixels to add to the given bounds\n * @property {Number} left - Padding from left in pixels to add to the given bounds\n * @property {Number} right - Padding from right in pixels to add to the given bounds\n */\n\n/**\n * Returns map settings {latitude, longitude, zoom}\n * that will contain the provided corners within the provided width.\n * Only supports non-perspective mode.\n * @param {Number} width - viewport width\n * @param {Number} height - viewport height\n * @param {Array} bounds - [[lon, lat], [lon, lat]]\n * @param {Array} minExtent - The width/height of the bounded area will never be smaller than this\n * @param {Number|PaddingObject} [padding] - The amount of padding in pixels\n * to add to the given bounds. Can also be an object with top, bottom, left and right\n * properties defining the padding.\n * @param {Array} [offset] - The center of the given bounds relative to the map's center,\n * [x, y] measured in pixels.\n * @returns {Object} - latitude, longitude and zoom\n */\nexport default function fitBounds({\n width,\n height,\n bounds,\n minExtent = 0, // 0.01 would be about 1000 meters (degree is ~110KM)\n maxZoom = 24, // ~x4,000,000 => About 10 meter extents\n // options\n padding = 0,\n offset = [0, 0]\n}) {\n const [[west, south], [east, north]] = bounds;\n\n if (Number.isFinite(padding)) {\n const p = padding;\n padding = {\n top: p,\n bottom: p,\n left: p,\n right: p\n };\n } else {\n // Make sure all the required properties are set\n assert(\n Number.isFinite(padding.top) &&\n Number.isFinite(padding.bottom) &&\n Number.isFinite(padding.left) &&\n Number.isFinite(padding.right)\n );\n }\n\n const viewport = new WebMercatorViewport({\n width,\n height,\n longitude: 0,\n latitude: 0,\n zoom: 0\n });\n\n const nw = viewport.project([west, north]);\n const se = viewport.project([east, south]);\n\n // width/height on the Web Mercator plane\n const size = [\n Math.max(Math.abs(se[0] - nw[0]), minExtent),\n Math.max(Math.abs(se[1] - nw[1]), minExtent)\n ];\n\n const targetSize = [\n width - padding.left - padding.right - Math.abs(offset[0]) * 2,\n height - padding.top - padding.bottom - Math.abs(offset[1]) * 2\n ];\n\n assert(targetSize[0] > 0 && targetSize[1] > 0);\n\n // scale = screen pixels per unit on the Web Mercator plane\n const scaleX = targetSize[0] / size[0];\n const scaleY = targetSize[1] / size[1];\n\n // Find how much we need to shift the center\n const offsetX = (padding.right - padding.left) / 2 / scaleX;\n const offsetY = (padding.bottom - padding.top) / 2 / scaleY;\n\n const center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n\n const centerLngLat = viewport.unproject(center);\n const zoom = Math.min(maxZoom, viewport.zoom + Math.log2(Math.abs(Math.min(scaleX, scaleY))));\n\n assert(Number.isFinite(zoom));\n\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom\n };\n}\n","// View and Projection Matrix calculations for mapbox-js style map view properties\nimport Viewport from './viewport';\n\nimport {\n zoomToScale,\n pixelsToWorld,\n lngLatToWorld,\n worldToLngLat,\n getProjectionMatrix,\n getDistanceScales,\n getViewMatrix\n} from './web-mercator-utils';\nimport fitBounds from './fit-bounds';\n\nimport * as vec2 from 'gl-matrix/vec2';\n\nexport default class WebMercatorViewport extends Viewport {\n /**\n * @classdesc\n * Creates view/projection matrices from mercator params\n * Note: The Viewport is immutable in the sense that it only has accessors.\n * A new viewport instance should be created if any parameters have changed.\n *\n * @class\n * @param {Object} opt - options\n *\n * @param {Number} opt.width=1 - Width of \"viewport\" or window\n * @param {Number} opt.height=1 - Height of \"viewport\" or window\n * @param {Number} opt.scale=1 - Either use scale or zoom\n * @param {Number} opt.pitch=0 - Camera angle in degrees (0 is straight down)\n * @param {Number} opt.bearing=0 - Map rotation in degrees (0 means north is up)\n * @param {Number} opt.altitude= - Altitude of camera in screen units\n *\n * Web mercator projection short-hand parameters\n * @param {Number} opt.latitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.longitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.zoom - Scale = Math.pow(2,zoom) on map (alternative to opt.scale)\n\n * Notes:\n * - Only one of center or [latitude, longitude] can be specified\n * - [latitude, longitude] can only be specified when \"mercator\" is true\n * - Altitude has a default value that matches assumptions in mapbox-gl\n * - width and height are forced to 1 if supplied as 0, to avoid\n * division by zero. This is intended to reduce the burden of apps to\n * to check values before instantiating a Viewport.\n */\n /* eslint-disable complexity */\n constructor({\n // Map state\n width,\n height,\n latitude = 0,\n longitude = 0,\n zoom = 0,\n pitch = 0,\n bearing = 0,\n altitude = 1.5,\n nearZMultiplier = 0.02,\n farZMultiplier = 1.01\n } = {}) {\n // Silently allow apps to send in 0,0 to facilitate isomorphic render etc\n width = width || 1;\n height = height || 1;\n\n const scale = zoomToScale(zoom);\n // Altitude - prevent division by 0\n // TODO - just throw an Error instead?\n altitude = Math.max(0.75, altitude);\n\n const center = lngLatToWorld([longitude, latitude]);\n center[2] = 0;\n\n const projectionMatrix = getProjectionMatrix({\n width,\n height,\n pitch,\n bearing,\n altitude,\n nearZMultiplier,\n farZMultiplier\n });\n\n const viewMatrix = getViewMatrix({\n height,\n scale,\n center,\n pitch,\n bearing,\n altitude\n });\n\n super({width, height, scale, viewMatrix, projectionMatrix});\n\n // Save parameters\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n\n this.center = center;\n this.unitsPerMeter = getDistanceScales(this).unitsPerMeter[2];\n\n Object.freeze(this);\n }\n /* eslint-enable complexity */\n\n /**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param {Array} lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return {Array} [x,y] coordinates.\n */\n projectFlat(lngLat) {\n return lngLatToWorld(lngLat);\n }\n\n /**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param {object|Vector} xy - object with {x,y} members\n * representing point on projected map plane\n * @return {GeoCoordinates} - object with {lat,lon} of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\n unprojectFlat(xy) {\n return worldToLngLat(xy);\n }\n\n /**\n * Get the map center that place a given [lng, lat] coordinate at screen\n * point [x, y]\n *\n * @param {Array} lngLat - [lng,lat] coordinates\n * Specifies a point on the sphere.\n * @param {Array} pos - [x,y] coordinates\n * Specifies a point on the screen.\n * @return {Array} [lng,lat] new map center.\n */\n getMapCenterByLngLatPosition({lngLat, pos}) {\n const fromLocation = pixelsToWorld(pos, this.pixelUnprojectionMatrix);\n const toLocation = lngLatToWorld(lngLat);\n\n const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n const newCenter = vec2.add([], this.center, translate);\n\n return worldToLngLat(newCenter, this.scale);\n }\n\n // Legacy method name\n getLocationAtPoint({lngLat, pos}) {\n return this.getMapCenterByLngLatPosition({lngLat, pos});\n }\n\n /**\n * Returns a new viewport that fit around the given rectangle.\n * Only supports non-perspective mode.\n * @param {Array} bounds - [[lon, lat], [lon, lat]]\n * @param {Number} [options.padding] - The amount of padding in pixels to add to the given bounds.\n * @param {Array} [options.offset] - The center of the given bounds relative to the map's center,\n * [x, y] measured in pixels.\n * @returns {WebMercatorViewport}\n */\n fitBounds(bounds, options = {}) {\n const {width, height} = this;\n const {longitude, latitude, zoom} = fitBounds(Object.assign({width, height, bounds}, options));\n return new WebMercatorViewport({width, height, longitude, latitude, zoom});\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import WebMercatorViewport from './web-mercator-viewport';\nimport {mod} from './math-utils';\n\n// defined by mapbox-gl\nconst MAX_LATITUDE = 85.05113;\nconst MIN_LATITUDE = -85.05113;\n\n// Apply mathematical constraints to viewport props\n/* eslint-disable complexity */\nexport default function normalizeViewportProps({\n width,\n height,\n longitude,\n latitude,\n zoom,\n pitch = 0,\n bearing = 0\n}) {\n // Normalize degrees\n if (longitude < -180 || longitude > 180) {\n longitude = mod(longitude + 180, 360) - 180;\n }\n if (bearing < -180 || bearing > 180) {\n bearing = mod(bearing + 180, 360) - 180;\n }\n\n // Constrain zoom and shift center at low zoom levels\n let flatViewport = new WebMercatorViewport({width, height, longitude, latitude, zoom});\n let topY = flatViewport.project([longitude, MAX_LATITUDE])[1];\n let bottomY = flatViewport.project([longitude, MIN_LATITUDE])[1];\n let shiftY = 0;\n\n if (bottomY - topY < height) {\n // Map height must not be smaller than viewport height\n // Zoom out map to fit map height into viewport\n zoom += Math.log2(height / (bottomY - topY));\n\n // Calculate top and bottom using new zoom\n flatViewport = new WebMercatorViewport({width, height, longitude, latitude, zoom});\n topY = flatViewport.project([longitude, MAX_LATITUDE])[1];\n bottomY = flatViewport.project([longitude, MIN_LATITUDE])[1];\n }\n if (topY > 0) {\n // Compensate for white gap on top\n shiftY = topY;\n } else if (bottomY < height) {\n // Compensate for white gap on bottom\n shiftY = bottomY - height;\n }\n if (shiftY) {\n latitude = flatViewport.unproject([width / 2, height / 2 + shiftY])[1];\n }\n\n return {width, height, longitude, latitude, zoom, pitch, bearing};\n}\n","import {lerp} from './math-utils';\nimport {scaleToZoom, zoomToScale, lngLatToWorld, worldToLngLat} from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\n\nconst EPSILON = 0.01;\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'];\nconst DEFAULT_OPTS = {\n curve: 1.414,\n speed: 1.2\n // screenSpeed and maxDuration are used only if specified\n};\n\n/**\n * mapbox-gl-js flyTo : https://www.mapbox.com/mapbox-gl-js/api/#map#flyto.\n * It implements “Smooth and efficient zooming and panning.†algorithm by\n * \"Jarke J. van Wijk and Wim A.A. Nuij\"\n */\nexport default function flyToViewport(startProps, endProps, t, opts = {}) {\n // Equations from above paper are referred where needed.\n\n const viewport = {};\n\n const {startZoom, startCenterXY, uDelta, w0, u1, S, rho, rho2, r0} = getFlyToTransitionParams(\n startProps,\n endProps,\n opts\n );\n\n // If change in center is too small, do linear interpolaiton.\n if (u1 < EPSILON) {\n for (const key of VIEWPORT_TRANSITION_PROPS) {\n const startValue = startProps[key];\n const endValue = endProps[key];\n viewport[key] = lerp(startValue, endValue, t);\n }\n return viewport;\n }\n\n const s = t * S;\n\n const w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n const u = (w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2)) / u1;\n\n const scaleIncrement = 1 / w; // Using w method for scaling.\n const newZoom = startZoom + scaleToZoom(scaleIncrement);\n\n const newCenterWorld = vec2.scale([], uDelta, u);\n vec2.add(newCenterWorld, newCenterWorld, startCenterXY);\n\n const newCenter = worldToLngLat(newCenterWorld);\n viewport.longitude = newCenter[0];\n viewport.latitude = newCenter[1];\n viewport.zoom = newZoom;\n return viewport;\n}\n\n// returns transition duration in milliseconds\nexport function getFlyToDuration(startProps, endProps, opts = {}) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n const {screenSpeed, speed, maxDuration} = opts;\n const {S, rho} = getFlyToTransitionParams(startProps, endProps, opts);\n const length = 1000 * S;\n let duration;\n if (Number.isFinite(screenSpeed)) {\n duration = length / (screenSpeed / rho);\n } else {\n duration = length / speed;\n }\n\n return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\n\n// Private Methods\n\n// Calculate all parameters that are static for given startProps and endProps\nfunction getFlyToTransitionParams(startProps, endProps, opts) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n const rho = opts.curve;\n const startZoom = startProps.zoom;\n const startCenter = [startProps.longitude, startProps.latitude];\n const startScale = zoomToScale(startZoom);\n const endZoom = endProps.zoom;\n const endCenter = [endProps.longitude, endProps.latitude];\n const scale = zoomToScale(endZoom - startZoom);\n\n const startCenterXY = lngLatToWorld(startCenter);\n const endCenterXY = lngLatToWorld(endCenter);\n const uDelta = vec2.sub([], endCenterXY, startCenterXY);\n\n const w0 = Math.max(startProps.width, startProps.height);\n const w1 = w0 / scale;\n const u1 = vec2.length(uDelta) * startScale;\n // u0 is treated as '0' in Eq (9).\n\n // If u1 is too small, will generate invalid number\n const _u1 = Math.max(u1, EPSILON);\n\n // Implement Equation (9) from above algorithm.\n const rho2 = rho * rho;\n const b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n const b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n const S = (r1 - r0) / rho;\n\n return {startZoom, startCenterXY, uDelta, w0, u1, S, rho, rho2, r0, r1};\n}\n","import superPropBase from \"./superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","/* eslint-disable no-use-before-define */\n\n/**\n * Returns a number whose value is limited to the given range.\n *\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(\"Material-UI: the value provided \".concat(value, \" is out of range [\").concat(min, \", \").concat(max, \"].\"));\n }\n }\n\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n *\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\n\nexport function hexToRgb(color) {\n color = color.substr(1);\n var re = new RegExp(\".{1,\".concat(color.length / 3, \"}\"), 'g');\n var colors = color.match(re);\n\n if (colors && colors[0].length === 1) {\n colors = colors.map(function (n) {\n return n + n;\n });\n }\n\n return colors ? \"rgb(\".concat(colors.map(function (n) {\n return parseInt(n, 16);\n }).join(', '), \")\") : '';\n}\n\nfunction intToHex(int) {\n var hex = int.toString(16);\n return hex.length === 1 ? \"0\".concat(hex) : hex;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n *\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\n\n\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n\n var _decomposeColor = decomposeColor(color),\n values = _decomposeColor.values;\n\n return \"#\".concat(values.map(function (n) {\n return intToHex(n);\n }).join(''));\n}\n/**\n * Converts a color from hsl format to rgb format.\n *\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\n\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n var _color = color,\n values = _color.values;\n var h = values[0];\n var s = values[1] / 100;\n var l = values[2] / 100;\n var a = s * Math.min(l, 1 - l);\n\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n var type = 'rgb';\n var rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n\n return recomposeColor({\n type: type,\n values: rgb\n });\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n\n var marker = color.indexOf('(');\n var type = color.substring(0, marker);\n\n if (['rgb', 'rgba', 'hsl', 'hsla'].indexOf(type) === -1) {\n throw new Error([\"Material-UI: unsupported `\".concat(color, \"` color.\"), 'We support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().'].join('\\n'));\n }\n\n var values = color.substring(marker + 1, color.length - 1).split(',');\n values = values.map(function (value) {\n return parseFloat(value);\n });\n return {\n type: type,\n values: values\n };\n}\n/**\n * Converts a color object with type and values to a string.\n *\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\nexport function recomposeColor(color) {\n var type = color.type;\n var values = color.values;\n\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map(function (n, i) {\n return i < 3 ? parseInt(n, 10) : n;\n });\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = \"\".concat(values[1], \"%\");\n values[2] = \"\".concat(values[2], \"%\");\n }\n\n return \"\".concat(type, \"(\").concat(values.join(', '), \")\");\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\nexport function getContrastRatio(foreground, background) {\n var lumA = getLuminance(foreground);\n var lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\nexport function getLuminance(color) {\n color = decomposeColor(color);\n var rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(function (val) {\n val /= 255; // normalized\n\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }); // Truncate at 3 digits\n\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function emphasize(color) {\n var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 -1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function fade(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n\n color.values[3] = value;\n return recomposeColor(color);\n}\n/**\n * Darkens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n }\n\n return recomposeColor(color);\n}","// This file enables: import 'probe.gl/bench'.\n// Note: Must be published using package.json \"files\" field\nmodule.exports = require('./dist/es5/env');\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {config} from './common';\n\nexport function validateVector(v, length) {\n if (v.length !== length) {\n return false;\n }\n // Could be arguments \"array\" (v.every not availasble)\n for (let i = 0; i < v.length; ++i) {\n if (!Number.isFinite(v[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport function checkNumber(value) {\n if (!Number.isFinite(value)) {\n throw new Error(`Invalid number ${value}`);\n }\n return value;\n}\n\nexport function checkVector(v, length, callerName) {\n if (config.debug && !validateVector(v, length)) {\n throw new Error(`math.gl: ${callerName | ''} some fields set to invalid numbers'`);\n }\n return v;\n}\n\nconst map = {};\n\nexport function deprecated(method, version) {\n if (!map[method]) {\n map[method] = true;\n // eslint-disable-next-line\n console.warn(\n `${method} has been removed in version ${version}, see upgrade guide for more information`\n );\n }\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","import * as React from 'react';\nimport setRef from './setRef';\nexport default function useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return React.useMemo(function () {\n if (refA == null && refB == null) {\n return null;\n }\n\n return function (refValue) {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}","import deckLog from '../utils/log';\nimport {getLoggers} from './loggers';\n\n/* debug utility */\n\nlet loggers = {};\n\n// Conditionally load default loggers in development mode\n// eslint-disable-next-line\nif (process.env.NODE_ENV !== 'production') {\n loggers = getLoggers(deckLog);\n}\n\nexport function register(handlers) {\n loggers = handlers;\n}\n\nexport default function debug(eventType) {\n if (deckLog.level > 0 && loggers[eventType]) {\n // Not using ...args to defeat perf hit from array construction\n loggers[eventType].call(...arguments);\n }\n}\n","export const LIFECYCLE = {\n NO_STATE: 'Awaiting state',\n MATCHED: 'Matched. State transferred from previous layer',\n INITIALIZED: 'Initialized',\n AWAITING_GC: 'Discarded. Awaiting garbage collection',\n AWAITING_FINALIZATION: 'No longer matched. Awaiting garbage collection',\n FINALIZED: 'Finalized! Awaiting garbage collection'\n};\n\n/* Secret props keys */\n// Symbols are non-enumerable by default, does not show in for...in or Object.keys\n// but are copied with Object.assign ¯\\_(ツ)_/¯\n// Supported everywhere except IE11, can be polyfilled with core-js\nexport const PROP_SYMBOLS = {\n COMPONENT: Symbol.for('component'),\n ASYNC_DEFAULTS: Symbol.for('asyncPropDefaults'),\n ASYNC_ORIGINAL: Symbol.for('asyncPropOriginal'),\n ASYNC_RESOLVED: Symbol.for('asyncPropResolved')\n};\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","module.exports = require(\"regenerator-runtime\");\n","import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Accessor from './accessor';\nimport {\n assertWebGL2Context,\n getGLTypeFromTypedArray,\n getTypedArrayFromGLType\n} from '../webgl-utils';\nimport {log} from '@luma.gl/gltools';\nimport {assert, checkProps} from '../utils';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\nexport default class Buffer extends Resource {\n constructor(gl, props = {}) {\n super(gl, props);\n\n this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);\n // this.stubRemovedMethods('Buffer', 'v7.0', ['updateAccessor']);\n\n // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n this.target = props.target || (this.gl.webgl2 ? GL.COPY_READ_BUFFER : GL.ARRAY_BUFFER);\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props = {}) {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.usage = props.usage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props) {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor) {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength) {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(props) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n const {data, offset = 0, srcOffset = 0} = props;\n const byteLength = props.byteLength || props.length;\n\n assert(data);\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n // WEBGL2 ONLY: Copies part of the data of another buffer into this buffer\n copyData({sourceBuffer, readOffset = 0, writeOffset = 0, size}) {\n const {gl} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n // WEBGL2 ONLY: Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n getData({dstData = null, srcByteOffset = 0, dstOffset = 0, length = 0} = {}) {\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind({\n target = this.target, // target for the bind operation\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = {}) {\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind({target = this.target, index = this.accessor && this.accessor.index} = {}) {\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData() {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, usage = this.usage) {\n assert(ArrayBuffer.isView(data));\n\n this._trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n\n this.usage = usage;\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = data.byteLength;\n\n this._trackAllocatedMemory(data.byteLength);\n\n // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength, usage = this.usage) {\n assert(byteLength >= 0);\n\n this._trackDeallocatedMemory();\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n\n this.usage = usage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n _getTarget() {\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createBuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteBuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _getParameter(pname) {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n get type() {\n log.deprecated('Buffer.type', 'Buffer.accessor.type')();\n return this.accessor.type;\n }\n\n get bytes() {\n log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n return this.byteLength;\n }\n\n // DEPRECATIONS - v6.0\n // Deprecated in v6.x, but not warnings not properly implemented\n setByteLength(byteLength) {\n log.deprecated('setByteLength', 'reallocate')();\n return this.reallocate(byteLength);\n }\n\n // Deprecated in v6.x, but not warnings not properly implemented\n updateAccessor(opts) {\n log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n this.accessor = new Accessor(this.accessor, opts);\n return this;\n }\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import {isWebGL2} from '@luma.gl/gltools';\nimport {lumaStats} from '../init';\nimport {assertWebGLContext, getKey, getKeyValue} from '../webgl-utils';\nimport {uid, assert, stubRemovedMethods} from '../utils';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n// TODO - Handle context loss\n// function glGetContextLossCount(gl) {\n// return (gl.luma && gl.luma.glCount) || 0;\n// }\n\nexport default class Resource {\n constructor(gl, opts = {}) {\n assertWebGLContext(gl);\n\n const {id, userData = {}} = opts;\n this.gl = gl;\n // this.ext = polyfillContext(gl);\n this.id = id || uid(this.constructor.name);\n this.userData = userData;\n this._bound = false;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n this._handle = opts.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n // Only meaningful for resources that allocate GPU memory\n this.byteLength = 0;\n\n this._addStats();\n }\n\n toString() {\n return `${this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.opts);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.opts);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this._removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n if (children && deleteChildren) {\n children.filter(Boolean).forEach(child => {\n child.delete();\n });\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param {GLenum} pname\n * @return {GLint|GLfloat|GLenum} param\n */\n getParameter(pname, opts = {}) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, opts);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(opts = {}) {\n const {parameters, keys} = {};\n\n // Get parameter definitions for this Resource\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, opts);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {GLenum} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(opts) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getParameter(pname, opts) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n /**\n * @param {GLenum} pname\n * @param {GLint|GLfloat|GLenum} param\n * @return {Sampler} returns self to enable chaining\n */\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n\n _addStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n _trackAllocatedMemory(bytes, name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n this.byteLength = bytes;\n }\n\n _trackDeallocatedMemory(name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n this.byteLength = 0;\n }\n}\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\nvar plainObjectConstrurctor = {}.constructor;\nfunction cloneStyle(style) {\n if (style == null || typeof style !== 'object') return style;\n if (Array.isArray(style)) return style.map(cloneStyle);\n if (style.constructor !== plainObjectConstrurctor) return style;\n var newStyle = {};\n\n for (var name in style) {\n newStyle[name] = cloneStyle(style[name]);\n }\n\n return newStyle;\n}\n\n/**\n * Create a rule instance.\n */\n\nfunction createRule(name, decl, options) {\n if (name === void 0) {\n name = 'unnamed';\n }\n\n var jss = options.jss;\n var declCopy = cloneStyle(decl);\n var rule = jss.plugins.onCreateRule(name, declCopy, options);\n if (rule) return rule; // It is an at-rule and it has no instance.\n\n if (name[0] === '@') {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n }\n\n return null;\n}\n\nvar join = function join(value, by) {\n var result = '';\n\n for (var i = 0; i < value.length; i++) {\n // Remove !important from the value, it will be readded later.\n if (value[i] === '!important') break;\n if (result) result += by;\n result += value[i];\n }\n\n return result;\n};\n/**\n * Converts array values to string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\n\n\nfunction toCssValue(value, ignoreImportant) {\n if (ignoreImportant === void 0) {\n ignoreImportant = false;\n }\n\n if (!Array.isArray(value)) return value;\n var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n if (Array.isArray(value[0])) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === '!important') break;\n if (cssValue) cssValue += ', ';\n cssValue += join(value[i], ' ');\n }\n } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n if (!ignoreImportant && value[value.length - 1] === '!important') {\n cssValue += ' !important';\n }\n\n return cssValue;\n}\n\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\nfunction indentStr(str, indent) {\n var result = '';\n\n for (var index = 0; index < indent; index++) {\n result += ' ';\n }\n\n return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n if (options === void 0) {\n options = {};\n }\n\n var result = '';\n if (!style) return result;\n var _options = options,\n _options$indent = _options.indent,\n indent = _options$indent === void 0 ? 0 : _options$indent;\n var fallbacks = style.fallbacks;\n if (selector) indent++; // Apply fallbacks first.\n\n if (fallbacks) {\n // Array syntax {fallbacks: [{prop: value}]}\n if (Array.isArray(fallbacks)) {\n for (var index = 0; index < fallbacks.length; index++) {\n var fallback = fallbacks[index];\n\n for (var prop in fallback) {\n var value = fallback[prop];\n\n if (value != null) {\n if (result) result += '\\n';\n result += \"\" + indentStr(prop + \": \" + toCssValue(value) + \";\", indent);\n }\n }\n }\n } else {\n // Object syntax {fallbacks: {prop: value}}\n for (var _prop in fallbacks) {\n var _value = fallbacks[_prop];\n\n if (_value != null) {\n if (result) result += '\\n';\n result += \"\" + indentStr(_prop + \": \" + toCssValue(_value) + \";\", indent);\n }\n }\n }\n }\n\n for (var _prop2 in style) {\n var _value2 = style[_prop2];\n\n if (_value2 != null && _prop2 !== 'fallbacks') {\n if (result) result += '\\n';\n result += \"\" + indentStr(_prop2 + \": \" + toCssValue(_value2) + \";\", indent);\n }\n } // Allow empty style in this case, because properties will be added dynamically.\n\n\n if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n if (!selector) return result;\n indent--;\n if (result) result = \"\\n\" + result + \"\\n\";\n return indentStr(selector + \" {\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\nvar escape = (function (str) {\n return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n});\n\nvar BaseStyleRule =\n/*#__PURE__*/\nfunction () {\n function BaseStyleRule(key, style, options) {\n this.type = 'style';\n this.key = void 0;\n this.isProcessed = false;\n this.style = void 0;\n this.renderer = void 0;\n this.renderable = void 0;\n this.options = void 0;\n var sheet = options.sheet,\n Renderer = options.Renderer;\n this.key = key;\n this.options = options;\n this.style = style;\n if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n }\n /**\n * Get or set a style property.\n */\n\n\n var _proto = BaseStyleRule.prototype;\n\n _proto.prop = function prop(name, value, options) {\n // It's a getter.\n if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n var force = options ? options.force : false;\n if (!force && this.style[name] === value) return this;\n var newValue = value;\n\n if (!options || options.process !== false) {\n newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n }\n\n var isEmpty = newValue == null || newValue === false;\n var isDefined = name in this.style; // Value is empty and wasn't defined before.\n\n if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n var remove = isEmpty && isDefined;\n if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n if (this.renderable && this.renderer) {\n if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n return this;\n }\n\n var sheet = this.options.sheet;\n\n if (sheet && sheet.attached) {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n }\n\n return this;\n };\n\n return BaseStyleRule;\n}();\nvar StyleRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(StyleRule, _BaseStyleRule);\n\n function StyleRule(key, style, options) {\n var _this;\n\n _this = _BaseStyleRule.call(this, key, style, options) || this;\n _this.selectorText = void 0;\n _this.id = void 0;\n _this.renderable = void 0;\n var selector = options.selector,\n scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n\n if (selector) {\n _this.selectorText = selector;\n } else if (scoped !== false) {\n _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n _this.selectorText = \".\" + escape(_this.id);\n }\n\n return _this;\n }\n /**\n * Set selector string.\n * Attention: use this with caution. Most browsers didn't implement\n * selectorText setter, so this may result in rerendering of entire Style Sheet.\n */\n\n\n var _proto2 = StyleRule.prototype;\n\n /**\n * Apply rule to an element inline.\n */\n _proto2.applyTo = function applyTo(renderable) {\n var renderer = this.renderer;\n\n if (renderer) {\n var json = this.toJSON();\n\n for (var prop in json) {\n renderer.setProperty(renderable, prop, json[prop]);\n }\n }\n\n return this;\n }\n /**\n * Returns JSON representation of the rule.\n * Fallbacks are not supported.\n * Useful for inline styles.\n */\n ;\n\n _proto2.toJSON = function toJSON() {\n var json = {};\n\n for (var prop in this.style) {\n var value = this.style[prop];\n if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n }\n\n return json;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto2.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.selectorText, this.style, opts);\n };\n\n _createClass(StyleRule, [{\n key: \"selector\",\n set: function set(selector) {\n if (selector === this.selectorText) return;\n this.selectorText = selector;\n var renderer = this.renderer,\n renderable = this.renderable;\n if (!renderable || !renderer) return;\n var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n if (!hasChanged) {\n renderer.replaceRule(renderable, this);\n }\n }\n /**\n * Get selector string.\n */\n ,\n get: function get() {\n return this.selectorText;\n }\n }]);\n\n return StyleRule;\n}(BaseStyleRule);\nvar pluginStyleRule = {\n onCreateRule: function onCreateRule(name, style, options) {\n if (name[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n return null;\n }\n\n return new StyleRule(name, style, options);\n }\n};\n\nvar defaultToStringOptions = {\n indent: 1,\n children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule =\n/*#__PURE__*/\nfunction () {\n function ConditionalRule(key, styles, options) {\n this.type = 'conditional';\n this.at = void 0;\n this.key = void 0;\n this.query = void 0;\n this.rules = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n this.query = options.name;\n var atMatch = key.match(atRegExp);\n this.at = atMatch ? atMatch[1] : 'unknown';\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = ConditionalRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions;\n }\n\n if (options.indent == null) options.indent = defaultToStringOptions.indent;\n if (options.children == null) options.children = defaultToStringOptions.children;\n\n if (options.children === false) {\n return this.query + \" {}\";\n }\n\n var children = this.rules.toString(options);\n return children ? this.query + \" {\\n\" + children + \"\\n}\" : '';\n };\n\n return ConditionalRule;\n}();\nvar keyRegExp = /@media|@supports\\s+/;\nvar pluginConditionalRule = {\n onCreateRule: function onCreateRule(key, styles, options) {\n return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n }\n};\n\nvar defaultToStringOptions$1 = {\n indent: 1,\n children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule =\n/*#__PURE__*/\nfunction () {\n function KeyframesRule(key, frames, options) {\n this.type = 'keyframes';\n this.at = '@keyframes';\n this.key = void 0;\n this.name = void 0;\n this.id = void 0;\n this.rules = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n var nameMatch = key.match(nameRegExp);\n\n if (nameMatch && nameMatch[1]) {\n this.name = nameMatch[1];\n } else {\n this.name = 'noname';\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n }\n\n this.key = this.type + \"-\" + this.name;\n this.options = options;\n var scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in frames) {\n this.rules.add(name, frames[name], _extends({}, options, {\n parent: this\n }));\n }\n\n this.rules.process();\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = KeyframesRule.prototype;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions$1;\n }\n\n if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n if (options.children === false) {\n return this.at + \" \" + this.id + \" {}\";\n }\n\n var children = this.rules.toString(options);\n if (children) children = \"\\n\" + children + \"\\n\";\n return this.at + \" \" + this.id + \" {\" + children + \"}\";\n };\n\n return KeyframesRule;\n}();\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n if (typeof val === 'string') {\n return val.replace(refRegExp, function (match, name) {\n if (name in keyframes) {\n return keyframes[name];\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n return match;\n });\n }\n\n return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n var value = style[prop];\n var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n if (refKeyframe !== value) {\n style[prop] = refKeyframe;\n }\n};\n\nvar plugin = {\n onCreateRule: function onCreateRule(key, frames, options) {\n return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n },\n // Animation name ref replacer.\n onProcessStyle: function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style' || !sheet) return style;\n if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n return style;\n },\n onChangeValue: function onChangeValue(val, prop, rule) {\n var sheet = rule.options.sheet;\n\n if (!sheet) {\n return val;\n }\n\n switch (prop) {\n case 'animation':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n case 'animation-name':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n default:\n return val;\n }\n }\n};\n\nvar KeyframeRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n function KeyframeRule() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _BaseStyleRule.call.apply(_BaseStyleRule, [this].concat(args)) || this;\n _this.renderable = void 0;\n return _this;\n }\n\n var _proto = KeyframeRule.prototype;\n\n /**\n * Generates a CSS string.\n */\n _proto.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.key, this.style, opts);\n };\n\n return KeyframeRule;\n}(BaseStyleRule);\nvar pluginKeyframeRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (options.parent && options.parent.type === 'keyframes') {\n return new KeyframeRule(key, style, options);\n }\n\n return null;\n }\n};\n\nvar FontFaceRule =\n/*#__PURE__*/\nfunction () {\n function FontFaceRule(key, style, options) {\n this.type = 'font-face';\n this.at = '@font-face';\n this.key = void 0;\n this.style = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = FontFaceRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.style)) {\n var str = '';\n\n for (var index = 0; index < this.style.length; index++) {\n str += toCss(this.key, this.style[index]);\n if (this.style[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return toCss(this.key, this.style, options);\n };\n\n return FontFaceRule;\n}();\nvar pluginFontFaceRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@font-face' ? new FontFaceRule(key, style, options) : null;\n }\n};\n\nvar ViewportRule =\n/*#__PURE__*/\nfunction () {\n function ViewportRule(key, style, options) {\n this.type = 'viewport';\n this.at = '@viewport';\n this.key = void 0;\n this.style = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = ViewportRule.prototype;\n\n _proto.toString = function toString(options) {\n return toCss(this.key, this.style, options);\n };\n\n return ViewportRule;\n}();\nvar pluginViewportRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n }\n};\n\nvar SimpleRule =\n/*#__PURE__*/\nfunction () {\n function SimpleRule(key, value, options) {\n this.type = 'simple';\n this.key = void 0;\n this.value = void 0;\n this.options = void 0;\n this.isProcessed = false;\n this.renderable = void 0;\n this.key = key;\n this.value = value;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n // eslint-disable-next-line no-unused-vars\n\n\n var _proto = SimpleRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.value)) {\n var str = '';\n\n for (var index = 0; index < this.value.length; index++) {\n str += this.key + \" \" + this.value[index] + \";\";\n if (this.value[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return this.key + \" \" + this.value + \";\";\n };\n\n return SimpleRule;\n}();\nvar keysMap = {\n '@charset': true,\n '@import': true,\n '@namespace': true\n};\nvar pluginSimpleRule = {\n onCreateRule: function onCreateRule(key, value, options) {\n return key in keysMap ? new SimpleRule(key, value, options) : null;\n }\n};\n\nvar plugins = [pluginStyleRule, pluginConditionalRule, plugin, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\n\nvar defaultUpdateOptions = {\n process: true\n};\nvar forceUpdateOptions = {\n force: true,\n process: true\n /**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\n\n};\n\nvar RuleList =\n/*#__PURE__*/\nfunction () {\n // Rules registry for access by .get() method.\n // It contains the same rule registered by name and by selector.\n // Original styles object.\n // Used to ensure correct rules order.\n function RuleList(options) {\n this.map = {};\n this.raw = {};\n this.index = [];\n this.counter = 0;\n this.options = void 0;\n this.classes = void 0;\n this.keyframes = void 0;\n this.options = options;\n this.classes = options.classes;\n this.keyframes = options.keyframes;\n }\n /**\n * Create and register rule.\n *\n * Will not render after Style Sheet was rendered the first time.\n */\n\n\n var _proto = RuleList.prototype;\n\n _proto.add = function add(name, decl, ruleOptions) {\n var _this$options = this.options,\n parent = _this$options.parent,\n sheet = _this$options.sheet,\n jss = _this$options.jss,\n Renderer = _this$options.Renderer,\n generateId = _this$options.generateId,\n scoped = _this$options.scoped;\n\n var options = _extends({\n classes: this.classes,\n parent: parent,\n sheet: sheet,\n jss: jss,\n Renderer: Renderer,\n generateId: generateId,\n scoped: scoped,\n name: name\n }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n // we need to make the key unique within this RuleList instance scope.\n\n\n var key = name;\n\n if (name in this.raw) {\n key = name + \"-d\" + this.counter++;\n } // We need to save the original decl before creating the rule\n // because cache plugin needs to use it as a key to return a cached rule.\n\n\n this.raw[key] = decl;\n\n if (key in this.classes) {\n // E.g. rules inside of @media container\n options.selector = \".\" + escape(this.classes[key]);\n }\n\n var rule = createRule(key, decl, options);\n if (!rule) return null;\n this.register(rule);\n var index = options.index === undefined ? this.index.length : options.index;\n this.index.splice(index, 0, rule);\n return rule;\n }\n /**\n * Get a rule.\n */\n ;\n\n _proto.get = function get(name) {\n return this.map[name];\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.remove = function remove(rule) {\n this.unregister(rule);\n delete this.raw[rule.key];\n this.index.splice(this.index.indexOf(rule), 1);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.index.indexOf(rule);\n }\n /**\n * Run `onProcessRule()` plugins on every rule.\n */\n ;\n\n _proto.process = function process() {\n var plugins$$1 = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n // we end up with very hard-to-track-down side effects.\n\n this.index.slice(0).forEach(plugins$$1.onProcessRule, plugins$$1);\n }\n /**\n * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n */\n ;\n\n _proto.register = function register(rule) {\n this.map[rule.key] = rule;\n\n if (rule instanceof StyleRule) {\n this.map[rule.selector] = rule;\n if (rule.id) this.classes[rule.key] = rule.id;\n } else if (rule instanceof KeyframesRule && this.keyframes) {\n this.keyframes[rule.name] = rule.id;\n }\n }\n /**\n * Unregister a rule.\n */\n ;\n\n _proto.unregister = function unregister(rule) {\n delete this.map[rule.key];\n\n if (rule instanceof StyleRule) {\n delete this.map[rule.selector];\n delete this.classes[rule.key];\n } else if (rule instanceof KeyframesRule) {\n delete this.keyframes[rule.name];\n }\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var name;\n var data;\n var options;\n\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n name = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe\n\n data = arguments.length <= 1 ? undefined : arguments[1]; // $FlowFixMe\n\n options = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n data = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe\n\n options = arguments.length <= 1 ? undefined : arguments[1];\n name = null;\n }\n\n if (name) {\n this.updateOne(this.map[name], data, options);\n } else {\n for (var index = 0; index < this.index.length; index++) {\n this.updateOne(this.index[index], data, options);\n }\n }\n }\n /**\n * Execute plugins, update rule props.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n if (options === void 0) {\n options = defaultUpdateOptions;\n }\n\n var _this$options2 = this.options,\n plugins$$1 = _this$options2.jss.plugins,\n sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n if (rule.rules instanceof RuleList) {\n rule.rules.update(data, options);\n return;\n }\n\n var styleRule = rule;\n var style = styleRule.style;\n plugins$$1.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n if (options.process && style && style !== styleRule.style) {\n // We need to run the plugins in case new `style` relies on syntax plugins.\n plugins$$1.onProcessStyle(styleRule.style, styleRule, sheet); // Update and add props.\n\n for (var prop in styleRule.style) {\n var nextValue = styleRule.style[prop];\n var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (nextValue !== prevValue) {\n styleRule.prop(prop, nextValue, forceUpdateOptions);\n }\n } // Remove props.\n\n\n for (var _prop in style) {\n var _nextValue = styleRule.style[_prop];\n var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (_nextValue == null && _nextValue !== _prevValue) {\n styleRule.prop(_prop, null, forceUpdateOptions);\n }\n }\n }\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n var str = '';\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n\n for (var index = 0; index < this.index.length; index++) {\n var rule = this.index[index];\n var css = rule.toString(options); // No need to render an empty rule.\n\n if (!css && !link) continue;\n if (str) str += '\\n';\n str += css;\n }\n\n return str;\n };\n\n return RuleList;\n}();\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(styles, options) {\n this.options = void 0;\n this.deployed = void 0;\n this.attached = void 0;\n this.rules = void 0;\n this.renderer = void 0;\n this.classes = void 0;\n this.keyframes = void 0;\n this.queue = void 0;\n this.attached = false;\n this.deployed = false;\n this.classes = {};\n this.keyframes = {};\n this.options = _extends({}, options, {\n sheet: this,\n parent: this,\n classes: this.classes,\n keyframes: this.keyframes\n });\n\n if (options.Renderer) {\n this.renderer = new options.Renderer(this);\n }\n\n this.rules = new RuleList(this.options);\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Attach renderable to the render tree.\n */\n\n\n var _proto = StyleSheet.prototype;\n\n _proto.attach = function attach() {\n if (this.attached) return this;\n if (this.renderer) this.renderer.attach();\n this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n if (!this.deployed) this.deploy();\n return this;\n }\n /**\n * Remove renderable from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.attached) return this;\n if (this.renderer) this.renderer.detach();\n this.attached = false;\n return this;\n }\n /**\n * Add a rule to the current stylesheet.\n * Will insert a rule also after the stylesheet has been rendered first time.\n */\n ;\n\n _proto.addRule = function addRule(name, decl, options) {\n var queue = this.queue; // Plugins can create rules.\n // In order to preserve the right order, we need to queue all `.addRule` calls,\n // which happen after the first `rules.add()` call.\n\n if (this.attached && !queue) this.queue = [];\n var rule = this.rules.add(name, decl, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n\n if (this.attached) {\n if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (queue) queue.push(rule);else {\n this.insertRule(rule);\n\n if (this.queue) {\n this.queue.forEach(this.insertRule, this);\n this.queue = undefined;\n }\n }\n return rule;\n } // We can't add rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return rule;\n }\n /**\n * Insert rule into the StyleSheet\n */\n ;\n\n _proto.insertRule = function insertRule(rule) {\n if (this.renderer) {\n this.renderer.insertRule(rule);\n }\n }\n /**\n * Create and add rules.\n * Will render also after Style Sheet was rendered the first time.\n */\n ;\n\n _proto.addRules = function addRules(styles, options) {\n var added = [];\n\n for (var name in styles) {\n var rule = this.addRule(name, styles[name], options);\n if (rule) added.push(rule);\n }\n\n return added;\n }\n /**\n * Get a rule by name.\n */\n ;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Delete a rule by name.\n * Returns `true`: if rule has been deleted from the DOM.\n */\n ;\n\n _proto.deleteRule = function deleteRule(name) {\n var rule = typeof name === 'object' ? name : this.rules.get(name);\n if (!rule) return false;\n this.rules.remove(rule);\n\n if (this.attached && rule.renderable && this.renderer) {\n return this.renderer.deleteRule(rule.renderable);\n }\n\n return true;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Deploy pure CSS string to a renderable.\n */\n ;\n\n _proto.deploy = function deploy() {\n if (this.renderer) this.renderer.deploy();\n this.deployed = true;\n return this;\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var _this$rules;\n\n (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n return this;\n }\n /**\n * Updates a single rule.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n this.rules.updateOne(rule, data, options);\n return this;\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return StyleSheet;\n}();\n\nvar PluginsRegistry =\n/*#__PURE__*/\nfunction () {\n function PluginsRegistry() {\n this.plugins = {\n internal: [],\n external: []\n };\n this.registry = void 0;\n }\n\n var _proto = PluginsRegistry.prototype;\n\n /**\n * Call `onCreateRule` hooks and return an object if returned by a hook.\n */\n _proto.onCreateRule = function onCreateRule(name, decl, options) {\n for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n var rule = this.registry.onCreateRule[i](name, decl, options);\n if (rule) return rule;\n }\n\n return null;\n }\n /**\n * Call `onProcessRule` hooks.\n */\n ;\n\n _proto.onProcessRule = function onProcessRule(rule) {\n if (rule.isProcessed) return;\n var sheet = rule.options.sheet;\n\n for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n this.registry.onProcessRule[i](rule, sheet);\n }\n\n if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n rule.isProcessed = true;\n }\n /**\n * Call `onProcessStyle` hooks.\n */\n ;\n\n _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n // $FlowFixMe\n rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n }\n }\n /**\n * Call `onProcessSheet` hooks.\n */\n ;\n\n _proto.onProcessSheet = function onProcessSheet(sheet) {\n for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n this.registry.onProcessSheet[i](sheet);\n }\n }\n /**\n * Call `onUpdate` hooks.\n */\n ;\n\n _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n for (var i = 0; i < this.registry.onUpdate.length; i++) {\n this.registry.onUpdate[i](data, rule, sheet, options);\n }\n }\n /**\n * Call `onChangeValue` hooks.\n */\n ;\n\n _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n var processedValue = value;\n\n for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n }\n\n return processedValue;\n }\n /**\n * Register a plugin.\n */\n ;\n\n _proto.use = function use(newPlugin, options) {\n if (options === void 0) {\n options = {\n queue: 'external'\n };\n }\n\n var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n if (plugins.indexOf(newPlugin) !== -1) {\n return;\n }\n\n plugins.push(newPlugin);\n this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n for (var name in plugin) {\n if (name in registry) {\n registry[name].push(plugin[name]);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n }\n }\n\n return registry;\n }, {\n onCreateRule: [],\n onProcessRule: [],\n onProcessStyle: [],\n onProcessSheet: [],\n onChangeValue: [],\n onUpdate: []\n });\n };\n\n return PluginsRegistry;\n}();\n\n/**\n * Sheets registry to access them all at one place.\n */\nvar SheetsRegistry =\n/*#__PURE__*/\nfunction () {\n function SheetsRegistry() {\n this.registry = [];\n }\n\n var _proto = SheetsRegistry.prototype;\n\n /**\n * Register a Style Sheet.\n */\n _proto.add = function add(sheet) {\n var registry = this.registry;\n var index = sheet.options.index;\n if (registry.indexOf(sheet) !== -1) return;\n\n if (registry.length === 0 || index >= this.index) {\n registry.push(sheet);\n return;\n } // Find a position.\n\n\n for (var i = 0; i < registry.length; i++) {\n if (registry[i].options.index > index) {\n registry.splice(i, 0, sheet);\n return;\n }\n }\n }\n /**\n * Reset the registry.\n */\n ;\n\n _proto.reset = function reset() {\n this.registry = [];\n }\n /**\n * Remove a Style Sheet.\n */\n ;\n\n _proto.remove = function remove(sheet) {\n var index = this.registry.indexOf(sheet);\n this.registry.splice(index, 1);\n }\n /**\n * Convert all attached sheets to a CSS string.\n */\n ;\n\n _proto.toString = function toString(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n attached = _ref.attached,\n options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n var css = '';\n\n for (var i = 0; i < this.registry.length; i++) {\n var sheet = this.registry[i];\n\n if (attached != null && sheet.attached !== attached) {\n continue;\n }\n\n if (css) css += '\\n';\n css += sheet.toString(options);\n }\n\n return css;\n };\n\n _createClass(SheetsRegistry, [{\n key: \"index\",\n\n /**\n * Current highest index number.\n */\n get: function get() {\n return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n }\n }]);\n\n return SheetsRegistry;\n}();\n\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\nvar sheets = new SheetsRegistry();\n\n/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar globalThis = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis[ns] == null) globalThis[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis[ns]++;\n\nvar maxRules = 1e10;\n\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\nvar createGenerateId = function createGenerateId(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ruleCounter = 0;\n return function (rule, sheet) {\n ruleCounter += 1;\n\n if (ruleCounter > maxRules) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n }\n\n var jssId = '';\n var prefix = '';\n\n if (sheet) {\n if (sheet.options.classNamePrefix) {\n prefix = sheet.options.classNamePrefix;\n }\n\n if (sheet.options.jss.id != null) {\n jssId = String(sheet.options.jss.id);\n }\n }\n\n if (options.minify) {\n // Using \"c\" because a number can't be the first char in a class name.\n return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n }\n\n return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n };\n};\n\n/**\n * Cache the value from the first time a function is called.\n */\nvar memoize = function memoize(fn) {\n var value;\n return function () {\n if (!value) value = fn();\n return value;\n };\n};\n/**\n * Get a style property value.\n */\n\n\nfunction getPropertyValue(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n return cssRule.attributeStyleMap.get(prop);\n }\n\n return cssRule.style.getPropertyValue(prop);\n } catch (err) {\n // IE may throw if property is unknown.\n return '';\n }\n}\n/**\n * Set a style property.\n */\n\n\nfunction setProperty(cssRule, prop, value) {\n try {\n var cssValue = value;\n\n if (Array.isArray(value)) {\n cssValue = toCssValue(value, true);\n\n if (value[value.length - 1] === '!important') {\n cssRule.style.setProperty(prop, cssValue, 'important');\n return true;\n }\n } // Support CSSTOM.\n\n\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.set(prop, cssValue);\n } else {\n cssRule.style.setProperty(prop, cssValue);\n }\n } catch (err) {\n // IE may throw if property is unknown.\n return false;\n }\n\n return true;\n}\n/**\n * Remove a style property.\n */\n\n\nfunction removeProperty(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.delete(prop);\n } else {\n cssRule.style.removeProperty(prop);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n }\n}\n/**\n * Set the selector.\n */\n\n\nfunction setSelector(cssRule, selectorText) {\n cssRule.selectorText = selectorText; // Return false if setter was not successful.\n // Currently works in chrome only.\n\n return cssRule.selectorText === selectorText;\n}\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n for (var i = 0; i < registry.length; i++) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n for (var i = registry.length - 1; i >= 0; i--) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n var head = getHead();\n\n for (var i = 0; i < head.childNodes.length; i++) {\n var node = head.childNodes[i];\n\n if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n return node;\n }\n }\n\n return null;\n}\n\n/**\n * Find a node before which we can insert the sheet.\n */\nfunction findPrevNode(options) {\n var registry = sheets.registry;\n\n if (registry.length > 0) {\n // Try to insert before the next higher sheet.\n var sheet = findHigherSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element\n };\n } // Otherwise insert after the last attached.\n\n\n sheet = findHighestSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element.nextSibling\n };\n }\n } // Try to find a comment placeholder if registry is empty.\n\n\n var insertionPoint = options.insertionPoint;\n\n if (insertionPoint && typeof insertionPoint === 'string') {\n var comment = findCommentNode(insertionPoint);\n\n if (comment) {\n return {\n parent: comment.parentNode,\n node: comment.nextSibling\n };\n } // If user specifies an insertion point and it can't be found in the document -\n // bad specificity issues may appear.\n\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n }\n\n return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n var insertionPoint = options.insertionPoint;\n var nextNode = findPrevNode(options);\n\n if (nextNode !== false && nextNode.parent) {\n nextNode.parent.insertBefore(style, nextNode.node);\n return;\n } // Works with iframes and any node types.\n\n\n if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n // https://stackoverflow.com/questions/41328728/force-casting-in-flow\n var insertionPointElement = insertionPoint;\n var parentNode = insertionPointElement.parentNode;\n if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n return;\n }\n\n getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n var node = document.querySelector('meta[property=\"csp-nonce\"]');\n return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n if (index === undefined || index > maxIndex) {\n // eslint-disable-next-line no-param-reassign\n index = maxIndex;\n }\n\n try {\n if ('insertRule' in container) {\n var c = container;\n c.insertRule(rule, index);\n } // Keyframes rule.\n else if ('appendRule' in container) {\n var _c = container;\n\n _c.appendRule(rule);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n return false;\n }\n\n return container.cssRules[index];\n};\n\nvar createStyle = function createStyle() {\n var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n // insert rules after we insert the style tag.\n // It seems to kick-off the source order specificity algorithm.\n\n el.textContent = '\\n';\n return el;\n};\n\nvar DomRenderer =\n/*#__PURE__*/\nfunction () {\n // HTMLStyleElement needs fixing https://github.com/facebook/flow/issues/2696\n function DomRenderer(sheet) {\n this.getPropertyValue = getPropertyValue;\n this.setProperty = setProperty;\n this.removeProperty = removeProperty;\n this.setSelector = setSelector;\n this.element = void 0;\n this.sheet = void 0;\n this.hasInsertedRules = false;\n // There is no sheet when the renderer is used from a standalone StyleRule.\n if (sheet) sheets.add(sheet);\n this.sheet = sheet;\n\n var _ref = this.sheet ? this.sheet.options : {},\n media = _ref.media,\n meta = _ref.meta,\n element = _ref.element;\n\n this.element = element || createStyle();\n this.element.setAttribute('data-jss', '');\n if (media) this.element.setAttribute('media', media);\n if (meta) this.element.setAttribute('data-meta', meta);\n var nonce = getNonce();\n if (nonce) this.element.setAttribute('nonce', nonce);\n }\n /**\n * Insert style element into render tree.\n */\n\n\n var _proto = DomRenderer.prototype;\n\n _proto.attach = function attach() {\n // In the case the element node is external and it is already in the DOM.\n if (this.element.parentNode || !this.sheet) return;\n insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n // most browsers create a new CSSStyleSheet, except of all IEs.\n\n var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n if (this.hasInsertedRules && deployed) {\n this.hasInsertedRules = false;\n this.deploy();\n }\n }\n /**\n * Remove style element from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n var parentNode = this.element.parentNode;\n if (parentNode) parentNode.removeChild(this.element);\n }\n /**\n * Inject CSS string into element.\n */\n ;\n\n _proto.deploy = function deploy() {\n var sheet = this.sheet;\n if (!sheet) return;\n\n if (sheet.options.link) {\n this.insertRules(sheet.rules);\n return;\n }\n\n this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n }\n /**\n * Insert RuleList into an element.\n */\n ;\n\n _proto.insertRules = function insertRules(rules, nativeParent) {\n for (var i = 0; i < rules.index.length; i++) {\n this.insertRule(rules.index[i], i, nativeParent);\n }\n }\n /**\n * Insert a rule into element.\n */\n ;\n\n _proto.insertRule = function insertRule(rule, index, nativeParent) {\n if (nativeParent === void 0) {\n nativeParent = this.element.sheet;\n }\n\n if (rule.rules) {\n var parent = rule;\n var latestNativeParent = nativeParent;\n\n if (rule.type === 'conditional' || rule.type === 'keyframes') {\n // We need to render the container without children first.\n latestNativeParent = _insertRule(nativeParent, parent.toString({\n children: false\n }), index);\n\n if (latestNativeParent === false) {\n return false;\n }\n }\n\n this.insertRules(parent.rules, latestNativeParent);\n return latestNativeParent;\n } // IE keeps the CSSStyleSheet after style node has been reattached,\n // so we need to check if the `renderable` reference the right style sheet and not\n // rerender those rules.\n\n\n if (rule.renderable && rule.renderable.parentStyleSheet === this.element.sheet) {\n return rule.renderable;\n }\n\n var ruleStr = rule.toString();\n if (!ruleStr) return false;\n\n var nativeRule = _insertRule(nativeParent, ruleStr, index);\n\n if (nativeRule === false) {\n return false;\n }\n\n this.hasInsertedRules = true;\n rule.renderable = nativeRule;\n return nativeRule;\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.deleteRule = function deleteRule(cssRule) {\n var sheet = this.element.sheet;\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n sheet.deleteRule(index);\n return true;\n }\n /**\n * Get index of a CSS Rule.\n */\n ;\n\n _proto.indexOf = function indexOf(cssRule) {\n var cssRules = this.element.sheet.cssRules;\n\n for (var index = 0; index < cssRules.length; index++) {\n if (cssRule === cssRules[index]) return index;\n }\n\n return -1;\n }\n /**\n * Generate a new CSS rule and replace the existing one.\n *\n * Only used for some old browsers because they can't set a selector.\n */\n ;\n\n _proto.replaceRule = function replaceRule(cssRule, rule) {\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n this.element.sheet.deleteRule(index);\n return this.insertRule(rule, index);\n }\n /**\n * Get all rules elements.\n */\n ;\n\n _proto.getRules = function getRules() {\n return this.element.sheet.cssRules;\n };\n\n return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss =\n/*#__PURE__*/\nfunction () {\n function Jss(options) {\n this.id = instanceCounter++;\n this.version = \"10.0.3\";\n this.plugins = new PluginsRegistry();\n this.options = {\n id: {\n minify: false\n },\n createGenerateId: createGenerateId,\n Renderer: isInBrowser ? DomRenderer : null,\n plugins: []\n };\n this.generateId = createGenerateId({\n minify: false\n });\n\n for (var i = 0; i < plugins.length; i++) {\n this.plugins.use(plugins[i], {\n queue: 'internal'\n });\n }\n\n this.setup(options);\n }\n /**\n * Prepares various options, applies plugins.\n * Should not be used twice on the same instance, because there is no plugins\n * deduplication logic.\n */\n\n\n var _proto = Jss.prototype;\n\n _proto.setup = function setup(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (options.createGenerateId) {\n this.options.createGenerateId = options.createGenerateId;\n }\n\n if (options.id) {\n this.options.id = _extends({}, this.options.id, options.id);\n }\n\n if (options.createGenerateId || options.id) {\n this.generateId = this.options.createGenerateId(this.options.id);\n }\n\n if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n if ('Renderer' in options) {\n this.options.Renderer = options.Renderer;\n } // eslint-disable-next-line prefer-spread\n\n\n if (options.plugins) this.use.apply(this, options.plugins);\n return this;\n }\n /**\n * Create a Style Sheet.\n */\n ;\n\n _proto.createStyleSheet = function createStyleSheet(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n index = _options.index;\n\n if (typeof index !== 'number') {\n index = sheets.index === 0 ? 0 : sheets.index + 1;\n }\n\n var sheet = new StyleSheet(styles, _extends({}, options, {\n jss: this,\n generateId: options.generateId || this.generateId,\n insertionPoint: this.options.insertionPoint,\n Renderer: this.options.Renderer,\n index: index\n }));\n this.plugins.onProcessSheet(sheet);\n return sheet;\n }\n /**\n * Detach the Style Sheet and remove it from the registry.\n */\n ;\n\n _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n sheet.detach();\n sheets.remove(sheet);\n return this;\n }\n /**\n * Create a rule without a Style Sheet.\n * [Deprecated] will be removed in the next major version.\n */\n ;\n\n _proto.createRule = function createRule$$1(name, style, options) {\n if (style === void 0) {\n style = {};\n }\n\n if (options === void 0) {\n options = {};\n }\n\n // Enable rule without name for inline styles.\n if (typeof name === 'object') {\n return this.createRule(undefined, name, style);\n }\n\n var ruleOptions = _extends({}, options, {\n name: name,\n jss: this,\n Renderer: this.options.Renderer\n });\n\n if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n if (!ruleOptions.classes) ruleOptions.classes = {};\n if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n\n var rule = createRule(name, style, ruleOptions);\n\n if (rule) this.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Register plugin. Passed function will be invoked with a rule instance.\n */\n ;\n\n _proto.use = function use() {\n var _this = this;\n\n for (var _len = arguments.length, plugins$$1 = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins$$1[_key] = arguments[_key];\n }\n\n plugins$$1.forEach(function (plugin) {\n _this.plugins.use(plugin);\n });\n return this;\n };\n\n return Jss;\n}();\n\n/**\n * Extracts a styles object with only props that contain function values.\n */\nfunction getDynamicStyles(styles) {\n var to = null;\n\n for (var key in styles) {\n var value = styles[key];\n var type = typeof value;\n\n if (type === 'function') {\n if (!to) to = {};\n to[key] = value;\n } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n var extracted = getDynamicStyles(value);\n\n if (extracted) {\n if (!to) to = {};\n to[key] = extracted;\n }\n }\n }\n\n return to;\n}\n\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n */\nvar SheetsManager =\n/*#__PURE__*/\nfunction () {\n function SheetsManager() {\n this.length = 0;\n this.sheets = new WeakMap();\n }\n\n var _proto = SheetsManager.prototype;\n\n _proto.get = function get(key) {\n var entry = this.sheets.get(key);\n return entry && entry.sheet;\n };\n\n _proto.add = function add(key, sheet) {\n if (this.sheets.has(key)) return;\n this.length++;\n this.sheets.set(key, {\n sheet: sheet,\n refs: 0\n });\n };\n\n _proto.manage = function manage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs === 0) {\n entry.sheet.attach();\n }\n\n entry.refs++;\n return entry.sheet;\n }\n\n warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n return undefined;\n };\n\n _proto.unmanage = function unmanage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs > 0) {\n entry.refs--;\n if (entry.refs === 0) entry.sheet.detach();\n }\n } else {\n warning(false, \"SheetsManager: can't find sheet to unmanage\");\n }\n };\n\n _createClass(SheetsManager, [{\n key: \"size\",\n get: function get() {\n return this.length;\n }\n }]);\n\n return SheetsManager;\n}();\n\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\n\n/**\n * Export a constant indicating if this browser has CSSTOM support.\n * https://developers.google.com/web/updates/2018/03/cssom\n */\nvar hasCSSTOMSupport = typeof CSS !== 'undefined' && CSS && 'number' in CSS;\n/**\n * Creates a new instance of Jss.\n */\n\nvar create = function create(options) {\n return new Jss(options);\n};\n/**\n * A global Jss instance.\n */\n\nvar index = create();\n\nexport default index;\nexport { hasCSSTOMSupport, create, getDynamicStyles, toCssValue, createRule, SheetsRegistry, SheetsManager, RuleList, sheets, createGenerateId };\n","import * as glMatrix from \"./common.js\";\n/**\r\n * 2 Dimensional Vector\r\n * @module vec2\r\n */\n\n/**\r\n * Creates a new, empty vec2\r\n *\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with values from an existing vector\r\n *\r\n * @param {vec2} a vector to clone\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Copy the values from one vec2 to another\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the source vector\r\n * @returns {vec2} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Set the components of a vec2 to the given values\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} out\r\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Adds two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\r\n * Multiplies two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\r\n * Divides two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to ceil\r\n * @returns {vec2} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to floor\r\n * @returns {vec2} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\r\n * Math.round the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to round\r\n * @returns {vec2} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\r\n * Scales a vec2 by a scalar number\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec2} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\r\n * Adds two vec2's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec2} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\r\n * Calculates the length of a vec2\r\n *\r\n * @param {vec2} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared length of a vec2\r\n *\r\n * @param {vec2} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\r\n * Negates the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to negate\r\n * @returns {vec2} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to invert\r\n * @returns {vec2} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\r\n * Normalize a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to normalize\r\n * @returns {vec2} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\r\n * Computes the cross product of two vec2's\r\n * Note that the cross product must by definition produce a 3D vector\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec2} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec2} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat2} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2d\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat2d} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat3\r\n * 3rd vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat3} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat4\r\n * 3rd vector component is implicitly '0'\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\r\n * Rotate a 2D vector\r\n * @param {vec2} out The receiving vec2\r\n * @param {vec2} a The vec2 point to rotate\r\n * @param {vec2} b The origin of the rotation\r\n * @param {Number} c The angle of rotation\r\n * @returns {vec2} out\r\n */\n\nexport function rotate(out, a, b, c) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(c),\n cosC = Math.cos(c); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\r\n * Get the angle between two 2D vectors\r\n * @param {vec2} a The first operand\r\n * @param {vec2} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1];\n var len1 = x1 * x1 + y1 * y1;\n\n if (len1 > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len1 = 1 / Math.sqrt(len1);\n }\n\n var len2 = x2 * x2 + y2 * y2;\n\n if (len2 > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len2 = 1 / Math.sqrt(len2);\n }\n\n var cosine = (x1 * x2 + y1 * y2) * len1 * len2;\n\n if (cosine > 1.0) {\n return 0;\n } else if (cosine < -1.0) {\n return Math.PI;\n } else {\n return Math.acos(cosine);\n }\n}\n/**\r\n * Set the components of a vec2 to zero\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @returns {vec2} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec2} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return 'vec2(' + a[0] + ', ' + a[1] + ')';\n}\n/**\r\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec2} a The first vector.\r\n * @param {vec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec2} a The first vector.\r\n * @param {vec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\r\n * Alias for {@link vec2.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec2.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec2.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec2.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec2.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec2.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec2.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec2s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import * as glMatrix from \"./common.js\";\n/**\r\n * 3 Dimensional Vector\r\n * @module vec3\r\n */\n\n/**\r\n * Creates a new, empty vec3\r\n *\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec3 initialized with values from an existing vector\r\n *\r\n * @param {vec3} a vector to clone\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Calculates the length of a vec3\r\n *\r\n * @param {vec3} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Creates a new vec3 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Copy the values from one vec3 to another\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the source vector\r\n * @returns {vec3} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Set the components of a vec3 to the given values\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} out\r\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Adds two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\r\n * Multiplies two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\r\n * Divides two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to ceil\r\n * @returns {vec3} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to floor\r\n * @returns {vec3} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\r\n * Math.round the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to round\r\n * @returns {vec3} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\r\n * Scales a vec3 by a scalar number\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec3} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\r\n * Adds two vec3's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec3} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Calculates the squared length of a vec3\r\n *\r\n * @param {vec3} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Negates the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to negate\r\n * @returns {vec3} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to invert\r\n * @returns {vec3} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\r\n * Normalize a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to normalize\r\n * @returns {vec3} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\r\n * Computes the cross product of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\r\n * Performs a hermite interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {vec3} c the third operand\r\n * @param {vec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Performs a bezier interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {vec3} c the third operand\r\n * @param {vec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec3} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat4.\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat3.\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {mat3} m the 3x3 matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\r\n * Transforms the vec3 with a quat\r\n * Can also be used for dual quaternions. (Multiply it with the real part)\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {quat} q quaternion to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\r\n * Rotate a 3D vector around the x-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} c The angle of rotation\r\n * @returns {vec3} out\r\n */\n\nexport function rotateX(out, a, b, c) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(c) - p[2] * Math.sin(c);\n r[2] = p[1] * Math.sin(c) + p[2] * Math.cos(c); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the y-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} c The angle of rotation\r\n * @returns {vec3} out\r\n */\n\nexport function rotateY(out, a, b, c) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(c) + p[0] * Math.cos(c);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(c) - p[0] * Math.sin(c); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the z-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} c The angle of rotation\r\n * @returns {vec3} out\r\n */\n\nexport function rotateZ(out, a, b, c) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(c) - p[1] * Math.sin(c);\n r[1] = p[0] * Math.sin(c) + p[1] * Math.cos(c);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Get the angle between two 3D vectors\r\n * @param {vec3} a The first operand\r\n * @param {vec3} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var tempA = fromValues(a[0], a[1], a[2]);\n var tempB = fromValues(b[0], b[1], b[2]);\n normalize(tempA, tempA);\n normalize(tempB, tempB);\n var cosine = dot(tempA, tempB);\n\n if (cosine > 1.0) {\n return 0;\n } else if (cosine < -1.0) {\n return Math.PI;\n } else {\n return Math.acos(cosine);\n }\n}\n/**\r\n * Set the components of a vec3 to zero\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @returns {vec3} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec3} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return 'vec3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ')';\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec3} a The first vector.\r\n * @param {vec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec3} a The first vector.\r\n * @param {vec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\r\n * Alias for {@link vec3.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec3.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec3.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec3.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec3.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec3.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec3.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec3s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","import GL from '@luma.gl/constants';\n\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {\n TEXTURE_FORMATS,\n DATA_FORMAT_CHANNELS,\n TYPE_SIZES,\n isFormatSupported,\n isLinearFilteringSupported\n} from './texture-formats';\n\nimport {isWebGL2, withParameters, log} from '@luma.gl/gltools';\nimport {global} from 'probe.gl/env';\nimport {assertWebGL2Context} from '../webgl-utils';\nimport {uid, isPowerOfTwo, assert} from '../utils';\n\n// Supported min filters for NPOT texture.\nconst NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];\n\n// Polyfill\n// Note (Tarek): Do we really need to support this API?\nconst WebGLBuffer = global.WebGLBuffer || function WebGLBuffer() {};\n\nexport default class Texture extends Resource {\n static isSupported(gl, {format, linearFiltering} = {}) {\n let supported = true;\n if (format) {\n supported = supported && isFormatSupported(gl, format);\n supported = supported && (!linearFiltering || isLinearFilteringSupported(gl, format));\n }\n return supported;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n constructor(gl, props) {\n const {\n id = uid('texture'),\n handle,\n target\n // , magFilter, minFilter, wrapS, wrapT\n } = props;\n\n super(gl, {id, handle});\n\n this.target = target;\n this.textureUnit = undefined;\n\n // Program.draw() checks the loaded flag of all textures to avoid\n // Textures that are still loading from promises\n // Set to true as soon as texture has been initialized with valid data\n this.loaded = false;\n\n this.width = undefined;\n this.height = undefined;\n this.depth = undefined;\n this.format = undefined;\n this.type = undefined;\n this.dataFormat = undefined;\n this.border = undefined;\n this.textureUnit = undefined;\n this.mipmaps = undefined;\n }\n\n toString() {\n return `Texture(${this.id},${this.width}x${this.height})`;\n }\n\n /* eslint-disable max-len, max-statements */\n initialize(props = {}) {\n let data = props.data;\n\n if (data instanceof Promise) {\n data.then(resolvedImageData =>\n this.initialize(\n Object.assign({}, props, {\n pixels: resolvedImageData,\n data: resolvedImageData\n })\n )\n );\n return this;\n }\n\n const {\n pixels = null,\n format = GL.RGBA,\n border = 0,\n recreate = false,\n parameters = {},\n pixelStore = {},\n textureUnit = undefined\n } = props;\n\n let {mipmaps = true} = props;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n // TODO - This looks backwards? Commenting out for now until we decide\n // which prop to use\n // log.deprecated('data', 'pixels')();\n data = pixels;\n }\n\n let {width, height, dataFormat, type} = props;\n const {depth = 0} = props;\n\n // Deduce width and height\n ({width, height, dataFormat, type} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed: false,\n data,\n width,\n height\n }));\n\n // Store opts for accessors\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.format = format;\n this.type = type;\n this.dataFormat = dataFormat;\n this.border = border;\n this.textureUnit = textureUnit;\n\n if (Number.isFinite(this.textureUnit)) {\n this.gl.activeTexture(GL.TEXTURE0 + this.textureUnit);\n this.gl.bindTexture(this.target, this.handle);\n }\n\n if (mipmaps && this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n mipmaps = false;\n\n this._updateForNPOT(parameters);\n }\n\n this.mipmaps = mipmaps;\n\n this.setImageData({\n data,\n width,\n height,\n depth,\n format,\n type,\n dataFormat,\n border,\n mipmaps,\n parameters: pixelStore\n });\n\n if (mipmaps) {\n this.generateMipmap();\n }\n\n // Set texture sampler parameters\n this.setParameters(parameters);\n\n // TODO - Store data to enable auto recreate on context loss\n if (recreate) {\n this.data = data;\n }\n\n return this;\n }\n\n // If size has changed, reinitializes with current format\n // note clears image and mipmaps\n resize({height, width, mipmaps = false}) {\n if (width !== this.width || height !== this.height) {\n return this.initialize({\n width,\n height,\n format: this.format,\n type: this.type,\n dataFormat: this.dataFormat,\n border: this.border,\n mipmaps\n });\n }\n return this;\n }\n\n // Call to regenerate mipmaps after modifying texture(s)\n generateMipmap(params = {}) {\n if (this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n return this;\n }\n\n this.mipmaps = true;\n\n this.gl.bindTexture(this.target, this.handle);\n withParameters(this.gl, params, () => {\n this.gl.generateMipmap(this.target);\n });\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n /*\n * Allocates storage\n * @param {*} pixels -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} width -\n * @param {GLint} height -\n * @param {GLint} mipMapLevel -\n * @param {GLenum} format - format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n /* eslint-disable max-len, max-statements, complexity */\n setImageData(options) {\n this._trackDeallocatedMemory('Texture');\n\n const {\n target = this.target,\n pixels = null,\n level = 0,\n format = this.format,\n border = this.border,\n offset = 0,\n parameters = {}\n } = options;\n\n let {\n data = null,\n type = this.type,\n width = this.width,\n height = this.height,\n dataFormat = this.dataFormat,\n compressed = false\n } = options;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n const {gl} = this;\n gl.bindTexture(this.target, this.handle);\n\n let dataType = null;\n ({data, dataType} = this._getDataType({data, compressed}));\n\n withParameters(this.gl, parameters, () => {\n switch (dataType) {\n case 'null':\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n break;\n case 'typed-array':\n // Looks like this assert is not necessary, as offset is ignored under WebGL1\n // assert((offset === 0 || isWebGL2(gl)), 'offset supported in WebGL2 only');\n gl.texImage2D(\n target,\n level,\n format,\n width,\n height,\n border,\n dataFormat,\n type,\n data,\n offset\n );\n break;\n case 'buffer':\n // WebGL2 enables creating textures directly from a WebGL buffer\n assertWebGL2Context(gl);\n gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);\n gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n break;\n case 'browser-object':\n if (isWebGL2(gl)) {\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n } else {\n gl.texImage2D(target, level, format, dataFormat, type, data);\n }\n break;\n case 'compressed':\n gl.compressedTexImage2D(target, level, format, width, height, border, data);\n break;\n default:\n assert(false, 'Unknown image data type');\n }\n });\n\n if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');\n }\n\n this.loaded = true;\n\n return this;\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Redefines an area of an existing texture\n * Note: does not allocate storage\n */\n /*\n * Redefines an area of an existing texture\n * @param {*} pixels, data -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} x - xOffset from where texture to be updated\n * @param {GLint} y - yOffset from where texture to be updated\n * @param {GLint} width - width of the sub image to be updated\n * @param {GLint} height - height of the sub image to be updated\n * @param {GLint} level - mip level to be updated\n * @param {GLenum} format - internal format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer or ArrayBufferView\n * @param {GLenum} dataFormat - format of image data.\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n setSubImageData({\n target = this.target,\n pixels = null,\n data = null,\n x = 0,\n y = 0,\n width = this.width,\n height = this.height,\n level = 0,\n format = this.format,\n type = this.type,\n dataFormat = this.dataFormat,\n compressed = false,\n offset = 0,\n border = this.border,\n parameters = {}\n }) {\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n assert(this.depth === 0, 'texSubImage not supported for 3D textures');\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n // Support ndarrays\n if (data && data.data) {\n const ndarray = data;\n data = ndarray.data;\n width = ndarray.shape[0];\n height = ndarray.shape[1];\n }\n\n // Support buffers\n if (data instanceof Buffer) {\n data = data.handle;\n }\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n // TODO - x,y parameters\n if (compressed) {\n this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n } else if (data === null) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n } else if (ArrayBuffer.isView(data)) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n } else if (data instanceof WebGLBuffer) {\n // WebGL2 allows us to create texture directly from a WebGL buffer\n assertWebGL2Context(this.gl);\n // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n } else if (isWebGL2(this.gl)) {\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n } else {\n this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n }\n });\n\n this.gl.bindTexture(this.target, null);\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Defines a two-dimensional texture image or cube-map texture image with\n * pixels from the current framebuffer (rather than from client memory).\n * (gl.copyTexImage2D wrapper)\n *\n * Note that binding a texture into a Framebuffer's color buffer and\n * rendering can be faster.\n */\n copyFramebuffer(opts = {}) {\n log.error(\n 'Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n getActiveUnit() {\n return this.gl.getParameter(GL.ACTIVE_TEXTURE) - GL.TEXTURE0;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n\n bind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, this.handle);\n return textureUnit;\n }\n\n unbind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, null);\n return textureUnit;\n }\n\n // PRIVATE METHODS\n\n _getDataType({data, compressed = false}) {\n if (compressed) {\n return {data, dataType: 'compressed'};\n }\n if (data === null) {\n return {data, dataType: 'null'};\n }\n if (ArrayBuffer.isView(data)) {\n return {data, dataType: 'typed-array'};\n }\n if (data instanceof Buffer) {\n return {data: data.handle, dataType: 'buffer'};\n }\n if (data instanceof WebGLBuffer) {\n return {data, dataType: 'buffer'};\n }\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n return {data, dataType: 'browser-object'};\n }\n\n /* Copied from texture-2d.js\n // WebGL2\n setPixels(opts = {}) {\n const {\n buffer,\n width = null,\n height = null,\n mipmapLevel = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n\n // This signature of texImage2D uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, buffer.target);\n // And as always, we must also bind the texture itself\n this.bind();\n\n gl.texImage2D(gl.TEXTURE_2D,\n mipmapLevel, format, width, height, border, format, type, buffer.target);\n\n this.unbind();\n gl.bindBuffer(GL.GL.PIXEL_UNPACK_BUFFER, null);\n return this;\n }\n\n setImageDataFromCompressedBuffer(opts) {\n const {\n buffer,\n // offset = 0,\n width = null,\n height = null,\n mipmapLevel = 0,\n internalFormat = GL.RGBA,\n // format = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n gl.compressedTexImage2D(this.target,\n mipmapLevel, internalFormat, width, height, border, buffer);\n // gl.compressedTexSubImage2D(target,\n // level, xoffset, yoffset, width, height, format, ArrayBufferView? pixels);\n return this;\n }\n\n copySubImage(opts) {\n const {\n // pixels,\n // offset = 0,\n // x,\n // y,\n // width,\n // height,\n // mipmapLevel = 0,\n // internalFormat = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n // border = 0\n } = opts;\n\n // if (pixels instanceof ArrayBufferView) {\n // gl.texSubImage2D(target, level, x, y, width, height, format, type, pixels);\n // }\n // gl.texSubImage2D(target, level, x, y, format, type, ? pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLImageElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLCanvasElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLVideoElement pixels);\n // // Additional signature in a WebGL 2 context:\n // gl.texSubImage2D(target, level, x, y, format, type, GLintptr offset);\n }\n */\n\n // HELPER METHODS\n\n _deduceParameters(opts) {\n const {format, data} = opts;\n let {width, height, dataFormat, type, compressed} = opts;\n\n // Deduce format and type from format\n const textureFormat = TEXTURE_FORMATS[format];\n dataFormat = dataFormat || (textureFormat && textureFormat.dataFormat);\n type = type || (textureFormat && textureFormat.types[0]);\n\n // Deduce compression from format\n compressed = compressed || (textureFormat && textureFormat.compressed);\n\n ({width, height} = this._deduceImageSize(data, width, height));\n\n return {dataFormat, type, compressed, width, height, format, data};\n }\n\n /* global ImageData, HTMLImageElement, HTMLCanvasElement, HTMLVideoElement, ImageBitmap */\n // eslint-disable-next-line complexity\n _deduceImageSize(data, width, height) {\n let size;\n\n if (typeof ImageData !== 'undefined' && data instanceof ImageData) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n size = {width: data.naturalWidth, height: data.naturalHeight};\n } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {\n size = {width: data.width, height: data.height};\n } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n size = {width: data.videoWidth, height: data.videoHeight};\n } else if (!data) {\n size = {width: width >= 0 ? width : 1, height: height >= 0 ? height : 1};\n } else {\n size = {width, height};\n }\n\n assert(size, 'Could not deduced texture size');\n assert(\n width === undefined || size.width === width,\n 'Deduced texture width does not match supplied width'\n );\n assert(\n height === undefined || size.height === height,\n 'Deduced texture height does not match supplied height'\n );\n\n return size;\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createTexture();\n }\n\n _deleteHandle() {\n this.gl.deleteTexture(this.handle);\n this._trackDeallocatedMemory('Texture');\n }\n\n _getParameter(pname) {\n switch (pname) {\n case GL.TEXTURE_WIDTH:\n return this.width;\n case GL.TEXTURE_HEIGHT:\n return this.height;\n default:\n this.gl.bindTexture(this.target, this.handle);\n const value = this.gl.getTexParameter(this.target, pname);\n this.gl.bindTexture(this.target, null);\n return value;\n }\n }\n\n _setParameter(pname, param) {\n this.gl.bindTexture(this.target, this.handle);\n\n // NOTE: Apply NPOT workaround\n param = this._getNPOTParam(pname, param);\n\n // Apparently there are some integer/float conversion rules that made\n // the WebGL committe expose two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n switch (pname) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.gl.texParameterf(this.handle, pname, param);\n break;\n\n case GL.TEXTURE_WIDTH:\n case GL.TEXTURE_HEIGHT:\n assert(false);\n break;\n\n default:\n this.gl.texParameteri(this.target, pname, param);\n break;\n }\n\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n _isNPOT() {\n if (isWebGL2(this.gl)) {\n // NPOT restriction is only for WebGL1\n return false;\n }\n // Width and height not available, consider it is not NPOT texture\n if (!this.width || !this.height) {\n return false;\n }\n return !isPowerOfTwo(this.width) || !isPowerOfTwo(this.height);\n }\n\n // Update default settings which are not supported by NPOT textures.\n _updateForNPOT(parameters) {\n if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;\n }\n if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_S to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;\n }\n if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_T to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;\n }\n }\n\n _getNPOTParam(pname, param) {\n if (this._isNPOT()) {\n switch (pname) {\n case GL.TEXTURE_MIN_FILTER:\n if (NPOT_MIN_FILTERS.indexOf(param) === -1) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n param = GL.LINEAR;\n }\n break;\n case GL.TEXTURE_WRAP_S:\n case GL.TEXTURE_WRAP_T:\n if (param !== GL.CLAMP_TO_EDGE) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, ${getKey(this.gl, pname)} to CLAMP_TO_EDGE`)();\n param = GL.CLAMP_TO_EDGE;\n }\n break;\n default:\n break;\n }\n }\n return param;\n }\n}\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction) {\n throw new Error(prefix);\n } else {\n throw new Error(prefix + \": \" + (message || ''));\n }\n}\n\nexport default invariant;\n","import checkIfBrowser from '../env/is-browser';\n\nexport {self, window, global, document, process, console} from '../env/globals';\n\n// Extract injected version from package.json (injected by babel plugin)\n/* global __VERSION__ */\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nexport const isBrowser = checkIfBrowser();\n","/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document,\n process: typeof process === 'object' && process\n};\n\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst global_ = globals.global || globals.self || globals.window;\nconst document_ = globals.document || {};\nconst process_ = globals.process || {};\nconst console_ = console;\n\nexport {\n self_ as self,\n window_ as window,\n global_ as global,\n document_ as document,\n process_ as process,\n console_ as console\n};\n","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport var easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexport var duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\n\nfunction formatMs(milliseconds) {\n return \"\".concat(Math.round(milliseconds), \"ms\");\n}\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\n\nexport default {\n easing: easing,\n duration: duration,\n create: function create() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _options$duration = options.duration,\n durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n _options$easing = options.easing,\n easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n _options$delay = options.delay,\n delay = _options$delay === void 0 ? 0 : _options$delay,\n other = _objectWithoutProperties(options, [\"duration\", \"easing\", \"delay\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var isNumber = function isNumber(value) {\n return !isNaN(parseFloat(value));\n };\n\n if (!isString(props) && !Array.isArray(props)) {\n console.error('Material-UI: argument \"props\" must be a string or Array.');\n }\n\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(\"Material-UI: argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\"));\n }\n\n if (!isString(easingOption)) {\n console.error('Material-UI: argument \"easing\" must be a string.');\n }\n\n if (!isNumber(delay) && !isString(delay)) {\n console.error('Material-UI: argument \"delay\" must be a number or a string.');\n }\n\n if (Object.keys(other).length !== 0) {\n console.error(\"Material-UI: unrecognized argument(s) [\".concat(Object.keys(other).join(','), \"]\"));\n }\n }\n\n return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n }).join(',');\n },\n getAutoHeightDuration: function getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n\n var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n }\n};","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import * as React from 'react';\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param {function} fn\n */\n\nexport default function useEventCallback(fn) {\n var ref = React.useRef(fn);\n useEnhancedEffect(function () {\n ref.current = fn;\n });\n return React.useCallback(function () {\n return (0, ref.current).apply(void 0, arguments);\n }, []);\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","import setPrototypeOf from \"./setPrototypeOf\";\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import GL from '@luma.gl/constants';\nimport {getTypedArrayFromGLType} from '../webgl-utils';\nimport {checkProps, assert} from '../utils';\n\nconst DEFAULT_ACCESSOR_VALUES = {\n offset: 0,\n stride: 0,\n type: GL.FLOAT,\n size: 1,\n divisor: 0,\n normalized: false,\n integer: false\n};\n\nconst PROP_CHECKS = {\n deprecatedProps: {\n instanced: 'divisor',\n isInstanced: 'divisor'\n }\n};\n\nexport default class Accessor {\n static getBytesPerElement(accessor) {\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT;\n }\n\n static getBytesPerVertex(accessor) {\n assert(accessor.size);\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n }\n\n // Combines (merges) a list of accessors. On top of default values\n // Usually [programAccessor, bufferAccessor, appAccessor]\n // All props will be set in the returned object.\n // TODO check for conflicts between values in the supplied accessors\n static resolve(...accessors) {\n return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]); // Default values\n }\n\n constructor(...accessors) {\n accessors.forEach(accessor => this._assign(accessor)); // Merge in sequence\n Object.freeze(this);\n }\n\n toString() {\n return JSON.stringify(this);\n }\n\n // ACCESSORS\n\n // TODO - remove>\n get BYTES_PER_ELEMENT() {\n return Accessor.getBytesPerElement(this);\n }\n\n get BYTES_PER_VERTEX() {\n return Accessor.getBytesPerVertex(this);\n }\n\n // PRIVATE\n\n // eslint-disable-next-line complexity, max-statements\n _assign(props = {}) {\n props = checkProps('Accessor', props, PROP_CHECKS);\n\n if (props.type !== undefined) {\n this.type = props.type;\n\n // Auto-deduce integer type?\n if (props.type === GL.INT || props.type === GL.UNSIGNED_INT) {\n this.integer = true;\n }\n }\n if (props.size !== undefined) {\n this.size = props.size;\n }\n if (props.offset !== undefined) {\n this.offset = props.offset;\n }\n if (props.stride !== undefined) {\n this.stride = props.stride;\n }\n if (props.normalized !== undefined) {\n this.normalized = props.normalized;\n }\n if (props.integer !== undefined) {\n this.integer = props.integer;\n }\n\n // INSTANCE DIVISOR\n if (props.divisor !== undefined) {\n this.divisor = props.divisor;\n }\n\n // Buffer is optional\n if (props.buffer !== undefined) {\n this.buffer = props.buffer;\n }\n\n // The binding index (for binding e.g. Transform feedbacks and Uniform buffers)\n // TODO - should this be part of accessor?\n if (props.index !== undefined) {\n if (typeof index === 'boolean') {\n this.index = props.index ? 1 : 0;\n } else {\n this.index = props.index;\n }\n }\n\n // DEPRECATED\n if (props.instanced !== undefined) {\n this.divisor = props.instanced ? 1 : 0;\n }\n if (props.isInstanced !== undefined) {\n this.divisor = props.isInstanced ? 1 : 0;\n }\n\n return this;\n }\n}\n\n// TEST EXPORTS\nexport {DEFAULT_ACCESSOR_VALUES};\n","// @flow\nconst EPSILON = 1e-7;\n\n// Returns true if value is either an array or a typed array\nfunction isArray(value: any): boolean {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n}\n\n// TODO: use math.gl\nexport function equals(a: any, b: any): boolean {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return Math.abs(a - b) <= EPSILON;\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n\n// Interpolate between two numbers or two arrays\nexport function lerp(a: any, b: any, t: number): any {\n if (isArray(a)) {\n return a.map((ai, i) => lerp(ai, b[i], t));\n }\n return t * b + (1 - t) * a;\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","export var reflow = function reflow(node) {\n return node.scrollTop;\n};\nexport function getTransitionProps(props, options) {\n var timeout = props.timeout,\n _props$style = props.style,\n style = _props$style === void 0 ? {} : _props$style;\n return {\n duration: style.transitionDuration || typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n delay: style.transitionDelay\n };\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","// Tables describing WebGL parameters\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../utils';\n\n// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS\n\n/* eslint-disable no-shadow */\n\nexport const GL_PARAMETER_DEFAULTS = {\n [GL.BLEND]: false,\n [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),\n [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,\n [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,\n [GL.BLEND_SRC_RGB]: GL.ONE,\n [GL.BLEND_DST_RGB]: GL.ZERO,\n [GL.BLEND_SRC_ALPHA]: GL.ONE,\n [GL.BLEND_DST_ALPHA]: GL.ZERO,\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD\n [GL.COLOR_WRITEMASK]: [true, true, true, true],\n [GL.CULL_FACE]: false,\n [GL.CULL_FACE_MODE]: GL.BACK,\n [GL.DEPTH_TEST]: false,\n [GL.DEPTH_CLEAR_VALUE]: 1,\n [GL.DEPTH_FUNC]: GL.LESS,\n [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD\n [GL.DEPTH_WRITEMASK]: true,\n [GL.DITHER]: true,\n // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: null,\n [GL.FRONT_FACE]: GL.CCW,\n [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,\n [GL.LINE_WIDTH]: 1,\n [GL.POLYGON_OFFSET_FILL]: false,\n [GL.POLYGON_OFFSET_FACTOR]: 0,\n [GL.POLYGON_OFFSET_UNITS]: 0,\n [GL.SAMPLE_COVERAGE_VALUE]: 1.0,\n [GL.SAMPLE_COVERAGE_INVERT]: false,\n [GL.SCISSOR_TEST]: false,\n // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box\n [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),\n [GL.STENCIL_TEST]: false,\n [GL.STENCIL_CLEAR_VALUE]: 0,\n [GL.STENCIL_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_FUNC]: GL.ALWAYS,\n [GL.STENCIL_REF]: 0,\n [GL.STENCIL_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,\n [GL.STENCIL_BACK_REF]: 0,\n [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,\n [GL.STENCIL_BACK_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,\n // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.\n [GL.VIEWPORT]: [0, 0, 1024, 1024],\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: 4,\n [GL.UNPACK_ALIGNMENT]: 4,\n [GL.UNPACK_FLIP_Y_WEBGL]: false,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,\n\n // WEBGL2 / EXTENSIONS\n // gl1: 'OES_standard_derivatives'\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,\n [GL.READ_FRAMEBUFFER_BINDING]: null,\n [GL.RASTERIZER_DISCARD]: false,\n [GL.PACK_ROW_LENGTH]: 0,\n [GL.PACK_SKIP_PIXELS]: 0,\n [GL.PACK_SKIP_ROWS]: 0,\n [GL.UNPACK_ROW_LENGTH]: 0,\n [GL.UNPACK_IMAGE_HEIGHT]: 0,\n [GL.UNPACK_SKIP_PIXELS]: 0,\n [GL.UNPACK_SKIP_ROWS]: 0,\n [GL.UNPACK_SKIP_IMAGES]: 0\n};\n\n// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API\n\nconst enable = (gl, value, key) => (value ? gl.enable(key) : gl.disable(key));\nconst hint = (gl, value, key) => gl.hint(key, value);\nconst pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);\n\nconst drawFramebuffer = (gl, value) => {\n const target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;\n return gl.bindFramebuffer(target, value);\n};\nconst readFramebuffer = (gl, value) => {\n return gl.bindFramebuffer(GL.READ_FRAMEBUFFER, value);\n};\n\n// Utility\nfunction isArray(array) {\n return Array.isArray(array) || ArrayBuffer.isView(array);\n}\n\n// Map from WebGL parameter names to corresponding WebGL setter functions\n// WegGL constants are read by parameter names, but set by function names\n// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'\nexport const GL_PARAMETER_SETTERS = {\n [GL.BLEND]: enable,\n [GL.BLEND_COLOR]: (gl, value) => gl.blendColor(...value),\n [GL.BLEND_EQUATION_RGB]: 'blendEquation',\n [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',\n [GL.BLEND_SRC_RGB]: 'blendFunc',\n [GL.BLEND_DST_RGB]: 'blendFunc',\n [GL.BLEND_SRC_ALPHA]: 'blendFunc',\n [GL.BLEND_DST_ALPHA]: 'blendFunc',\n [GL.COLOR_CLEAR_VALUE]: (gl, value) => gl.clearColor(...value),\n [GL.COLOR_WRITEMASK]: (gl, value) => gl.colorMask(...value),\n [GL.CULL_FACE]: enable,\n [GL.CULL_FACE_MODE]: (gl, value) => gl.cullFace(value),\n [GL.DEPTH_TEST]: enable,\n [GL.DEPTH_CLEAR_VALUE]: (gl, value) => gl.clearDepth(value),\n [GL.DEPTH_FUNC]: (gl, value) => gl.depthFunc(value),\n [GL.DEPTH_RANGE]: (gl, value) => gl.depthRange(...value),\n [GL.DEPTH_WRITEMASK]: (gl, value) => gl.depthMask(value),\n [GL.DITHER]: enable,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,\n // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: drawFramebuffer,\n [GL.FRONT_FACE]: (gl, value) => gl.frontFace(value),\n [GL.GENERATE_MIPMAP_HINT]: hint,\n [GL.LINE_WIDTH]: (gl, value) => gl.lineWidth(value),\n [GL.POLYGON_OFFSET_FILL]: enable,\n [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',\n [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',\n [GL.RASTERIZER_DISCARD]: enable,\n [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',\n [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',\n [GL.SCISSOR_TEST]: enable,\n [GL.SCISSOR_BOX]: (gl, value) => gl.scissor(...value),\n [GL.STENCIL_TEST]: enable,\n [GL.STENCIL_CLEAR_VALUE]: (gl, value) => gl.clearStencil(value),\n [GL.STENCIL_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.FRONT, value),\n [GL.STENCIL_BACK_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.BACK, value),\n [GL.STENCIL_FUNC]: 'stencilFuncFront',\n [GL.STENCIL_REF]: 'stencilFuncFront',\n [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',\n [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',\n [GL.STENCIL_BACK_REF]: 'stencilFuncBack',\n [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',\n [GL.STENCIL_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',\n [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',\n [GL.VIEWPORT]: (gl, value) => gl.viewport(...value),\n\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,\n\n // WEBGL2 PIXEL PACK/UNPACK MODES\n // RASTERIZER_DISCARD ...\n [GL.PACK_ROW_LENGTH]: pixelStorei,\n [GL.PACK_SKIP_PIXELS]: pixelStorei,\n [GL.PACK_SKIP_ROWS]: pixelStorei,\n [GL.READ_FRAMEBUFFER_BINDING]: readFramebuffer,\n [GL.UNPACK_ROW_LENGTH]: pixelStorei,\n [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,\n [GL.UNPACK_SKIP_PIXELS]: pixelStorei,\n [GL.UNPACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_SKIP_IMAGES]: pixelStorei,\n\n // Function-style setters\n framebuffer: (gl, framebuffer) => {\n // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class\n // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n },\n blend: (gl, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),\n blendColor: (gl, value) => gl.blendColor(...value),\n blendEquation: (gl, args) => {\n args = isArray(args) ? args : [args, args];\n gl.blendEquationSeparate(...args);\n },\n blendFunc: (gl, args) => {\n args = isArray(args) && args.length === 2 ? [...args, ...args] : args;\n gl.blendFuncSeparate(...args);\n },\n\n clearColor: (gl, value) => gl.clearColor(...value),\n clearDepth: (gl, value) => gl.clearDepth(value),\n clearStencil: (gl, value) => gl.clearStencil(value),\n\n colorMask: (gl, value) => gl.colorMask(...value),\n\n cull: (gl, value) => (value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE)),\n cullFace: (gl, value) => gl.cullFace(value),\n\n depthTest: (gl, value) => (value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST)),\n depthFunc: (gl, value) => gl.depthFunc(value),\n depthMask: (gl, value) => gl.depthMask(value),\n depthRange: (gl, value) => gl.depthRange(...value),\n\n dither: (gl, value) => (value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER)),\n\n derivativeHint: (gl, value) => {\n // gl1: 'OES_standard_derivatives'\n gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);\n },\n\n frontFace: (gl, value) => gl.frontFace(value),\n\n mipmapHint: (gl, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),\n\n lineWidth: (gl, value) => gl.lineWidth(value),\n\n polygonOffsetFill: (gl, value) =>\n value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),\n polygonOffset: (gl, value) => gl.polygonOffset(...value),\n\n sampleCoverage: (gl, value) => gl.sampleCoverage(...value),\n\n scissorTest: (gl, value) => (value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST)),\n scissor: (gl, value) => gl.scissor(...value),\n\n stencilTest: (gl, value) => (value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST)),\n stencilMask: (gl, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, backMask);\n },\n stencilFunc: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);\n gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);\n },\n stencilOp: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);\n },\n\n viewport: (gl, value) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\n// COMPOSITE_WEBGL_PARAMETER_\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl, values, cache) =>\n gl.blendEquationSeparate(\n getValue(GL.BLEND_EQUATION_RGB, values, cache),\n getValue(GL.BLEND_EQUATION_ALPHA, values, cache)\n ),\n blendFunc: (gl, values, cache) =>\n gl.blendFuncSeparate(\n getValue(GL.BLEND_SRC_RGB, values, cache),\n getValue(GL.BLEND_DST_RGB, values, cache),\n getValue(GL.BLEND_SRC_ALPHA, values, cache),\n getValue(GL.BLEND_DST_ALPHA, values, cache)\n ),\n polygonOffset: (gl, values, cache) =>\n gl.polygonOffset(\n getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),\n getValue(GL.POLYGON_OFFSET_UNITS, values, cache)\n ),\n sampleCoverage: (gl, values, cache) =>\n gl.sampleCoverage(\n getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),\n getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)\n ),\n stencilFuncFront: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FUNC, values, cache),\n getValue(GL.STENCIL_REF, values, cache),\n getValue(GL.STENCIL_VALUE_MASK, values, cache)\n ),\n stencilFuncBack: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FUNC, values, cache),\n getValue(GL.STENCIL_BACK_REF, values, cache),\n getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)\n ),\n stencilOpFront: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)\n ),\n stencilOpBack: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, values, cache)\n )\n};\n\n// Setter functions intercepted for cache updates\nexport const GL_HOOKED_SETTERS = {\n // GENERIC SETTERS\n\n enable: (update, capability) =>\n update({\n [capability]: true\n }),\n disable: (update, capability) =>\n update({\n [capability]: false\n }),\n pixelStorei: (update, pname, value) =>\n update({\n [pname]: value\n }),\n hint: (update, pname, hint) =>\n update({\n [pname]: hint\n }),\n\n // SPECIFIC SETTERS\n\n bindFramebuffer: (update, target, framebuffer) => {\n switch (target) {\n case GL.FRAMEBUFFER:\n return update({\n [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: framebuffer\n });\n case GL.DRAW_FRAMEBUFFER:\n return update({[GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer});\n case GL.READ_FRAMEBUFFER:\n return update({[GL.READ_FRAMEBUFFER_BINDING]: framebuffer});\n default:\n return null;\n }\n },\n blendColor: (update, r, g, b, a) =>\n update({\n [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])\n }),\n\n blendEquation: (update, mode) =>\n update({\n [GL.BLEND_EQUATION_RGB]: mode,\n [GL.BLEND_EQUATION_ALPHA]: mode\n }),\n\n blendEquationSeparate: (update, modeRGB, modeAlpha) =>\n update({\n [GL.BLEND_EQUATION_RGB]: modeRGB,\n [GL.BLEND_EQUATION_ALPHA]: modeAlpha\n }),\n\n blendFunc: (update, src, dst) =>\n update({\n [GL.BLEND_SRC_RGB]: src,\n [GL.BLEND_DST_RGB]: dst,\n [GL.BLEND_SRC_ALPHA]: src,\n [GL.BLEND_DST_ALPHA]: dst\n }),\n\n blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) =>\n update({\n [GL.BLEND_SRC_RGB]: srcRGB,\n [GL.BLEND_DST_RGB]: dstRGB,\n [GL.BLEND_SRC_ALPHA]: srcAlpha,\n [GL.BLEND_DST_ALPHA]: dstAlpha\n }),\n\n clearColor: (update, r, g, b, a) =>\n update({\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])\n }),\n\n clearDepth: (update, depth) =>\n update({\n [GL.DEPTH_CLEAR_VALUE]: depth\n }),\n\n clearStencil: (update, s) =>\n update({\n [GL.STENCIL_CLEAR_VALUE]: s\n }),\n\n colorMask: (update, r, g, b, a) =>\n update({\n [GL.COLOR_WRITEMASK]: [r, g, b, a]\n }),\n\n cullFace: (update, mode) =>\n update({\n [GL.CULL_FACE_MODE]: mode\n }),\n\n depthFunc: (update, func) =>\n update({\n [GL.DEPTH_FUNC]: func\n }),\n\n depthRange: (update, zNear, zFar) =>\n update({\n [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])\n }),\n\n depthMask: (update, mask) =>\n update({\n [GL.DEPTH_WRITEMASK]: mask\n }),\n\n frontFace: (update, face) =>\n update({\n [GL.FRONT_FACE]: face\n }),\n\n lineWidth: (update, width) =>\n update({\n [GL.LINE_WIDTH]: width\n }),\n\n polygonOffset: (update, factor, units) =>\n update({\n [GL.POLYGON_OFFSET_FACTOR]: factor,\n [GL.POLYGON_OFFSET_UNITS]: units\n }),\n\n sampleCoverage: (update, value, invert) =>\n update({\n [GL.SAMPLE_COVERAGE_VALUE]: value,\n [GL.SAMPLE_COVERAGE_INVERT]: invert\n }),\n\n scissor: (update, x, y, width, height) =>\n update({\n [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])\n }),\n\n stencilMask: (update, mask) =>\n update({\n [GL.STENCIL_WRITEMASK]: mask,\n [GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilMaskSeparate: (update, face, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilFunc: (update, func, ref, mask) =>\n update({\n [GL.STENCIL_FUNC]: func,\n [GL.STENCIL_REF]: ref,\n [GL.STENCIL_VALUE_MASK]: mask,\n [GL.STENCIL_BACK_FUNC]: func,\n [GL.STENCIL_BACK_REF]: ref,\n [GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilFuncSeparate: (update, face, func, ref, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,\n [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,\n [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilOp: (update, fail, zfail, zpass) =>\n update({\n [GL.STENCIL_FAIL]: fail,\n [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_PASS_DEPTH_PASS]: zpass,\n [GL.STENCIL_BACK_FAIL]: fail,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n stencilOpSeparate: (update, face, fail, zfail, zpass) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n viewport: (update, x, y, width, height) =>\n update({\n [GL.VIEWPORT]: [x, y, width, height]\n })\n};\n\n// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT\n\nconst isEnabled = (gl, key) => gl.isEnabled(key);\n\n// Exceptions for any keys that cannot be queried by gl.getParameters\nexport const GL_PARAMETER_GETTERS = {\n [GL.BLEND]: isEnabled,\n [GL.CULL_FACE]: isEnabled,\n [GL.DEPTH_TEST]: isEnabled,\n [GL.DITHER]: isEnabled,\n [GL.POLYGON_OFFSET_FILL]: isEnabled,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,\n [GL.SAMPLE_COVERAGE]: isEnabled,\n [GL.SCISSOR_TEST]: isEnabled,\n [GL.STENCIL_TEST]: isEnabled,\n\n // WebGL 2\n [GL.RASTERIZER_DISCARD]: isEnabled\n};\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","import { useTheme as useThemeWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\nexport default function useTheme() {\n return useThemeWithoutDefault() || defaultTheme;\n}","// Support for listening to context state changes and intercepting state queries\n//\n// NOTE: this system does not handle buffer bindings\nimport {GL_PARAMETER_DEFAULTS, GL_HOOKED_SETTERS} from './webgl-parameter-tables';\nimport {setParameters, getParameters} from './unified-parameter-api';\nimport {assert, deepArrayEqual} from '../utils';\n\n// HELPER FUNCTIONS - INSTALL GET/SET INTERCEPTORS (SPYS) ON THE CONTEXT\n\n// Overrides a WebGLRenderingContext state \"getter\" function\n// to return values directly from cache\nfunction installGetterOverride(gl, functionName) {\n // Get the original function from the WebGLRenderingContext\n const originalGetterFunc = gl[functionName].bind(gl);\n\n // Wrap it with a spy so that we can update our state cache when it gets called\n gl[functionName] = function get(...params) {\n const pname = params[0];\n\n // WebGL limits are not prepopulated in the cache, we must\n // query first time. They are all primitive (single value)\n if (!(pname in gl.state.cache)) {\n gl.state.cache[pname] = originalGetterFunc(...params);\n }\n\n // Optionally call the original function to do a \"hard\" query from the WebGLRenderingContext\n return gl.state.enable\n ? // Call the getter the params so that it can e.g. serve from a cache\n gl.state.cache[pname]\n : // Optionally call the original function to do a \"hard\" query from the WebGLRenderingContext\n originalGetterFunc(...params);\n };\n\n // Set the name of this anonymous function to help in debugging and profiling\n Object.defineProperty(gl[functionName], 'name', {\n value: `${functionName}-from-cache`,\n configurable: false\n });\n}\n\n// Overrides a WebGLRenderingContext state \"setter\" function\n// to call a setter spy before the actual setter. Allows us to keep a cache\n// updated with a copy of the WebGL context state.\nfunction installSetterSpy(gl, functionName, setter) {\n // Get the original function from the WebGLRenderingContext\n const originalSetterFunc = gl[functionName].bind(gl);\n\n // Wrap it with a spy so that we can update our state cache when it gets called\n gl[functionName] = function set(...params) {\n // Update the value\n // Call the setter with the state cache and the params so that it can store the parameters\n const {valueChanged, oldValue} = setter(gl.state._updateCache, ...params);\n\n // Call the original WebGLRenderingContext func to make sure the context actually gets updated\n if (valueChanged) {\n originalSetterFunc(...params);\n }\n\n // Note: if the original function fails to set the value, our state cache will be bad\n // No solution for this at the moment, but assuming that this is unlikely to be a real problem\n // We could call the setter after the originalSetterFunc. Concern is that this would\n // cause different behavior in debug mode, where originalSetterFunc can throw exceptions\n\n return oldValue;\n };\n\n // Set the name of this anonymous function to help in debugging and profiling\n Object.defineProperty(gl[functionName], 'name', {\n value: `${functionName}-to-cache`,\n configurable: false\n });\n}\n\nfunction installProgramSpy(gl) {\n const originalUseProgram = gl.useProgram.bind(gl);\n\n gl.useProgram = function useProgramLuma(handle) {\n if (gl.state.program !== handle) {\n originalUseProgram(handle);\n gl.state.program = handle;\n }\n };\n}\n\n// HELPER CLASS - GLState\n\n/* eslint-disable no-shadow */\nclass GLState {\n constructor(\n gl,\n {\n copyState = false, // Copy cache from params (slow) or initialize from WebGL defaults (fast)\n log = () => {} // Logging function, called when gl parameter change calls are actually issued\n } = {}\n ) {\n this.gl = gl;\n this.program = null;\n this.stateStack = [];\n this.enable = true;\n this.cache = copyState ? getParameters(gl) : Object.assign({}, GL_PARAMETER_DEFAULTS);\n this.log = log;\n\n this._updateCache = this._updateCache.bind(this);\n Object.seal(this);\n }\n\n push(values = {}) {\n this.stateStack.push({});\n }\n\n pop() {\n assert(this.stateStack.length > 0);\n // Use the saved values in the state stack to restore parameters\n const oldValues = this.stateStack[this.stateStack.length - 1];\n setParameters(this.gl, oldValues, this.cache);\n // Don't pop until we have reset parameters (to make sure other \"stack frames\" are not affected)\n this.stateStack.pop();\n }\n\n // interceptor for context set functions - update our cache and our stack\n // values (Object) - the key values for this setter\n _updateCache(values) {\n let valueChanged = false;\n let oldValue; // = undefined\n\n const oldValues = this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1];\n\n for (const key in values) {\n assert(key !== undefined);\n const value = values[key];\n const cached = this.cache[key];\n // Check that value hasn't already been shadowed\n if (!deepArrayEqual(value, cached)) {\n valueChanged = true;\n oldValue = cached;\n\n // First, save current value being shadowed\n // If a state stack frame is active, save the current parameter values for pop\n // but first check that value hasn't already been shadowed and saved\n if (oldValues && !(key in oldValues)) {\n oldValues[key] = cached;\n }\n\n // Save current value being shadowed\n this.cache[key] = value;\n }\n }\n\n return {valueChanged, oldValue};\n }\n}\n\n// PUBLIC API\n\n/**\n * Initialize WebGL state caching on a context\n * can be called multiple times to enable/disable\n * @param {WebGLRenderingContext} - context\n */\n// After calling this function, context state will be cached\n// gl.state.push() and gl.state.pop() will be available for saving,\n// temporarily modifying, and then restoring state.\nexport default function trackContextState(gl, {enable = true, copyState} = {}) {\n assert(copyState !== undefined);\n if (!gl.state) {\n /* global window, global */\n const global_ = typeof global !== 'undefined' ? global : window;\n if (global_.polyfillContext) {\n global_.polyfillContext(gl);\n }\n\n // Create a state cache\n gl.state = new GLState(gl, {copyState, enable});\n\n installProgramSpy(gl);\n\n // intercept all setter functions in the table\n for (const key in GL_HOOKED_SETTERS) {\n const setter = GL_HOOKED_SETTERS[key];\n installSetterSpy(gl, key, setter);\n }\n\n // intercept all getter functions in the table\n installGetterOverride(gl, 'getParameter');\n installGetterOverride(gl, 'isEnabled');\n }\n\n gl.state.enable = enable;\n\n return gl;\n}\n\nexport function pushContextState(gl) {\n if (!gl.state) {\n trackContextState(gl, {copyState: false});\n }\n gl.state.push();\n}\n\nexport function popContextState(gl) {\n assert(gl.state);\n gl.state.pop();\n}\n","import createMuiTheme from './createMuiTheme';\nvar defaultTheme = createMuiTheme();\nexport default defaultTheme;","import GL from '@luma.gl/constants';\nimport {isWebGL2, log} from '@luma.gl/gltools';\n\nimport Resource from './resource';\nimport Texture2D from './texture-2d';\nimport Renderbuffer from './renderbuffer';\nimport {clear, clearBuffer} from './clear';\nimport {copyToDataUrl} from './copy-and-blit.js';\n\nimport {getFeatures} from '../features';\n\nimport {assertWebGL2Context, getKey} from '../webgl-utils';\n\nimport {assert} from '../utils';\n\nconst ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';\n\nexport default class Framebuffer extends Resource {\n static isSupported(\n gl,\n {\n colorBufferFloat, // Whether floating point textures can be rendered and read\n colorBufferHalfFloat // Whether half float textures can be rendered and read\n } = {}\n ) {\n let supported = true;\n\n if (colorBufferFloat) {\n supported = Boolean(\n // WebGL 2\n gl.getExtension('EXT_color_buffer_float') ||\n // WebGL 1, not exposed on all platforms\n gl.getExtension('WEBGL_color_buffer_float') ||\n // WebGL 1, implicitly enables float render targets https://www.khronos.org/registry/webgl/extensions/OES_texture_float/\n gl.getExtension('OES_texture_float')\n );\n }\n\n if (colorBufferHalfFloat) {\n supported =\n supported &&\n Boolean(\n // WebGL 2\n gl.getExtension('EXT_color_buffer_float') ||\n // WebGL 1\n gl.getExtension('EXT_color_buffer_half_float')\n );\n }\n\n return supported;\n }\n\n // Create a Framebuffer wrapper for the default framebuffer (target === null)\n static getDefaultFramebuffer(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultFramebuffer =\n gl.luma.defaultFramebuffer ||\n new Framebuffer(gl, {\n id: 'default-framebuffer',\n handle: null,\n attachments: {}\n });\n // TODO - can we query for and get a handle to the GL.FRONT renderbuffer?\n return gl.luma.defaultFramebuffer;\n }\n\n get MAX_COLOR_ATTACHMENTS() {\n return this.gl.getParameter(this.gl.MAX_COLOR_ATTACHMENTS);\n }\n\n get MAX_DRAW_BUFFERS() {\n return this.gl.getParameter(this.gl.MAX_DRAW_BUFFERS);\n }\n\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n // Public members\n this.width = null;\n this.height = null;\n this.attachments = {};\n this.readBuffer = GL.COLOR_ATTACHMENT0;\n this.drawBuffers = [GL.COLOR_ATTACHMENT0];\n this.ownResources = [];\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n get color() {\n return this.attachments[GL.COLOR_ATTACHMENT0] || null;\n }\n\n get texture() {\n return this.attachments[GL.COLOR_ATTACHMENT0] || null;\n }\n\n get depth() {\n return (\n this.attachments[GL.DEPTH_ATTACHMENT] || this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] || null\n );\n }\n\n get stencil() {\n return (\n this.attachments[GL.STENCIL_ATTACHMENT] ||\n this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] ||\n null\n );\n }\n\n initialize({\n width = 1,\n height = 1,\n attachments = null,\n color = true,\n depth = true,\n stencil = false,\n check = true,\n readBuffer,\n drawBuffers\n }) {\n assert(width >= 0 && height >= 0, 'Width and height need to be integers');\n\n // Store actual width and height for diffing\n this.width = width;\n this.height = height;\n\n // Resize any provided attachments - note that resize only resizes if needed\n // Note: A framebuffer has no separate size, it is defined by its attachments (which must agree)\n if (attachments) {\n for (const attachment in attachments) {\n const target = attachments[attachment];\n const object = Array.isArray(target) ? target[0] : target;\n object.resize({width, height});\n }\n } else {\n // Create any requested default attachments\n attachments = this._createDefaultAttachments(color, depth, stencil, width, height);\n }\n\n this.update({clearAttachments: true, attachments, readBuffer, drawBuffers});\n\n // Checks that framebuffer was properly set up, if not, throws an explanatory error\n if (attachments && check) {\n this.checkStatus();\n }\n }\n\n delete() {\n for (const resource of this.ownResources) {\n resource.delete();\n }\n super.delete();\n }\n update({\n attachments = {},\n readBuffer,\n drawBuffers,\n clearAttachments = false,\n resizeAttachments = true\n }) {\n this.attach(attachments, {clearAttachments, resizeAttachments});\n\n const {gl} = this;\n // Multiple render target support, set read buffer and draw buffers\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n if (readBuffer) {\n this._setReadBuffer(readBuffer);\n }\n if (drawBuffers) {\n this._setDrawBuffers(drawBuffers);\n }\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n return this;\n }\n\n // Attachment resize is expected to be a noop if size is same\n resize({width, height} = {}) {\n // for default framebuffer, just update the stored size\n if (this.handle === null) {\n assert(width === undefined && height === undefined);\n this.width = this.gl.drawingBufferWidth;\n this.height = this.gl.drawingBufferHeight;\n return this;\n }\n\n if (width === undefined) {\n width = this.gl.drawingBufferWidth;\n }\n if (height === undefined) {\n height = this.gl.drawingBufferHeight;\n }\n\n if (width !== this.width && height !== this.height) {\n log.log(2, `Resizing framebuffer ${this.id} to ${width}x${height}`)();\n }\n for (const attachmentPoint in this.attachments) {\n this.attachments[attachmentPoint].resize({width, height});\n }\n this.width = width;\n this.height = height;\n return this;\n }\n\n // Attach from a map of attachments\n attach(attachments, {clearAttachments = false, resizeAttachments = true} = {}) {\n const newAttachments = {};\n\n // Any current attachments need to be removed, add null values to map\n if (clearAttachments) {\n Object.keys(this.attachments).forEach(key => {\n newAttachments[key] = null;\n });\n }\n\n // Overlay the new attachments\n Object.assign(newAttachments, attachments);\n\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n // Walk the attachments\n for (const key in newAttachments) {\n // Ensure key is not undefined\n assert(key !== undefined, 'Misspelled framebuffer binding point?');\n\n const attachment = Number(key);\n\n const descriptor = newAttachments[attachment];\n let object = descriptor;\n if (!object) {\n this._unattach(attachment);\n } else if (object instanceof Renderbuffer) {\n this._attachRenderbuffer({attachment, renderbuffer: object});\n } else if (Array.isArray(descriptor)) {\n const [texture, layer = 0, level = 0] = descriptor;\n object = texture;\n this._attachTexture({attachment, texture, layer, level});\n } else {\n this._attachTexture({attachment, texture: object, layer: 0, level: 0});\n }\n\n // Resize objects\n if (resizeAttachments && object) {\n object.resize({width: this.width, height: this.height});\n }\n }\n\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n // Assign to attachments and remove any nulls to get a clean attachment map\n Object.assign(this.attachments, attachments);\n Object.keys(this.attachments)\n .filter(key => !this.attachments[key])\n .forEach(key => {\n delete this.attachments[key];\n });\n }\n\n checkStatus() {\n const {gl} = this;\n const status = this.getStatus();\n if (status !== gl.FRAMEBUFFER_COMPLETE) {\n throw new Error(_getFrameBufferStatus(status));\n }\n return this;\n }\n\n getStatus() {\n const {gl} = this;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n return status;\n }\n\n clear({color, depth, stencil, drawBuffers = []} = {}) {\n // Bind framebuffer and delegate to global clear functions\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n if (color || depth || stencil) {\n clear(this.gl, {color, depth, stencil});\n }\n\n drawBuffers.forEach((value, drawBuffer) => {\n clearBuffer({drawBuffer, value});\n });\n\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n return this;\n }\n\n // NOTE: Slow requires roundtrip to GPU\n // App can provide pixelArray or have it auto allocated by this method\n // @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n // newly allocated by this method unless provided by app.\n readPixels(opts = {}) {\n log.error(\n 'Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)'\n )();\n return null;\n }\n\n // Reads data into provided buffer object asynchronously\n // This function doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n readPixelsToBuffer(opts = {}) {\n log.error(\n 'Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)'\n )();\n return null;\n }\n\n // Reads pixels as a dataUrl\n copyToDataUrl(opts = {}) {\n log.error(\n 'Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)'\n )();\n return null;\n }\n\n // Reads pixels into an HTML Image\n copyToImage(opts = {}) {\n log.error('Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)')();\n return null;\n }\n\n // copyToFramebuffer({width, height}) {\n // const scaleX = width / this.width;\n // const scaleY = height / this.height;\n // const scale = Math.min(scaleX, scaleY);\n // width = width * scale;\n // height = height * scale;\n // const scaledFramebuffer = new Framebuffer(this.gl, {width, height});\n // this.blit();\n // }\n\n // Copy a rectangle from a framebuffer attachment into a texture (at an offset)\n // NOTE: assumes texture has enough storage allocated\n // eslint-disable-next-line complexity\n copyToTexture(opts = {}) {\n log.error(\n 'Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n // WEBGL2 INTERFACE\n\n // Copies a rectangle of pixels between framebuffers\n // eslint-disable-next-line complexity\n blit(opts = {}) {\n log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();\n return null;\n }\n\n // signals to the GL that it need not preserve all pixels of a specified region of the framebuffer\n invalidate({attachments = [], x = 0, y = 0, width, height}) {\n const {gl} = this;\n assertWebGL2Context(gl);\n const prevHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, this.handle);\n const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;\n if (invalidateAll) {\n gl.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments);\n } else {\n gl.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments, x, y, width, height);\n }\n gl.bindFramebuffer(GL.READ_FRAMEBUFFER, prevHandle);\n return this;\n }\n\n // Return the value for `pname` of the specified attachment.\n // The type returned is the type of the requested pname\n getAttachmentParameter(attachment, pname, keys) {\n let value = this._getAttachmentParameterFallback(pname);\n if (value === null) {\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n value = this.gl.getFramebufferAttachmentParameter(GL.FRAMEBUFFER, attachment, pname);\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);\n }\n if (keys && value > 1000) {\n value = getKey(this.gl, value);\n }\n return value;\n }\n\n getAttachmentParameters(\n attachment = GL.COLOR_ATTACHMENT0,\n keys,\n parameters = this.constructor.ATTACHMENT_PARAMETERS || []\n ) {\n const values = {};\n for (const pname of parameters) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getAttachmentParameter(attachment, pname, keys);\n }\n return values;\n }\n\n getParameters(keys = true) {\n const attachments = Object.keys(this.attachments);\n // if (this === this.gl.luma.defaultFramebuffer) {\n // attachments = [GL.COLOR_ATTACHMENT0, GL.DEPTH_STENCIL_ATTACHMENT];\n // }\n const parameters = {};\n for (const attachmentName of attachments) {\n const attachment = Number(attachmentName);\n const key = keys ? getKey(this.gl, attachment) : attachment;\n parameters[key] = this.getAttachmentParameters(attachment, keys);\n }\n return parameters;\n }\n\n // DEBUG\n\n // Note: Will only work when called in an event handler\n show() {\n /* global window */\n if (typeof window !== 'undefined') {\n window.open(copyToDataUrl(this), 'luma-debug-texture');\n }\n return this;\n }\n\n log(logLevel = 0, message = '') {\n if (logLevel > log.level || typeof window === 'undefined') {\n return this;\n }\n message = message || `Framebuffer ${this.id}`;\n const image = copyToDataUrl(this, {maxHeight: 100});\n log.image({logLevel, message, image}, message)();\n return this;\n }\n\n // WEBGL INTERFACE\n bind({target = GL.FRAMEBUFFER} = {}) {\n this.gl.bindFramebuffer(target, this.handle);\n return this;\n }\n\n unbind({target = GL.FRAMEBUFFER} = {}) {\n this.gl.bindFramebuffer(target, null);\n return this;\n }\n\n // PRIVATE METHODS\n\n _createDefaultAttachments(color, depth, stencil, width, height) {\n let defaultAttachments = null;\n\n // Add a color buffer if requested and not supplied\n if (color) {\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.COLOR_ATTACHMENT0] = new Texture2D(this.gl, {\n id: `${this.id}-color0`,\n pixels: null, // reserves texture memory, but texels are undefined\n format: GL.RGBA,\n type: GL.UNSIGNED_BYTE,\n width,\n height,\n // Note: Mipmapping can be disabled by texture resource when we resize the texture\n // to a non-power-of-two dimenstion (NPOT texture) under WebGL1. To have consistant\n // behavior we always disable mipmaps.\n mipmaps: false,\n // Set MIN and MAG filtering parameters so mipmaps are not used in sampling.\n // Use LINEAR so subpixel algos like fxaa work.\n // Set WRAP modes that support NPOT textures too.\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n }\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.COLOR_ATTACHMENT0]);\n }\n\n if (depth && stencil) {\n // TODO - handle separate stencil\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT] = new Renderbuffer(this.gl, {\n id: `${this.id}-depth-stencil`,\n format: GL.DEPTH24_STENCIL8,\n width,\n height: 111\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT]);\n // TODO - optional texture\n // new Texture2D(this.gl, {\n // id: `${this.id}-depth-stencil`,\n // format: GL.DEPTH24_STENCIL8,\n // dataFormat: GL.DEPTH_STENCIL,\n // type: GL.UNSIGNED_INT_24_8,\n // width,\n // height,\n // mipmaps: false\n // });\n } else if (depth) {\n // Add a depth buffer if requested and not supplied\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.DEPTH_ATTACHMENT] = new Renderbuffer(this.gl, {\n id: `${this.id}-depth`,\n format: GL.DEPTH_COMPONENT16,\n width,\n height\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.DEPTH_ATTACHMENT]);\n } else if (stencil) {\n // TODO - handle separate stencil\n assert(false);\n }\n\n return defaultAttachments;\n }\n\n _unattach(attachment) {\n const oldAttachment = this.attachments[attachment];\n if (!oldAttachment) {\n return;\n }\n if (oldAttachment instanceof Renderbuffer) {\n // render buffer\n this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, null);\n } else {\n // Must be a texture attachment\n this.gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, null, 0);\n }\n delete this.attachments[attachment];\n }\n\n _attachRenderbuffer({attachment = GL.COLOR_ATTACHMENT0, renderbuffer}) {\n const {gl} = this;\n // TODO - is the bind needed?\n // gl.bindRenderbuffer(GL.RENDERBUFFER, renderbuffer.handle);\n gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);\n // TODO - is the unbind needed?\n // gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n\n this.attachments[attachment] = renderbuffer;\n }\n\n // layer = 0 - index into Texture2DArray and Texture3D or face for `TextureCubeMap`\n // level = 0 - mipmapLevel (must be 0 in WebGL1)\n _attachTexture({attachment = GL.COLOR_ATTACHMENT0, texture, layer, level}) {\n const {gl} = this;\n gl.bindTexture(texture.target, texture.handle);\n\n switch (texture.target) {\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n gl.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);\n break;\n\n case GL.TEXTURE_CUBE_MAP:\n // layer must be a cubemap face (or if index, converted to cube map face)\n const face = mapIndexToCubeMapFace(layer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);\n break;\n\n case GL.TEXTURE_2D:\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);\n break;\n\n default:\n assert(false, 'Illegal texture type');\n }\n\n gl.bindTexture(texture.target, null);\n this.attachments[attachment] = texture;\n }\n\n // Expects framebuffer to be bound\n _setReadBuffer(readBuffer) {\n const {gl} = this;\n if (isWebGL2(gl)) {\n gl.readBuffer(readBuffer);\n } else {\n // Setting to color attachment 0 is a noop, so allow it in WebGL1\n assert(\n readBuffer === GL.COLOR_ATTACHMENT0 || readBuffer === GL.BACK,\n ERR_MULTIPLE_RENDERTARGETS\n );\n }\n this.readBuffer = readBuffer;\n }\n\n // Expects framebuffer to be bound\n _setDrawBuffers(drawBuffers) {\n const {gl} = this;\n if (isWebGL2(gl)) {\n gl.drawBuffers(drawBuffers);\n } else {\n const ext = gl.getExtension('WEBGL.draw_buffers');\n if (ext) {\n ext.drawBuffersWEBGL(drawBuffers);\n } else {\n // Setting a single draw buffer to color attachment 0 is a noop, allow in WebGL1\n assert(\n drawBuffers.length === 1 &&\n (drawBuffers[0] === GL.COLOR_ATTACHMENT0 || drawBuffers[0] === GL.BACK),\n ERR_MULTIPLE_RENDERTARGETS\n );\n }\n }\n this.drawBuffers = drawBuffers;\n }\n\n // Attempt to provide workable defaults for WebGL2 symbols under WebGL1\n // null means OK to query\n // TODO - move to webgl1 polyfills\n /* eslint-disable complexity */\n _getAttachmentParameterFallback(pname) {\n const caps = getFeatures(this.gl);\n\n switch (pname) {\n case GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: // GLint\n return !caps.WEBGL2 ? 0 : null;\n case GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: // GLint\n return !caps.WEBGL2 ? 8 : null;\n case GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: // GLenum\n return !caps.WEBGL2 ? GL.UNSIGNED_INT : null;\n case GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:\n return !caps.WEBGL2 && !caps.EXT_sRGB ? GL.LINEAR : null;\n default:\n return null;\n }\n }\n /* eslint-enable complexity */\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createFramebuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteFramebuffer(this.handle);\n }\n\n _bindHandle(handle) {\n return this.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n }\n}\n\n// PUBLIC METHODS\n\n// Map an index to a cube map face constant\nfunction mapIndexToCubeMapFace(layer) {\n // TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)\n // if smaller assume layer is index, otherwise assume it is already a cube map face constant\n return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;\n}\n\n// Helper METHODS\n// Get a string describing the framebuffer error if installed\nfunction _getFrameBufferStatus(status) {\n // Use error mapping if installed\n const STATUS = Framebuffer.STATUS || {};\n return STATUS[status] || `Framebuffer error ${status}`;\n}\n\nexport const FRAMEBUFFER_ATTACHMENT_PARAMETERS = [\n GL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, // WebGLRenderbuffer or WebGLTexture\n GL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, // GL.RENDERBUFFER, GL.TEXTURE, GL.NONE\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, // GL.TEXTURE_CUBE_MAP_POSITIVE_X, etc.\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, // GLint\n // EXT_sRGB or WebGL2\n GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, // GL.LINEAR, GL.SRBG\n // WebGL2\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE // GLint\n // GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE\n // GL.FLOAT, GL.INT, GL.UNSIGNED_INT, GL.SIGNED_NORMALIZED, OR GL.UNSIGNED_NORMALIZED.\n];\n\nFramebuffer.ATTACHMENT_PARAMETERS = FRAMEBUFFER_ATTACHMENT_PARAMETERS;\n","function noop() {}\n\nconst DEFAULT_SETTINGS = {\n onStart: noop,\n onUpdate: noop,\n onInterrupt: noop,\n onEnd: noop\n};\n\nexport default class Transition {\n /**\n * @params timeline {Timeline}\n */\n constructor(timeline) {\n this._inProgress = false;\n this._handle = null;\n this.timeline = timeline;\n\n // Defaults\n this.settings = {};\n }\n\n /* Public API */\n get inProgress() {\n return this._inProgress;\n }\n\n /**\n * (re)start this transition.\n * @params props {object} - optional overriding props. see constructor\n */\n start(props) {\n this.cancel();\n this.settings = Object.assign({}, DEFAULT_SETTINGS, props);\n this._inProgress = true;\n\n const {timeline, settings} = this;\n this._handle = timeline.addChannel({\n delay: timeline.getTime(),\n duration: settings.duration\n });\n settings.onStart(this);\n }\n\n /**\n * end this transition if it is in progress.\n */\n end() {\n if (this._inProgress) {\n this.timeline.removeChannel(this._handle);\n this._handle = null;\n this._inProgress = false;\n this.settings.onEnd(this);\n }\n }\n\n /**\n * cancel this transition if it is in progress.\n */\n cancel() {\n if (this._inProgress) {\n this.settings.onInterrupt(this);\n this.timeline.removeChannel(this._handle);\n this._handle = null;\n this._inProgress = false;\n }\n }\n\n /**\n * update this transition. Returns `true` if updated.\n */\n update() {\n if (!this._inProgress) {\n return false;\n }\n\n this.time = this.timeline.getTime(this._handle);\n // Call subclass method\n this._onUpdate();\n // Call user callback\n this.settings.onUpdate(this);\n\n // This only works if `settings.duration` is set\n // Spring transition must call `end` manually\n if (this.timeline.isFinished(this._handle)) {\n this.end();\n }\n return true;\n }\n\n /* Private API */\n\n _onUpdate() {\n // for subclass override\n }\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import React, { createFactory, Component, createElement } from 'react';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport shallowEqual from 'fbjs/lib/shallowEqual';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { polyfill } from 'react-lifecycles-compat';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { createChangeEmitter } from 'change-emitter';\nimport $$observable from 'symbol-observable';\n\nvar setStatic = function setStatic(key, value) {\n return function (BaseComponent) {\n /* eslint-disable no-param-reassign */\n BaseComponent[key] = value;\n /* eslint-enable no-param-reassign */\n\n return BaseComponent;\n };\n};\n\nvar setDisplayName = function setDisplayName(displayName) {\n return setStatic('displayName', displayName);\n};\n\nvar getDisplayName = function getDisplayName(Component$$1) {\n if (typeof Component$$1 === 'string') {\n return Component$$1;\n }\n\n if (!Component$$1) {\n return undefined;\n }\n\n return Component$$1.displayName || Component$$1.name || 'Component';\n};\n\nvar wrapDisplayName = function wrapDisplayName(BaseComponent, hocName) {\n return hocName + \"(\" + getDisplayName(BaseComponent) + \")\";\n};\n\nvar mapProps = function mapProps(propsMapper) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var MapProps = function MapProps(props) {\n return factory(propsMapper(props));\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'mapProps'))(MapProps);\n }\n\n return MapProps;\n };\n};\n\nvar withProps = function withProps(input) {\n var hoc = mapProps(function (props) {\n return _extends({}, props, typeof input === 'function' ? input(props) : input);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withProps'))(hoc(BaseComponent));\n };\n }\n\n return hoc;\n};\n\nvar pick = function pick(obj, keys) {\n var result = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (obj.hasOwnProperty(key)) {\n result[key] = obj[key];\n }\n }\n\n return result;\n};\n\nvar withPropsOnChange = function withPropsOnChange(shouldMapOrKeys, propsMapper) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n var shouldMap = typeof shouldMapOrKeys === 'function' ? shouldMapOrKeys : function (props, nextProps) {\n return !shallowEqual(pick(props, shouldMapOrKeys), pick(nextProps, shouldMapOrKeys));\n };\n\n var WithPropsOnChange =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithPropsOnChange, _Component);\n\n function WithPropsOnChange() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n computedProps: propsMapper(_this.props),\n prevProps: _this.props\n };\n return _this;\n }\n\n WithPropsOnChange.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n if (shouldMap(prevState.prevProps, nextProps)) {\n return {\n computedProps: propsMapper(nextProps),\n prevProps: nextProps\n };\n }\n\n return {\n prevProps: nextProps\n };\n };\n\n var _proto = WithPropsOnChange.prototype;\n\n _proto.render = function render() {\n return factory(_extends({}, this.props, this.state.computedProps));\n };\n\n return WithPropsOnChange;\n }(Component);\n\n polyfill(WithPropsOnChange);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withPropsOnChange'))(WithPropsOnChange);\n }\n\n return WithPropsOnChange;\n };\n};\n\nvar mapValues = function mapValues(obj, func) {\n var result = {};\n /* eslint-disable no-restricted-syntax */\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[key] = func(obj[key], key);\n }\n }\n /* eslint-enable no-restricted-syntax */\n\n\n return result;\n};\n\nvar withHandlers = function withHandlers(handlers) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithHandlers =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithHandlers, _Component);\n\n function WithHandlers() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(_args)) || this;\n _this.handlers = mapValues(typeof handlers === 'function' ? handlers(_this.props) : handlers, function (createHandler) {\n return function () {\n var handler = createHandler(_this.props);\n\n if (process.env.NODE_ENV !== 'production' && typeof handler !== 'function') {\n console.error( // eslint-disable-line no-console\n 'withHandlers(): Expected a map of higher-order functions. ' + 'Refer to the docs for more info.');\n }\n\n return handler.apply(void 0, arguments);\n };\n });\n return _this;\n }\n\n var _proto = WithHandlers.prototype;\n\n _proto.render = function render() {\n return factory(_extends({}, this.props, this.handlers));\n };\n\n return WithHandlers;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withHandlers'))(WithHandlers);\n }\n\n return WithHandlers;\n };\n};\n\nvar defaultProps = function defaultProps(props) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var DefaultProps = function DefaultProps(ownerProps) {\n return factory(ownerProps);\n };\n\n DefaultProps.defaultProps = props;\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'defaultProps'))(DefaultProps);\n }\n\n return DefaultProps;\n };\n};\n\nvar omit = function omit(obj, keys) {\n var rest = _extends({}, obj);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (rest.hasOwnProperty(key)) {\n delete rest[key];\n }\n }\n\n return rest;\n};\n\nvar renameProp = function renameProp(oldName, newName) {\n var hoc = mapProps(function (props) {\n var _extends2;\n\n return _extends({}, omit(props, [oldName]), (_extends2 = {}, _extends2[newName] = props[oldName], _extends2));\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'renameProp'))(hoc(BaseComponent));\n };\n }\n\n return hoc;\n};\n\nvar keys = Object.keys;\n\nvar mapKeys = function mapKeys(obj, func) {\n return keys(obj).reduce(function (result, key) {\n var val = obj[key];\n /* eslint-disable no-param-reassign */\n\n result[func(val, key)] = val;\n /* eslint-enable no-param-reassign */\n\n return result;\n }, {});\n};\n\nvar renameProps = function renameProps(nameMap) {\n var hoc = mapProps(function (props) {\n return _extends({}, omit(props, keys(nameMap)), mapKeys(pick(props, keys(nameMap)), function (_, oldName) {\n return nameMap[oldName];\n }));\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'renameProps'))(hoc(BaseComponent));\n };\n }\n\n return hoc;\n};\n\nvar flattenProp = function flattenProp(propName) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var FlattenProp = function FlattenProp(props) {\n return factory(_extends({}, props, props[propName]));\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'flattenProp'))(FlattenProp);\n }\n\n return FlattenProp;\n };\n};\n\nvar withState = function withState(stateName, stateUpdaterName, initialState) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithState =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithState, _Component);\n\n function WithState() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n stateValue: typeof initialState === 'function' ? initialState(_this.props) : initialState\n };\n\n _this.updateStateValue = function (updateFn, callback) {\n return _this.setState(function (_ref) {\n var stateValue = _ref.stateValue;\n return {\n stateValue: typeof updateFn === 'function' ? updateFn(stateValue) : updateFn\n };\n }, callback);\n };\n\n return _this;\n }\n\n var _proto = WithState.prototype;\n\n _proto.render = function render() {\n var _extends2;\n\n return factory(_extends({}, this.props, (_extends2 = {}, _extends2[stateName] = this.state.stateValue, _extends2[stateUpdaterName] = this.updateStateValue, _extends2)));\n };\n\n return WithState;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withState'))(WithState);\n }\n\n return WithState;\n };\n};\n\nvar withStateHandlers = function withStateHandlers(initialState, stateUpdaters) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithStateHandlers =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithStateHandlers, _Component);\n\n function WithStateHandlers() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(_args)) || this;\n _this.state = typeof initialState === 'function' ? initialState(_this.props) : initialState;\n _this.stateUpdaters = mapValues(stateUpdaters, function (handler) {\n return function (mayBeEvent) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n // Having that functional form of setState can be called async\n // we need to persist SyntheticEvent\n if (mayBeEvent && typeof mayBeEvent.persist === 'function') {\n mayBeEvent.persist();\n }\n\n _this.setState(function (state, props) {\n return handler(state, props).apply(void 0, [mayBeEvent].concat(args));\n });\n };\n });\n return _this;\n }\n\n var _proto = WithStateHandlers.prototype;\n\n _proto.render = function render() {\n return factory(_extends({}, this.props, this.state, this.stateUpdaters));\n };\n\n return WithStateHandlers;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withStateHandlers'))(WithStateHandlers);\n }\n\n return WithStateHandlers;\n };\n};\n\nvar noop = function noop() {};\n\nvar withReducer = function withReducer(stateName, dispatchName, reducer, initialState) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithReducer =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithReducer, _Component);\n\n function WithReducer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n stateValue: _this.initializeStateValue()\n };\n\n _this.dispatch = function (action, callback) {\n if (callback === void 0) {\n callback = noop;\n }\n\n return _this.setState(function (_ref) {\n var stateValue = _ref.stateValue;\n return {\n stateValue: reducer(stateValue, action)\n };\n }, function () {\n return callback(_this.state.stateValue);\n });\n };\n\n return _this;\n }\n\n var _proto = WithReducer.prototype;\n\n _proto.initializeStateValue = function initializeStateValue() {\n if (initialState !== undefined) {\n return typeof initialState === 'function' ? initialState(this.props) : initialState;\n }\n\n return reducer(undefined, {\n type: '@@recompose/INIT'\n });\n };\n\n _proto.render = function render() {\n var _extends2;\n\n return factory(_extends({}, this.props, (_extends2 = {}, _extends2[stateName] = this.state.stateValue, _extends2[dispatchName] = this.dispatch, _extends2)));\n };\n\n return WithReducer;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withReducer'))(WithReducer);\n }\n\n return WithReducer;\n };\n};\n\nvar identity = function identity(Component$$1) {\n return Component$$1;\n};\n\nvar branch = function branch(test, left, right) {\n if (right === void 0) {\n right = identity;\n }\n\n return function (BaseComponent) {\n var leftFactory;\n var rightFactory;\n\n var Branch = function Branch(props) {\n if (test(props)) {\n leftFactory = leftFactory || createFactory(left(BaseComponent));\n return leftFactory(props);\n }\n\n rightFactory = rightFactory || createFactory(right(BaseComponent));\n return rightFactory(props);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'branch'))(Branch);\n }\n\n return Branch;\n };\n};\n\nvar renderComponent = function renderComponent(Component$$1) {\n return function (_) {\n var factory = createFactory(Component$$1);\n\n var RenderComponent = function RenderComponent(props) {\n return factory(props);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n RenderComponent.displayName = wrapDisplayName(Component$$1, 'renderComponent');\n }\n\n return RenderComponent;\n };\n};\n\nvar Nothing =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Nothing, _Component);\n\n function Nothing() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = Nothing.prototype;\n\n _proto.render = function render() {\n return null;\n };\n\n return Nothing;\n}(Component);\n\nvar renderNothing = function renderNothing(_) {\n return Nothing;\n};\n\nvar shouldUpdate = function shouldUpdate(test) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var ShouldUpdate =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(ShouldUpdate, _Component);\n\n function ShouldUpdate() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = ShouldUpdate.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return test(this.props, nextProps);\n };\n\n _proto.render = function render() {\n return factory(this.props);\n };\n\n return ShouldUpdate;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'shouldUpdate'))(ShouldUpdate);\n }\n\n return ShouldUpdate;\n };\n};\n\nvar pure = function pure(BaseComponent) {\n var hoc = shouldUpdate(function (props, nextProps) {\n return !shallowEqual(props, nextProps);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'pure'))(hoc(BaseComponent));\n }\n\n return hoc(BaseComponent);\n};\n\nvar onlyUpdateForKeys = function onlyUpdateForKeys(propKeys) {\n var hoc = shouldUpdate(function (props, nextProps) {\n return !shallowEqual(pick(nextProps, propKeys), pick(props, propKeys));\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'onlyUpdateForKeys'))(hoc(BaseComponent));\n };\n }\n\n return hoc;\n};\n\nvar onlyUpdateForPropTypes = function onlyUpdateForPropTypes(BaseComponent) {\n var propTypes = BaseComponent.propTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!propTypes) {\n /* eslint-disable */\n console.error('A component without any `propTypes` was passed to ' + '`onlyUpdateForPropTypes()`. Check the implementation of the ' + (\"component with display name \\\"\" + getDisplayName(BaseComponent) + \"\\\".\"));\n /* eslint-enable */\n }\n }\n\n var propKeys = Object.keys(propTypes || {});\n var OnlyUpdateForPropTypes = onlyUpdateForKeys(propKeys)(BaseComponent);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'onlyUpdateForPropTypes'))(OnlyUpdateForPropTypes);\n }\n\n return OnlyUpdateForPropTypes;\n};\n\nvar withContext = function withContext(childContextTypes, getChildContext) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithContext =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithContext, _Component);\n\n function WithContext() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.getChildContext = function () {\n return getChildContext(_this.props);\n };\n\n return _this;\n }\n\n var _proto = WithContext.prototype;\n\n _proto.render = function render() {\n return factory(this.props);\n };\n\n return WithContext;\n }(Component);\n\n WithContext.childContextTypes = childContextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withContext'))(WithContext);\n }\n\n return WithContext;\n };\n};\n\nvar getContext = function getContext(contextTypes) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var GetContext = function GetContext(ownerProps, context) {\n return factory(_extends({}, ownerProps, context));\n };\n\n GetContext.contextTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'getContext'))(GetContext);\n }\n\n return GetContext;\n };\n};\n\nvar lifecycle = function lifecycle(spec) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n if (process.env.NODE_ENV !== 'production' && spec.hasOwnProperty('render')) {\n console.error('lifecycle() does not support the render method; its behavior is to ' + 'pass all props and state to the base component.');\n }\n\n var Lifecycle =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Lifecycle, _Component);\n\n function Lifecycle() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = Lifecycle.prototype;\n\n _proto.render = function render() {\n return factory(_extends({}, this.props, this.state));\n };\n\n return Lifecycle;\n }(Component);\n\n Object.keys(spec).forEach(function (hook) {\n return Lifecycle.prototype[hook] = spec[hook];\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'lifecycle'))(Lifecycle);\n }\n\n return Lifecycle;\n };\n};\n\nvar isClassComponent = function isClassComponent(Component$$1) {\n return Boolean(Component$$1 && Component$$1.prototype && typeof Component$$1.prototype.render === 'function');\n};\n\nvar toClass = function toClass(baseComponent) {\n var _class, _temp;\n\n return isClassComponent(baseComponent) ? baseComponent : (_temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(ToClass, _Component);\n\n function ToClass() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = ToClass.prototype;\n\n _proto.render = function render() {\n if (typeof baseComponent === 'string') {\n return React.createElement(baseComponent, this.props);\n }\n\n return baseComponent(this.props, this.context);\n };\n\n return ToClass;\n }(Component), _class.displayName = getDisplayName(baseComponent), _class.propTypes = baseComponent.propTypes, _class.contextTypes = baseComponent.contextTypes, _class.defaultProps = baseComponent.defaultProps, _temp);\n};\n\nfunction toRenderProps(hoc) {\n var RenderPropsComponent = function RenderPropsComponent(props) {\n return props.children(props);\n };\n\n return hoc(RenderPropsComponent);\n}\n\nvar fromRenderProps = function fromRenderProps(RenderPropsComponent, propsMapper, renderPropName) {\n if (renderPropName === void 0) {\n renderPropName = 'children';\n }\n\n return function (BaseComponent) {\n var baseFactory = React.createFactory(BaseComponent);\n var renderPropsFactory = React.createFactory(RenderPropsComponent);\n\n var FromRenderProps = function FromRenderProps(ownerProps) {\n var _renderPropsFactory;\n\n return renderPropsFactory((_renderPropsFactory = {}, _renderPropsFactory[renderPropName] = function () {\n return baseFactory(_extends({}, ownerProps, propsMapper.apply(void 0, arguments)));\n }, _renderPropsFactory));\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'fromRenderProps'))(FromRenderProps);\n }\n\n return FromRenderProps;\n };\n};\n\nvar setPropTypes = function setPropTypes(propTypes) {\n return setStatic('propTypes', propTypes);\n};\n\nvar compose = function compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n }, function (arg) {\n return arg;\n });\n};\n\nvar createSink = function createSink(callback) {\n var Sink =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Sink, _Component);\n\n function Sink() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {};\n return _this;\n }\n\n Sink.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n callback(nextProps);\n return null;\n };\n\n var _proto = Sink.prototype;\n\n _proto.render = function render() {\n return null;\n };\n\n return Sink;\n }(Component);\n\n polyfill(Sink);\n return Sink;\n};\n\nvar componentFromProp = function componentFromProp(propName) {\n var Component$$1 = function Component$$1(props) {\n return createElement(props[propName], omit(props, [propName]));\n };\n\n Component$$1.displayName = \"componentFromProp(\" + propName + \")\";\n return Component$$1;\n};\n\nvar nest = function nest() {\n for (var _len = arguments.length, Components = new Array(_len), _key = 0; _key < _len; _key++) {\n Components[_key] = arguments[_key];\n }\n\n var factories = Components.map(createFactory);\n\n var Nest = function Nest(_ref) {\n var children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, [\"children\"]);\n\n return factories.reduceRight(function (child, factory) {\n return factory(props, child);\n }, children);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n var displayNames = Components.map(getDisplayName);\n Nest.displayName = \"nest(\" + displayNames.join(', ') + \")\";\n }\n\n return Nest;\n};\n\nvar hoistStatics = function hoistStatics(higherOrderComponent, blacklist) {\n return function (BaseComponent) {\n var NewComponent = higherOrderComponent(BaseComponent);\n hoistNonReactStatics(NewComponent, BaseComponent, blacklist);\n return NewComponent;\n };\n};\n\nvar _config = {\n fromESObservable: null,\n toESObservable: null\n};\n\nvar configureObservable = function configureObservable(c) {\n _config = c;\n};\n\nvar config = {\n fromESObservable: function fromESObservable(observable) {\n return typeof _config.fromESObservable === 'function' ? _config.fromESObservable(observable) : observable;\n },\n toESObservable: function toESObservable(stream) {\n return typeof _config.toESObservable === 'function' ? _config.toESObservable(stream) : stream;\n }\n};\n\nvar componentFromStreamWithConfig = function componentFromStreamWithConfig(config$$1) {\n return function (propsToVdom) {\n return (\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(ComponentFromStream, _Component);\n\n function ComponentFromStream() {\n var _config$fromESObserva;\n\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n vdom: null\n };\n _this.propsEmitter = createChangeEmitter();\n _this.props$ = config$$1.fromESObservable((_config$fromESObserva = {\n subscribe: function subscribe(observer) {\n var unsubscribe = _this.propsEmitter.listen(function (props) {\n if (props) {\n observer.next(props);\n } else {\n observer.complete();\n }\n });\n\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _config$fromESObserva[$$observable] = function () {\n return this;\n }, _config$fromESObserva));\n _this.vdom$ = config$$1.toESObservable(propsToVdom(_this.props$));\n return _this;\n }\n\n var _proto = ComponentFromStream.prototype;\n\n _proto.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n // Subscribe to child prop changes so we know when to re-render\n this.subscription = this.vdom$.subscribe({\n next: function next(vdom) {\n _this2.setState({\n vdom: vdom\n });\n }\n });\n this.propsEmitter.emit(this.props);\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n // Receive new props from the owner\n this.propsEmitter.emit(nextProps);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n return nextState.vdom !== this.state.vdom;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Call without arguments to complete stream\n this.propsEmitter.emit(); // Clean-up subscription before un-mounting\n\n this.subscription.unsubscribe();\n };\n\n _proto.render = function render() {\n return this.state.vdom;\n };\n\n return ComponentFromStream;\n }(Component)\n );\n };\n};\n\nvar componentFromStream = function componentFromStream(propsToVdom) {\n return componentFromStreamWithConfig(config)(propsToVdom);\n};\n\nvar identity$1 = function identity(t) {\n return t;\n};\n\nvar mapPropsStreamWithConfig = function mapPropsStreamWithConfig(config$$1) {\n var componentFromStream$$1 = componentFromStreamWithConfig({\n fromESObservable: identity$1,\n toESObservable: identity$1\n });\n return function (transform) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n var fromESObservable = config$$1.fromESObservable,\n toESObservable = config$$1.toESObservable;\n return componentFromStream$$1(function (props$) {\n var _ref;\n\n return _ref = {\n subscribe: function subscribe(observer) {\n var subscription = toESObservable(transform(fromESObservable(props$))).subscribe({\n next: function next(childProps) {\n return observer.next(factory(childProps));\n }\n });\n return {\n unsubscribe: function unsubscribe() {\n return subscription.unsubscribe();\n }\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n });\n };\n };\n};\n\nvar mapPropsStream = function mapPropsStream(transform) {\n var hoc = mapPropsStreamWithConfig(config)(transform);\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'mapPropsStream'))(hoc(BaseComponent));\n };\n }\n\n return hoc;\n};\n\nvar createEventHandlerWithConfig = function createEventHandlerWithConfig(config$$1) {\n return function () {\n var _config$fromESObserva;\n\n var emitter = createChangeEmitter();\n var stream = config$$1.fromESObservable((_config$fromESObserva = {\n subscribe: function subscribe(observer) {\n var unsubscribe = emitter.listen(function (value) {\n return observer.next(value);\n });\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _config$fromESObserva[$$observable] = function () {\n return this;\n }, _config$fromESObserva));\n return {\n handler: emitter.emit,\n stream: stream\n };\n };\n};\nvar createEventHandler = createEventHandlerWithConfig(config);\n\n// Higher-order component helpers\n\nexport { mapProps, withProps, withPropsOnChange, withHandlers, defaultProps, renameProp, renameProps, flattenProp, withState, withStateHandlers, withReducer, branch, renderComponent, renderNothing, shouldUpdate, pure, onlyUpdateForKeys, onlyUpdateForPropTypes, withContext, getContext, lifecycle, toClass, toRenderProps, fromRenderProps, setStatic, setPropTypes, setDisplayName, compose, getDisplayName, wrapDisplayName, shallowEqual, isClassComponent, createSink, componentFromProp, nest, hoistStatics, componentFromStream, componentFromStreamWithConfig, mapPropsStream, mapPropsStreamWithConfig, createEventHandler, createEventHandlerWithConfig, configureObservable as setObservableConfig };\n","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","// TODO v5: make it private\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nconst EMPTY_ARRAY = [];\nconst placeholderArray = [];\n\n/*\n * Create an Iterable\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols\n * and a \"context\" tracker from the given data\n */\nexport function createIterable(data, startRow = 0, endRow = Infinity) {\n let iterable = EMPTY_ARRAY;\n\n const objectInfo = {\n index: -1,\n data,\n // visitor can optionally utilize this to avoid constructing a new array for every object\n target: []\n };\n\n if (!data) {\n iterable = EMPTY_ARRAY;\n } else if (typeof data[Symbol.iterator] === 'function') {\n // data is already an iterable\n iterable = data;\n } else if (data.length > 0) {\n placeholderArray.length = data.length;\n iterable = placeholderArray;\n }\n\n if (startRow > 0 || Number.isFinite(endRow)) {\n iterable = (Array.isArray(iterable) ? iterable : Array.from(iterable)).slice(startRow, endRow);\n objectInfo.index = startRow - 1;\n }\n\n return {iterable, objectInfo};\n}\n\n/*\n * Returns true if data is an async iterable object\n */\nexport function isAsyncIterable(data) {\n return data && data[Symbol.asyncIterator];\n}\n\n/*\n * Create an accessor function from a flat buffer that yields the value at each object index\n */\nexport function getAccessorFromBuffer(typedArray, {size, stride, offset, startIndices, nested}) {\n const bytesPerElement = typedArray.BYTES_PER_ELEMENT;\n const elementStride = stride ? stride / bytesPerElement : size;\n const elementOffset = offset ? offset / bytesPerElement : 0;\n const vertexCount = Math.floor((typedArray.length - elementOffset) / elementStride);\n\n return (_, {index, target}) => {\n if (!startIndices) {\n const sourceIndex = index * elementStride + elementOffset;\n for (let j = 0; j < size; j++) {\n target[j] = typedArray[sourceIndex + j];\n }\n return target;\n }\n const startIndex = startIndices[index];\n const endIndex = startIndices[index + 1] || vertexCount;\n let result;\n\n if (nested) {\n result = new Array(endIndex - startIndex);\n for (let i = startIndex; i < endIndex; i++) {\n const sourceIndex = i * elementStride + elementOffset;\n target = new Array(size);\n for (let j = 0; j < size; j++) {\n target[j] = typedArray[sourceIndex + j];\n }\n result[i - startIndex] = target;\n }\n } else if (elementStride === size) {\n result = typedArray.subarray(\n startIndex * size + elementOffset,\n endIndex * size + elementOffset\n );\n } else {\n result = new typedArray.constructor((endIndex - startIndex) * size);\n let targetIndex = 0;\n for (let i = startIndex; i < endIndex; i++) {\n const sourceIndex = i * elementStride + elementOffset;\n for (let j = 0; j < size; j++) {\n result[targetIndex++] = typedArray[sourceIndex + j];\n }\n }\n }\n\n return result;\n };\n}\n","import toDate from '../../toDate/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token) {\n if (token === 'YYYY') {\n throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'YY') {\n throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'D') {\n throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');\n } else if (token === 'DD') {\n throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');\n }\n}","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","import * as glMatrix from \"./common.js\";\n/**\r\n * 4 Dimensional Vector\r\n * @module vec4\r\n */\n\n/**\r\n * Creates a new, empty vec4\r\n *\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with values from an existing vector\r\n *\r\n * @param {vec4} a vector to clone\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Copy the values from one vec4 to another\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the source vector\r\n * @returns {vec4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to the given values\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} out\r\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Adds two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\r\n * Multiplies two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\r\n * Divides two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to ceil\r\n * @returns {vec4} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to floor\r\n * @returns {vec4} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\r\n * Math.round the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to round\r\n * @returns {vec4} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\r\n * Scales a vec4 by a scalar number\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec4} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\r\n * Adds two vec4's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec4} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Calculates the length of a vec4\r\n *\r\n * @param {vec4} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared length of a vec4\r\n *\r\n * @param {vec4} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Negates the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to negate\r\n * @returns {vec4} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to invert\r\n * @returns {vec4} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\r\n * Normalize a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to normalize\r\n * @returns {vec4} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\r\n * Returns the cross-product of three vectors in a 4-dimensional space\r\n *\r\n * @param {vec4} result the receiving vector\r\n * @param {vec4} U the first vector\r\n * @param {vec4} V the second vector\r\n * @param {vec4} W the third vector\r\n * @returns {vec4} result\r\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n;\n/**\r\n * Performs a linear interpolation between two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec4} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec4} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\r\n * Transforms the vec4 with a mat4.\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\r\n * Transforms the vec4 with a quat\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to transform\r\n * @param {quat} q quaternion to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to zero\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @returns {vec4} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec4} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return 'vec4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')';\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec4} a The first vector.\r\n * @param {vec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec4} a The first vector.\r\n * @param {vec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\r\n * Alias for {@link vec4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec4.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec4.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec4.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec4.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec4.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec4s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","/* eslint-disable camelcase */\nimport {assert} from '../utils';\n\nconst GL_BYTE = 0x1400;\nconst GL_UNSIGNED_BYTE = 0x1401;\nconst GL_SHORT = 0x1402;\nconst GL_UNSIGNED_SHORT = 0x1403;\n\nconst GL_POINTS = 0x0;\nconst GL_LINES = 0x1;\nconst GL_LINE_LOOP = 0x2;\nconst GL_LINE_STRIP = 0x3;\nconst GL_TRIANGLES = 0x4;\nconst GL_TRIANGLE_STRIP = 0x5;\nconst GL_TRIANGLE_FAN = 0x6;\n\n// Local constants - these will \"collapse\" during minification\nconst GL_FLOAT = 0x1406;\nconst GL_FLOAT_VEC2 = 0x8b50;\nconst GL_FLOAT_VEC3 = 0x8b51;\nconst GL_FLOAT_VEC4 = 0x8b52;\n\nconst GL_INT = 0x1404;\nconst GL_INT_VEC2 = 0x8b53;\nconst GL_INT_VEC3 = 0x8b54;\nconst GL_INT_VEC4 = 0x8b55;\n\nconst GL_UNSIGNED_INT = 0x1405;\nconst GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst GL_UNSIGNED_INT_VEC4 = 0x8dc8;\n\nconst GL_BOOL = 0x8b56;\nconst GL_BOOL_VEC2 = 0x8b57;\nconst GL_BOOL_VEC3 = 0x8b58;\nconst GL_BOOL_VEC4 = 0x8b59;\n\nconst GL_FLOAT_MAT2 = 0x8b5a;\nconst GL_FLOAT_MAT3 = 0x8b5b;\nconst GL_FLOAT_MAT4 = 0x8b5c;\n\nconst GL_FLOAT_MAT2x3 = 0x8b65;\nconst GL_FLOAT_MAT2x4 = 0x8b66;\nconst GL_FLOAT_MAT3x2 = 0x8b67;\nconst GL_FLOAT_MAT3x4 = 0x8b68;\nconst GL_FLOAT_MAT4x2 = 0x8b69;\nconst GL_FLOAT_MAT4x3 = 0x8b6a;\n\n// Composite types table\nconst COMPOSITE_GL_TYPES = {\n [GL_FLOAT]: [GL_FLOAT, 1, 'float'],\n [GL_FLOAT_VEC2]: [GL_FLOAT, 2, 'vec2'],\n [GL_FLOAT_VEC3]: [GL_FLOAT, 3, 'vec3'],\n [GL_FLOAT_VEC4]: [GL_FLOAT, 4, 'vec4'],\n\n [GL_INT]: [GL_INT, 1, 'int'],\n [GL_INT_VEC2]: [GL_INT, 2, 'ivec2'],\n [GL_INT_VEC3]: [GL_INT, 3, 'ivec3'],\n [GL_INT_VEC4]: [GL_INT, 4, 'ivec4'],\n\n [GL_UNSIGNED_INT]: [GL_UNSIGNED_INT, 1, 'uint'],\n [GL_UNSIGNED_INT_VEC2]: [GL_UNSIGNED_INT, 2, 'uvec2'],\n [GL_UNSIGNED_INT_VEC3]: [GL_UNSIGNED_INT, 3, 'uvec3'],\n [GL_UNSIGNED_INT_VEC4]: [GL_UNSIGNED_INT, 4, 'uvec4'],\n\n [GL_BOOL]: [GL_FLOAT, 1, 'bool'],\n [GL_BOOL_VEC2]: [GL_FLOAT, 2, 'bvec2'],\n [GL_BOOL_VEC3]: [GL_FLOAT, 3, 'bvec3'],\n [GL_BOOL_VEC4]: [GL_FLOAT, 4, 'bvec4'],\n\n [GL_FLOAT_MAT2]: [GL_FLOAT, 8, 'mat2'], // 4\n [GL_FLOAT_MAT2x3]: [GL_FLOAT, 8, 'mat2x3'], // 6\n [GL_FLOAT_MAT2x4]: [GL_FLOAT, 8, 'mat2x4'], // 8\n\n [GL_FLOAT_MAT3]: [GL_FLOAT, 12, 'mat3'], // 9\n [GL_FLOAT_MAT3x2]: [GL_FLOAT, 12, 'mat3x2'], // 6\n [GL_FLOAT_MAT3x4]: [GL_FLOAT, 12, 'mat3x4'], // 12\n\n [GL_FLOAT_MAT4]: [GL_FLOAT, 16, 'mat4'], // 16\n [GL_FLOAT_MAT4x2]: [GL_FLOAT, 16, 'mat4x2'], // 8\n [GL_FLOAT_MAT4x3]: [GL_FLOAT, 16, 'mat4x3'] // 12\n};\n\n// Counts the number of complete primitives given a number of vertices and a drawMode\nexport function getPrimitiveDrawMode(drawMode) {\n switch (drawMode) {\n case GL_POINTS:\n return GL_POINTS;\n case GL_LINES:\n return GL_LINES;\n case GL_LINE_STRIP:\n return GL_LINES;\n case GL_LINE_LOOP:\n return GL_LINES;\n case GL_TRIANGLES:\n return GL_TRIANGLES;\n case GL_TRIANGLE_STRIP:\n return GL_TRIANGLES;\n case GL_TRIANGLE_FAN:\n return GL_TRIANGLES;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of complete \"primitives\" given a number of vertices and a drawMode\nexport function getPrimitiveCount({drawMode, vertexCount}) {\n switch (drawMode) {\n case GL_POINTS:\n case GL_LINE_LOOP:\n return vertexCount;\n case GL_LINES:\n return vertexCount / 2;\n case GL_LINE_STRIP:\n return vertexCount - 1;\n case GL_TRIANGLES:\n return vertexCount / 3;\n case GL_TRIANGLE_STRIP:\n case GL_TRIANGLE_FAN:\n return vertexCount - 2;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of vertices after splitting the vertex stream into separate \"primitives\"\nexport function getVertexCount({drawMode, vertexCount}) {\n const primitiveCount = getPrimitiveCount({drawMode, vertexCount});\n switch (getPrimitiveDrawMode(drawMode)) {\n case GL_POINTS:\n return primitiveCount;\n case GL_LINES:\n return primitiveCount * 2;\n case GL_TRIANGLES:\n return primitiveCount * 3;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3)\nexport function decomposeCompositeGLType(compositeGLType) {\n const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];\n if (!typeAndSize) {\n return null;\n }\n const [type, components] = typeAndSize;\n return {type, components};\n}\n\nexport function getCompositeGLType(type, components) {\n switch (type) {\n case GL_BYTE:\n case GL_UNSIGNED_BYTE:\n case GL_SHORT:\n case GL_UNSIGNED_SHORT:\n type = GL_FLOAT;\n break;\n default:\n }\n\n for (const glType in COMPOSITE_GL_TYPES) {\n const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n if (compType === type && compComponents === components) {\n return {glType, name};\n }\n }\n return null;\n}\n","import {assert} from '@loaders.gl/loader-utils';\n\nexport function isLoaderObject(loader) {\n if (!loader) {\n return false;\n }\n\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n let hasParser =\n loader.parseTextSync ||\n loader.parseSync ||\n loader.parse ||\n loader.parseStream || // TODO Remove, Replace with parseInBatches\n loader.parseInBatches;\n\n const loaderOptions = loader.options && loader.options[loader.id];\n hasParser = hasParser || (loaderOptions && loaderOptions.workerUrl);\n\n return hasParser;\n}\n\nexport function normalizeLoader(loader) {\n // This error is fairly easy to trigger by mixing up import statments etc\n // So we make an exception and add a developer error message for this case\n // To help new users from getting stuck here\n assert(loader, 'null loader');\n assert(isLoaderObject(loader), 'invalid loader');\n\n // NORMALIZE [LOADER, OPTIONS] => LOADER\n\n // If [loader, options], create a new loaders object with options merged in\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = {\n ...loader,\n options: {...loader.options, ...options}\n };\n }\n\n // NORMALIZE LOADER.EXTENSIONS\n\n // Remove `extension`` prop, replace with `extensions``\n if (loader.extension) {\n loader.extensions = loader.extensions || loader.extension;\n delete loader.extension;\n }\n\n // Ensure loader.extensions is an array\n if (!Array.isArray(loader.extensions)) {\n loader.extensions = [loader.extensions];\n }\n\n assert(loader.extensions && loader.extensions.length > 0 && loader.extensions[0]);\n\n // NORMALIZE text and binary flags\n\n // Ensure at least one of text/binary flags are properly set\n if (loader.parseTextSync) {\n loader.text = true;\n }\n\n if (!loader.text) {\n loader.binary = true;\n }\n\n // TODO - Does adding a default MIME type add any value?\n /*\n if (!loader.mimeType) {\n if (loader.binary) {\n // TODO - do we need separate mime types for binary and text formats?\n loader.mimeType = 'application/octet-stream';\n }\n }\n */\n\n return loader;\n}\n","export class TypedArrayManager {\n constructor({overAlloc = 2, poolSize = 100} = {}) {\n this.overAlloc = overAlloc;\n this.poolSize = poolSize;\n\n this._pool = [];\n }\n\n allocate(typedArray, count, {size = 1, type, padding = 0, copy = false}) {\n const Type = type || (typedArray && typedArray.constructor) || Float32Array;\n\n const newSize = count * size + padding;\n if (ArrayBuffer.isView(typedArray)) {\n if (newSize <= typedArray.length) {\n return typedArray;\n }\n if (newSize * typedArray.BYTES_PER_ELEMENT <= typedArray.buffer.byteLength) {\n return new Type(typedArray.buffer, 0, newSize);\n }\n }\n\n const newArray = this._allocate(Type, newSize);\n\n if (typedArray && copy) {\n newArray.set(typedArray);\n } else {\n // Hack - viewing a buffer with a different type may create NaNs\n // which crashes the Attribute validation\n newArray.fill(0, 0, 4);\n }\n\n this._release(typedArray);\n return newArray;\n }\n\n release(typedArray) {\n this._release(typedArray);\n }\n\n _allocate(Type, size) {\n // Allocate at least one element to ensure a valid buffer\n size = Math.max(Math.ceil(size * this.overAlloc), 1);\n\n // Check if available in pool\n const pool = this._pool;\n const byteLength = Type.BYTES_PER_ELEMENT * size;\n const i = pool.findIndex(b => b.byteLength >= byteLength);\n if (i >= 0) {\n // Create a new array using an existing buffer\n return new Type(pool.splice(i, 1)[0], 0, size);\n }\n return new Type(size);\n }\n\n _release(typedArray) {\n if (!ArrayBuffer.isView(typedArray)) {\n return;\n }\n const pool = this._pool;\n const {buffer} = typedArray;\n // Save the buffer of the released array into the pool\n // Sort buffers by size\n // TODO - implement binary search?\n const {byteLength} = buffer;\n const i = pool.findIndex(b => b.byteLength >= byteLength);\n if (i < 0) {\n pool.push(buffer);\n } else if (i > 0 || pool.length < this.poolSize) {\n pool.splice(i, 0, buffer);\n }\n if (pool.length > this.poolSize) {\n // Drop the smallest one\n pool.shift();\n }\n }\n}\n\nexport default new TypedArrayManager();\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","import GL from '@luma.gl/constants';\nimport {isWebGL2} from '@luma.gl/gltools';\n\n// const S3TC = 'WEBGL_compressed_texture_s3tc';\n// const PVRTC = 'WEBGL_compressed_texture_pvrtc';\n// const ES3 = 'WEBGL_compressed_texture_es3';\n// const ETC1 = 'WEBGL_compressed_texture_etc1';\n// const SRGB = 'EXT_sRGB';\n// const DEPTH = 'WEBGL_depth_texture';\n\n// Legal combinations for internalFormat, format and type\nexport const TEXTURE_FORMATS = {\n // Unsized texture format - more performance\n [GL.RGB]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n // TODO: format: GL.RGBA type: GL.FLOAT is supported in WebGL1 when 'OES_texure_float' is suported\n // we need to update this table structure to specify extensions (gl1: 'OES_texure_float', gl2: false) for each type.\n [GL.RGBA]: {\n dataFormat: GL.RGBA,\n types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]\n },\n [GL.ALPHA]: {dataFormat: GL.ALPHA, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE]: {dataFormat: GL.LUMINANCE, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE_ALPHA]: {dataFormat: GL.LUMINANCE_ALPHA, types: [GL.UNSIGNED_BYTE]},\n\n // 32 bit floats\n [GL.R32F]: {dataFormat: GL.RED, types: [GL.FLOAT], gl2: true},\n [GL.RG32F]: {dataFormat: GL.RG, types: [GL.FLOAT], gl2: true},\n [GL.RGB32F]: {dataFormat: GL.RGB, types: [GL.FLOAT], gl2: true},\n [GL.RGBA32F]: {dataFormat: GL.RGBA, types: [GL.FLOAT], gl2: true}\n\n // [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1: DEPTH},\n // [GL.DEPTH_STENCIL]: {gl1: DEPTH},\n\n // Sized texture format - more performance\n // R\n // [GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RG\n // [GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGB\n // [GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n // [GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_half_float'},\n // [GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_float'},\n // [GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGBA\n // [GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n // [GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n // [GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n\n // Compressed formats\n\n // WEBGL_compressed_texture_s3tc\n\n // [GL.COMPRESSED_RGB_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT3_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT5_EXT]: {compressed: true, gl1: S3TC},\n\n // WEBGL_compressed_texture_es3\n\n // [GL.COMPRESSED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_SIGNED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_SIGNED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_RGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_RGBA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RBG\n // [GL.COMPRESSED_SRGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n /* WebGL2 guaranteed availability compressed formats?\n COMPRESSED_R11_EAC RED\n COMPRESSED_SIGNED_R11_EAC RED\n COMPRESSED_RG11_EAC RG\n COMPRESSED_SIGNED_RG11_EAC RG\n COMPRESSED_RGB8_ETC2 RGB\n COMPRESSED_SRGB8_ETC2 RGB\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_RGBA8_ETC2_EAC RGBA\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n */\n\n // WEBGL_compressed_texture_pvrtc\n\n // [GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n\n // WEBGL_compressed_texture_etc1\n\n // [GL.COMPRESSED_RGB_ETC1_WEBGL]: {compressed: true, gl1: ETC1},\n\n // WEBGL_compressed_texture_atc\n\n // [GL.COMPRESSED_RGB_ATC_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL]: {compressed: true, gl1: ETC1}\n};\n\nexport const DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\nexport const TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\nexport function isFormatSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n if (info.gl1 === undefined && info.gl2 === undefined) {\n // No info - always supported\n return true;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n return typeof value === 'string' ? gl.getExtension(value) : value;\n}\n\nexport function isLinearFilteringSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n switch (info && info.types[0]) {\n // Both WebGL1 and WebGL2?\n case GL.FLOAT:\n return gl.getExtension('OES_texture_float_linear');\n // Not in WebGL2?\n case GL.HALF_FLOAT:\n return gl.getExtension('OES_texture_half_float_linear');\n default:\n return true;\n }\n}\n","import 'core-js/es/math';\nimport 'core-js/es/number';\n/* eslint no-proto: 0 */\n\nvar testObject = {};\n\nif (!(Object.setPrototypeOf || testObject.__proto__)) {\n var nativeGetPrototypeOf = Object.getPrototypeOf;\n\n Object.getPrototypeOf = function (object) {\n if (object.__proto__) {\n return object.__proto__;\n }\n\n return nativeGetPrototypeOf.call(Object, object);\n };\n}","import raf from 'raf';\nexport default function setRafTimeout(callback) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var currTime = -1;\n\n var shouldUpdate = function shouldUpdate(now) {\n if (currTime < 0) {\n currTime = now;\n }\n\n if (now - currTime > timeout) {\n callback(now);\n currTime = -1;\n } else {\n raf(shouldUpdate);\n }\n };\n\n raf(shouldUpdate);\n}","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n var currStyle = {};\n\n var handleChange = function handleChange() {\n return null;\n };\n\n var shouldStop = false;\n\n var setStyle = function setStyle(_style) {\n if (shouldStop) {\n return;\n }\n\n if (Array.isArray(_style)) {\n if (!_style.length) {\n return;\n }\n\n var styles = _style;\n\n var _styles = _toArray(styles),\n curr = _styles[0],\n restStyles = _styles.slice(1);\n\n if (typeof curr === 'number') {\n setRafTimeout(setStyle.bind(null, restStyles), curr);\n return;\n }\n\n setStyle(curr);\n setRafTimeout(setStyle.bind(null, restStyles));\n return;\n }\n\n if (_typeof(_style) === 'object') {\n currStyle = _style;\n handleChange(currStyle);\n }\n\n if (typeof _style === 'function') {\n _style();\n }\n };\n\n return {\n stop: function stop() {\n shouldStop = true;\n },\n start: function start(style) {\n shouldStop = false;\n setStyle(style);\n },\n subscribe: function subscribe(_handleChange) {\n handleChange = _handleChange;\n return function () {\n handleChange = function handleChange() {\n return null;\n };\n };\n }\n };\n}","import _intersection from \"lodash/intersection\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* eslint no-console: 0 */\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nvar IN_LINE_PREFIX_LIST = ['-webkit-', '-moz-', '-o-', '-ms-'];\nvar IN_COMPATIBLE_PROPERTY = ['transform', 'transformOrigin', 'transition'];\nexport var getIntersectionKeys = function getIntersectionKeys(preObj, nextObj) {\n return _intersection(Object.keys(preObj), Object.keys(nextObj));\n};\nexport var identity = function identity(param) {\n return param;\n};\n/*\n * @description: convert camel case to dash case\n * string => string\n */\n\nexport var getDashCase = function getDashCase(name) {\n return name.replace(/([A-Z])/g, function (v) {\n return \"-\".concat(v.toLowerCase());\n });\n};\n/*\n * @description: add compatible style prefix\n * (string, string) => object\n */\n\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (IN_COMPATIBLE_PROPERTY.indexOf(name) === -1) {\n return _defineProperty({}, name, value);\n }\n\n var isTransition = name === 'transition';\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var styleVal = value;\n return PREFIX_LIST.reduce(function (result, property, i) {\n if (isTransition) {\n styleVal = value.replace(/(transform|transform-origin)/gim, \"\".concat(IN_LINE_PREFIX_LIST[i], \"$1\"));\n }\n\n return _objectSpread({}, result, _defineProperty({}, property + camelName, styleVal));\n }, {});\n};\nexport var log = function log() {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n};\n/*\n * @description: log the value of a varible\n * string => any => any\n */\n\nexport var debug = function debug(name) {\n return function (item) {\n log(name, item);\n return item;\n };\n};\n/*\n * @description: log name, args, return value of a function\n * function => function\n */\n\nexport var debugf = function debugf(tag, f) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var res = f.apply(void 0, args);\n var name = tag || f.name || 'anonymous function';\n var argNames = \"(\".concat(args.map(JSON.stringify).join(', '), \")\");\n log(\"\".concat(name, \": \").concat(argNames, \" => \").concat(JSON.stringify(res)));\n return res;\n };\n};\n/*\n * @description: map object on every element in this object.\n * (function, object) => object\n */\n\nexport var mapObject = function mapObject(fn, obj) {\n return Object.keys(obj).reduce(function (res, key) {\n return _objectSpread({}, res, _defineProperty({}, key, fn(key, obj[key])));\n }, {});\n};\n/*\n * @description: add compatible prefix to style\n * object => object\n */\n\nexport var translateStyle = function translateStyle(style) {\n return Object.keys(style).reduce(function (res, key) {\n return _objectSpread({}, res, generatePrefixStyle(key, res[key]));\n }, style);\n};\nexport var compose = function compose() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var getTransitionVal = function getTransitionVal(props, duration, easing) {\n return props.map(function (prop) {\n return \"\".concat(getDashCase(prop), \" \").concat(duration, \"ms \").concat(easing);\n }).join(',');\n};\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format, a, b, c, d, e, f) {\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\n\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\n};\n\nvar multyTime = function multyTime(params, t) {\n return params.map(function (param, i) {\n return param * Math.pow(t, i);\n }).reduce(function (pre, curr) {\n return pre + curr;\n });\n};\n\nvar cubicBezier = function cubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n return multyTime(params, t);\n };\n};\n\nvar derivativeCubicBezier = function derivativeCubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n\n var newParams = _toConsumableArray(params.map(function (param, i) {\n return param * i;\n }).slice(1)).concat([0]);\n\n return multyTime(newParams, t);\n };\n}; // calculate cubic-bezier using Newton's method\n\n\nexport var configBezier = function configBezier() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var x1 = args[0],\n y1 = args[1],\n x2 = args[2],\n y2 = args[3];\n\n if (args.length === 1) {\n switch (args[0]) {\n case 'linear':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n\n case 'ease':\n x1 = 0.25;\n y1 = 0.1;\n x2 = 0.25;\n y2 = 1.0;\n break;\n\n case 'ease-in':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n\n case 'ease-out':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n\n case 'ease-in-out':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n\n default:\n {\n var easing = args[0].split('(');\n\n if (easing[0] === 'cubic-bezier' && easing[1].split(')')[0].split(',').length === 4) {\n var _easing$1$split$0$spl = easing[1].split(')')[0].split(',').map(function (x) {\n return parseFloat(x);\n });\n\n var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\n\n x1 = _easing$1$split$0$spl2[0];\n y1 = _easing$1$split$0$spl2[1];\n x2 = _easing$1$split$0$spl2[2];\n y2 = _easing$1$split$0$spl2[3];\n } else {\n warn(false, '[configBezier]: arguments should be one of ' + 'oneOf \\'linear\\', \\'ease\\', \\'ease-in\\', \\'ease-out\\', ' + '\\'ease-in-out\\',\\'cubic-bezier(x1,y1,x2,y2)\\', instead received %s', args);\n }\n }\n }\n }\n\n warn([x1, x2, y1, y2].every(function (num) {\n return typeof num === 'number' && num >= 0 && num <= 1;\n }), '[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s', args);\n var curveX = cubicBezier(x1, x2);\n var curveY = cubicBezier(y1, y2);\n var derCurveX = derivativeCubicBezier(x1, x2);\n\n var rangeValue = function rangeValue(value) {\n if (value > 1) {\n return 1;\n } else if (value < 0) {\n return 0;\n }\n\n return value;\n };\n\n var bezier = function bezier(_t) {\n var t = _t > 1 ? 1 : _t;\n var x = t;\n\n for (var i = 0; i < 8; ++i) {\n var evalT = curveX(x) - t;\n var derVal = derCurveX(x);\n\n if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n return curveY(x);\n }\n\n x = rangeValue(x - evalT / derVal);\n }\n\n return curveY(x);\n };\n\n bezier.isStepper = false;\n return bezier;\n};\nexport var configSpring = function configSpring() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _config$stiff = config.stiff,\n stiff = _config$stiff === void 0 ? 100 : _config$stiff,\n _config$damping = config.damping,\n damping = _config$damping === void 0 ? 8 : _config$damping,\n _config$dt = config.dt,\n dt = _config$dt === void 0 ? 17 : _config$dt;\n\n var stepper = function stepper(currX, destX, currV) {\n var FSpring = -(currX - destX) * stiff;\n var FDamping = currV * damping;\n var newV = currV + (FSpring - FDamping) * dt / 1000;\n var newX = currV * dt / 1000 + currX;\n\n if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n return [destX, 0];\n }\n\n return [newX, newV];\n };\n\n stepper.isStepper = true;\n stepper.dt = dt;\n return stepper;\n};\nexport var configEasing = function configEasing() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var easing = args[0];\n\n if (typeof easing === 'string') {\n switch (easing) {\n case 'ease':\n case 'ease-in-out':\n case 'ease-out':\n case 'ease-in':\n case 'linear':\n return configBezier(easing);\n\n case 'spring':\n return configSpring();\n\n default:\n if (easing.split('(')[0] === 'cubic-bezier') {\n return configBezier(easing);\n }\n\n warn(false, '[configEasing]: first argument should be one of \\'ease\\', \\'ease-in\\', ' + '\\'ease-out\\', \\'ease-in-out\\',\\'cubic-bezier(x1,y1,x2,y2)\\', \\'linear\\' and \\'spring\\', instead received %s', args);\n }\n }\n\n if (typeof easing === 'function') {\n return easing;\n }\n\n warn(false, '[configEasing]: first argument type should be function or ' + 'string, instead received %s', args);\n return null;\n};","import _filter from \"lodash/filter\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport raf, { cancel as caf } from 'raf';\nimport { getIntersectionKeys, mapObject } from './util';\n\nvar alpha = function alpha(begin, end, k) {\n return begin + (end - begin) * k;\n};\n\nvar needContinue = function needContinue(_ref) {\n var from = _ref.from,\n to = _ref.to;\n return from !== to;\n};\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\n\n\nvar calStepperVals = function calStepperVals(easing, preVals, steps) {\n var nextStepVals = mapObject(function (key, val) {\n if (needContinue(val)) {\n var _easing = easing(val.from, val.to, val.velocity),\n _easing2 = _slicedToArray(_easing, 2),\n newX = _easing2[0],\n newV = _easing2[1];\n\n return _objectSpread({}, val, {\n from: newX,\n velocity: newV\n });\n }\n\n return val;\n }, preVals);\n\n if (steps < 1) {\n return mapObject(function (key, val) {\n if (needContinue(val)) {\n return _objectSpread({}, val, {\n velocity: alpha(val.velocity, nextStepVals[key].velocity, steps),\n from: alpha(val.from, nextStepVals[key].from, steps)\n });\n }\n\n return val;\n }, preVals);\n }\n\n return calStepperVals(easing, nextStepVals, steps - 1);\n}; // configure update function\n\n\nexport default (function (from, to, easing, duration, render) {\n var interKeys = getIntersectionKeys(from, to);\n var timingStyle = interKeys.reduce(function (res, key) {\n return _objectSpread({}, res, _defineProperty({}, key, [from[key], to[key]]));\n }, {});\n var stepperStyle = interKeys.reduce(function (res, key) {\n return _objectSpread({}, res, _defineProperty({}, key, {\n from: from[key],\n velocity: 0,\n to: to[key]\n }));\n }, {});\n var cafId = -1;\n var preTime;\n var beginTime;\n\n var update = function update() {\n return null;\n };\n\n var getCurrStyle = function getCurrStyle() {\n return mapObject(function (key, val) {\n return val.from;\n }, stepperStyle);\n };\n\n var shouldStopAnimation = function shouldStopAnimation() {\n return !_filter(stepperStyle, needContinue).length;\n }; // stepper timing function like spring\n\n\n var stepperUpdate = function stepperUpdate(now) {\n if (!preTime) {\n preTime = now;\n }\n\n var deltaTime = now - preTime;\n var steps = deltaTime / easing.dt;\n stepperStyle = calStepperVals(easing, stepperStyle, steps); // get union set and add compatible prefix\n\n render(_objectSpread({}, from, to, getCurrStyle(stepperStyle)));\n preTime = now;\n\n if (!shouldStopAnimation()) {\n cafId = raf(update);\n }\n }; // t => val timing function like cubic-bezier\n\n\n var timingUpdate = function timingUpdate(now) {\n if (!beginTime) {\n beginTime = now;\n }\n\n var t = (now - beginTime) / duration;\n var currStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(t)]));\n }, timingStyle); // get union set and add compatible prefix\n\n render(_objectSpread({}, from, to, currStyle));\n\n if (t < 1) {\n cafId = raf(update);\n } else {\n var finalStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(1)]));\n }, timingStyle);\n render(_objectSpread({}, from, to, finalStyle));\n }\n };\n\n update = easing.isStepper ? stepperUpdate : timingUpdate; // return start animation method\n\n return function () {\n raf(update); // return stop animation method\n\n return function () {\n caf(cafId);\n };\n };\n});","import _isEqual from \"lodash/isEqual\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nimport React, { PureComponent, cloneElement, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport createAnimateManager from './AnimateManager';\nimport { configEasing } from './easing';\nimport configUpdate from './configUpdate';\nimport { getTransitionVal, identity, translateStyle } from './util';\n\nvar Animate =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Animate, _PureComponent);\n\n function Animate(props, context) {\n var _this;\n\n _classCallCheck(this, Animate);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Animate).call(this, props, context));\n var _this$props = _this.props,\n isActive = _this$props.isActive,\n attributeName = _this$props.attributeName,\n from = _this$props.from,\n to = _this$props.to,\n steps = _this$props.steps,\n children = _this$props.children;\n _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n\n if (!isActive) {\n _this.state = {\n style: {}\n }; // if children is a function and animation is not active, set style to 'to'\n\n if (typeof children === 'function') {\n _this.state = {\n style: to\n };\n }\n\n return _possibleConstructorReturn(_this);\n }\n\n if (steps && steps.length) {\n _this.state = {\n style: steps[0].style\n };\n } else if (from) {\n if (typeof children === 'function') {\n _this.state = {\n style: from\n };\n return _possibleConstructorReturn(_this);\n }\n\n _this.state = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n } else {\n _this.state = {\n style: {}\n };\n }\n\n return _this;\n }\n\n _createClass(Animate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props2 = this.props,\n isActive = _this$props2.isActive,\n canBegin = _this$props2.canBegin;\n this.mounted = true;\n\n if (!isActive || !canBegin) {\n return;\n }\n\n this.runAnimation(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props3 = this.props,\n isActive = _this$props3.isActive,\n canBegin = _this$props3.canBegin,\n attributeName = _this$props3.attributeName,\n shouldReAnimate = _this$props3.shouldReAnimate;\n\n if (!canBegin) {\n return;\n }\n\n if (!isActive) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n style: attributeName ? _defineProperty({}, attributeName, this.props.to) : this.props.to\n });\n return;\n }\n\n if (_isEqual(prevProps.to, this.props.to) && prevProps.canBegin && prevProps.isActive) {\n return;\n }\n\n var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n\n if (this.manager) {\n this.manager.stop();\n }\n\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n\n var from = isTriggered || shouldReAnimate ? this.props.from : prevProps.to; // eslint-disable-next-line react/no-did-update-set-state\n\n this.setState({\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n });\n this.runAnimation(_objectSpread({}, this.props, {\n from: from,\n begin: 0\n }));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n\n if (this.unSubscribe) {\n this.unSubscribe();\n }\n\n if (this.manager) {\n this.manager.stop();\n this.manager = null;\n }\n\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n }\n }, {\n key: \"runJSAnimation\",\n value: function runJSAnimation(props) {\n var _this2 = this;\n\n var from = props.from,\n to = props.to,\n duration = props.duration,\n easing = props.easing,\n begin = props.begin,\n onAnimationEnd = props.onAnimationEnd,\n onAnimationStart = props.onAnimationStart;\n var startAnimation = configUpdate(from, to, configEasing(easing), duration, this.changeStyle);\n\n var finalStartAnimation = function finalStartAnimation() {\n _this2.stopJSAnimation = startAnimation();\n };\n\n this.manager.start([onAnimationStart, begin, finalStartAnimation, duration, onAnimationEnd]);\n }\n }, {\n key: \"runStepAnimation\",\n value: function runStepAnimation(props) {\n var _this3 = this;\n\n var steps = props.steps,\n begin = props.begin,\n onAnimationStart = props.onAnimationStart;\n var _steps$ = steps[0],\n initialStyle = _steps$.style,\n _steps$$duration = _steps$.duration,\n initialTime = _steps$$duration === void 0 ? 0 : _steps$$duration;\n\n var addStyle = function addStyle(sequence, nextItem, index) {\n if (index === 0) {\n return sequence;\n }\n\n var duration = nextItem.duration,\n _nextItem$easing = nextItem.easing,\n easing = _nextItem$easing === void 0 ? 'ease' : _nextItem$easing,\n style = nextItem.style,\n nextProperties = nextItem.properties,\n onAnimationEnd = nextItem.onAnimationEnd;\n var preItem = index > 0 ? steps[index - 1] : nextItem;\n var properties = nextProperties || Object.keys(style);\n\n if (typeof easing === 'function' || easing === 'spring') {\n return _toConsumableArray(sequence).concat([_this3.runJSAnimation.bind(_this3, {\n from: preItem.style,\n to: style,\n duration: duration,\n easing: easing\n }), duration]);\n }\n\n var transition = getTransitionVal(properties, duration, easing);\n\n var newStyle = _objectSpread({}, preItem.style, style, {\n transition: transition\n });\n\n return _toConsumableArray(sequence).concat([newStyle, duration, onAnimationEnd]).filter(identity);\n };\n\n return this.manager.start([onAnimationStart].concat(_toConsumableArray(steps.reduce(addStyle, [initialStyle, Math.max(initialTime, begin)])), [props.onAnimationEnd]));\n }\n }, {\n key: \"runAnimation\",\n value: function runAnimation(props) {\n if (!this.manager) {\n this.manager = createAnimateManager();\n }\n\n var begin = props.begin,\n duration = props.duration,\n attributeName = props.attributeName,\n propsTo = props.to,\n easing = props.easing,\n onAnimationStart = props.onAnimationStart,\n onAnimationEnd = props.onAnimationEnd,\n steps = props.steps,\n children = props.children;\n var manager = this.manager;\n this.unSubscribe = manager.subscribe(this.handleStyleChange);\n\n if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n this.runJSAnimation(props);\n return;\n }\n\n if (steps.length > 1) {\n this.runStepAnimation(props);\n return;\n }\n\n var to = attributeName ? _defineProperty({}, attributeName, propsTo) : propsTo;\n var transition = getTransitionVal(Object.keys(to), duration, easing);\n manager.start([onAnimationStart, begin, _objectSpread({}, to, {\n transition: transition\n }), duration, onAnimationEnd]);\n }\n }, {\n key: \"handleStyleChange\",\n value: function handleStyleChange(style) {\n this.changeStyle(style);\n }\n }, {\n key: \"changeStyle\",\n value: function changeStyle(style) {\n if (this.mounted) {\n this.setState({\n style: style\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n begin = _this$props4.begin,\n duration = _this$props4.duration,\n attributeName = _this$props4.attributeName,\n easing = _this$props4.easing,\n isActive = _this$props4.isActive,\n steps = _this$props4.steps,\n from = _this$props4.from,\n to = _this$props4.to,\n canBegin = _this$props4.canBegin,\n onAnimationEnd = _this$props4.onAnimationEnd,\n shouldReAnimate = _this$props4.shouldReAnimate,\n onAnimationReStart = _this$props4.onAnimationReStart,\n others = _objectWithoutProperties(_this$props4, [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"]);\n\n var count = Children.count(children);\n var stateStyle = translateStyle(this.state.style);\n\n if (typeof children === 'function') {\n return children(stateStyle);\n }\n\n if (!isActive || count === 0) {\n return children;\n }\n\n var cloneContainer = function cloneContainer(container) {\n var _container$props = container.props,\n _container$props$styl = _container$props.style,\n style = _container$props$styl === void 0 ? {} : _container$props$styl,\n className = _container$props.className;\n var res = cloneElement(container, _objectSpread({}, others, {\n style: _objectSpread({}, style, stateStyle),\n className: className\n }));\n return res;\n };\n\n if (count === 1) {\n return cloneContainer(Children.only(children));\n }\n\n return React.createElement(\"div\", null, Children.map(children, function (child) {\n return cloneContainer(child);\n }));\n }\n }]);\n\n return Animate;\n}(PureComponent);\n\nAnimate.displayName = 'Animate';\nAnimate.propTypes = {\n from: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n to: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n attributeName: PropTypes.string,\n // animation duration\n duration: PropTypes.number,\n begin: PropTypes.number,\n easing: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n steps: PropTypes.arrayOf(PropTypes.shape({\n duration: PropTypes.number.isRequired,\n style: PropTypes.object.isRequired,\n easing: PropTypes.oneOfType([PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']), PropTypes.func]),\n // transition css properties(dash case), optional\n properties: PropTypes.arrayOf('string'),\n onAnimationEnd: PropTypes.func\n })),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n isActive: PropTypes.bool,\n canBegin: PropTypes.bool,\n onAnimationEnd: PropTypes.func,\n // decide if it should reanimate with initial from style when props change\n shouldReAnimate: PropTypes.bool,\n onAnimationStart: PropTypes.func,\n onAnimationReStart: PropTypes.func\n};\nAnimate.defaultProps = {\n begin: 0,\n duration: 1000,\n from: '',\n to: '',\n attributeName: '',\n easing: 'ease',\n isActive: true,\n canBegin: true,\n steps: [],\n onAnimationEnd: function onAnimationEnd() {},\n onAnimationStart: function onAnimationStart() {}\n};\nexport default Animate;","import _isNumber from \"lodash/isNumber\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport React, { Component, Children } from 'react';\nimport { Transition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport Animate from './Animate';\n\nvar parseDurationOfSingleTransition = function parseDurationOfSingleTransition() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var steps = options.steps,\n duration = options.duration;\n\n if (steps && steps.length) {\n return steps.reduce(function (result, entry) {\n return result + (_isNumber(entry.duration) && entry.duration > 0 ? entry.duration : 0);\n }, 0);\n }\n\n if (_isNumber(duration)) {\n return duration;\n }\n\n return 0;\n};\n\nvar AnimateGroupChild =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(AnimateGroupChild, _Component);\n\n function AnimateGroupChild() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, AnimateGroupChild);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(AnimateGroupChild)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isActive: false\n };\n\n _this.handleEnter = function (node, isAppearing) {\n var _this$props = _this.props,\n appearOptions = _this$props.appearOptions,\n enterOptions = _this$props.enterOptions;\n\n _this.handleStyleActive(isAppearing ? appearOptions : enterOptions);\n };\n\n _this.handleExit = function () {\n _this.handleStyleActive(_this.props.leaveOptions);\n };\n\n return _this;\n }\n\n _createClass(AnimateGroupChild, [{\n key: \"handleStyleActive\",\n value: function handleStyleActive(style) {\n if (style) {\n var onAnimationEnd = style.onAnimationEnd ? function () {\n style.onAnimationEnd();\n } : null;\n this.setState(_objectSpread({}, style, {\n onAnimationEnd: onAnimationEnd,\n isActive: true\n }));\n }\n }\n }, {\n key: \"parseTimeout\",\n value: function parseTimeout() {\n var _this$props2 = this.props,\n appearOptions = _this$props2.appearOptions,\n enterOptions = _this$props2.enterOptions,\n leaveOptions = _this$props2.leaveOptions;\n return parseDurationOfSingleTransition(appearOptions) + parseDurationOfSingleTransition(enterOptions) + parseDurationOfSingleTransition(leaveOptions);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n children = _this$props3.children,\n appearOptions = _this$props3.appearOptions,\n enterOptions = _this$props3.enterOptions,\n leaveOptions = _this$props3.leaveOptions,\n props = _objectWithoutProperties(_this$props3, [\"children\", \"appearOptions\", \"enterOptions\", \"leaveOptions\"]);\n\n return React.createElement(Transition, _extends({}, props, {\n onEnter: this.handleEnter,\n onExit: this.handleExit,\n timeout: this.parseTimeout()\n }), function () {\n return React.createElement(Animate, _this2.state, Children.only(children));\n });\n }\n }]);\n\n return AnimateGroupChild;\n}(Component);\n\nAnimateGroupChild.propTypes = {\n appearOptions: PropTypes.object,\n enterOptions: PropTypes.object,\n leaveOptions: PropTypes.object,\n children: PropTypes.element\n};\nexport default AnimateGroupChild;","import React, { Children } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport AnimateGroupChild from './AnimateGroupChild';\n\nfunction AnimateGroup(props) {\n var component = props.component,\n children = props.children,\n appear = props.appear,\n enter = props.enter,\n leave = props.leave;\n return React.createElement(TransitionGroup, {\n component: component\n }, Children.map(children, function (child, index) {\n return React.createElement(AnimateGroupChild, {\n appearOptions: appear,\n enterOptions: enter,\n leaveOptions: leave,\n key: \"child-\".concat(index)\n }, child);\n }));\n}\n\nAnimateGroup.propTypes = {\n appear: PropTypes.object,\n enter: PropTypes.object,\n leave: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.element]),\n component: PropTypes.any\n};\nAnimateGroup.defaultProps = {\n component: 'span'\n};\nexport default AnimateGroup;","import Animate from './Animate';\nimport { configBezier, configSpring } from './easing';\nimport { translateStyle } from './util';\nimport AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup, translateStyle };\nexport default Animate;","import _get from \"lodash/get\";\nimport _isArray from \"lodash/isArray\";\nimport _isNaN from \"lodash/isNaN\";\nimport _isNumber from \"lodash/isNumber\";\nimport _isString from \"lodash/isString\";\nexport var mathSign = function mathSign(value) {\n if (value === 0) {\n return 0;\n }\n\n if (value > 0) {\n return 1;\n }\n\n return -1;\n};\nexport var isPercent = function isPercent(value) {\n return _isString(value) && value.indexOf('%') === value.length - 1;\n};\nexport var isNumber = function isNumber(value) {\n return _isNumber(value) && !_isNaN(value);\n};\nexport var isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || _isString(value);\n};\nvar idCounter = 0;\nexport var uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n return \"\".concat(prefix || '').concat(id);\n};\n/**\n * Get percent value of a total value\n * @param {Number|String} percent A percent\n * @param {Number} totalValue Total value\n * @param {NUmber} defaultValue The value returned when percent is undefined or invalid\n * @param {Boolean} validate If set to be true, the result will be validated\n * @return {Number} value\n */\n\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (!isNumber(percent) && !_isString(percent)) {\n return defaultValue;\n }\n\n var value;\n\n if (isPercent(percent)) {\n var index = percent.indexOf('%');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n\n if (_isNaN(value)) {\n value = defaultValue;\n }\n\n if (validate && value > totalValue) {\n value = totalValue;\n }\n\n return value;\n};\nexport var getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n\n var keys = Object.keys(obj);\n\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n\n return null;\n};\nexport var hasDuplicate = function hasDuplicate(ary) {\n if (!_isArray(ary)) {\n return false;\n }\n\n var len = ary.length;\n var cache = {};\n\n for (var i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n\n return false;\n};\nexport var interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function (t) {\n return numberA + t * (numberB - numberA);\n };\n }\n\n return function () {\n return numberB;\n };\n};\nexport function findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return null;\n }\n\n return ary.find(function (entry) {\n return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : _get(entry, specifiedKey)) === specifiedValue;\n });\n}\n;\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */\n\nexport var getLinearRegression = function getLinearRegression(data) {\n if (!data || !data.length) {\n return null;\n }\n\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n\n for (var i = 0; i < len; i++) {\n xsum += data[i].cx;\n ysum += data[i].cy;\n xysum += data[i].cx * data[i].cy;\n xxsum += data[i].cx * data[i].cx;\n xmin = Math.min(xmin, data[i].cx);\n xmax = Math.max(xmax, data[i].cx);\n }\n\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin: xmin,\n xmax: xmax,\n a: a,\n b: (ysum - a * xsum) / len\n };\n};","import _sortBy from \"lodash/sortBy\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { isNumOrStr } from '../util/DataUtils';\n\nfunction defaultFormatter(value) {\n return _isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(' ~ ') : value;\n}\n\nvar DefaultTooltipContent =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(DefaultTooltipContent, _PureComponent);\n\n function DefaultTooltipContent() {\n _classCallCheck(this, DefaultTooltipContent);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DefaultTooltipContent).apply(this, arguments));\n }\n\n _createClass(DefaultTooltipContent, [{\n key: \"renderContent\",\n value: function renderContent() {\n var _this$props = this.props,\n payload = _this$props.payload,\n separator = _this$props.separator,\n formatter = _this$props.formatter,\n itemStyle = _this$props.itemStyle,\n itemSorter = _this$props.itemSorter;\n\n if (payload && payload.length) {\n var listStyle = {\n padding: 0,\n margin: 0\n };\n var items = (itemSorter ? _sortBy(payload, itemSorter) : payload).map(function (entry, i) {\n if (entry.type === 'none') {\n return null;\n }\n\n var finalItemStyle = _objectSpread({\n display: 'block',\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || '#000'\n }, itemStyle);\n\n var finalFormatter = entry.formatter || formatter || defaultFormatter;\n var name = entry.name,\n value = entry.value;\n\n if (finalFormatter) {\n var formatted = finalFormatter(value, name, entry, i);\n\n if (Array.isArray(formatted)) {\n var _formatted = _slicedToArray(formatted, 2);\n\n value = _formatted[0];\n name = _formatted[1];\n } else {\n value = formatted;\n }\n }\n\n return (// eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n className: \"recharts-tooltip-item\",\n key: \"tooltip-item-\".concat(i),\n style: finalItemStyle\n }, isNumOrStr(name) ? React.createElement(\"span\", {\n className: \"recharts-tooltip-item-name\"\n }, name) : null, isNumOrStr(name) ? React.createElement(\"span\", {\n className: \"recharts-tooltip-item-separator\"\n }, separator) : null, React.createElement(\"span\", {\n className: \"recharts-tooltip-item-value\"\n }, value), React.createElement(\"span\", {\n className: \"recharts-tooltip-item-unit\"\n }, entry.unit || ''))\n );\n });\n return React.createElement(\"ul\", {\n className: \"recharts-tooltip-item-list\",\n style: listStyle\n }, items);\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n wrapperClassName = _this$props2.wrapperClassName,\n contentStyle = _this$props2.contentStyle,\n labelClassName = _this$props2.labelClassName,\n labelStyle = _this$props2.labelStyle,\n label = _this$props2.label,\n labelFormatter = _this$props2.labelFormatter;\n\n var finalStyle = _objectSpread({\n margin: 0,\n padding: 10,\n backgroundColor: '#fff',\n border: '1px solid #ccc',\n whiteSpace: 'nowrap'\n }, contentStyle);\n\n var finalLabelStyle = _objectSpread({\n margin: 0\n }, labelStyle);\n\n var hasLabel = isNumOrStr(label);\n var finalLabel = hasLabel ? label : '';\n var wrapperCN = classNames('recharts-default-tooltip', wrapperClassName);\n var labelCN = classNames('recharts-tooltip-label', labelClassName);\n\n if (hasLabel && labelFormatter) {\n finalLabel = labelFormatter(label);\n }\n\n return React.createElement(\"div\", {\n className: wrapperCN,\n style: finalStyle\n }, React.createElement(\"p\", {\n className: labelCN,\n style: finalLabelStyle\n }, finalLabel), this.renderContent());\n }\n }]);\n\n return DefaultTooltipContent;\n}(PureComponent);\n\nDefaultTooltipContent.displayName = 'DefaultTooltipContent';\nDefaultTooltipContent.defaultProps = {\n separator: ' : ',\n contentStyle: {},\n itemStyle: {},\n labelStyle: {}\n};\nexport default DefaultTooltipContent;","export function shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */\n for (var key in a) {\n if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n\n for (var _key in b) {\n if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n\n return true;\n}","import _isNil from \"lodash/isNil\";\nimport _isString from \"lodash/isString\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { Children } from 'react';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nvar REACT_BROWSER_EVENT_MAP = {\n click: 'onClick',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseover: 'onMouseOver',\n mousemove: 'onMouseMove',\n mouseout: 'onMouseOut',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n touchcancel: 'onTouchCancel',\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart'\n};\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\nexport var LEGEND_TYPES = ['plainline', 'line', 'square', 'rect', 'circle', 'cross', 'diamond', 'star', 'triangle', 'wye', 'none'];\nexport var TOOLTIP_TYPES = ['none'];\n/**\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */\n\nexport var getDisplayName = function getDisplayName(Comp) {\n if (typeof Comp === 'string') {\n return Comp;\n }\n\n if (!Comp) {\n return '';\n }\n\n return Comp.displayName || Comp.name || 'Component';\n};\n/*\n * Find and return all matched children by type. `type` can be a React element class or\n * string\n */\n\nexport var findAllByType = function findAllByType(children, type) {\n var result = [];\n var types = [];\n\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n\n React.Children.forEach(children, function (child) {\n // @ts-ignore\n var childType = child && child.type && (child.type.displayName || child.type.name);\n\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n};\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` can be a React element class or string.\n */\n\nexport var findChildByType = function findChildByType(children, type) {\n var result = findAllByType(children, type);\n return result && result[0];\n};\n/*\n * Create a new array of children excluding the ones matched the type\n */\n\nexport var withoutType = function withoutType(children, type) {\n var newChildren = [];\n var types;\n\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n\n React.Children.forEach(children, function (child) {\n // @ts-ignore\n if (child && child.type && child.type.displayName && types.indexOf(child.type.displayName) !== -1) {\n return;\n }\n\n newChildren.push(child);\n });\n return newChildren;\n};\n/**\n * validate the width and height props of a chart element\n * @param {Object} el A chart element\n * @return {Boolean} true If the props width and height are number, and greater than 0\n */\n\nexport var validateWidthHeight = function validateWidthHeight(el) {\n if (!el || !el.props) {\n return false;\n }\n\n var _el$props = el.props,\n width = _el$props.width,\n height = _el$props.height;\n\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n return false;\n }\n\n return true;\n};\nexport var isSsr = function isSsr() {\n return !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n};\nvar SVG_TAGS = ['a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColormatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-url', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'lineGradient', 'marker', 'mask', 'metadata', 'missing-glyph', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', 'svg', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'];\n\nvar isSvgElement = function isSvgElement(child) {\n return child && child.type && _isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\n/**\n * Filter all the svg elements of children\n * @param {Array} children The children of a react element\n * @return {Array} All the svg elements\n */\n\n\nexport var filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n React.Children.forEach(children, function (entry) {\n if (entry && entry.type && _isString(entry.type) && SVG_TAGS.indexOf(entry.type) >= 0) {\n svgElements.push(entry);\n }\n });\n return svgElements;\n};\nexport var isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (_isNil(nextChild) && _isNil(prevChild)) {\n return true;\n }\n\n if (!_isNil(nextChild) && !_isNil(prevChild)) {\n var _ref = nextChild.props || {},\n nextChildren = _ref.children,\n nextProps = _objectWithoutProperties(_ref, [\"children\"]);\n\n var _ref2 = prevChild.props || {},\n prevChildren = _ref2.children,\n prevProps = _objectWithoutProperties(_ref2, [\"children\"]);\n\n if (nextChildren && prevChildren) {\n // eslint-disable-next-line no-use-before-define\n return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n\n if (!nextChildren && !prevChildren) {\n return shallowEqual(nextProps, prevProps);\n }\n\n return false;\n }\n\n return false;\n};\n/**\n * Wether props of children changed\n * @param {Object} nextChildren The latest children\n * @param {Object} prevChildren The prev children\n * @return {Boolean} equal or not\n */\n\nexport var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n\n if (Children.count(nextChildren) !== Children.count(prevChildren)) {\n return false;\n }\n\n var count = Children.count(nextChildren);\n\n if (count === 0) {\n return true;\n }\n\n if (count === 1) {\n return isSingleChildEqual(_isArray(nextChildren) ? nextChildren[0] : nextChildren, _isArray(prevChildren) ? prevChildren[0] : prevChildren);\n }\n\n for (var _i = 0; _i < count; _i++) {\n var nextChild = nextChildren[_i];\n var prevChild = prevChildren[_i];\n\n if (_isArray(nextChild) || _isArray(prevChild)) {\n if (!isChildrenEqual(nextChild, prevChild)) {\n return false;\n }\n } else if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n\n return true;\n};\nexport var renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n Children.forEach(children, function (child, index) {\n if (child && isSvgElement(child)) {\n elements.push(child);\n } else if (child && renderMap[getDisplayName(child.type)]) {\n var displayName = getDisplayName(child.type);\n var _renderMap$displayNam = renderMap[displayName],\n handler = _renderMap$displayNam.handler,\n once = _renderMap$displayNam.once;\n\n if (once && !record[displayName] || !once) {\n var results = handler(child, displayName, index);\n\n if (_isArray(results)) {\n elements = [elements].concat(_toConsumableArray(results));\n } else {\n elements.push(results);\n }\n\n record[displayName] = true;\n }\n }\n });\n return elements;\n};\nexport var getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n\n return null;\n};\nexport var parseChildIndex = function parseChildIndex(child, children) {\n var result = -1;\n Children.forEach(children, function (entry, index) {\n if (entry === child) {\n result = index;\n }\n });\n return result;\n};","import _isNil from \"lodash/isNil\";\nimport _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Tooltip\n */\nimport React, { PureComponent } from 'react'; // @ts-ignore\n\nimport { translateStyle } from 'react-smooth';\nimport classNames from 'classnames';\nimport DefaultTooltipContent from './DefaultTooltipContent';\nimport { isSsr } from '../util/ReactUtils';\nimport { isNumber } from '../util/DataUtils';\nvar CLS_PREFIX = 'recharts-tooltip-wrapper';\nvar EPS = 1;\n\nfunction defaultUniqBy(entry) {\n return entry.dataKey;\n}\n\n;\n\nfunction getUniqPayload(option, payload) {\n if (option === true) {\n return _uniqBy(payload, defaultUniqBy);\n }\n\n if (_isFunction(option)) {\n return _uniqBy(payload, option);\n }\n\n return payload;\n}\n\n;\n\nfunction renderContent(content, props) {\n if (React.isValidElement(content)) {\n return React.cloneElement(content, props);\n }\n\n if (_isFunction(content)) {\n return content(props);\n }\n\n return React.createElement(DefaultTooltipContent, props);\n}\n\n;\n\nvar Tooltip =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Tooltip, _PureComponent);\n\n function Tooltip() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Tooltip);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Tooltip)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n boxWidth: -1,\n boxHeight: -1\n };\n _this.wrapperNode = void 0;\n\n _this.getTranslate = function (_ref) {\n var key = _ref.key,\n tooltipDimension = _ref.tooltipDimension,\n viewBoxDimension = _ref.viewBoxDimension;\n var _this$props = _this.props,\n allowEscapeViewBox = _this$props.allowEscapeViewBox,\n coordinate = _this$props.coordinate,\n offset = _this$props.offset,\n position = _this$props.position,\n viewBox = _this$props.viewBox;\n\n if (position && isNumber(position[key])) {\n return position[key];\n }\n\n var restricted = coordinate[key] - tooltipDimension - offset;\n var unrestricted = coordinate[key] + offset;\n\n if (allowEscapeViewBox[key]) {\n return unrestricted;\n }\n\n var tooltipBoundary = coordinate[key] + tooltipDimension + offset;\n var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(restricted, viewBox[key]);\n }\n\n return Math.max(unrestricted, viewBox[key]);\n };\n\n return _this;\n }\n\n _createClass(Tooltip, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var _this$state = this.state,\n boxWidth = _this$state.boxWidth,\n boxHeight = _this$state.boxHeight;\n\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n\n if (Math.abs(box.width - boxWidth) > EPS || Math.abs(box.height - boxHeight) > EPS) {\n this.setState({\n boxWidth: box.width,\n boxHeight: box.height\n });\n }\n } else if (boxWidth !== -1 || boxHeight !== -1) {\n this.setState({\n boxWidth: -1,\n boxHeight: -1\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames,\n _this2 = this;\n\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n isAnimationActive = _this$props2.isAnimationActive,\n animationDuration = _this$props2.animationDuration,\n animationEasing = _this$props2.animationEasing,\n filterNull = _this$props2.filterNull,\n payloadUniqBy = _this$props2.payloadUniqBy;\n var finalPayload = getUniqPayload(payloadUniqBy, filterNull && payload && payload.length ? payload.filter(function (entry) {\n return !_isNil(entry.value);\n }) : payload);\n var hasPayload = finalPayload && finalPayload.length;\n var _this$props3 = this.props,\n content = _this$props3.content,\n viewBox = _this$props3.viewBox,\n coordinate = _this$props3.coordinate,\n position = _this$props3.position,\n active = _this$props3.active,\n wrapperStyle = _this$props3.wrapperStyle;\n\n var outerStyle = _objectSpread({\n pointerEvents: 'none',\n visibility: active && hasPayload ? 'visible' : 'hidden',\n position: 'absolute',\n top: 0\n }, wrapperStyle);\n\n var translateX, translateY;\n\n if (position && isNumber(position.x) && isNumber(position.y)) {\n translateX = position.x;\n translateY = position.y;\n } else {\n var _this$state2 = this.state,\n boxWidth = _this$state2.boxWidth,\n boxHeight = _this$state2.boxHeight;\n\n if (boxWidth > 0 && boxHeight > 0 && coordinate) {\n translateX = this.getTranslate({\n key: 'x',\n tooltipDimension: boxWidth,\n viewBoxDimension: viewBox.width\n });\n translateY = this.getTranslate({\n key: 'y',\n tooltipDimension: boxHeight,\n viewBoxDimension: viewBox.height\n });\n } else {\n outerStyle.visibility = 'hidden';\n }\n }\n\n outerStyle = _objectSpread({}, translateStyle({\n transform: this.props.useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n }), {}, outerStyle);\n\n if (isAnimationActive && active) {\n outerStyle = _objectSpread({}, translateStyle({\n transition: \"transform \".concat(animationDuration, \"ms \").concat(animationEasing)\n }), {}, outerStyle);\n }\n\n var cls = classNames(CLS_PREFIX, (_classNames = {}, _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-right\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-left\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-bottom\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-top\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y), _classNames));\n return React.createElement(\"div\", {\n className: cls,\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread({}, this.props, {\n payload: finalPayload\n })));\n }\n }]);\n\n return Tooltip;\n}(PureComponent);\n\nTooltip.displayName = 'Tooltip';\nTooltip.defaultProps = {\n active: false,\n allowEscapeViewBox: {\n x: false,\n y: false\n },\n offset: 10,\n viewBox: {\n x1: 0,\n x2: 0,\n y1: 0,\n y2: 0\n },\n coordinate: {\n x: 0,\n y: 0\n },\n cursorStyle: {},\n separator: ' : ',\n wrapperStyle: {},\n contentStyle: {},\n itemStyle: {},\n labelStyle: {},\n cursor: true,\n isAnimationActive: !isSsr(),\n animationEasing: 'ease',\n animationDuration: 400,\n filterNull: true,\n useTranslate3d: false\n};\nexport default Tooltip;","var rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\nexport default rafSchd;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","import debounce from \"lodash-es/debounce\";\nimport throttle from \"lodash-es/throttle\";\nexport var listHandle = {\n debounce: debounce,\n throttle: throttle\n};\nexport var getHandle = function getHandle(type) {\n return listHandle[type];\n};\nexport var isFunction = function isFunction(fn) {\n return typeof fn === 'function';\n};\nexport var isSSR = function isSSR() {\n return typeof window === 'undefined';\n};\nexport var isDOMElement = function isDOMElement(element) {\n return element instanceof Element || element instanceof HTMLDocument;\n};","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport { PureComponent } from 'react';\n\nvar ChildWrapper =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ChildWrapper, _PureComponent);\n\n function ChildWrapper() {\n _classCallCheck(this, ChildWrapper);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ChildWrapper).apply(this, arguments));\n }\n\n _createClass(ChildWrapper, [{\n key: \"render\",\n value: function render() {\n // eslint-disable-next-line react/prop-types\n return this.props.children;\n }\n }]);\n\n return ChildWrapper;\n}(PureComponent);\n\nexport default ChildWrapper;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { PureComponent, isValidElement, cloneElement, createElement } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport rafSchd from 'raf-schd';\nimport { bool, number, string, shape, func, any, node } from 'prop-types';\nimport { getHandle, isFunction, isSSR, isDOMElement } from \"../lib/utils\";\nimport ChildWrapper from \"./ChildWrapper\";\n\nvar ResizeDetector =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ResizeDetector, _PureComponent);\n\n function ResizeDetector(props) {\n var _this;\n\n _classCallCheck(this, ResizeDetector);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ResizeDetector).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"cancelHandler\", function () {\n if (_this.resizeHandler && _this.resizeHandler.cancel) {\n // cancel debounced handler\n _this.resizeHandler.cancel();\n\n _this.resizeHandler = null;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"rafClean\", function () {\n if (_this.raf && _this.raf.cancel) {\n _this.raf.cancel();\n\n _this.raf = null;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"toggleObserver\", function (type) {\n var element = _this.getElement();\n\n if (!element || !_this.resizeObserver[type]) return;\n\n _this.resizeObserver[type](element);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getElement\", function () {\n var _this$props = _this.props,\n querySelector = _this$props.querySelector,\n targetDomEl = _this$props.targetDomEl;\n if (isSSR()) return undefined;\n if (querySelector) return document.querySelector(querySelector);\n if (targetDomEl && isDOMElement(targetDomEl)) return targetDomEl; // eslint-disable-next-line react/no-find-dom-node\n\n var currentElement = _this.element && findDOMNode(_this.element);\n if (!currentElement) return undefined;\n return currentElement.parentElement;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"createUpdater\", function () {\n _this.rafClean();\n\n _this.raf = rafSchd(function (_ref) {\n var width = _ref.width,\n height = _ref.height;\n var onResize = _this.props.onResize;\n\n if (isFunction(onResize)) {\n onResize(width, height);\n }\n\n _this.setState({\n width: width,\n height: height\n });\n });\n return _this.raf;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"createResizeHandler\", function (entries) {\n var _this$state = _this.state,\n widthCurrent = _this$state.width,\n heightCurrent = _this$state.height;\n var _this$props2 = _this.props,\n handleWidth = _this$props2.handleWidth,\n handleHeight = _this$props2.handleHeight;\n if (!handleWidth && !handleHeight) return;\n\n var updater = _this.createUpdater();\n\n entries.forEach(function (entry) {\n var _ref2 = entry && entry.contentRect || {},\n width = _ref2.width,\n height = _ref2.height;\n\n var isWidthChanged = handleWidth && widthCurrent !== width;\n var isHeightChanged = handleHeight && heightCurrent !== height;\n var isSizeChanged = isWidthChanged || isHeightChanged;\n var shouldSetSize = !_this.skipOnMount && isSizeChanged && !isSSR();\n\n if (shouldSetSize) {\n updater({\n width: width,\n height: height\n });\n }\n\n _this.skipOnMount = false;\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRef\", function (el) {\n _this.element = el;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getRenderType\", function () {\n var _this$props3 = _this.props,\n render = _this$props3.render,\n children = _this$props3.children;\n\n if (isFunction(render)) {\n return 'renderProp';\n }\n\n if (isFunction(children)) {\n return 'childFunction';\n }\n\n if (isValidElement(children)) {\n return 'child';\n }\n\n if (Array.isArray(children)) {\n return 'childArray';\n }\n\n return 'parent';\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getTargetComponent\", function () {\n var _this$props4 = _this.props,\n render = _this$props4.render,\n children = _this$props4.children,\n nodeType = _this$props4.nodeType;\n var _this$state2 = _this.state,\n width = _this$state2.width,\n height = _this$state2.height;\n var childProps = {\n width: width,\n height: height\n };\n\n var renderType = _this.getRenderType();\n\n switch (renderType) {\n case 'renderProp':\n return cloneElement(render(childProps), {\n key: 'resize-detector'\n });\n\n case 'childFunction':\n return cloneElement(children(childProps));\n\n case 'child':\n return cloneElement(children, childProps);\n\n case 'childArray':\n return children.map(function (el) {\n return !!el && cloneElement(el, childProps);\n });\n\n default:\n return createElement(nodeType);\n }\n });\n\n var skipOnMount = props.skipOnMount,\n refreshMode = props.refreshMode,\n refreshRate = props.refreshRate,\n refreshOptions = props.refreshOptions;\n _this.state = {\n width: undefined,\n height: undefined\n };\n _this.skipOnMount = skipOnMount;\n _this.raf = null;\n _this.element = null;\n _this.unmounted = false;\n var handle = getHandle(refreshMode);\n _this.resizeHandler = handle ? handle(_this.createResizeHandler, refreshRate, refreshOptions) : _this.createResizeHandler;\n _this.resizeObserver = new ResizeObserver(_this.resizeHandler);\n return _this;\n }\n\n _createClass(ResizeDetector, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.toggleObserver('observe');\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.toggleObserver('unobserve');\n this.rafClean();\n this.cancelHandler();\n this.unmounted = true;\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(ChildWrapper, {\n ref: this.onRef\n }, this.getTargetComponent());\n }\n }]);\n\n return ResizeDetector;\n}(PureComponent);\n\nResizeDetector.propTypes = {\n handleWidth: bool,\n handleHeight: bool,\n skipOnMount: bool,\n refreshRate: number,\n refreshMode: string,\n refreshOptions: shape({\n leading: bool,\n trailing: bool\n }),\n querySelector: string,\n targetDomEl: any,\n // eslint-disable-line react/forbid-prop-types\n onResize: func,\n render: func,\n children: any,\n // eslint-disable-line react/forbid-prop-types\n nodeType: node\n};\nResizeDetector.defaultProps = {\n handleWidth: false,\n handleHeight: false,\n skipOnMount: false,\n refreshRate: 1000,\n refreshMode: undefined,\n refreshOptions: undefined,\n querySelector: null,\n targetDomEl: null,\n onResize: null,\n render: undefined,\n children: null,\n nodeType: 'div'\n};\nexport default ResizeDetector;","import ResizeDetector from \"./components/ResizeDetector\";\nimport withResizeDetector from \"./hoc/withResizeDetector\";\nexport { withResizeDetector };\nexport default ResizeDetector;","/* eslint no-console: 0 */\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","import _debounce from \"lodash/debounce\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport ReactResizeDetector from 'react-resize-detector';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\n\nvar ResponsiveContainer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ResponsiveContainer, _Component);\n\n function ResponsiveContainer(props) {\n var _this;\n\n _classCallCheck(this, ResponsiveContainer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveContainer).call(this, props));\n _this.handleResize = void 0;\n _this.mounted = void 0;\n _this.container = void 0;\n\n _this.updateDimensionsImmediate = function () {\n if (!_this.mounted) {\n return;\n }\n\n var newSize = _this.getContainerSize();\n\n if (newSize) {\n var _this$state = _this.state,\n oldWidth = _this$state.containerWidth,\n oldHeight = _this$state.containerHeight;\n var containerWidth = newSize.containerWidth,\n containerHeight = newSize.containerHeight;\n\n if (containerWidth !== oldWidth || containerHeight !== oldHeight) {\n _this.setState({\n containerWidth: containerWidth,\n containerHeight: containerHeight\n });\n }\n }\n };\n\n _this.state = {\n containerWidth: -1,\n containerHeight: -1\n };\n _this.handleResize = props.debounce > 0 ? _debounce(_this.updateDimensionsImmediate, props.debounce) : _this.updateDimensionsImmediate;\n return _this;\n }\n /* eslint-disable react/no-did-mount-set-state */\n\n\n _createClass(ResponsiveContainer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true;\n var size = this.getContainerSize();\n\n if (size) {\n this.setState(size);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: \"getContainerSize\",\n value: function getContainerSize() {\n if (!this.container) {\n return null;\n }\n\n return {\n containerWidth: this.container.clientWidth,\n containerHeight: this.container.clientHeight\n };\n }\n }, {\n key: \"renderChart\",\n value: function renderChart() {\n var _this$state2 = this.state,\n containerWidth = _this$state2.containerWidth,\n containerHeight = _this$state2.containerHeight;\n\n if (containerWidth < 0 || containerHeight < 0) {\n return null;\n }\n\n var _this$props = this.props,\n aspect = _this$props.aspect,\n width = _this$props.width,\n height = _this$props.height,\n minWidth = _this$props.minWidth,\n minHeight = _this$props.minHeight,\n maxHeight = _this$props.maxHeight,\n children = _this$props.children;\n warn(isPercent(width) || isPercent(height), \"The width(%s) and height(%s) are both fixed numbers,\\n maybe you don't need to use a ResponsiveContainer.\", width, height);\n warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n var calculatedWidth = isPercent(width) ? containerWidth : width;\n var calculatedHeight = isPercent(height) ? containerHeight : height;\n\n if (aspect && aspect > 0) {\n // Preserve the desired aspect ratio\n if (calculatedWidth) {\n // Will default to using width for aspect ratio\n calculatedHeight = calculatedWidth / aspect;\n } else if (calculatedHeight) {\n // But we should also take height into consideration\n calculatedWidth = calculatedHeight * aspect;\n } // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n\n\n if (maxHeight && calculatedHeight > maxHeight) {\n calculatedHeight = maxHeight;\n }\n }\n\n warn(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n please check the style of container, or the props width(%s) and height(%s),\\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n return React.cloneElement(children, {\n width: calculatedWidth,\n height: calculatedHeight\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n minWidth = _this$props2.minWidth,\n minHeight = _this$props2.minHeight,\n width = _this$props2.width,\n height = _this$props2.height,\n maxHeight = _this$props2.maxHeight,\n id = _this$props2.id,\n className = _this$props2.className;\n var style = {\n width: width,\n height: height,\n minWidth: minWidth,\n minHeight: minHeight,\n maxHeight: maxHeight\n };\n return React.createElement(\"div\", {\n id: \"\".concat(id),\n className: classNames('recharts-responsive-container', className),\n style: style,\n ref: function ref(node) {\n _this2.container = node;\n }\n }, this.renderChart(), React.createElement(ReactResizeDetector, {\n handleWidth: true,\n handleHeight: true,\n onResize: this.handleResize\n }));\n }\n }]);\n\n return ResponsiveContainer;\n}(Component);\n\nResponsiveContainer.defaultProps = {\n width: '100%',\n height: '100%',\n debounce: 0\n};\nexport default ResponsiveContainer;","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var 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 the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"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._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var 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._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var 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 the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"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._ += \"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._ += \"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._ += \"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: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = 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","import _isObject from \"lodash/isObject\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { isValidElement } from 'react';\n;\nvar SVGPropKeys = ['className', 'color', 'height', 'id', 'lang', 'max', 'media', 'method', 'min', 'name', 'style', 'target', 'type', 'width', 'role', 'tabIndex', 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic', 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth', 'baseFrequency', 'baselineShift', 'baseProfile', 'bbox', 'begin', 'bias', 'by', 'calcMode', 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', 'colorInterpolation', 'colorInterpolationFilters', 'colorProfile', 'colorRendering', 'contentScriptType', 'contentStyleType', 'cursor', 'cx', 'cy', 'd', 'decelerate', 'descent', 'diffuseConstant', 'direction', 'display', 'divisor', 'dominantBaseline', 'dur', 'dx', 'dy', 'edgeMode', 'elevation', 'enableBackground', 'end', 'exponent', 'externalResourcesRequired', 'fill', 'fillOpacity', 'fillRule', 'filter', 'filterRes', 'filterUnits', 'floodColor', 'floodOpacity', 'focusable', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontWeight', 'format', 'from', 'fx', 'fy', 'g1', 'g2', 'glyphName', 'glyphOrientationHorizontal', 'glyphOrientationVertical', 'glyphRef', 'gradientTransform', 'gradientUnits', 'hanging', 'horizAdvX', 'horizOriginX', 'href', 'ideographic', 'imageRendering', 'in2', 'in', 'intercept', 'k1', 'k2', 'k3', 'k4', 'k', 'kernelMatrix', 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust', 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight', 'markerMid', 'markerStart', 'markerUnits', 'markerWidth', 'mask', 'maskContentUnits', 'maskUnits', 'mathematical', 'mode', 'numOctaves', 'offset', 'opacity', 'operator', 'order', 'orient', 'orientation', 'origin', 'overflow', 'overlinePosition', 'overlineThickness', 'paintOrder', 'panose1', 'pathLength', 'patternContentUnits', 'patternTransform', 'patternUnits', 'pointerEvents', 'points', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'r', 'radius', 'refX', 'refY', 'renderingIntent', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'result', 'rotate', 'rx', 'ry', 'seed', 'shapeRendering', 'slope', 'spacing', 'specularConstant', 'specularExponent', 'speed', 'spreadMethod', 'startOffset', 'stdDeviation', 'stemh', 'stemv', 'stitchTiles', 'stopColor', 'stopOpacity', 'strikethroughPosition', 'strikethroughThickness', 'string', 'stroke', 'strokeDasharray', 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'surfaceScale', 'systemLanguage', 'tableValues', 'targetX', 'targetY', 'textAnchor', 'textDecoration', 'textLength', 'textRendering', 'to', 'transform', 'u1', 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange', 'unitsPerEm', 'vAlphabetic', 'values', 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'vHanging', 'vIdeographic', 'viewBox', 'viewTarget', 'visibility', 'vMathematical', 'widths', 'wordSpacing', 'writingMode', 'x1', 'x2', 'x', 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole', 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlBase', 'xmlLang', 'xmlns', 'xmlnsXlink', 'xmlSpace', 'y1', 'y2', 'y', 'yChannelSelector', 'z', 'zoomAndPan', 'ref', 'key'];\nvar EventKeys = ['children', 'dangerouslySetInnerHTML', 'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', 'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', 'onLoad', 'onLoadCapture', 'onError', 'onErrorCapture', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', 'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', 'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onSelectCapture', 'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', 'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', 'onScroll', 'onScrollCapture', 'onWheel', 'onWheelCapture', 'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', 'onTransitionEnd', 'onTransitionEndCapture']; // Animation Types => TODO: Should be moved when react-smooth is typescriptified.\n\n;\nexport var filterProps = function filterProps(props, includeEvents) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n\n var inputProps = props;\n\n if (isValidElement(props)) {\n inputProps = props.props;\n }\n\n if (!_isObject(inputProps)) {\n return null;\n }\n\n var out = {};\n\n for (var i in inputProps) {\n if (SVGPropKeys.includes(i) || includeEvents && EventKeys.includes(i)) {\n out[i] = inputProps[i];\n }\n }\n\n return out;\n};\nexport var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n\n var inputProps = props;\n\n if (isValidElement(props)) {\n inputProps = props.props;\n }\n\n if (!_isObject(inputProps)) {\n return null;\n }\n\n var out = {};\n\n var _loop = function _loop(i) {\n if (EventKeys.includes(i)) {\n out[i] = newHandler || function (e) {\n return inputProps[i](inputProps, e);\n };\n }\n };\n\n for (var i in inputProps) {\n _loop(i);\n }\n\n return out;\n};\n\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n return function (e) {\n originalHandler(data, index, e);\n return null;\n };\n};\n\nexport var adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n if (!_isObject(props) || _typeof(props) !== 'object') {\n return null;\n }\n\n var out = null;\n\n for (var i in props) {\n // @ts-ignore\n var item = props[i];\n\n if (EventKeys.includes(i) && typeof item === 'function') {\n if (!out) out = {};\n out[i] = getEventHandlerOfChild(item, data, index);\n }\n }\n\n return out;\n};","import _isArray from \"lodash/isArray\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'd3-shape';\nimport classNames from 'classnames';\nimport { adaptEventHandlers, filterProps } from '../util/types';\nimport { isNumber } from '../util/DataUtils';\nvar CURVE_FACTORIES = {\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveBasis: curveBasis,\n curveLinearClosed: curveLinearClosed,\n curveLinear: curveLinear,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\n\nvar defined = function defined(p) {\n return p.x === +p.x && p.y === +p.y;\n};\n\nvar getX = function getX(p) {\n return p.x;\n};\n\nvar getY = function getY(p) {\n return p.y;\n};\n\nvar getCurveFactory = function getCurveFactory(type, layout) {\n if (_isFunction(type)) {\n return type;\n }\n\n var name = \"curve\".concat(type.slice(0, 1).toUpperCase()).concat(type.slice(1));\n\n if (name === 'curveMonotone' && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n }\n\n return CURVE_FACTORIES[name] || curveLinear;\n};\n\nvar Curve =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Curve, _PureComponent);\n\n function Curve() {\n _classCallCheck(this, Curve);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Curve).apply(this, arguments));\n }\n\n _createClass(Curve, [{\n key: \"getPath\",\n\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n value: function getPath() {\n var _this$props = this.props,\n type = _this$props.type,\n points = _this$props.points,\n baseLine = _this$props.baseLine,\n layout = _this$props.layout,\n connectNulls = _this$props.connectNulls;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(function (entry) {\n return defined(entry);\n }) : points;\n var lineFunction;\n\n if (_isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(function (base) {\n return defined(base);\n }) : baseLine;\n var areaPoints = formatPoints.map(function (entry, index) {\n return _objectSpread({}, entry, {\n base: formatBaseLine[index]\n });\n });\n\n if (layout === 'vertical') {\n lineFunction = shapeArea().y(getY).x1(getX).x0(function (d) {\n return d.base.x;\n });\n } else {\n lineFunction = shapeArea().x(getX).y1(getY).y0(function (d) {\n return d.base.y;\n });\n }\n\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n\n if (layout === 'vertical' && isNumber(baseLine)) {\n lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n } else if (isNumber(baseLine)) {\n lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = shapeLine().x(getX).y(getY);\n }\n\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n points = _this$props2.points,\n path = _this$props2.path,\n pathRef = _this$props2.pathRef;\n\n if ((!points || !points.length) && !path) {\n return null;\n }\n\n var realPath = points && points.length ? this.getPath() : path;\n return React.createElement(\"path\", _extends({}, filterProps(this.props), adaptEventHandlers(this.props), {\n className: classNames('recharts-curve', className),\n d: realPath,\n ref: pathRef\n }));\n }\n }]);\n\n return Curve;\n}(PureComponent);\n\nCurve.defaultProps = {\n type: 'linear',\n points: [],\n connectNulls: false\n};\nexport default Curve;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Dot\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { adaptEventHandlers, filterProps } from '../util/types';\n\nvar Dot =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Dot, _PureComponent);\n\n function Dot() {\n _classCallCheck(this, Dot);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Dot).apply(this, arguments));\n }\n\n _createClass(Dot, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n r = _this$props.r,\n className = _this$props.className;\n var layerClass = classNames('recharts-dot', className);\n\n if (cx === +cx && cy === +cy && r === +r) {\n return React.createElement(\"circle\", _extends({}, filterProps(this.props), adaptEventHandlers(this.props), {\n className: layerClass,\n cx: cx,\n cy: cy,\n r: r\n }));\n }\n\n return null;\n }\n }]);\n\n return Dot;\n}(PureComponent);\n\nexport default Dot;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Layer\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\n\nfunction Layer(props) {\n var children = props.children,\n className = props.className,\n others = _objectWithoutProperties(props, [\"children\", \"className\"]);\n\n var layerClass = classNames('recharts-layer', className);\n return React.createElement(\"g\", _extends({\n className: layerClass\n }, filterProps(others, true)), children);\n}\n\nexport default Layer;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nimport { isSsr } from './ReactUtils';\nvar stringCache = {\n widthCache: {},\n cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre'\n};\nvar STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'lineHeight', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\n\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return \"\".concat(value, \"px\");\n }\n\n return value;\n}\n\nfunction camelToMiddleLine(text) {\n var strs = text.split('');\n var formatStrs = strs.reduce(function (result, entry) {\n if (entry === entry.toUpperCase()) {\n return [].concat(_toConsumableArray(result), ['-', entry.toLowerCase()]);\n }\n\n return [].concat(_toConsumableArray(result), [entry]);\n }, []);\n return formatStrs.join('');\n}\n\nexport var getStyleString = function getStyleString(style) {\n return Object.keys(style).reduce(function (result, s) {\n return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n }, '');\n};\nexport var getStringSize = function getStringSize(text) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (text === undefined || text === null || isSsr()) {\n return {\n width: 0,\n height: 0\n };\n }\n\n var str = \"\".concat(text);\n var styleString = getStyleString(style);\n var cacheKey = \"\".concat(str, \"-\").concat(styleString);\n\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n\n try {\n var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n\n if (!measurementSpan) {\n measurementSpan = document.createElement('span');\n measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n document.body.appendChild(measurementSpan);\n } // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n // https://en.wikipedia.org/wiki/Content_Security_Policy\n\n\n var measurementSpanStyle = _objectSpread({}, SPAN_STYLE, {}, style);\n\n Object.keys(measurementSpanStyle).map(function (styleKey) {\n measurementSpan.style[styleKey] = measurementSpanStyle[styleKey];\n return styleKey;\n });\n measurementSpan.textContent = str;\n var rect = measurementSpan.getBoundingClientRect();\n var result = {\n width: rect.width,\n height: rect.height\n };\n stringCache.widthCache[cacheKey] = result;\n\n if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n stringCache.cacheCount = 0;\n stringCache.widthCache = {};\n }\n\n return result;\n } catch (e) {\n return {\n width: 0,\n height: 0\n };\n }\n};\nexport var getOffset = function getOffset(el) {\n var html = el.ownerDocument.documentElement;\n var box = {\n top: 0,\n left: 0\n }; // If we don't have gBCR, just use 0,0 rather than error\n // BlackBerry 5, iOS 3 (original iPhone)\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n return {\n top: box.top + window.pageYOffset - html.clientTop,\n left: box.left + window.pageXOffset - html.clientLeft\n };\n};\n/**\n * Calculate coordinate of cursor in chart\n * @param {Object} event Event object\n * @param {Object} offset The offset of main part in the svg element\n * @return {Object} {chartX, chartY}\n */\n\nexport var calculateChartCoordinate = function calculateChartCoordinate(event, offset) {\n return {\n chartX: Math.round(event.pageX - offset.left),\n chartY: Math.round(event.pageY - offset.top)\n };\n};","import _isNil from \"lodash/isNil\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport React, { Component } from 'react'; // @ts-ignore\n\nimport reduceCSSCalc from 'reduce-css-calc';\nimport classNames from 'classnames';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { isSsr } from '../util/ReactUtils';\nimport { filterProps } from '../util/types';\nimport { getStringSize } from '../util/DOMUtils';\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\n\nvar calculateWordWidths = function calculateWordWidths(props) {\n try {\n var words = !_isNil(props.children) ? props.children.toString().split(BREAKING_SPACES) : [];\n var wordsWithComputedWidth = words.map(function (word) {\n return {\n word: word,\n width: getStringSize(word, props.style).width\n };\n });\n var spaceWidth = getStringSize(\"\\xA0\", props.style).width;\n return {\n wordsWithComputedWidth: wordsWithComputedWidth,\n spaceWidth: spaceWidth\n };\n } catch (e) {\n return null;\n }\n};\n\nvar Text =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Text, _Component);\n\n function Text(_props) {\n var _this;\n\n _classCallCheck(this, Text);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Text).call(this, _props));\n\n _this.getWordsWithoutCalculate = function (props) {\n var words = !_isNil(props.children) ? props.children.toString().split(BREAKING_SPACES) : [];\n return [{\n words: words\n }];\n };\n\n _this.state = {\n wordsByLines: _this.getWordsByLines(_props, true)\n };\n return _this;\n }\n\n _createClass(Text, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateWordsByLines(this.props, true);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.width !== this.props.width || prevProps.scaleToFit !== this.props.scaleToFit || prevProps.children !== this.props.children || prevProps.style !== this.props.style) {\n var needCalculate = this.props.children !== prevProps.children || this.props.style !== prevProps.style;\n this.updateWordsByLines(this.props, needCalculate);\n }\n }\n }, {\n key: \"updateWordsByLines\",\n value: function updateWordsByLines(props, needCalculate) {\n this.setState({\n wordsByLines: this.getWordsByLines(props, needCalculate)\n });\n }\n }, {\n key: \"getWordsByLines\",\n value: function getWordsByLines(props, needCalculate) {\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((props.width || props.scaleToFit) && !isSsr()) {\n var wordsWithComputedWidth;\n var spaceWidth;\n\n if (needCalculate) {\n var wordWidths = calculateWordWidths(props);\n\n if (wordWidths) {\n var wcw = wordWidths.wordsWithComputedWidth,\n sw = wordWidths.spaceWidth;\n wordsWithComputedWidth = wcw;\n spaceWidth = sw;\n } else {\n return this.getWordsWithoutCalculate(props);\n }\n }\n\n return this.calculateWordsByLines(wordsWithComputedWidth, spaceWidth, props.width);\n }\n\n return this.getWordsWithoutCalculate(props);\n }\n }, {\n key: \"calculateWordsByLines\",\n value: function calculateWordsByLines(wordsWithComputedWidth, spaceWidth, lineWidth) {\n var scaleToFit = this.props.scaleToFit;\n return (wordsWithComputedWidth || []).reduce(function (result, _ref) {\n var word = _ref.word,\n width = _ref.width;\n var currentLine = result[result.length - 1];\n\n if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < lineWidth)) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width += width + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [word],\n width: width\n };\n result.push(newLine);\n }\n\n return result;\n }, []);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n dx = _this$props.dx,\n dy = _this$props.dy,\n textAnchor = _this$props.textAnchor,\n verticalAnchor = _this$props.verticalAnchor,\n scaleToFit = _this$props.scaleToFit,\n angle = _this$props.angle,\n lineHeight = _this$props.lineHeight,\n capHeight = _this$props.capHeight,\n className = _this$props.className,\n textProps = _objectWithoutProperties(_this$props, [\"dx\", \"dy\", \"textAnchor\", \"verticalAnchor\", \"scaleToFit\", \"angle\", \"lineHeight\", \"capHeight\", \"className\"]);\n\n var wordsByLines = this.state.wordsByLines;\n\n if (!isNumOrStr(textProps.x) || !isNumOrStr(textProps.y)) {\n return null;\n }\n\n var x = textProps.x + (isNumber(dx) ? dx : 0);\n var y = textProps.y + (isNumber(dy) ? dy : 0);\n var startDy;\n\n switch (verticalAnchor) {\n case 'start':\n startDy = reduceCSSCalc(\"calc(\".concat(capHeight, \")\"));\n break;\n\n case 'middle':\n startDy = reduceCSSCalc(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n break;\n\n default:\n startDy = reduceCSSCalc(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n break;\n }\n\n var transforms = [];\n\n if (scaleToFit) {\n var lineWidth = wordsByLines[0].width;\n var width = this.props.width;\n transforms.push(\"scale(\".concat((isNumber(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n }\n\n if (angle) {\n transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n }\n\n if (transforms.length) {\n textProps.transform = transforms.join(' ');\n }\n\n return React.createElement(\"text\", _extends({}, filterProps(textProps, true), {\n x: x,\n y: y,\n className: classNames('recharts-text', className),\n textAnchor: textAnchor\n }), wordsByLines.map(function (line, index) {\n return (// eslint-disable-next-line react/no-array-index-key\n React.createElement(\"tspan\", {\n x: x,\n dy: index === 0 ? startDy : lineHeight,\n key: index\n }, line.words.join(' '))\n );\n }));\n }\n }]);\n\n return Text;\n}(Component);\n\nText.defaultProps = {\n x: 0,\n y: 0,\n lineHeight: '1em',\n capHeight: '0.71em',\n // Magic number from d3\n scaleToFit: false,\n textAnchor: 'start',\n verticalAnchor: 'end' // Maintain compat with existing charts / default SVG behavior\n\n};\nexport default Text;","export default function(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","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","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","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\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_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 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? new Rgb((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: function(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: function(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: function() {\n return this;\n },\n displayable: function() {\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 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_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\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: function(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: function(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: function() {\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 displayable: function() {\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: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\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 function(x) {\n return function() {\n return x;\n };\n}\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","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 value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return 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(x) {\n return function() {\n return x;\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// 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, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(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\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimal(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 formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return 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 // Perform the initial formatting.\n var valueNegative = value < 0;\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 during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\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","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 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 {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(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) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return 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(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","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\";\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 = array.length - 1, compare = ascending) {\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 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","export default function(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import max from \"./max.js\";\nimport min from \"./min.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length)) return;\n if ((p = +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)) return;\n if ((p = +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","import {ascending, bisect, quantile 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 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 <= 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 <= 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","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\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 \"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 \"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 \"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[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[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[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[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[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 var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\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 formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(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 formatFullYear(d, p) {\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 formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(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 formatUTCFullYear(d, p) {\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 {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} 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\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\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(year, month, week, day, hour, minute, second, millisecond, 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 var 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 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 function tickInterval(interval, start, stop) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target),\n step;\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n return interval.every(step);\n }\n\n return interval;\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 t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\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 return (interval = tickInterval(interval, d[0], d[d.length - 1]))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import {calendar} from \"./time.js\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init.js\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, 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 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 (!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","export default function piecewise(interpolate, values) {\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","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export var slice = Array.prototype.slice;\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} 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\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = 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(slice.call(_)), 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(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Surface\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\n\nfunction Surface(props) {\n var children = props.children,\n width = props.width,\n height = props.height,\n viewBox = props.viewBox,\n className = props.className,\n style = props.style,\n others = _objectWithoutProperties(props, [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\"]);\n\n var svgView = viewBox || {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n var layerClass = classNames('recharts-surface', className);\n return React.createElement(\"svg\", _extends({}, filterProps(others, true), {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height),\n version: \"1.1\"\n }), children);\n}\n\nexport default Surface;","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'd3-shape';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nvar SYMBOL_FACTORIES = {\n symbolCircle: symbolCircle,\n symbolCross: symbolCross,\n symbolDiamond: symbolDiamond,\n symbolSquare: symbolSquare,\n symbolStar: symbolStar,\n symbolTriangle: symbolTriangle,\n symbolWye: symbolWye\n};\nvar RADIAN = Math.PI / 180;\n\nvar getSymbolFactory = function getSymbolFactory(type) {\n var name = \"symbol\".concat(type.slice(0, 1).toUpperCase()).concat(type.slice(1));\n return SYMBOL_FACTORIES[name] || symbolCircle;\n};\n\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n if (sizeType === 'area') {\n return size;\n }\n\n switch (type) {\n case 'cross':\n return 5 * size * size / 9;\n\n case 'diamond':\n return 0.5 * size * size / Math.sqrt(3);\n\n case 'square':\n return size * size;\n\n case 'star':\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n }\n\n case 'triangle':\n return Math.sqrt(3) * size * size / 4;\n\n case 'wye':\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n\n default:\n return Math.PI * size * size / 4;\n }\n};\n\nvar Symbols =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Symbols, _PureComponent);\n\n function Symbols() {\n _classCallCheck(this, Symbols);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Symbols).apply(this, arguments));\n }\n\n _createClass(Symbols, [{\n key: \"getPath\",\n\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n value: function getPath() {\n var _this$props = this.props,\n size = _this$props.size,\n sizeType = _this$props.sizeType,\n type = _this$props.type;\n var symbolFactory = getSymbolFactory(type);\n var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n cx = _this$props2.cx,\n cy = _this$props2.cy,\n size = _this$props2.size;\n\n if (cx === +cx && cy === +cy && size === +size) {\n return React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: classNames('recharts-symbols', className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: this.getPath()\n }));\n }\n\n return null;\n }\n }]);\n\n return Symbols;\n}(PureComponent);\n\nSymbols.defaultProps = {\n type: 'circle',\n size: 64,\n sizeType: 'area'\n};\nexport default Symbols;","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Surface from '../container/Surface';\nimport Symbols from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nvar SIZE = 32;\n\nvar DefaultLegendContent =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(DefaultLegendContent, _PureComponent);\n\n function DefaultLegendContent() {\n _classCallCheck(this, DefaultLegendContent);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DefaultLegendContent).apply(this, arguments));\n }\n\n _createClass(DefaultLegendContent, [{\n key: \"renderIcon\",\n\n /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */\n value: function renderIcon(data) {\n var inactiveColor = this.props.inactiveColor;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n\n if (data.type === 'plainline') {\n return React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n\n if (data.type === 'line') {\n return React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n\n if (data.type === 'rect') {\n return React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n\n return React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: data.type\n });\n }\n /**\n * Draw items of legend\n * @return {ReactElement} Items\n */\n\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var _this = this;\n\n var _this$props = this.props,\n payload = _this$props.payload,\n iconSize = _this$props.iconSize,\n layout = _this$props.layout,\n formatter = _this$props.formatter;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map(function (entry, i) {\n var _classNames;\n\n var finalFormatter = entry.formatter || formatter;\n var className = classNames((_classNames = {\n 'recharts-legend-item': true\n }, _defineProperty(_classNames, \"legend-item-\".concat(i), true), _defineProperty(_classNames, \"inactive\", entry.inactive), _classNames));\n\n if (entry.type === 'none') {\n return null;\n }\n\n return React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle,\n key: \"legend-item-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }, adaptEventsOfChild(_this.props, entry, i)), React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle\n }, _this.renderIcon(entry)), React.createElement(\"span\", {\n className: \"recharts-legend-item-text\"\n }, finalFormatter ? finalFormatter(entry.value, entry, i) : entry.value));\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n layout = _this$props2.layout,\n align = _this$props2.align;\n\n if (!payload || !payload.length) {\n return null;\n }\n\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n }]);\n\n return DefaultLegendContent;\n}(PureComponent);\n\nDefaultLegendContent.displayName = 'Legend';\nDefaultLegendContent.defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n inactiveColor: '#ccc'\n};\nexport default DefaultLegendContent;","import _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Legend\n */\nimport React, { PureComponent } from 'react';\nimport DefaultLegendContent from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\n\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\n\n;\n\nfunction getUniqPayload(option, payload) {\n if (option === true) {\n return _uniqBy(payload, defaultUniqBy);\n }\n\n if (_isFunction(option)) {\n return _uniqBy(payload, option);\n }\n\n return payload;\n}\n\n;\n\nfunction renderContent(content, props) {\n if (React.isValidElement(content)) {\n return React.cloneElement(content, props);\n }\n\n if (_isFunction(content)) {\n return content(props);\n }\n\n return React.createElement(DefaultLegendContent, props);\n}\n\n;\nvar EPS = 1;\n\nvar Legend =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Legend, _PureComponent);\n\n function Legend() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Legend);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Legend)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.wrapperNode = void 0;\n _this.state = {\n boxWidth: -1,\n boxHeight: -1\n };\n return _this;\n }\n\n _createClass(Legend, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"getBBox\",\n value: function getBBox() {\n var _this$state = this.state,\n boxWidth = _this$state.boxWidth,\n boxHeight = _this$state.boxHeight;\n\n if (boxWidth >= 0 && boxHeight >= 0) {\n return {\n width: boxWidth,\n height: boxHeight\n };\n }\n\n return null;\n }\n }, {\n key: \"getDefaultPosition\",\n value: function getDefaultPosition(style) {\n var _this$props = this.props,\n layout = _this$props.layout,\n align = _this$props.align,\n verticalAlign = _this$props.verticalAlign,\n margin = _this$props.margin,\n chartWidth = _this$props.chartWidth,\n chartHeight = _this$props.chartHeight;\n var hPos, vPos;\n\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n var _box = this.getBBox() || {\n width: 0\n };\n\n hPos = {\n left: ((chartWidth || 0) - _box.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n var _box2 = this.getBBox() || {\n height: 0\n };\n\n vPos = {\n top: ((chartHeight || 0) - _box2.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n\n return _objectSpread({}, hPos, {}, vPos);\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var _this$state2 = this.state,\n boxWidth = _this$state2.boxWidth,\n boxHeight = _this$state2.boxHeight;\n var onBBoxUpdate = this.props.onBBoxUpdate;\n\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var _box3 = this.wrapperNode.getBoundingClientRect();\n\n if (Math.abs(_box3.width - boxWidth) > EPS || Math.abs(_box3.height - boxHeight) > EPS) {\n this.setState({\n boxWidth: _box3.width,\n boxHeight: _box3.height\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(_box3);\n }\n });\n }\n } else if (boxWidth !== -1 || boxHeight !== -1) {\n this.setState({\n boxWidth: -1,\n boxHeight: -1\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(null);\n }\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n content = _this$props2.content,\n width = _this$props2.width,\n height = _this$props2.height,\n wrapperStyle = _this$props2.wrapperStyle,\n payloadUniqBy = _this$props2.payloadUniqBy,\n payload = _this$props2.payload;\n\n var outerStyle = _objectSpread({\n position: 'absolute',\n width: width || 'auto',\n height: height || 'auto'\n }, this.getDefaultPosition(wrapperStyle), {}, wrapperStyle);\n\n return React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread({}, this.props, {\n payload: getUniqPayload(payloadUniqBy, payload)\n })));\n }\n }], [{\n key: \"getWithHeight\",\n value: function getWithHeight(item, chartWidth) {\n var layout = item.props.layout;\n\n if (layout === 'vertical' && isNumber(item.props.height)) {\n return {\n height: item.props.height\n };\n }\n\n if (layout === 'horizontal') {\n return {\n width: item.props.width || chartWidth\n };\n }\n\n return null;\n }\n }]);\n\n return Legend;\n}(PureComponent);\n\nLegend.displayName = 'Legend';\nLegend.defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom'\n};\nexport default Legend;","import _isEqual from \"lodash/isEqual\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isNaN from \"lodash/isNaN\";\nimport _isString from \"lodash/isString\";\nimport _isArray from \"lodash/isArray\";\nimport _max from \"lodash/max\";\nimport _min from \"lodash/min\";\nimport _flatMap from \"lodash/flatMap\";\nimport _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// @ts-ignore\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\nimport * as d3Scales from 'd3-scale';\nimport { stack as shapeStack, stackOrderNone, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle } from 'd3-shape';\nimport { isNumOrStr, uniqueId, isNumber, getPercentValue, mathSign, findEntryInArray } from './DataUtils';\nimport Legend from '../component/Legend';\nimport { findAllByType, findChildByType, getDisplayName } from './ReactUtils';\nexport function getValueByDataKey(obj, dataKey, defaultValue) {\n if (_isNil(obj) || _isNil(dataKey)) {\n return defaultValue;\n }\n\n if (isNumOrStr(dataKey)) {\n return _get(obj, dataKey, defaultValue);\n }\n\n if (_isFunction(dataKey)) {\n return dataKey(obj);\n }\n\n return defaultValue;\n}\n;\n/**\n * Get domain of data by key\n * @param {Array} data The data displayed in the chart\n * @param {String} key The unique key of a group of data\n * @param {String} type The type of axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */\n\nexport function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = _flatMap(data, function (entry) {\n return getValueByDataKey(entry, key);\n });\n\n if (type === 'number') {\n var domain = flattenData.filter(function (entry) {\n return isNumber(entry) || parseFloat(entry);\n });\n return domain.length ? [_min(domain), _max(domain)] : [Infinity, -Infinity];\n }\n\n var validateData = filterNil ? flattenData.filter(function (entry) {\n return !_isNil(entry);\n }) : flattenData;\n return validateData.map(function (entry) {\n return isNumOrStr(entry) ? entry : '';\n });\n}\n;\nexport var calculateActiveTickIndex = function calculateActiveTickIndex(coordinate, ticks, unsortedTicks, axis) {\n var index = -1;\n var len = ticks.length;\n\n if (len > 1) {\n if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n var range = axis.range; // ticks are distributed in a circle\n\n for (var i = 0; i < len; i++) {\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n\n if (mathSign(cur - before) !== mathSign(after - cur)) {\n var diffInterval = [];\n\n if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n\n var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n index = unsortedTicks[i].index;\n break;\n }\n } else {\n var min = Math.min(before, after);\n var max = Math.max(before, after);\n\n if (coordinate > (min + cur) / 2 && coordinate <= (max + cur) / 2) {\n index = unsortedTicks[i].index;\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for (var _i = 0; _i < len; _i++) {\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n index = ticks[_i].index;\n break;\n }\n }\n }\n } else {\n index = 0;\n }\n\n return index;\n};\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */\n\nexport var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var _ref = item,\n displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n\n var _item$props = item.props,\n stroke = _item$props.stroke,\n fill = _item$props.fill;\n var result;\n\n switch (displayName) {\n case 'Line':\n result = stroke;\n break;\n\n case 'Area':\n case 'Radar':\n result = stroke && stroke !== 'none' ? stroke : fill;\n break;\n\n default:\n result = fill;\n break;\n }\n\n return result;\n}; // TODO: Formated -> Formatted.\n\nexport var getLegendProps = function getLegendProps(_ref2) {\n var children = _ref2.children,\n formatedGraphicalItems = _ref2.formatedGraphicalItems,\n legendWidth = _ref2.legendWidth,\n legendContent = _ref2.legendContent;\n var legendItem = findChildByType(children, Legend.displayName);\n\n if (!legendItem) {\n return null;\n }\n\n var legendData;\n\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === 'children') {\n legendData = (formatedGraphicalItems || []).reduce(function (result, _ref3) {\n var item = _ref3.item,\n props = _ref3.props;\n var data = props.sectors || props.data || [];\n return result.concat(data.map(function (entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formatedGraphicalItems || []).map(function (_ref4) {\n var item = _ref4.item;\n var _item$props2 = item.props,\n dataKey = _item$props2.dataKey,\n name = _item$props2.name,\n legendType = _item$props2.legendType,\n hide = _item$props2.hide;\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendItem.props.iconType || legendType || 'square',\n color: getMainColorOfGraphicItem(item),\n value: name || dataKey,\n payload: item.props\n };\n });\n }\n\n return _objectSpread({}, legendItem.props, {}, Legend.getWithHeight(legendItem, legendWidth), {\n payload: legendData,\n item: legendItem\n });\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */\n\nexport var getBarSizeList = function getBarSizeList(_ref5) {\n var globalSize = _ref5.barSize,\n _ref5$stackGroups = _ref5.stackGroups,\n stackGroups = _ref5$stackGroups === void 0 ? {} : _ref5$stackGroups;\n\n if (!stackGroups) {\n return {};\n }\n\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n\n for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n\n for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n var _sgs$stackIds$j = sgs[stackIds[j]],\n items = _sgs$stackIds$j.items,\n cateAxisId = _sgs$stackIds$j.cateAxisId;\n var barItems = items.filter(function (item) {\n return getDisplayName(item.type).indexOf('Bar') >= 0;\n });\n\n if (barItems && barItems.length) {\n var selfSize = barItems[0].props.barSize;\n var cateId = barItems[0].props[cateAxisId];\n\n if (!result[cateId]) {\n result[cateId] = [];\n }\n\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: _isNil(selfSize) ? globalSize : selfSize\n });\n }\n }\n }\n\n return result;\n};\n/**\n * Calculate the size of each bar and the gap between two bars\n * @param {Number} bandSize The size of each category\n * @param {sizeList} sizeList The size of all groups\n * @param {maxBarSize} maxBarSize The maximum size of bar\n * @return {Number} The size of each bar and the gap between two bars\n */\n\nexport var getBarPosition = function getBarPosition(_ref6) {\n var barGap = _ref6.barGap,\n barCategoryGap = _ref6.barCategoryGap,\n bandSize = _ref6.bandSize,\n _ref6$sizeList = _ref6.sizeList,\n sizeList = _ref6$sizeList === void 0 ? [] : _ref6$sizeList,\n maxBarSize = _ref6.maxBarSize;\n var len = sizeList.length;\n if (len < 1) return null;\n var realBarGap = getPercentValue(barGap, bandSize, 0, true);\n var result; // whether or not is barSize setted by user\n\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n var sum = sizeList.reduce(function (res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = {\n offset: offset - realBarGap,\n size: 0\n };\n result = sizeList.reduce(function (res, entry) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n size: useFull ? fullBarSize : entry.barSize\n }\n }]);\n prev = newRes[newRes.length - 1].position;\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: prev\n });\n });\n }\n\n return newRes;\n }, []);\n } else {\n var _offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n result = sizeList.reduce(function (res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }]);\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: newRes[newRes.length - 1].position\n });\n });\n }\n\n return newRes;\n }, []);\n }\n\n return result;\n};\nexport var appendOffsetOfLegend = function appendOffsetOfLegend(offset, items, props, legendBox) {\n var children = props.children,\n width = props.width,\n height = props.height,\n margin = props.margin;\n var legendWidth = width - (margin.left || 0) - (margin.right || 0); // const legendHeight = height - (margin.top || 0) - (margin.bottom || 0);\n\n var legendProps = getLegendProps({\n children: children,\n legendWidth: legendWidth\n });\n var newOffset = offset;\n\n if (legendProps) {\n var box = legendBox || {};\n var align = legendProps.align,\n verticalAlign = legendProps.verticalAlign,\n layout = legendProps.layout;\n\n if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'center') && isNumber(offset[align])) {\n newOffset = _objectSpread({}, offset, _defineProperty({}, align, newOffset[align] + (box.width || 0)));\n }\n\n if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && isNumber(offset[verticalAlign])) {\n newOffset = _objectSpread({}, offset, _defineProperty({}, verticalAlign, newOffset[verticalAlign] + (box.height || 0)));\n }\n }\n\n return newOffset;\n};\nexport var getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, axisType) {\n var children = item.props.children;\n var errorBars = findAllByType(children, 'ErrorBar').filter(function (errorBarChild) {\n var direction = errorBarChild.props.direction;\n return _isNil(direction) || _isNil(axisType) ? true : axisType.indexOf(direction) >= 0;\n });\n\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function (errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n return data.reduce(function (result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey, 0);\n var mainValue = _isArray(entryValue) ? [_min(entryValue), _max(entryValue)] : [entryValue, entryValue];\n var errorDomain = keys.reduce(function (prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(_isArray(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(_isArray(errorValue) ? errorValue[1] : errorValue);\n return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\n};\nexport var parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType) {\n var domains = items.map(function (item) {\n return getDomainOfErrorBars(data, item, dataKey, axisType);\n }).filter(function (entry) {\n return !_isNil(entry);\n });\n\n if (domains && domains.length) {\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\n};\n/**\n * Get domain of data by the configuration of item element\n * @param {Array} data The data displayed in the chart\n * @param {Array} items The instances of item\n * @param {String} type The type of axis, number - Number Axis, category - Category Axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */\n\nexport var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, filterNil) {\n var domains = items.map(function (item) {\n var dataKey = item.props.dataKey;\n\n if (type === 'number' && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\n\n return getDomainOfDataByKey(data, dataKey, type, filterNil);\n });\n\n if (type === 'number') {\n // Calculate the domain of number axis\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n var tag = {}; // Get the union set of category axis\n\n return domains.reduce(function (result, entry) {\n for (var i = 0, len = entry.length; i < len; i++) {\n if (!tag[entry[i]]) {\n tag[entry[i]] = true;\n result.push(entry[i]);\n }\n }\n\n return result;\n }, []);\n};\nexport var isCategorialAxis = function isCategorialAxis(layout, axisType) {\n return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} min The minimun value of axis\n * @param {Number} max The maximun value of axis\n * @return {Array} Coordinates\n */\n\nexport var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, min, max) {\n var hasMin, hasMax;\n var values = ticks.map(function (entry) {\n if (entry.coordinate === min) {\n hasMin = true;\n }\n\n if (entry.coordinate === max) {\n hasMax = true;\n }\n\n return entry.coordinate;\n });\n\n if (!hasMin) {\n values.push(min);\n }\n\n if (!hasMax) {\n values.push(max);\n }\n\n return values;\n};\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */\n\nexport var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain,\n type = axis.type,\n range = axis.range;\n var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / 2 : 0;\n offset = axis.axisType === 'angleAxis' ? mathSign(range[0] - range[1]) * 2 * offset : offset; // The ticks setted by user should only affect the ticks adjacent to axis line\n\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n return (axis.ticks || axis.niceTicks).map(function (entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\n };\n });\n }\n\n if (axis.isCategorial && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function (entry, index) {\n return {\n coordinate: scale(entry),\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function (entry) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n offset: offset\n };\n });\n } // When axis has duplicated text, serial numbers are used to generate scale\n\n\n return scale.domain().map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} parentHandler Handler function specified in parent component\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */\n\nexport var combineEventHandlers = function combineEventHandlers(defaultHandler, parentHandler, childHandler) {\n var customizedHandler;\n\n if (_isFunction(childHandler)) {\n customizedHandler = childHandler;\n } else if (_isFunction(parentHandler)) {\n customizedHandler = parentHandler;\n }\n\n if (_isFunction(defaultHandler) || customizedHandler) {\n return function (arg1, arg2, arg3, arg4) {\n if (_isFunction(defaultHandler)) {\n defaultHandler(arg1, arg2, arg3, arg4);\n }\n\n if (_isFunction(customizedHandler)) {\n customizedHandler(arg1, arg2, arg3, arg4);\n }\n };\n }\n\n return null;\n};\n/**\n * Parse the scale function of axis\n * @param {Object} axis The option of axis\n * @param {String} chartType The displayName of chart\n * @return {Function} The scale funcion\n */\n\nexport var parseScale = function parseScale(axis, chartType) {\n var scale = axis.scale,\n type = axis.type,\n layout = axis.layout,\n axisType = axis.axisType;\n\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n\n if (layout === 'radial' && axisType === 'angleAxis') {\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n\n if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0)) {\n return {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n }\n\n if (type === 'category') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n\n if (_isString(scale)) {\n var name = \"scale\".concat(scale.slice(0, 1).toUpperCase()).concat(scale.slice(1));\n return {\n scale: (d3Scales[name] || d3Scales.scalePoint)(),\n realScaleType: d3Scales[name] ? name : 'point'\n };\n }\n\n return _isFunction(scale) ? {\n scale: scale\n } : {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n\n if (!domain || domain.length <= 2) {\n return;\n }\n\n var len = domain.length;\n var range = scale.range();\n var min = Math.min(range[0], range[1]) - EPS;\n var max = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n\n if (first < min || first > max || last < min || last > max) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\nexport var findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n\n for (var i = 0, len = barPosition.length; i < len; i++) {\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n\n return null;\n};\nexport var truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n return value;\n }\n\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n var result = [value[0], value[1]];\n\n if (!isNumber(value[0]) || value[0] < min) {\n result[0] = min;\n }\n\n if (!isNumber(value[1]) || value[1] > max) {\n result[1] = max;\n }\n\n if (result[0] > max) {\n result[0] = max;\n }\n\n if (result[1] < min) {\n result[1] = min;\n }\n\n return result;\n};\n/* eslint no-param-reassign: 0 */\n\nexport var offsetSign = function offsetSign(series) {\n var n = series.length;\n\n if (n <= 0) {\n return;\n }\n\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n var negative = 0;\n\n for (var i = 0; i < n; ++i) {\n var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring */\n\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n /* eslint-enable prefer-destructuring */\n\n }\n }\n};\nvar STACK_OFFSET_MAP = {\n sign: offsetSign,\n expand: stackOffsetExpand,\n none: stackOffsetNone,\n silhouette: stackOffsetSilhouette,\n wiggle: stackOffsetWiggle\n};\nexport var getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function (item) {\n return item.props.dataKey;\n });\n var stack = shapeStack().keys(dataKeys).value(function (d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(stackOrderNone).offset(STACK_OFFSET_MAP[offsetType]);\n return stack(data);\n};\nexport var getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n if (!data) {\n return null;\n } // reversing items to affect render order (for layering)\n\n\n var items = reverseStackOrder ? _items.reverse() : _items;\n var stackGroups = items.reduce(function (result, item) {\n var _item$props3 = item.props,\n stackId = _item$props3.stackId,\n hide = _item$props3.hide;\n\n if (hide) {\n return result;\n }\n\n var axisId = item.props[numericAxisId];\n var parentGroup = result[axisId] || {\n hasStack: false,\n stackGroups: {}\n };\n\n if (isNumOrStr(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: []\n };\n childGroup.items.push(item);\n parentGroup.hasStack = true;\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[uniqueId('_stackId_')] = {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: [item]\n };\n }\n\n return _objectSpread({}, result, _defineProperty({}, axisId, parentGroup));\n }, {});\n return Object.keys(stackGroups).reduce(function (result, axisId) {\n var group = stackGroups[axisId];\n\n if (group.hasStack) {\n group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n var g = group.stackGroups[stackId];\n return _objectSpread({}, res, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, {});\n }\n\n return _objectSpread({}, result, _defineProperty({}, axisId, group));\n }, {});\n};\n/**\n * get domain of ticks\n * @param {Array} ticks Ticks of axis\n * @param {String} type The type of axis\n * @return {Array} domain\n */\n\nexport var calculateDomainOfTicks = function calculateDomainOfTicks(ticks, type) {\n if (type === 'number') {\n return [_min(ticks), _max(ticks)];\n }\n\n return ticks;\n};\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts The configuration of axis\n * @return {Object} null\n */\n\nexport var getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType,\n type = opts.type,\n tickCount = opts.tickCount,\n originalDomain = opts.originalDomain,\n allowDecimals = opts.allowDecimals;\n var scaleType = realScaleType || opts.scale;\n\n if (scaleType !== 'auto' && scaleType !== 'linear') {\n return null;\n }\n\n if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n\n if (!domain.length) {\n return null;\n }\n\n var tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n scale.domain(calculateDomainOfTicks(tickValues, type));\n return {\n niceTicks: tickValues\n };\n }\n\n if (tickCount && type === 'number') {\n var _domain = scale.domain();\n\n var _tickValues = getTickValuesFixedDomain(_domain, tickCount, allowDecimals);\n\n return {\n niceTicks: _tickValues\n };\n }\n\n return null;\n};\nexport var getCateCoordinateOfLine = function getCateCoordinateOfLine(_ref7) {\n var axis = _ref7.axis,\n ticks = _ref7.ticks,\n bandSize = _ref7.bandSize,\n entry = _ref7.entry,\n index = _ref7.index,\n dataKey = _ref7.dataKey;\n\n if (axis.type === 'category') {\n // find coordinate of category axis by the value of category\n if (!axis.allowDuplicatedCategory && axis.dataKey && !_isNil(entry[axis.dataKey])) {\n var matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n\n var value = getValueByDataKey(entry, !_isNil(dataKey) ? dataKey : axis.dataKey);\n return !_isNil(value) ? axis.scale(value) : null;\n};\nexport var getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref8) {\n var axis = _ref8.axis,\n ticks = _ref8.ticks,\n offset = _ref8.offset,\n bandSize = _ref8.bandSize,\n entry = _ref8.entry,\n index = _ref8.index;\n\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n return !_isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = function getBaseValueOfBar(_ref9) {\n var numericAxis = _ref9.numericAxis;\n var domain = numericAxis.scale.domain();\n\n if (numericAxis.type === 'number') {\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n\n if (min <= 0 && max >= 0) {\n return 0;\n }\n\n if (max < 0) {\n return max;\n }\n\n return min;\n }\n\n return domain[0];\n};\nexport var getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var stackId = item.props.stackId;\n\n if (isNumOrStr(stackId)) {\n var group = stackGroups[stackId];\n\n if (group && group.items.length) {\n var itemIndex = -1;\n\n for (var i = 0, len = group.items.length; i < len; i++) {\n if (group.items[i] === item) {\n itemIndex = i;\n break;\n }\n }\n\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n\n return null;\n};\n\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function (result, entry) {\n return [_min(entry.concat([result[0]]).filter(isNumber)), _max(entry.concat([result[1]]).filter(isNumber))];\n }, [Infinity, -Infinity]);\n};\n\nexport var getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function (result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n var domain = stackedData.reduce(function (res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n }, [Infinity, -Infinity]).map(function (result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (!_isArray(specifiedDomain)) {\n return dataDomain;\n }\n\n var domain = [];\n /* eslint-disable prefer-destructuring */\n\n if (isNumber(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n domain[0] = dataDomain[0] - value;\n } else if (_isFunction(specifiedDomain[0])) {\n domain[0] = specifiedDomain[0](dataDomain[0]);\n } else {\n domain[0] = dataDomain[0];\n }\n\n if (isNumber(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n\n domain[1] = dataDomain[1] + _value;\n } else if (_isFunction(specifiedDomain[1])) {\n domain[1] = specifiedDomain[1](dataDomain[1]);\n } else {\n domain[1] = dataDomain[1];\n }\n /* eslint-enable prefer-destructuring */\n\n\n return domain;\n};\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @return {Number} Size\n */\n\nexport var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks) {\n if (axis && axis.scale && axis.scale.bandwidth) {\n return axis.scale.bandwidth();\n }\n\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = _sortBy(ticks, function (o) {\n return o.coordinate;\n });\n\n var bandSize = Infinity;\n\n for (var i = 1, len = orderedTicks.length; i < len; i++) {\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n\n return bandSize === Infinity ? 0 : bandSize;\n }\n\n return 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param {Array} specifiedDomain The domain specified by users\n * @param {Array} calculatedDomain The domain calculated by dateKey\n * @param {ReactElement} axisChild The axis element\n * @returns {Array} domains\n */\n\nexport var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n\n if (_isEqual(specifiedDomain, _get(axisChild, 'type.defaultProps.domain'))) {\n return calculatedDomain;\n }\n\n return specifiedDomain;\n};","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import _isNil from \"lodash/isNil\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = function degreeToRadian(angle) {\n return angle * Math.PI / 180;\n};\nexport var radianToDegree = function radianToDegree(angleInRadian) {\n return angleInRadian * 180 / Math.PI;\n};\nexport var polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n return {\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n };\n};\nexport var getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {Object} axisType The type of axes, radius-axis or angle-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\n\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height;\n var startAngle = props.startAngle,\n endAngle = props.endAngle;\n var cx = getPercentValue(props.cx, width, width / 2);\n var cy = getPercentValue(props.cy, height, height / 2);\n var maxRadius = getMaxRadius(width, height, offset);\n var innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n var outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n var ids = Object.keys(axisMap);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var domain = axis.domain,\n reversed = axis.reversed;\n var range;\n\n if (_isNil(axis.range)) {\n if (axisType === 'angleAxis') {\n range = [startAngle, endAngle];\n } else if (axisType === 'radiusAxis') {\n range = [innerRadius, outerRadius];\n }\n\n if (reversed) {\n range = [range[1], range[0]];\n }\n } else {\n range = axis.range;\n var _range = range;\n\n var _range2 = _slicedToArray(_range, 2);\n\n startAngle = _range2[0];\n endAngle = _range2[1];\n }\n\n var _parseScale = parseScale(axis, chartName),\n realScaleType = _parseScale.realScaleType,\n scale = _parseScale.scale;\n\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread({}, axis, {\n realScaleType: realScaleType\n }));\n\n var finalAxis = _objectSpread({}, axis, {}, ticks, {\n range: range,\n radius: outerRadius,\n realScaleType: realScaleType,\n scale: scale,\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return _objectSpread({}, result, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n var x1 = point.x,\n y1 = point.y;\n var x2 = anotherPoint.x,\n y2 = anotherPoint.y;\n return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nexport var getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n var x = _ref.x,\n y = _ref.y;\n var cx = _ref2.cx,\n cy = _ref2.cy;\n var radius = distanceBetweenPoints({\n x: x,\n y: y\n }, {\n x: cx,\n y: cy\n });\n\n if (radius <= 0) {\n return {\n radius: radius\n };\n }\n\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n\n return {\n radius: radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian: angleInRadian\n };\n};\nexport var formatAngleOfSector = function formatAngleOfSector(_ref3) {\n var startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\n\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n var startAngle = _ref4.startAngle,\n endAngle = _ref4.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\n\nexport var inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n var x = _ref5.x,\n y = _ref5.y;\n\n var _getAngleOfPoint = getAngleOfPoint({\n x: x,\n y: y\n }, sector),\n radius = _getAngleOfPoint.radius,\n angle = _getAngleOfPoint.angle;\n\n var innerRadius = sector.innerRadius,\n outerRadius = sector.outerRadius;\n\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n\n if (radius === 0) {\n return true;\n }\n\n var _formatAngleOfSector = formatAngleOfSector(sector),\n startAngle = _formatAngleOfSector.startAngle,\n endAngle = _formatAngleOfSector.endAngle;\n\n var formatAngle = angle;\n var inRange;\n\n if (startAngle <= endAngle) {\n while (formatAngle > endAngle) {\n formatAngle -= 360;\n }\n\n while (formatAngle < startAngle) {\n formatAngle += 360;\n }\n\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while (formatAngle > startAngle) {\n formatAngle -= 360;\n }\n\n while (formatAngle < endAngle) {\n formatAngle += 360;\n }\n\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n\n if (inRange) {\n return _objectSpread({}, sector, {\n radius: radius,\n angle: reverseFormatAngleOfSetor(formatAngle, sector)\n });\n }\n\n return null;\n};","import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { cloneElement, isValidElement } from 'react';\nimport classNames from 'classnames';\nimport Text from './Text';\nimport { findAllByType } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { filterProps } from '../util/types';\n\nvar getLabel = function getLabel(props) {\n var value = props.value,\n formatter = props.formatter;\n var label = _isNil(props.children) ? value : props.children;\n\n if (_isFunction(formatter)) {\n return formatter(label);\n }\n\n return label;\n};\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\n\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n var position = labelProps.position,\n viewBox = labelProps.viewBox,\n offset = labelProps.offset,\n className = labelProps.className;\n var _ref = viewBox,\n cx = _ref.cx,\n cy = _ref.cy,\n innerRadius = _ref.innerRadius,\n outerRadius = _ref.outerRadius,\n startAngle = _ref.startAngle,\n endAngle = _ref.endAngle,\n clockWise = _ref.clockWise;\n var radius = (innerRadius + outerRadius) / 2;\n var deltaAngle = getDeltaAngle(startAngle, endAngle);\n var sign = deltaAngle >= 0 ? 1 : -1;\n var labelAngle, direction;\n\n if (position === 'insideStart') {\n labelAngle = startAngle + sign * offset;\n direction = clockWise;\n } else if (position === 'insideEnd') {\n labelAngle = endAngle - sign * offset;\n direction = !clockWise;\n } else if (position === 'end') {\n labelAngle = endAngle + sign * offset;\n direction = clockWise;\n }\n\n direction = deltaAngle <= 0 ? direction : !direction;\n var startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n var endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n \").concat(endPoint.x, \",\").concat(endPoint.y);\n var id = _isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n return React.createElement(\"text\", _extends({}, attrs, {\n dominantBaseline: \"central\",\n className: classNames('recharts-radial-bar-label', className)\n }), React.createElement(\"defs\", null, React.createElement(\"path\", {\n id: id,\n d: path\n })), React.createElement(\"textPath\", {\n xlinkHref: \"#\".concat(id)\n }, label));\n};\n\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n var viewBox = props.viewBox,\n offset = props.offset,\n position = props.position;\n var _ref2 = viewBox,\n cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var midAngle = (startAngle + endAngle) / 2;\n\n if (position === 'outside') {\n var _polarToCartesian = polarToCartesian(cx, cy, outerRadius + offset, midAngle),\n _x = _polarToCartesian.x,\n _y = _polarToCartesian.y;\n\n return {\n x: _x,\n y: _y,\n textAnchor: _x >= cx ? 'start' : 'end',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'center') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'centerTop') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'centerBottom') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'end'\n };\n }\n\n var r = (innerRadius + outerRadius) / 2;\n\n var _polarToCartesian2 = polarToCartesian(cx, cy, r, midAngle),\n x = _polarToCartesian2.x,\n y = _polarToCartesian2.y;\n\n return {\n x: x,\n y: y,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\n\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n var viewBox = props.viewBox,\n offset = props.offset,\n position = props.position;\n var _ref3 = viewBox,\n x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height;\n var sign = height >= 0 ? 1 : -1;\n\n if (position === 'top') {\n return {\n x: x + width / 2,\n y: y - sign * offset,\n textAnchor: 'middle',\n verticalAnchor: sign > 0 ? 'end' : 'start'\n };\n }\n\n if (position === 'bottom') {\n return {\n x: x + width / 2,\n y: y + height + sign * offset,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'left') {\n return {\n x: x - offset,\n y: y + height / 2,\n textAnchor: 'end',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'right') {\n return {\n x: x + width + offset,\n y: y + height / 2,\n textAnchor: 'start',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'insideLeft') {\n return {\n x: x + offset,\n y: y + height / 2,\n textAnchor: 'start',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'insideRight') {\n return {\n x: x + width - offset,\n y: y + height / 2,\n textAnchor: 'end',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'insideTop') {\n return {\n x: x + width / 2,\n y: y + sign * offset,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'insideBottom') {\n return {\n x: x + width / 2,\n y: y + height - sign * offset,\n textAnchor: 'middle',\n verticalAnchor: 'end'\n };\n }\n\n if (position === 'insideTopLeft') {\n return {\n x: x + offset,\n y: y + sign * offset,\n textAnchor: 'start',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'insideTopRight') {\n return {\n x: x + width - offset,\n y: y + sign * offset,\n textAnchor: 'end',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'insideBottomLeft') {\n return {\n x: x + offset,\n y: y + height - sign * offset,\n textAnchor: 'start',\n verticalAnchor: 'end'\n };\n }\n\n if (position === 'insideBottomRight') {\n return {\n x: x + width - offset,\n y: y + height - sign * offset,\n textAnchor: 'end',\n verticalAnchor: 'end'\n };\n }\n\n if (_isObject(position) && (isNumber(position.x) || isPercent(position.x)) && (isNumber(position.y) || isPercent(position.y))) {\n return {\n x: x + getPercentValue(position.x, width),\n y: y + getPercentValue(position.y, height),\n textAnchor: 'end',\n verticalAnchor: 'end'\n };\n }\n\n return {\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\n\nvar isPolar = function isPolar(viewBox) {\n return isNumber(viewBox.cx);\n};\n\nfunction Label(props) {\n var viewBox = props.viewBox,\n position = props.position,\n value = props.value,\n children = props.children,\n content = props.content,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className;\n\n if (!viewBox || _isNil(value) && _isNil(children) && !isValidElement(content) && !_isFunction(content)) {\n return null;\n }\n\n if (isValidElement(content)) {\n return cloneElement(content, props);\n }\n\n var label;\n\n if (_isFunction(content)) {\n label = content(props);\n\n if (isValidElement(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n\n var isPolarLabel = isPolar(viewBox);\n var attrs = filterProps(props, true);\n\n if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n return renderRadialLabel(props, label, attrs);\n }\n\n var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n return React.createElement(Text, _extends({\n className: classNames('recharts-label', className)\n }, attrs, positionAttrs), label);\n}\n\nLabel.displayName = 'Label';\nLabel.defaultProps = {\n offset: 5\n};\n\nvar parseViewBox = function parseViewBox(props) {\n var cx = props.cx,\n cy = props.cy,\n angle = props.angle,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n r = props.r,\n radius = props.radius,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n x = props.x,\n y = props.y,\n top = props.top,\n left = props.left,\n width = props.width,\n height = props.height,\n clockWise = props.clockWise;\n\n if (isNumber(width) && isNumber(height)) {\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n\n if (isNumber(top) && isNumber(left)) {\n return {\n x: top,\n y: left,\n width: width,\n height: height\n };\n }\n }\n\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n }\n\n if (isNumber(cx) && isNumber(cy)) {\n return {\n cx: cx,\n cy: cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise: clockWise\n };\n }\n\n if (props.viewBox) {\n return props.viewBox;\n }\n\n return {};\n};\n\nvar parseLabel = function parseLabel(label, viewBox) {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n\n if (isNumOrStr(label)) {\n return React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox,\n value: label\n });\n }\n\n if (isValidElement(label)) {\n if (label.type === Label) {\n return cloneElement(label, {\n key: 'label-implicit',\n viewBox: viewBox\n });\n }\n\n return React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n\n if (_isFunction(label)) {\n return React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n\n if (_isObject(label)) {\n return React.createElement(Label, _extends({\n viewBox: viewBox\n }, label, {\n key: \"label-implicit\"\n }));\n }\n\n return null;\n};\n\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n var ckeckPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (!parentProps || !parentProps.children && ckeckPropsLabel && !parentProps.label) {\n return null;\n }\n\n var children = parentProps.children;\n var parentViewBox = parseViewBox(parentProps);\n var explicitChilren = findAllByType(children, Label.displayName).map(function (child, index) {\n return cloneElement(child, {\n viewBox: viewBox || parentViewBox,\n key: \"label-\".concat(index)\n });\n });\n\n if (!ckeckPropsLabel) {\n return explicitChilren;\n }\n\n var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n return [implicitLabel].concat(_toConsumableArray(explicitChilren));\n};\n\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;\nexport default Label;","import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _last from \"lodash/last\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport Label from './Label';\nimport Layer from '../container/Layer';\nimport { findAllByType } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps } from '../util/types';\nvar propTypes = {\n id: PropTypes.string,\n data: PropTypes.arrayOf(PropTypes.object),\n valueAccessor: PropTypes.func,\n clockWise: PropTypes.bool,\n dataKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func])\n};\nvar defaultProps = {\n valueAccessor: function valueAccessor(entry) {\n return _isArray(entry.value) ? _last(entry.value) : entry.value;\n }\n};\n\nfunction LabelList(props) {\n var data = props.data,\n valueAccessor = props.valueAccessor,\n dataKey = props.dataKey,\n clockWise = props.clockWise,\n id = props.id,\n others = _objectWithoutProperties(props, [\"data\", \"valueAccessor\", \"dataKey\", \"clockWise\", \"id\"]);\n\n if (!data || !data.length) {\n return null;\n }\n\n return React.createElement(Layer, {\n className: \"recharts-label-list\"\n }, data.map(function (entry, index) {\n var value = _isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n var idProps = _isNil(id) ? {} : {\n id: \"\".concat(id, \"-\").concat(index)\n };\n return React.createElement(Label, _extends({}, filterProps(entry, true), others, idProps, {\n index: index,\n value: value,\n viewBox: Label.parseViewBox(_isNil(clockWise) ? entry : _objectSpread({}, entry, {\n clockWise: clockWise\n })),\n key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n\n }));\n }));\n}\n\nLabelList.propTypes = propTypes;\nLabelList.displayName = 'LabelList';\n\nfunction parseLabelList(label, data) {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data\n });\n }\n\n if (React.isValidElement(label) || _isFunction(label)) {\n return React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data,\n content: label\n });\n }\n\n if (_isObject(label)) {\n return React.createElement(LabelList, _extends({\n data: data\n }, label, {\n key: \"labelList-implicit\"\n }));\n }\n\n return null;\n}\n\n;\n\nfunction renderCallByParent(parentProps, data) {\n var ckeckPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (!parentProps || !parentProps.children && ckeckPropsLabel && !parentProps.label) {\n return null;\n }\n\n var children = parentProps.children;\n var explicitChilren = findAllByType(children, LabelList.displayName).map(function (child, index) {\n return cloneElement(child, {\n data: data,\n key: \"labelList-\".concat(index)\n });\n });\n\n if (!ckeckPropsLabel) {\n return explicitChilren;\n }\n\n var implicitLabelList = parseLabelList(parentProps.label, data);\n return [implicitLabelList].concat(_toConsumableArray(explicitChilren));\n}\n\n;\nLabelList.renderCallByParent = renderCallByParent;\nLabelList.defaultProps = defaultProps;\nexport default LabelList;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Render a group of error bar\n*/\nimport React from 'react';\nimport Layer from '../container/Layer';\nimport { filterProps } from '../util/types';\n\nfunction ErrorBar(props) {\n var offset = props.offset,\n layout = props.layout,\n width = props.width,\n dataKey = props.dataKey,\n data = props.data,\n dataPointFormatter = props.dataPointFormatter,\n xAxis = props.xAxis,\n yAxis = props.yAxis,\n others = _objectWithoutProperties(props, [\"offset\", \"layout\", \"width\", \"dataKey\", \"data\", \"dataPointFormatter\", \"xAxis\", \"yAxis\"]);\n\n var svgProps = filterProps(others);\n var errorBars = data.map(function (entry, i) {\n var _dataPointFormatter = dataPointFormatter(entry, dataKey),\n x = _dataPointFormatter.x,\n y = _dataPointFormatter.y,\n value = _dataPointFormatter.value,\n errorVal = _dataPointFormatter.errorVal;\n\n if (!errorVal) {\n return null;\n }\n\n var lineCoordinates = [];\n var lowBound;\n var highBound;\n\n if (Array.isArray(errorVal)) {\n var _errorVal = _slicedToArray(errorVal, 2);\n\n lowBound = _errorVal[0];\n highBound = _errorVal[1];\n } else {\n lowBound = highBound = errorVal;\n }\n\n if (layout === 'vertical') {\n // error bar for horizontal charts, the y is fixed, x is a range value\n var scale = xAxis.scale;\n var yMid = y + offset;\n var yMin = yMid + width;\n var yMax = yMid - width;\n var xMin = scale(value - lowBound);\n var xMax = scale(value + highBound); // the right line of |--|\n\n lineCoordinates.push({\n x1: xMax,\n y1: yMin,\n x2: xMax,\n y2: yMax\n }); // the middle line of |--|\n\n lineCoordinates.push({\n x1: xMin,\n y1: yMid,\n x2: xMax,\n y2: yMid\n }); // the left line of |--|\n\n lineCoordinates.push({\n x1: xMin,\n y1: yMin,\n x2: xMin,\n y2: yMax\n });\n } else if (layout === 'horizontal') {\n // error bar for horizontal charts, the x is fixed, y is a range value\n var _scale = yAxis.scale;\n var xMid = x + offset;\n\n var _xMin = xMid - width;\n\n var _xMax = xMid + width;\n\n var _yMin = _scale(value - lowBound);\n\n var _yMax = _scale(value + highBound); // the top line\n\n\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMax,\n x2: _xMax,\n y2: _yMax\n }); // the middle line\n\n lineCoordinates.push({\n x1: xMid,\n y1: _yMin,\n x2: xMid,\n y2: _yMax\n }); // the bottom line\n\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMin,\n x2: _xMax,\n y2: _yMin\n });\n }\n\n return (// eslint-disable-next-line react/no-array-index-key\n React.createElement(Layer, _extends({\n className: \"recharts-errorBar\",\n key: \"bar-\".concat(i)\n }, svgProps), lineCoordinates.map(function (coordinates, index) {\n return React.createElement(\"line\", _extends({}, coordinates, {\n key: \"line-\".concat(index)\n }));\n }))\n );\n });\n return React.createElement(Layer, {\n className: \"recharts-errorBars\"\n }, errorBars);\n}\n\nErrorBar.defaultProps = {\n stroke: 'black',\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: 'horizontal'\n};\nErrorBar.displayName = 'ErrorBar';\nexport default ErrorBar;","import _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Line\n */\nimport React, { PureComponent } from 'react'; // @ts-ignore\n\nimport Animate from 'react-smooth';\nimport classNames from 'classnames';\nimport Curve from '../shape/Curve';\nimport Dot from '../shape/Dot';\nimport Layer from '../container/Layer';\nimport LabelList from '../component/LabelList';\nimport ErrorBar from './ErrorBar';\nimport { uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { isSsr, findAllByType } from '../util/ReactUtils';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps } from '../util/types';\n;\n\nvar Line =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Line, _PureComponent);\n\n function Line() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Line);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Line)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.mainCurve = void 0;\n _this.state = {\n isAnimationFinished: true,\n totalLength: 0\n };\n _this.id = uniqueId('recharts-line-');\n\n _this.cachePrevData = function (points) {\n _this.setState({\n prevPoints: points\n });\n };\n\n _this.pathRef = function (node) {\n _this.mainCurve = node;\n };\n\n _this.handleAnimationEnd = function () {\n _this.setState({\n isAnimationFinished: true\n });\n\n _this.props.onAnimationEnd();\n };\n\n _this.handleAnimationStart = function () {\n _this.setState({\n isAnimationFinished: false\n });\n\n _this.props.onAnimationStart();\n };\n\n return _this;\n }\n\n _createClass(Line, [{\n key: \"componentDidMount\",\n\n /* eslint-disable react/no-did-mount-set-state */\n value: function componentDidMount() {\n if (!this.props.isAnimationActive) {\n return;\n }\n\n var totalLength = this.getTotalLength();\n this.setState({\n totalLength: totalLength\n });\n } // eslint-disable-next-line camelcase\n\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var _this$props = this.props,\n animationId = _this$props.animationId,\n points = _this$props.points;\n\n if (nextProps.animationId !== animationId) {\n this.cachePrevData(points);\n }\n }\n }, {\n key: \"getTotalLength\",\n value: function getTotalLength() {\n var curveDom = this.mainCurve;\n\n try {\n return curveDom && curveDom.getTotalLength && curveDom.getTotalLength() || 0;\n } catch (err) {\n return 0;\n }\n }\n }, {\n key: \"getStrokeDasharray\",\n value: function getStrokeDasharray(length, totalLength, lines) {\n var lineLength = lines.reduce(function (pre, next) {\n return pre + next;\n });\n var count = Math.floor(length / lineLength);\n var remainLength = length % lineLength;\n var restLength = totalLength - length;\n var remainLines = [];\n\n for (var i = 0, sum = 0;; sum += lines[i], ++i) {\n if (sum + lines[i] > remainLength) {\n remainLines = [].concat(_toConsumableArray(lines.slice(0, i)), [remainLength - sum]);\n break;\n }\n }\n\n var emptyLines = remainLines.length % 2 === 0 ? [0, restLength] : [restLength];\n return [].concat(_toConsumableArray(Line.repeat(lines, count)), _toConsumableArray(remainLines), emptyLines).map(function (line) {\n return \"\".concat(line, \"px\");\n }).join(', ');\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar() {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props2 = this.props,\n points = _this$props2.points,\n xAxis = _this$props2.xAxis,\n yAxis = _this$props2.yAxis,\n layout = _this$props2.layout,\n children = _this$props2.children;\n var errorBarItems = findAllByType(children, ErrorBar.displayName);\n\n if (!errorBarItems) {\n return null;\n }\n\n function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: getValueByDataKey(dataPoint.payload, dataKey)\n };\n }\n\n return errorBarItems.map(function (item, i) {\n return React.cloneElement(item, {\n key: i,\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n dataPointFormatter: dataPointFormatter\n });\n });\n }\n }, {\n key: \"renderDots\",\n value: function renderDots(needClip, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props3 = this.props,\n dot = _this$props3.dot,\n points = _this$props3.points,\n dataKey = _this$props3.dataKey;\n var lineProps = filterProps(this.props);\n var customDotProps = filterProps(dot, true);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, lineProps, {}, customDotProps, {\n value: entry.value,\n dataKey: dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n payload: entry.payload\n });\n\n return Line.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return React.createElement(Layer, _extends({\n className: \"recharts-line-dots\",\n key: \"dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderCurveStatically\",\n value: function renderCurveStatically(points, needClip, clipPathId, props) {\n var _this$props4 = this.props,\n type = _this$props4.type,\n layout = _this$props4.layout,\n connectNulls = _this$props4.connectNulls,\n ref = _this$props4.ref,\n others = _objectWithoutProperties(_this$props4, [\"type\", \"layout\", \"connectNulls\", \"ref\"]);\n\n var curveProps = _objectSpread({}, filterProps(others, true), {\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null,\n points: points\n }, props, {\n type: type,\n layout: layout,\n connectNulls: connectNulls\n });\n\n return React.createElement(Curve, _extends({}, curveProps, {\n pathRef: this.pathRef\n }));\n }\n }, {\n key: \"renderCurveWithAnimation\",\n value: function renderCurveWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n\n var _this$props5 = this.props,\n points = _this$props5.points,\n strokeDasharray = _this$props5.strokeDasharray,\n isAnimationActive = _this$props5.isAnimationActive,\n animationBegin = _this$props5.animationBegin,\n animationDuration = _this$props5.animationDuration,\n animationEasing = _this$props5.animationEasing,\n animationId = _this$props5.animationId,\n animateNewValues = _this$props5.animateNewValues,\n width = _this$props5.width,\n height = _this$props5.height;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n totalLength = _this$state.totalLength;\n return React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"line-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n var stepData = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread({}, entry, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n } // magic number of faking previous x and y location\n\n\n if (animateNewValues) {\n var _interpolatorX = interpolateNumber(width * 2, entry.x);\n\n var _interpolatorY = interpolateNumber(height / 2, entry.y);\n\n return _objectSpread({}, entry, {\n x: _interpolatorX(t),\n y: _interpolatorY(t)\n });\n }\n\n return _objectSpread({}, entry, {\n x: entry.x,\n y: entry.y\n });\n });\n return _this2.renderCurveStatically(stepData, needClip, clipPathId);\n }\n\n var interpolator = interpolateNumber(0, totalLength);\n var curLength = interpolator(t);\n var currentStrokeDasharray;\n\n if (strokeDasharray) {\n var lines = \"\".concat(strokeDasharray).split(/[,\\s]+/gim).map(function (num) {\n return parseFloat(num);\n });\n currentStrokeDasharray = _this2.getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = \"\".concat(curLength, \"px \").concat(totalLength - curLength, \"px\");\n }\n\n return _this2.renderCurveStatically(points, needClip, clipPathId, {\n strokeDasharray: currentStrokeDasharray\n });\n });\n }\n }, {\n key: \"renderCurve\",\n value: function renderCurve(needClip, clipPathId) {\n var _this$props6 = this.props,\n points = _this$props6.points,\n isAnimationActive = _this$props6.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n totalLength = _this$state2.totalLength;\n\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !_isEqual(prevPoints, points))) {\n return this.renderCurveWithAnimation(needClip, clipPathId);\n }\n\n return this.renderCurveStatically(points, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props7 = this.props,\n hide = _this$props7.hide,\n dot = _this$props7.dot,\n points = _this$props7.points,\n className = _this$props7.className,\n xAxis = _this$props7.xAxis,\n yAxis = _this$props7.yAxis,\n top = _this$props7.top,\n left = _this$props7.left,\n width = _this$props7.width,\n height = _this$props7.height,\n isAnimationActive = _this$props7.isAnimationActive,\n id = _this$props7.id;\n\n if (hide || !points || !points.length) {\n return null;\n }\n\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = classNames('recharts-line', className);\n var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n var clipPathId = _isNil(id) ? this.id : id;\n return React.createElement(Layer, {\n className: layerClass\n }, needClip ? React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, React.createElement(\"rect\", {\n x: left,\n y: top,\n width: width,\n height: height\n }))) : null, !hasSinglePoint && this.renderCurve(needClip, clipPathId), this.renderErrorBar(), (hasSinglePoint || dot) && this.renderDots(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"repeat\",\n value: function repeat(lines, count) {\n var linesUnit = lines.length % 2 !== 0 ? [].concat(_toConsumableArray(lines), [0]) : lines;\n var result = [];\n\n for (var _i = 0; _i < count; ++_i) {\n result = [].concat(_toConsumableArray(result), _toConsumableArray(linesUnit));\n }\n\n return result;\n }\n }, {\n key: \"renderDotItem\",\n value: function renderDotItem(option, props) {\n var dotItem;\n\n if (React.isValidElement(option)) {\n dotItem = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dotItem = option(props);\n } else {\n var className = classNames('recharts-line-dot', option ? option.className : '');\n dotItem = React.createElement(Dot, _extends({}, props, {\n className: className\n }));\n }\n\n return dotItem;\n }\n }]);\n\n return Line;\n}(PureComponent);\n\nLine.displayName = 'Line';\nLine.defaultProps = {\n xAxisId: 0,\n yAxisId: 0,\n connectNulls: false,\n activeDot: true,\n dot: true,\n legendType: 'line',\n stroke: '#3182bd',\n strokeWidth: 1,\n fill: '#fff',\n points: [],\n isAnimationActive: !isSsr(),\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n hide: false,\n onAnimationStart: function onAnimationStart() {},\n onAnimationEnd: function onAnimationEnd() {}\n};\n\nLine.getComposedData = function (_ref2) {\n var props = _ref2.props,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n dataKey = _ref2.dataKey,\n bandSize = _ref2.bandSize,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var layout = props.layout;\n var points = displayedData.map(function (entry, index) {\n var value = getValueByDataKey(entry, dataKey);\n\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: _isNil(value) ? null : yAxis.scale(value),\n value: value,\n payload: entry\n };\n }\n\n return {\n x: _isNil(value) ? null : xAxis.scale(value),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n return _objectSpread({\n points: points,\n layout: layout\n }, offset);\n};\n\nexport default Line;","import _isEqual from \"lodash/isEqual\";\nimport _isNaN from \"lodash/isNaN\";\nimport _max from \"lodash/max\";\nimport _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Area\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames'; // @ts-ignore\n\nimport Animate from 'react-smooth';\nimport Curve from '../shape/Curve';\nimport Dot from '../shape/Dot';\nimport Layer from '../container/Layer';\nimport LabelList from '../component/LabelList';\nimport { isSsr } from '../util/ReactUtils';\nimport { isNumber, uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps } from '../util/types';\n;\n\nvar Area =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Area, _PureComponent);\n\n function Area() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Area);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Area)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isAnimationFinished: true\n };\n _this.id = uniqueId('recharts-area-');\n\n _this.cachePrevData = function (points, baseLine) {\n _this.setState({\n prevPoints: points,\n prevBaseLine: baseLine\n });\n };\n\n _this.handleAnimationEnd = function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n\n _this.setState({\n isAnimationFinished: true\n });\n\n if (_isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n };\n\n _this.handleAnimationStart = function () {\n var onAnimationStart = _this.props.onAnimationStart;\n\n _this.setState({\n isAnimationFinished: false\n });\n\n if (_isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n };\n\n return _this;\n }\n\n _createClass(Area, [{\n key: \"UNSAFE_componentWillReceiveProps\",\n // eslint-disable-next-line camelcase\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var _this$props = this.props,\n animationId = _this$props.animationId,\n points = _this$props.points,\n baseLine = _this$props.baseLine;\n\n if (nextProps.animationId !== animationId) {\n this.cachePrevData(points, baseLine);\n }\n }\n }, {\n key: \"renderDots\",\n value: function renderDots(needClip, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n var isAnimationFinished = this.state.isAnimationFinished;\n\n if (isAnimationActive && !isAnimationFinished) {\n return null;\n }\n\n var _this$props2 = this.props,\n dot = _this$props2.dot,\n points = _this$props2.points,\n dataKey = _this$props2.dataKey;\n var areaProps = filterProps(this.props);\n var customDotProps = filterProps(dot, true);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, areaProps, {}, customDotProps, {\n dataKey: dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n value: entry.value,\n payload: entry.payload\n });\n\n return Area.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return React.createElement(Layer, _extends({\n className: \"recharts-area-dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderHorizontalRect\",\n value: function renderHorizontalRect(alpha) {\n var _this$props3 = this.props,\n baseLine = _this$props3.baseLine,\n points = _this$props3.points,\n strokeWidth = _this$props3.strokeWidth;\n var startX = points[0].x;\n var endX = points[points.length - 1].x;\n var width = alpha * Math.abs(startX - endX);\n\n var maxY = _max(points.map(function (entry) {\n return entry.y || 0;\n }));\n\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n maxY = Math.max(baseLine, maxY);\n } else if (baseLine && _isArray(baseLine) && baseLine.length) {\n maxY = Math.max(_max(baseLine.map(function (entry) {\n return entry.y || 0;\n })), maxY);\n }\n\n if (isNumber(maxY)) {\n return React.createElement(\"rect\", {\n x: startX < endX ? startX : startX - width,\n y: 0,\n width: width,\n height: Math.floor(maxY + (strokeWidth ? parseInt(\"\".concat(strokeWidth), 10) : 1))\n });\n }\n\n return null;\n }\n }, {\n key: \"renderVerticalRect\",\n value: function renderVerticalRect(alpha) {\n var _this$props4 = this.props,\n baseLine = _this$props4.baseLine,\n points = _this$props4.points,\n strokeWidth = _this$props4.strokeWidth;\n var startY = points[0].y;\n var endY = points[points.length - 1].y;\n var height = alpha * Math.abs(startY - endY);\n\n var maxX = _max(points.map(function (entry) {\n return entry.x || 0;\n }));\n\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n maxX = Math.max(baseLine, maxX);\n } else if (baseLine && _isArray(baseLine) && baseLine.length) {\n maxX = Math.max(_max(baseLine.map(function (entry) {\n return entry.x || 0;\n })), maxX);\n }\n\n if (isNumber(maxX)) {\n return React.createElement(\"rect\", {\n x: 0,\n y: startY < endY ? startY : startY - height,\n width: maxX + (strokeWidth ? parseInt(\"\".concat(strokeWidth), 10) : 1),\n height: Math.floor(height)\n });\n }\n\n return null;\n }\n }, {\n key: \"renderClipRect\",\n value: function renderClipRect(alpha) {\n var layout = this.props.layout;\n\n if (layout === 'vertical') {\n return this.renderVerticalRect(alpha);\n }\n\n return this.renderHorizontalRect(alpha);\n }\n }, {\n key: \"renderAreaStatically\",\n value: function renderAreaStatically(points, baseLine, needClip, clipPathId) {\n var _this$props5 = this.props,\n layout = _this$props5.layout,\n type = _this$props5.type,\n stroke = _this$props5.stroke,\n connectNulls = _this$props5.connectNulls,\n isRange = _this$props5.isRange,\n ref = _this$props5.ref,\n others = _objectWithoutProperties(_this$props5, [\"layout\", \"type\", \"stroke\", \"connectNulls\", \"isRange\", \"ref\"]);\n\n return React.createElement(Layer, {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, React.createElement(Curve, _extends({}, filterProps(others, true), {\n points: points,\n connectNulls: connectNulls,\n type: type,\n baseLine: baseLine,\n layout: layout,\n stroke: \"none\",\n className: \"recharts-area-area\"\n })), stroke !== 'none' && React.createElement(Curve, _extends({}, filterProps(this.props), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: points\n })), stroke !== 'none' && isRange && React.createElement(Curve, _extends({}, filterProps(this.props), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: baseLine\n })));\n }\n }, {\n key: \"renderAreaWithAnimation\",\n value: function renderAreaWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n\n var _this$props6 = this.props,\n points = _this$props6.points,\n baseLine = _this$props6.baseLine,\n isAnimationActive = _this$props6.isAnimationActive,\n animationBegin = _this$props6.animationBegin,\n animationDuration = _this$props6.animationDuration,\n animationEasing = _this$props6.animationEasing,\n animationId = _this$props6.animationId;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n prevBaseLine = _this$state.prevBaseLine; // const clipPathId = _.isNil(id) ? this.id : id;\n\n return React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"area-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length; // update animtaion\n\n var stepPoints = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread({}, entry, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n\n return entry;\n });\n var stepBaseLine;\n\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n var interpolator = interpolateNumber(prevBaseLine, baseLine);\n stepBaseLine = interpolator(t);\n } else if (_isNil(baseLine) || _isNaN(baseLine)) {\n var _interpolator = interpolateNumber(prevBaseLine, 0);\n\n stepBaseLine = _interpolator(t);\n } else {\n stepBaseLine = baseLine.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n\n if (prevBaseLine[prevPointIndex]) {\n var prev = prevBaseLine[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread({}, entry, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n\n return entry;\n });\n }\n\n return _this2.renderAreaStatically(stepPoints, stepBaseLine, needClip, clipPathId);\n }\n\n return React.createElement(Layer, null, React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: \"animationClipPath-\".concat(clipPathId)\n }, _this2.renderClipRect(t))), React.createElement(Layer, {\n clipPath: \"url(#animationClipPath-\".concat(clipPathId, \")\")\n }, _this2.renderAreaStatically(points, baseLine, needClip, clipPathId)));\n });\n }\n }, {\n key: \"renderArea\",\n value: function renderArea(needClip, clipPathId) {\n var _this$props7 = this.props,\n points = _this$props7.points,\n baseLine = _this$props7.baseLine,\n isAnimationActive = _this$props7.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n prevBaseLine = _this$state2.prevBaseLine,\n totalLength = _this$state2.totalLength;\n\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !_isEqual(prevPoints, points) || !_isEqual(prevBaseLine, baseLine))) {\n return this.renderAreaWithAnimation(needClip, clipPathId);\n }\n\n return this.renderAreaStatically(points, baseLine, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props8 = this.props,\n hide = _this$props8.hide,\n dot = _this$props8.dot,\n points = _this$props8.points,\n className = _this$props8.className,\n top = _this$props8.top,\n left = _this$props8.left,\n xAxis = _this$props8.xAxis,\n yAxis = _this$props8.yAxis,\n width = _this$props8.width,\n height = _this$props8.height,\n isAnimationActive = _this$props8.isAnimationActive,\n id = _this$props8.id;\n\n if (hide || !points || !points.length) {\n return null;\n }\n\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = classNames('recharts-area', className);\n var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n var clipPathId = _isNil(id) ? this.id : id;\n return React.createElement(Layer, {\n className: layerClass\n }, needClip ? React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, React.createElement(\"rect\", {\n x: left,\n y: top,\n width: width,\n height: Math.floor(height)\n }))) : null, !hasSinglePoint ? this.renderArea(needClip, clipPathId) : null, (dot || hasSinglePoint) && this.renderDots(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }]);\n\n return Area;\n}(PureComponent);\n\nArea.displayName = 'Area';\nArea.defaultProps = {\n stroke: '#3182bd',\n fill: '#3182bd',\n fillOpacity: 0.6,\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'line',\n connectNulls: false,\n // points of area\n points: [],\n dot: false,\n activeDot: true,\n hide: false,\n isAnimationActive: !isSsr(),\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\n\nArea.getBaseValue = function (props, xAxis, yAxis) {\n var layout = props.layout,\n baseValue = props.baseValue;\n\n if (isNumber(baseValue) && typeof baseValue === 'number') {\n return baseValue;\n }\n\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var domain = numericAxis.scale.domain();\n\n if (numericAxis.type === 'number') {\n var max = Math.max(domain[0], domain[1]);\n var min = Math.min(domain[0], domain[1]);\n\n if (baseValue === 'dataMin') {\n return min;\n }\n\n if (baseValue === 'dataMax') {\n return max;\n }\n\n return max < 0 ? max : Math.max(Math.min(domain[0], domain[1]), 0);\n }\n\n if (baseValue === 'dataMin') {\n return domain[0];\n }\n\n if (baseValue === 'dataMax') {\n return domain[1];\n }\n\n return domain[0];\n};\n\nArea.getComposedData = function (_ref2) {\n var props = _ref2.props,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n bandSize = _ref2.bandSize,\n dataKey = _ref2.dataKey,\n stackedData = _ref2.stackedData,\n dataStartIndex = _ref2.dataStartIndex,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var layout = props.layout;\n var hasStack = stackedData && stackedData.length;\n var baseValue = Area.getBaseValue(props, xAxis, yAxis);\n var isRange = false;\n var points = displayedData.map(function (entry, index) {\n var value;\n\n if (hasStack) {\n value = stackedData[dataStartIndex + index];\n } else {\n value = getValueByDataKey(entry, dataKey);\n\n if (!_isArray(value)) {\n value = [baseValue, value];\n } else {\n isRange = true;\n }\n }\n\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: _isNil(value[1]) ? null : yAxis.scale(value[1]),\n value: value,\n payload: entry\n };\n }\n\n return {\n x: _isNil(value[1]) ? null : xAxis.scale(value[1]),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n var baseLine;\n\n if (hasStack || isRange) {\n baseLine = points.map(function (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.x,\n y: !_isNil(_get(entry, 'value[0]')) ? yAxis.scale(_get(entry, 'value[0]')) : null\n };\n }\n\n return {\n x: !_isNil(_get(entry, 'value[0]')) ? xAxis.scale(_get(entry, 'value[0]')) : null,\n y: entry.y\n };\n });\n } else if (layout === 'horizontal') {\n baseLine = yAxis.scale(baseValue);\n } else {\n baseLine = xAxis.scale(baseValue);\n }\n\n return _objectSpread({\n points: points,\n baseLine: baseLine,\n layout: layout,\n isRange: isRange\n }, offset);\n};\n\nArea.renderDotItem = function (option, props) {\n var dotItem;\n\n if (React.isValidElement(option)) {\n dotItem = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dotItem = option(props);\n } else {\n dotItem = React.createElement(Dot, _extends({}, props, {\n className: \"recharts-area-dot\"\n }));\n }\n\n return dotItem;\n};\n\nexport default Area;","/**\n * @fileOverview X Axis\n */\n\n/** Define of XAxis props */\nfunction XAxis(props) {\n return null;\n}\n\nXAxis.displayName = 'XAxis';\nXAxis.defaultProps = {\n allowDecimals: true,\n hide: false,\n orientation: 'bottom',\n width: 0,\n height: 30,\n mirror: false,\n xAxisId: 0,\n tickCount: 5,\n type: 'category',\n domain: [0, 'auto'],\n padding: {\n left: 0,\n right: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n allowDuplicatedCategory: true\n};\nexport default XAxis;","/**\n * @fileOverview Y Axis\n */\n;\n\nfunction YAxis(props) {\n return null;\n}\n\nYAxis.displayName = 'YAxis';\nYAxis.defaultProps = {\n allowDuplicatedCategory: true,\n allowDecimals: true,\n hide: false,\n orientation: 'left',\n width: 60,\n height: 0,\n mirror: false,\n yAxisId: 0,\n tickCount: 5,\n type: 'number',\n domain: [0, 'auto'],\n padding: {\n top: 0,\n bottom: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false\n};\nexport default YAxis;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Cross\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/types';\n\nvar Cross =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Cross, _PureComponent);\n\n function Cross() {\n _classCallCheck(this, Cross);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Cross).apply(this, arguments));\n }\n\n _createClass(Cross, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n width = _this$props.width,\n height = _this$props.height,\n top = _this$props.top,\n left = _this$props.left,\n className = _this$props.className;\n\n if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n return null;\n }\n\n return React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: classNames('recharts-cross', className),\n d: Cross.getPath(x, y, width, height, top, left)\n }));\n }\n }], [{\n key: \"getPath\",\n value: function getPath(x, y, width, height, top, left) {\n return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n }\n }]);\n\n return Cross;\n}(PureComponent);\n\nCross.defaultProps = {\n x: 0,\n y: 0,\n top: 0,\n left: 0,\n width: 0,\n height: 0\n};\nexport default Cross;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Sector\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n return sign * deltaAngle;\n};\n\nvar getTangentCircle = function getTangentCircle(_ref) {\n var cx = _ref.cx,\n cy = _ref.cy,\n radius = _ref.radius,\n angle = _ref.angle,\n sign = _ref.sign,\n isExternal = _ref.isExternal,\n cornerRadius = _ref.cornerRadius,\n cornerIsExternal = _ref.cornerIsExternal;\n var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n var theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n var center = polarToCartesian(cx, cy, centerRadius, centerAngle); // The coordinate of point which is tangent to the circle\n\n var circleTangency = polarToCartesian(cx, cy, radius, centerAngle); // The coordinate of point which is tangent to the radius line\n\n var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n var lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n return {\n center: center,\n circleTangency: circleTangency,\n lineTangency: lineTangency,\n theta: theta\n };\n};\n\nvar getSectorPath = function getSectorPath(_ref2) {\n var cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var angle = getDeltaAngle(startAngle, endAngle); // When the angle of sector equals to 360, star point and end point coincide\n\n var tempEndAngle = startAngle + angle;\n var outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n var outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n \");\n\n if (innerRadius > 0) {\n var innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n var innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n } else {\n path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n }\n\n return path;\n};\n\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n var cx = _ref3.cx,\n cy = _ref3.cy,\n innerRadius = _ref3.innerRadius,\n outerRadius = _ref3.outerRadius,\n cornerRadius = _ref3.cornerRadius,\n forceCornerRadius = _ref3.forceCornerRadius,\n cornerIsExternal = _ref3.cornerIsExternal,\n startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var sign = mathSign(endAngle - startAngle);\n\n var _getTangentCircle = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: startAngle,\n sign: sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n soct = _getTangentCircle.circleTangency,\n solt = _getTangentCircle.lineTangency,\n sot = _getTangentCircle.theta;\n\n var _getTangentCircle2 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eoct = _getTangentCircle2.circleTangency,\n eolt = _getTangentCircle2.lineTangency,\n eot = _getTangentCircle2.theta;\n\n var outerArcAngle = Math.abs(startAngle - endAngle) - sot - eot;\n\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n \");\n }\n\n return getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n\n var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n \");\n\n if (innerRadius > 0) {\n var _getTangentCircle3 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: startAngle,\n sign: sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n sict = _getTangentCircle3.circleTangency,\n silt = _getTangentCircle3.lineTangency,\n sit = _getTangentCircle3.theta;\n\n var _getTangentCircle4 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eict = _getTangentCircle4.circleTangency,\n eilt = _getTangentCircle4.lineTangency,\n eit = _getTangentCircle4.theta;\n\n var innerArcAngle = Math.abs(startAngle - endAngle) - sit - eit;\n\n if (innerArcAngle < 0) {\n return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n }\n\n path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n } else {\n path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n }\n\n return path;\n};\n\nvar Sector =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Sector, _PureComponent);\n\n function Sector() {\n _classCallCheck(this, Sector);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Sector).apply(this, arguments));\n }\n\n _createClass(Sector, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n innerRadius = _this$props.innerRadius,\n outerRadius = _this$props.outerRadius,\n cornerRadius = _this$props.cornerRadius,\n forceCornerRadius = _this$props.forceCornerRadius,\n cornerIsExternal = _this$props.cornerIsExternal,\n startAngle = _this$props.startAngle,\n endAngle = _this$props.endAngle,\n className = _this$props.className;\n\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n\n var layerClass = classNames('recharts-sector', className);\n var deltaRadius = outerRadius - innerRadius;\n var cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n var path;\n\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius: forceCornerRadius,\n cornerIsExternal: cornerIsExternal,\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else {\n path = getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n\n return React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: layerClass,\n d: path\n }));\n }\n }]);\n\n return Sector;\n}(PureComponent);\n\nSector.defaultProps = {\n cx: 0,\n cy: 0,\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n cornerRadius: 0,\n forceCornerRadius: false,\n cornerIsExternal: false\n};\nexport default Sector;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Rectangle\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames'; // @ts-ignore\n\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/types';\n\nvar getRectangePath = function getRectangePath(x, y, width, height, radius) {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [0, 0, 0, 0];\n\n for (var i = 0, len = 4; i < len; i++) {\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n\n return path;\n};\n\nvar Rectangle =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Rectangle, _PureComponent);\n\n function Rectangle() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Rectangle);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Rectangle)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n totalLength: -1\n };\n _this.node = void 0;\n return _this;\n }\n\n _createClass(Rectangle, [{\n key: \"componentDidMount\",\n\n /* eslint-disable react/no-did-mount-set-state */\n value: function componentDidMount() {\n if (this.node && this.node.getTotalLength) {\n try {\n var totalLength = this.node.getTotalLength();\n\n if (totalLength) {\n this.setState({\n totalLength: totalLength\n });\n }\n } catch (err) {// calculate total length error\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n width = _this$props.width,\n height = _this$props.height,\n radius = _this$props.radius,\n className = _this$props.className;\n var totalLength = this.state.totalLength;\n var _this$props2 = this.props,\n animationEasing = _this$props2.animationEasing,\n animationDuration = _this$props2.animationDuration,\n animationBegin = _this$props2.animationBegin,\n isAnimationActive = _this$props2.isAnimationActive,\n isUpdateAnimationActive = _this$props2.isUpdateAnimationActive;\n\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n\n var layerClass = classNames('recharts-rectangle', className);\n\n if (!isUpdateAnimationActive) {\n return React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: layerClass,\n d: getRectangePath(x, y, width, height, radius)\n }));\n }\n\n return React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n to: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currWidth = _ref.width,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, React.createElement(\"path\", _extends({}, filterProps(_this2.props, true), {\n className: layerClass,\n d: getRectangePath(currX, currY, currWidth, currHeight, radius),\n ref: function ref(node) {\n _this2.node = node;\n }\n })));\n });\n }\n }]);\n\n return Rectangle;\n}(PureComponent);\n\nRectangle.defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n // The radius of border\n // The radius of four corners when radius is a number\n // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n radius: 0,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\nexport default Rectangle;","import _isFunction from \"lodash/isFunction\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Cartesian Axis\n */\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { getStringSize } from '../util/DOMUtils';\nimport Layer from '../container/Layer';\nimport Text from '../component/Text';\nimport Label from '../component/Label';\nimport { isSsr } from '../util/ReactUtils';\nimport { isNumber, mathSign } from '../util/DataUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\n;\n\nvar CartesianAxis =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(CartesianAxis, _Component);\n\n function CartesianAxis() {\n _classCallCheck(this, CartesianAxis);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(CartesianAxis).apply(this, arguments));\n }\n\n _createClass(CartesianAxis, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(_ref) {\n var viewBox = _ref.viewBox,\n restProps = _objectWithoutProperties(_ref, [\"viewBox\"]);\n\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n var _this$props = this.props,\n viewBoxOld = _this$props.viewBox,\n restPropsOld = _objectWithoutProperties(_this$props, [\"viewBox\"]);\n\n return !shallowEqual(viewBox, viewBoxOld) || !shallowEqual(restProps, restPropsOld);\n }\n /**\n * Calculate the coordinates of endpoints in ticks\n * @param {Object} data The data of a simple tick\n * @return {Object} (x1, y1): The coordinate of endpoint close to tick text\n * (x2, y2): The coordinate of endpoint close to axis\n */\n\n }, {\n key: \"getTickLineCoord\",\n value: function getTickLineCoord(data) {\n var _this$props2 = this.props,\n x = _this$props2.x,\n y = _this$props2.y,\n width = _this$props2.width,\n height = _this$props2.height,\n orientation = _this$props2.orientation,\n tickSize = _this$props2.tickSize,\n mirror = _this$props2.mirror,\n tickMargin = _this$props2.tickMargin;\n var x1, x2, y1, y2, tx, ty;\n var sign = mirror ? -1 : 1;\n var finalTickSize = data.tickSize || tickSize;\n var tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n\n switch (orientation) {\n case 'top':\n x1 = x2 = data.coordinate;\n y2 = y + +!mirror * height;\n y1 = y2 - sign * finalTickSize;\n ty = y1 - sign * tickMargin;\n tx = tickCoord;\n break;\n\n case 'left':\n y1 = y2 = data.coordinate;\n x2 = x + +!mirror * width;\n x1 = x2 - sign * finalTickSize;\n tx = x1 - sign * tickMargin;\n ty = tickCoord;\n break;\n\n case 'right':\n y1 = y2 = data.coordinate;\n x2 = x + +mirror * width;\n x1 = x2 + sign * finalTickSize;\n tx = x1 + sign * tickMargin;\n ty = tickCoord;\n break;\n\n default:\n x1 = x2 = data.coordinate;\n y2 = y + +mirror * height;\n y1 = y2 + sign * finalTickSize;\n ty = y1 + sign * tickMargin;\n tx = tickCoord;\n break;\n }\n\n return {\n line: {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n },\n tick: {\n x: tx,\n y: ty\n }\n };\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var _this$props3 = this.props,\n orientation = _this$props3.orientation,\n mirror = _this$props3.mirror;\n var textAnchor;\n\n switch (orientation) {\n case 'left':\n textAnchor = mirror ? 'start' : 'end';\n break;\n\n case 'right':\n textAnchor = mirror ? 'end' : 'start';\n break;\n\n default:\n textAnchor = 'middle';\n break;\n }\n\n return textAnchor;\n }\n }, {\n key: \"getTickVerticalAnchor\",\n value: function getTickVerticalAnchor() {\n var _this$props4 = this.props,\n orientation = _this$props4.orientation,\n mirror = _this$props4.mirror;\n var verticalAnchor = 'end';\n\n switch (orientation) {\n case 'left':\n case 'right':\n verticalAnchor = 'middle';\n break;\n\n case 'top':\n verticalAnchor = mirror ? 'start' : 'end';\n break;\n\n default:\n verticalAnchor = mirror ? 'end' : 'start';\n break;\n }\n\n return verticalAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n orientation = _this$props5.orientation,\n mirror = _this$props5.mirror;\n\n var props = _objectSpread({}, filterProps(this.props), {\n fill: 'none'\n });\n\n if (orientation === 'top' || orientation === 'bottom') {\n var needHeight = +(orientation === 'top' && !mirror || orientation === 'bottom' && mirror);\n props = _objectSpread({}, props, {\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height\n });\n } else {\n var needWidth = +(orientation === 'left' && !mirror || orientation === 'right' && mirror);\n props = _objectSpread({}, props, {\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height\n });\n }\n\n return React.createElement(\"line\", _extends({\n className: \"recharts-cartesian-axis-line\"\n }, props));\n }\n }, {\n key: \"renderTicks\",\n\n /**\n * render the ticks\n * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n * @return {ReactComponent} renderedTicks\n */\n value: function renderTicks(ticks) {\n var _this = this;\n\n var _this$props6 = this.props,\n tickLine = _this$props6.tickLine,\n stroke = _this$props6.stroke,\n tick = _this$props6.tick,\n tickFormatter = _this$props6.tickFormatter,\n unit = _this$props6.unit;\n var finalTicks = CartesianAxis.getTicks(_objectSpread({}, this.props, {\n ticks: ticks\n }));\n var textAnchor = this.getTickTextAnchor();\n var verticalAnchor = this.getTickVerticalAnchor();\n var axisProps = filterProps(this.props);\n var customTickProps = filterProps(tick);\n\n var tickLineProps = _objectSpread({}, axisProps, {\n fill: 'none'\n }, filterProps(tickLine));\n\n var items = finalTicks.map(function (entry, i) {\n var _this$getTickLineCoor = _this.getTickLineCoord(entry),\n lineCoord = _this$getTickLineCoor.line,\n tickCoord = _this$getTickLineCoor.tick;\n\n var tickProps = _objectSpread({\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor\n }, axisProps, {\n stroke: 'none',\n fill: stroke\n }, customTickProps, {}, tickCoord, {\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length\n });\n\n return React.createElement(Layer, _extends({\n className: \"recharts-cartesian-axis-tick\",\n key: \"tick-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }, adaptEventsOfChild(_this.props, entry, i)), tickLine && React.createElement(\"line\", _extends({\n className: \"recharts-cartesian-axis-tick-line\"\n }, tickLineProps, lineCoord)), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(_isFunction(tickFormatter) ? tickFormatter(entry.value) : entry.value).concat(unit || '')));\n });\n return React.createElement(\"g\", {\n className: \"recharts-cartesian-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props7 = this.props,\n axisLine = _this$props7.axisLine,\n width = _this$props7.width,\n height = _this$props7.height,\n ticksGenerator = _this$props7.ticksGenerator,\n className = _this$props7.className,\n hide = _this$props7.hide;\n\n if (hide) {\n return null;\n }\n\n var _this$props8 = this.props,\n ticks = _this$props8.ticks,\n noTicksProps = _objectWithoutProperties(_this$props8, [\"ticks\"]);\n\n var finalTicks = ticks;\n\n if (_isFunction(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n\n return React.createElement(Layer, {\n className: classNames('recharts-cartesian-axis', className)\n }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks), Label.renderCallByParent(this.props));\n }\n }], [{\n key: \"getTicks\",\n // todo Array<Tick>\n value: function getTicks(props) {\n var tick = props.tick,\n ticks = props.ticks,\n viewBox = props.viewBox,\n minTickGap = props.minTickGap,\n orientation = props.orientation,\n interval = props.interval,\n tickFormatter = props.tickFormatter,\n unit = props.unit;\n\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n\n if (isNumber(interval) || isSsr()) {\n return CartesianAxis.getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n }\n\n if (interval === 'preserveStartEnd') {\n return CartesianAxis.getTicksStart({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit\n }, true);\n }\n\n if (interval === 'preserveStart') {\n return CartesianAxis.getTicksStart({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit\n });\n }\n\n return CartesianAxis.getTicksEnd({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit\n });\n }\n }, {\n key: \"getNumberIntervalTicks\",\n value: function getNumberIntervalTicks(ticks, interval) {\n return ticks.filter(function (entry, i) {\n return i % (interval + 1) === 0;\n });\n }\n }, {\n key: \"getTicksStart\",\n value: function getTicksStart(_ref2, preserveEnd) {\n var ticks = _ref2.ticks,\n tickFormatter = _ref2.tickFormatter,\n viewBox = _ref2.viewBox,\n orientation = _ref2.orientation,\n minTickGap = _ref2.minTickGap,\n unit = _ref2.unit;\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n var result = (ticks || []).slice(); // we need add the width of 'unit' only when sizeKey === 'width'\n\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit)[sizeKey] : 0;\n var len = result.length;\n var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n var start, end;\n\n if (sign === 1) {\n start = sizeKey === 'width' ? x : y;\n end = sizeKey === 'width' ? x + width : y + height;\n } else {\n start = sizeKey === 'width' ? x + width : y + height;\n end = sizeKey === 'width' ? x : y;\n }\n\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n var tail = ticks[len - 1];\n var tailContent = _isFunction(tickFormatter) ? tickFormatter(tail.value) : tail.value;\n var tailSize = getStringSize(tailContent)[sizeKey] + unitSize;\n var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n result[len - 1] = tail = _objectSpread({}, tail, {\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n });\n var isTailShow = sign * (tail.tickCoord - sign * tailSize / 2 - start) >= 0 && sign * (tail.tickCoord + sign * tailSize / 2 - end) <= 0;\n\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = _objectSpread({}, tail, {\n isShow: true\n });\n }\n }\n\n var count = preserveEnd ? len - 1 : len;\n\n for (var _i = 0; _i < count; _i++) {\n var entry = result[_i];\n var content = _isFunction(tickFormatter) ? tickFormatter(entry.value) : entry.value;\n var size = getStringSize(content)[sizeKey] + unitSize;\n\n if (_i === 0) {\n var gap = sign * (entry.coordinate - sign * size / 2 - start);\n result[_i] = entry = _objectSpread({}, entry, {\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[_i] = entry = _objectSpread({}, entry, {\n tickCoord: entry.coordinate\n });\n }\n\n var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n\n if (isShow) {\n start = entry.tickCoord + sign * (size / 2 + minTickGap);\n result[_i] = _objectSpread({}, entry, {\n isShow: true\n });\n }\n }\n\n return result.filter(function (entry) {\n return entry.isShow;\n });\n }\n }, {\n key: \"getTicksEnd\",\n value: function getTicksEnd(_ref3) {\n var ticks = _ref3.ticks,\n tickFormatter = _ref3.tickFormatter,\n viewBox = _ref3.viewBox,\n orientation = _ref3.orientation,\n minTickGap = _ref3.minTickGap,\n unit = _ref3.unit;\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height'; // we need add the width of 'unit' only when sizeKey === 'width'\n\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit)[sizeKey] : 0;\n var result = (ticks || []).slice();\n var len = result.length;\n var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n var start, end;\n\n if (sign === 1) {\n start = sizeKey === 'width' ? x : y;\n end = sizeKey === 'width' ? x + width : y + height;\n } else {\n start = sizeKey === 'width' ? x + width : y + height;\n end = sizeKey === 'width' ? x : y;\n }\n\n for (var _i2 = len - 1; _i2 >= 0; _i2--) {\n var entry = result[_i2];\n var content = _isFunction(tickFormatter) ? tickFormatter(entry.value) : entry.value;\n var size = getStringSize(content)[sizeKey] + unitSize;\n\n if (_i2 === len - 1) {\n var gap = sign * (entry.coordinate + sign * size / 2 - end);\n result[_i2] = entry = _objectSpread({}, entry, {\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[_i2] = entry = _objectSpread({}, entry, {\n tickCoord: entry.coordinate\n });\n }\n\n var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n\n if (isShow) {\n end = entry.tickCoord - sign * (size / 2 + minTickGap);\n result[_i2] = _objectSpread({}, entry, {\n isShow: true\n });\n }\n }\n\n return result.filter(function (entry) {\n return entry.isShow;\n });\n }\n }, {\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n\n if (React.isValidElement(option)) {\n tickItem = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = React.createElement(Text, _extends({}, props, {\n className: \"recharts-cartesian-axis-tick-value\"\n }), value);\n }\n\n return tickItem;\n }\n }]);\n\n return CartesianAxis;\n}(Component);\n\nCartesianAxis.displayName = 'CartesianAxis';\nCartesianAxis.defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n // The orientation of axis\n orientation: 'bottom',\n // The ticks\n ticks: [],\n stroke: '#666',\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: 'preserveEnd'\n};\nexport default CartesianAxis;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (!name) {\n return null;\n }\n\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var result = PREFIX_LIST.reduce(function (res, entry) {\n return _objectSpread({}, res, _defineProperty({}, entry + camelName, value));\n }, {});\n result[name] = value;\n return result;\n};","import _range from \"lodash/range\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children } from 'react';\nimport classNames from 'classnames';\nimport { scalePoint } from 'd3-scale';\nimport Layer from '../container/Layer';\nimport Text from '../component/Text';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { generatePrefixStyle } from '../util/CssPrefixUtils';\n;\n\nvar isTouch = function isTouch(e) {\n return e.changedTouches && !!e.changedTouches.length;\n};\n\nvar Brush =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Brush, _PureComponent);\n\n function Brush(props) {\n var _this;\n\n _classCallCheck(this, Brush);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Brush).call(this, props));\n _this.leaveTimer = void 0;\n _this.scale = void 0;\n _this.scaleValues = void 0;\n _this.travellerDragStartHandlers = void 0;\n\n _this.handleDrag = function (e) {\n if (_this.leaveTimer) {\n clearTimeout(_this.leaveTimer);\n _this.leaveTimer = null;\n }\n\n if (_this.state.isTravellerMoving) {\n _this.handleTravellerMove(e);\n } else if (_this.state.isSlideMoving) {\n _this.handleSlideDrag(e);\n }\n };\n\n _this.handleTouchMove = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleDrag(e.changedTouches[0]);\n }\n };\n\n _this.handleDragEnd = function () {\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: false\n });\n };\n\n _this.handleLeaveWrapper = function () {\n if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n _this.leaveTimer = window.setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n }\n };\n\n _this.handleEnterSlideOrTraveller = function () {\n _this.setState({\n isTextActive: true\n });\n };\n\n _this.handleLeaveSlideOrTraveller = function () {\n _this.setState({\n isTextActive: false\n });\n };\n\n _this.handleSlideDragStart = function (e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: true,\n slideMoveStartX: event.pageX\n });\n };\n\n _this.travellerDragStartHandlers = {\n startX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'startX'),\n endX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'endX')\n };\n _this.state = props.data && props.data.length ? _this.updateScale(props) : {};\n return _this;\n }\n\n _createClass(Brush, [{\n key: \"UNSAFE_componentWillReceiveProps\",\n // eslint-disable-next-line camelcase\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var _this2 = this;\n\n var _this$props = this.props,\n data = _this$props.data,\n width = _this$props.width,\n x = _this$props.x,\n travellerWidth = _this$props.travellerWidth,\n updateId = _this$props.updateId;\n\n if ((nextProps.data !== data || nextProps.updateId !== updateId) && nextProps.data && nextProps.data.length) {\n this.setState(this.updateScale(nextProps));\n } else if (nextProps.width !== width || nextProps.x !== x || nextProps.travellerWidth !== travellerWidth) {\n this.scale.range([nextProps.x, nextProps.x + nextProps.width - nextProps.travellerWidth]);\n this.scaleValues = this.scale.domain().map(function (entry) {\n return _this2.scale(entry);\n });\n this.setState({\n startX: this.scale(nextProps.startIndex),\n endX: this.scale(nextProps.endIndex)\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.scale = null;\n this.scaleValues = null;\n\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n }\n }, {\n key: \"getIndex\",\n value: function getIndex(_ref) {\n var startX = _ref.startX,\n endX = _ref.endX;\n var _this$props2 = this.props,\n gap = _this$props2.gap,\n data = _this$props2.data;\n var lastIndex = data.length - 1;\n var min = Math.min(startX, endX);\n var max = Math.max(startX, endX);\n var minIndex = Brush.getIndexInRange(this.scaleValues, min);\n var maxIndex = Brush.getIndexInRange(this.scaleValues, max);\n return {\n startIndex: minIndex - minIndex % gap,\n endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n };\n }\n }, {\n key: \"getTextOfTick\",\n value: function getTextOfTick(index) {\n var _this$props3 = this.props,\n data = _this$props3.data,\n tickFormatter = _this$props3.tickFormatter,\n dataKey = _this$props3.dataKey;\n var text = getValueByDataKey(data[index], dataKey, index);\n return _isFunction(tickFormatter) ? tickFormatter(text) : text;\n }\n }, {\n key: \"handleSlideDrag\",\n value: function handleSlideDrag(e) {\n var _this$state = this.state,\n slideMoveStartX = _this$state.slideMoveStartX,\n startX = _this$state.startX,\n endX = _this$state.endX;\n var _this$props4 = this.props,\n x = _this$props4.x,\n width = _this$props4.width,\n travellerWidth = _this$props4.travellerWidth,\n startIndex = _this$props4.startIndex,\n endIndex = _this$props4.endIndex,\n onChange = _this$props4.onChange;\n var delta = e.pageX - slideMoveStartX;\n\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n } else if (delta < 0) {\n delta = Math.max(delta, x - startX, x - endX);\n }\n\n var newIndex = this.getIndex({\n startX: startX + delta,\n endX: endX + delta\n });\n\n if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n onChange(newIndex);\n }\n\n this.setState({\n startX: startX + delta,\n endX: endX + delta,\n slideMoveStartX: e.pageX\n });\n }\n }, {\n key: \"handleTravellerDragStart\",\n value: function handleTravellerDragStart(id, e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n this.setState({\n isSlideMoving: false,\n isTravellerMoving: true,\n movingTravellerId: id,\n brushMoveStartX: event.pageX\n });\n }\n }, {\n key: \"handleTravellerMove\",\n value: function handleTravellerMove(e) {\n var _this$setState;\n\n var _this$state2 = this.state,\n brushMoveStartX = _this$state2.brushMoveStartX,\n movingTravellerId = _this$state2.movingTravellerId,\n endX = _this$state2.endX,\n startX = _this$state2.startX;\n var prevValue = this.state[movingTravellerId];\n var _this$props5 = this.props,\n x = _this$props5.x,\n width = _this$props5.width,\n travellerWidth = _this$props5.travellerWidth,\n onChange = _this$props5.onChange,\n gap = _this$props5.gap,\n data = _this$props5.data;\n var params = {\n startX: this.state.startX,\n endX: this.state.endX\n };\n var delta = e.pageX - brushMoveStartX;\n\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - prevValue);\n } else if (delta < 0) {\n delta = Math.max(delta, x - prevValue);\n }\n\n params[movingTravellerId] = prevValue + delta;\n var newIndex = this.getIndex(params);\n var startIndex = newIndex.startIndex,\n endIndex = newIndex.endIndex;\n\n var isFullGap = function isFullGap() {\n var lastIndex = data.length - 1;\n\n if (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n return true;\n }\n\n return false;\n };\n\n this.setState((_this$setState = {}, _defineProperty(_this$setState, movingTravellerId, prevValue + delta), _defineProperty(_this$setState, \"brushMoveStartX\", e.pageX), _this$setState), function () {\n if (onChange) {\n if (isFullGap()) {\n onChange(newIndex);\n }\n }\n });\n }\n }, {\n key: \"updateScale\",\n value: function updateScale(props) {\n var _this3 = this;\n\n var data = props.data,\n startIndex = props.startIndex,\n endIndex = props.endIndex,\n x = props.x,\n width = props.width,\n travellerWidth = props.travellerWidth;\n var len = data.length;\n this.scale = scalePoint().domain(_range(0, len)).range([x, x + width - travellerWidth]);\n this.scaleValues = this.scale.domain().map(function (entry) {\n return _this3.scale(entry);\n });\n return {\n isTextActive: false,\n isSlideMoving: false,\n isTravellerMoving: false,\n startX: this.scale(startIndex),\n endX: this.scale(endIndex)\n };\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n fill = _this$props6.fill,\n stroke = _this$props6.stroke;\n return React.createElement(\"rect\", {\n stroke: stroke,\n fill: fill,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderPanorama\",\n value: function renderPanorama() {\n var _this$props7 = this.props,\n x = _this$props7.x,\n y = _this$props7.y,\n width = _this$props7.width,\n height = _this$props7.height,\n data = _this$props7.data,\n children = _this$props7.children,\n padding = _this$props7.padding;\n var chartElement = Children.only(children);\n\n if (!chartElement) {\n return null;\n }\n\n return React.cloneElement(chartElement, {\n x: x,\n y: y,\n width: width,\n height: height,\n margin: padding,\n compact: true,\n data: data\n });\n }\n }, {\n key: \"renderTraveller\",\n value: function renderTraveller(travellerX, id) {\n var _this$props8 = this.props,\n y = _this$props8.y,\n travellerWidth = _this$props8.travellerWidth,\n height = _this$props8.height,\n stroke = _this$props8.stroke;\n var lineY = Math.floor(y + height / 2) - 1;\n var x = Math.max(travellerX, this.props.x);\n return React.createElement(Layer, {\n className: \"recharts-brush-traveller\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.travellerDragStartHandlers[id],\n onTouchStart: this.travellerDragStartHandlers[id],\n style: {\n cursor: 'col-resize'\n }\n }, React.createElement(\"rect\", {\n x: x,\n y: y,\n width: travellerWidth,\n height: height,\n fill: stroke,\n stroke: \"none\"\n }), React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY,\n x2: x + travellerWidth - 1,\n y2: lineY,\n fill: \"none\",\n stroke: \"#fff\"\n }), React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY + 2,\n x2: x + travellerWidth - 1,\n y2: lineY + 2,\n fill: \"none\",\n stroke: \"#fff\"\n }));\n }\n }, {\n key: \"renderSlide\",\n value: function renderSlide(startX, endX) {\n var _this$props9 = this.props,\n y = _this$props9.y,\n height = _this$props9.height,\n stroke = _this$props9.stroke;\n return React.createElement(\"rect\", {\n className: \"recharts-brush-slide\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.handleSlideDragStart,\n onTouchStart: this.handleSlideDragStart,\n style: {\n cursor: 'move'\n },\n stroke: \"none\",\n fill: stroke,\n fillOpacity: 0.2,\n x: Math.min(startX, endX),\n y: y,\n width: Math.abs(endX - startX),\n height: height\n });\n }\n }, {\n key: \"renderText\",\n value: function renderText() {\n var _this$props10 = this.props,\n startIndex = _this$props10.startIndex,\n endIndex = _this$props10.endIndex,\n y = _this$props10.y,\n height = _this$props10.height,\n travellerWidth = _this$props10.travellerWidth,\n stroke = _this$props10.stroke;\n var _this$state3 = this.state,\n startX = _this$state3.startX,\n endX = _this$state3.endX;\n var offset = 5;\n var attrs = {\n pointerEvents: 'none',\n fill: stroke\n };\n return React.createElement(Layer, {\n className: \"recharts-brush-texts\"\n }, React.createElement(Text, _extends({\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: Math.min(startX, endX) - offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(startIndex)), React.createElement(Text, _extends({\n textAnchor: \"start\",\n verticalAnchor: \"middle\",\n x: Math.max(startX, endX) + travellerWidth + offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(endIndex)));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props11 = this.props,\n data = _this$props11.data,\n className = _this$props11.className,\n children = _this$props11.children,\n x = _this$props11.x,\n y = _this$props11.y,\n width = _this$props11.width,\n height = _this$props11.height,\n alwaysShowText = _this$props11.alwaysShowText;\n var _this$state4 = this.state,\n startX = _this$state4.startX,\n endX = _this$state4.endX,\n isTextActive = _this$state4.isTextActive,\n isSlideMoving = _this$state4.isSlideMoving,\n isTravellerMoving = _this$state4.isTravellerMoving;\n\n if (!data || !data.length || !isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || width <= 0 || height <= 0) {\n return null;\n }\n\n var layerClass = classNames('recharts-brush', className);\n var isPanoramic = React.Children.count(children) === 1;\n var style = generatePrefixStyle('userSelect', 'none');\n return React.createElement(Layer, {\n className: layerClass,\n onMouseMove: this.handleDrag,\n onMouseLeave: this.handleLeaveWrapper,\n onMouseUp: this.handleDragEnd,\n onTouchEnd: this.handleDragEnd,\n onTouchMove: this.handleTouchMove,\n style: style\n }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTraveller(startX, 'startX'), this.renderTraveller(endX, 'endX'), (isTextActive || isSlideMoving || isTravellerMoving || alwaysShowText) && this.renderText());\n }\n }], [{\n key: \"getIndexInRange\",\n value: function getIndexInRange(range, x) {\n var len = range.length;\n var start = 0;\n var end = len - 1;\n\n while (end - start > 1) {\n var middle = Math.floor((start + end) / 2);\n\n if (range[middle] > x) {\n end = middle;\n } else {\n start = middle;\n }\n }\n\n return x >= range[end] ? end : start;\n }\n }]);\n\n return Brush;\n}(PureComponent);\n\nBrush.displayName = 'Brush';\nBrush.defaultProps = {\n height: 40,\n travellerWidth: 5,\n gap: 1,\n fill: '#fff',\n stroke: '#666',\n padding: {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n },\n leaveTimeOut: 1000,\n alwaysShowText: false\n};\nexport default Brush;","export var ifOverflowMatches = function ifOverflowMatches(props, value) {\n var alwaysShow = props.alwaysShow;\n var ifOverflow = props.ifOverflow;\n\n if (alwaysShow) {\n ifOverflow = 'extendDomain';\n }\n\n return ifOverflow === value;\n};","import _every from \"lodash/every\";\nimport _mapValues from \"lodash/mapValues\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {String} axisType The type of axes, x-axis or y-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height,\n layout = props.layout;\n var ids = Object.keys(axisMap);\n var steps = {\n left: offset.left,\n leftMirror: offset.left,\n right: width - offset.right,\n rightMirror: width - offset.right,\n top: offset.top,\n topMirror: offset.top,\n bottom: height - offset.bottom,\n bottomMirror: height - offset.bottom\n };\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var orientation = axis.orientation,\n domain = axis.domain,\n _axis$padding = axis.padding,\n padding = _axis$padding === void 0 ? {} : _axis$padding,\n mirror = axis.mirror,\n reversed = axis.reversed;\n var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n var range, x, y, needSpace;\n\n if (axisType === 'xAxis') {\n range = [offset.left + (padding.left || 0), offset.left + offset.width - (padding.right || 0)];\n } else if (axisType === 'yAxis') {\n range = layout === 'horizontal' ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)] : [offset.top + (padding.top || 0), offset.top + offset.height - (padding.bottom || 0)];\n } else {\n range = axis.range;\n }\n\n if (reversed) {\n range = [range[1], range[0]];\n }\n\n var _parseScale = parseScale(axis, chartName),\n scale = _parseScale.scale,\n realScaleType = _parseScale.realScaleType;\n\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread({}, axis, {\n realScaleType: realScaleType\n }));\n\n if (axisType === 'xAxis') {\n needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n x = offset.left;\n y = steps[offsetKey] - needSpace * axis.height;\n } else if (axisType === 'yAxis') {\n needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n x = steps[offsetKey] - needSpace * axis.width;\n y = offset.top;\n }\n\n var finalAxis = _objectSpread({}, axis, {}, ticks, {\n realScaleType: realScaleType,\n x: x,\n y: y,\n scale: scale,\n width: axisType === 'xAxis' ? offset.width : axis.width,\n height: axisType === 'yAxis' ? offset.height : axis.height\n });\n\n finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks);\n\n if (!axis.hide && axisType === 'xAxis') {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n } else if (!axis.hide) {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n }\n\n return _objectSpread({}, result, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var rectWithPoints = function rectWithPoints(_ref, _ref2) {\n var x1 = _ref.x,\n y1 = _ref.y;\n var x2 = _ref2.x,\n y2 = _ref2.y;\n return {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n};\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param {Object} coords x1, x2, y1, and y2\n * @return {Object} object\n */\n\nexport var rectWithCoords = function rectWithCoords(_ref3) {\n var x1 = _ref3.x1,\n y1 = _ref3.y1,\n x2 = _ref3.x2,\n y2 = _ref3.y2;\n return rectWithPoints({\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n};\nexport var ScaleHelper =\n/*#__PURE__*/\nfunction () {\n _createClass(ScaleHelper, null, [{\n key: \"create\",\n value: function create(obj) {\n return new ScaleHelper(obj);\n }\n }]);\n\n function ScaleHelper(scale) {\n _classCallCheck(this, ScaleHelper);\n\n this.scale = void 0;\n this.scale = scale;\n }\n\n _createClass(ScaleHelper, [{\n key: \"apply\",\n value: function apply(value) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref4.bandAware,\n position = _ref4.position;\n\n if (value === undefined) {\n return undefined;\n }\n\n if (position) {\n switch (position) {\n case 'start':\n {\n return this.scale(value);\n }\n\n case 'middle':\n {\n var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n\n case 'end':\n {\n var _offset = this.bandwidth ? this.bandwidth() : 0;\n\n return this.scale(value) + _offset;\n }\n\n default:\n {\n return this.scale(value);\n }\n }\n }\n\n if (bandAware) {\n var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n\n return this.scale(value) + _offset2;\n }\n\n return this.scale(value);\n }\n }, {\n key: \"isInRange\",\n value: function isInRange(value) {\n var range = this.range();\n var first = range[0];\n var last = range[range.length - 1];\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n }, {\n key: \"domain\",\n get: function get() {\n return this.scale.domain;\n }\n }, {\n key: \"range\",\n get: function get() {\n return this.scale.range;\n }\n }, {\n key: \"rangeMin\",\n get: function get() {\n return this.range()[0];\n }\n }, {\n key: \"rangeMax\",\n get: function get() {\n return this.range()[1];\n }\n }, {\n key: \"bandwidth\",\n get: function get() {\n return this.scale.bandwidth;\n }\n }]);\n\n return ScaleHelper;\n}();\nScaleHelper.EPS = 1e-4;\nexport var createLabeldScales = function createLabeldScales(options) {\n var scales = Object.keys(options).reduce(function (res, key) {\n return _objectSpread({}, res, _defineProperty({}, key, ScaleHelper.create(options[key])));\n }, {});\n return _objectSpread({}, scales, {\n apply: function apply(coord) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref5.bandAware;\n\n return _mapValues(coord, function (value, label) {\n return scales[label].apply(value, {\n bandAware: bandAware\n });\n });\n },\n isInRange: function isInRange(coord) {\n return _every(coord, function (value, label) {\n return scales[label].isInRange(value);\n });\n }\n });\n};","import _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileOverview Reference Dot\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport Layer from '../container/Layer';\nimport Dot from '../shape/Dot';\nimport Label from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { createLabeldScales } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/types';\n;\n\nvar getCoordinate = function getCoordinate(props) {\n var x = props.x,\n y = props.y,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n var scales = createLabeldScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var result = scales.apply({\n x: x,\n y: y\n }, {\n bandAware: true\n });\n\n if (ifOverflowMatches(props, 'discard') && !scales.isInRange(result)) {\n return null;\n }\n\n return result;\n};\n\nfunction ReferenceDot(props) {\n var x = props.x,\n y = props.y,\n r = props.r,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n var isX = isNumOrStr(x);\n var isY = isNumOrStr(y);\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n\n if (!isX || !isY) {\n return null;\n }\n\n var coordinate = getCoordinate(props);\n\n if (!coordinate) {\n return null;\n }\n\n var cx = coordinate.x,\n cy = coordinate.y;\n var shape = props.shape,\n className = props.className;\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n\n var dotProps = _objectSpread({\n clipPath: clipPath\n }, filterProps(props, true), {\n cx: cx,\n cy: cy\n });\n\n return React.createElement(Layer, {\n className: classNames('recharts-reference-dot', className)\n }, ReferenceDot.renderDot(shape, dotProps), Label.renderCallByParent(props, {\n x: cx - r,\n y: cy - r,\n width: 2 * r,\n height: 2 * r\n }));\n}\n\nReferenceDot.displayName = 'ReferenceDot';\nReferenceDot.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#fff',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1\n};\n\nReferenceDot.renderDot = function (option, props) {\n var dot;\n\n if (React.isValidElement(option)) {\n dot = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dot = option(props);\n } else {\n dot = React.createElement(Dot, _extends({}, props, {\n cx: props.cx,\n cy: props.cy,\n className: \"recharts-reference-dot-dot\"\n }));\n }\n\n return dot;\n};\n\nexport default ReferenceDot;","import _some from \"lodash/some\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport Layer from '../container/Layer';\nimport Label from '../component/Label';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { createLabeldScales, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/types';\n;\n\nvar renderLine = function renderLine(option, props) {\n var line;\n\n if (React.isValidElement(option)) {\n line = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n line = option(props);\n } else {\n line = React.createElement(\"line\", _extends({}, props, {\n className: \"recharts-reference-line-line\"\n }));\n }\n\n return line;\n}; // TODO: ScaleHelper\n\n\nvar getEndPoints = function getEndPoints(scales, isFixedX, isFixedY, isSegment, props) {\n var _props$viewBox = props.viewBox,\n x = _props$viewBox.x,\n y = _props$viewBox.y,\n width = _props$viewBox.width,\n height = _props$viewBox.height,\n position = props.position;\n\n if (isFixedY) {\n var yCoord = props.y,\n orientation = props.yAxis.orientation;\n var coord = scales.y.apply(yCoord, {\n position: position\n });\n\n if (ifOverflowMatches(props, 'discard') && !scales.y.isInRange(coord)) {\n return null;\n }\n\n var points = [{\n x: x + width,\n y: coord\n }, {\n x: x,\n y: coord\n }];\n return orientation === 'left' ? points.reverse() : points;\n }\n\n if (isFixedX) {\n var xCoord = props.x,\n _orientation = props.xAxis.orientation;\n\n var _coord = scales.x.apply(xCoord, {\n position: position\n });\n\n if (ifOverflowMatches(props, 'discard') && !scales.x.isInRange(_coord)) {\n return null;\n }\n\n var _points = [{\n x: _coord,\n y: y + height\n }, {\n x: _coord,\n y: y\n }];\n return _orientation === 'top' ? _points.reverse() : _points;\n }\n\n if (isSegment) {\n var segment = props.segment;\n\n var _points2 = segment.map(function (p) {\n return scales.apply(p, {\n position: position\n });\n });\n\n if (ifOverflowMatches(props, 'discard') && _some(_points2, function (p) {\n return !scales.isInRange(p);\n })) {\n return null;\n }\n\n return _points2;\n }\n\n return null;\n};\n\nfunction ReferenceLine(props) {\n var fixedX = props.x,\n fixedY = props.y,\n segment = props.segment,\n xAxis = props.xAxis,\n yAxis = props.yAxis,\n shape = props.shape,\n className = props.className,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var scales = createLabeldScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var isX = isNumOrStr(fixedX);\n var isY = isNumOrStr(fixedY);\n var isSegment = segment && segment.length === 2;\n var endPoints = getEndPoints(scales, isX, isY, isSegment, props);\n\n if (!endPoints) {\n return null;\n }\n\n var _endPoints = _slicedToArray(endPoints, 2),\n _endPoints$ = _endPoints[0],\n x1 = _endPoints$.x,\n y1 = _endPoints$.y,\n _endPoints$2 = _endPoints[1],\n x2 = _endPoints$2.x,\n y2 = _endPoints$2.y;\n\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n\n var lineProps = _objectSpread({\n clipPath: clipPath\n }, filterProps(props, true), {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n\n return React.createElement(Layer, {\n className: classNames('recharts-reference-line', className)\n }, renderLine(shape, lineProps), Label.renderCallByParent(props, rectWithCoords({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n })));\n}\n\nReferenceLine.displayName = 'ReferenceLine';\nReferenceLine.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n fill: 'none',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1,\n position: 'middle'\n};\nexport default ReferenceLine;","import _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport Layer from '../container/Layer';\nimport Label from '../component/Label';\nimport { createLabeldScales, rectWithPoints } from '../util/CartesianUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport Rectangle from '../shape/Rectangle';\nimport { filterProps } from '../util/types';\n;\n\nvar getRect = function getRect(hasX1, hasX2, hasY1, hasY2, props) {\n var xValue1 = props.x1,\n xValue2 = props.x2,\n yValue1 = props.y1,\n yValue2 = props.y2,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n var scales = createLabeldScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var p1 = {\n x: hasX1 ? scales.x.apply(xValue1) : scales.x.rangeMin,\n y: hasY1 ? scales.y.apply(yValue1) : scales.y.rangeMin\n };\n var p2 = {\n x: hasX2 ? scales.x.apply(xValue2) : scales.x.rangeMax,\n y: hasY2 ? scales.y.apply(yValue2) : scales.y.rangeMax\n };\n\n if (ifOverflowMatches(props, 'discard') && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n return null;\n }\n\n return rectWithPoints(p1, p2);\n};\n\nfunction ReferenceArea(props) {\n var x1 = props.x1,\n x2 = props.x2,\n y1 = props.y1,\n y2 = props.y2,\n className = props.className,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var hasX1 = isNumOrStr(x1);\n var hasX2 = isNumOrStr(x2);\n var hasY1 = isNumOrStr(y1);\n var hasY2 = isNumOrStr(y2);\n var shape = props.shape;\n\n if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n return null;\n }\n\n var rect = getRect(hasX1, hasX2, hasY1, hasY2, props);\n\n if (!rect && !shape) {\n return null;\n }\n\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n return React.createElement(Layer, {\n className: classNames('recharts-reference-area', className)\n }, ReferenceArea.renderRect(shape, _objectSpread({\n clipPath: clipPath\n }, filterProps(props, true), {}, rect)), Label.renderCallByParent(props, rect));\n}\n\nReferenceArea.displayName = 'ReferenceArea';\nReferenceArea.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#ccc',\n fillOpacity: 0.5,\n stroke: 'none',\n strokeWidth: 1\n};\n\nReferenceArea.renderRect = function (option, props) {\n var rect;\n\n if (React.isValidElement(option)) {\n rect = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rect = option(props);\n } else {\n rect = React.createElement(Rectangle, _extends({}, props, {\n className: \"recharts-reference-area-rect\"\n }));\n }\n\n return rect;\n};\n\nexport default ReferenceArea;","import ReferenceDot from '../cartesian/ReferenceDot';\nimport ReferenceLine from '../cartesian/ReferenceLine';\nimport ReferenceArea from '../cartesian/ReferenceArea';\nimport { ifOverflowMatches } from './IfOverflowMatches';\nimport { findAllByType } from './ReactUtils';\nimport { isNumber } from './DataUtils';\nexport var detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n var lines = findAllByType(children, ReferenceLine.displayName);\n var dots = findAllByType(children, ReferenceDot.displayName);\n var elements = lines.concat(dots);\n var areas = findAllByType(children, ReferenceArea.displayName);\n var idKey = \"\".concat(axisType, \"Id\");\n var valueKey = axisType[0];\n var finalDomain = domain;\n\n if (elements.length) {\n finalDomain = elements.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n var value = el.props[valueKey];\n return [Math.min(result[0], value), Math.max(result[1], value)];\n }\n\n return result;\n }, finalDomain);\n }\n\n if (areas.length) {\n var key1 = \"\".concat(valueKey, \"1\");\n var key2 = \"\".concat(valueKey, \"2\");\n finalDomain = areas.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[key1]) && isNumber(el.props[key2])) {\n var value1 = el.props[key1];\n var value2 = el.props[key2];\n return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n }\n\n return result;\n }, finalDomain);\n }\n\n if (specifiedTicks && specifiedTicks.length) {\n finalDomain = specifiedTicks.reduce(function (result, tick) {\n if (isNumber(tick)) {\n return [Math.min(result[0], tick), Math.max(result[1], tick)];\n }\n\n return result;\n }, finalDomain);\n }\n\n return finalDomain;\n};","import EventEmitter from 'events';\nvar eventCenter = new EventEmitter();\n\nif (eventCenter.setMaxListeners) {\n eventCenter.setMaxListeners(10);\n}\n\nexport { eventCenter };\nexport var SYNC_EVENT = 'recharts.syncMouseEvents';","import _every from \"lodash/every\";\nimport _find from \"lodash/find\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nimport _range from \"lodash/range\";\nimport _throttle from \"lodash/throttle\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport React, { Component, cloneElement, isValidElement, createElement } from 'react';\nimport classNames from 'classnames';\nimport Surface from '../container/Surface';\nimport Layer from '../container/Layer';\nimport Tooltip from '../component/Tooltip';\nimport Legend from '../component/Legend';\nimport Curve from '../shape/Curve';\nimport Cross from '../shape/Cross';\nimport Sector from '../shape/Sector';\nimport Dot from '../shape/Dot';\nimport Rectangle from '../shape/Rectangle';\nimport { findAllByType, findChildByType, getDisplayName, parseChildIndex, validateWidthHeight, isChildrenEqual, renderByOrder, getReactEventByType } from '../util/ReactUtils';\nimport CartesianAxis from '../cartesian/CartesianAxis';\nimport Brush from '../cartesian/Brush';\nimport { getOffset, calculateChartCoordinate } from '../util/DOMUtils';\nimport { getAnyElementOfObject, hasDuplicate, uniqueId, isNumber, findEntryInArray } from '../util/DataUtils';\nimport { calculateActiveTickIndex, getMainColorOfGraphicItem, getBarSizeList, getBarPosition, appendOffsetOfLegend, getLegendProps, combineEventHandlers, getTicksOfAxis, getCoordinatesOfGrid, getStackedDataOfItem, parseErrorBarsOfAxis, getBandSizeOfAxis, getStackGroupsByAxisId, getValueByDataKey, isCategorialAxis, getDomainOfItemsWithSameAxis, getDomainOfStackGroups, getDomainOfDataByKey, parseSpecifiedDomain, parseDomainOfCategoryAxis } from '../util/ChartUtils';\nimport { detectReferenceElementsDomain } from '../util/DetectReferenceElementsDomain';\nimport { inRangeOfSector, polarToCartesian } from '../util/PolarUtils';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { eventCenter, SYNC_EVENT } from '../util/Events';\nimport { filterProps, adaptEventHandlers } from '../util/types';\nvar ORIENT_MAP = {\n xAxis: ['bottom', 'top'],\n yAxis: ['left', 'right']\n};\nvar originCoordinate = {\n x: 0,\n y: 0\n};\n\nvar State = function State() {\n _classCallCheck(this, State);\n\n this.chartX = void 0;\n this.chartY = void 0;\n this.dataStartIndex = void 0;\n this.dataEndIndex = void 0;\n this.activeTooltipIndex = void 0;\n this.isTooltipActive = void 0;\n this.updateId = void 0;\n this.xAxisMap = void 0;\n this.yAxisMap = void 0;\n this.orderedTooltipTicks = void 0;\n this.tooltipAxis = void 0;\n this.tooltipTicks = void 0;\n this.graphicalItems = void 0;\n this.activeCoordinate = void 0;\n this.offset = void 0;\n this.angleAxisMap = void 0;\n this.radiusAxisMap = void 0;\n this.formatedGraphicalItems = void 0;\n this.activePayload = void 0;\n this.tooltipAxisBandSize = void 0;\n this.activeItem = void 0;\n this.activeLabel = void 0;\n this.xValue = void 0;\n this.yValue = void 0;\n};\n\nvar generateCategoricalChart = function generateCategoricalChart(_ref) {\n var chartName = _ref.chartName,\n GraphicalChild = _ref.GraphicalChild,\n _ref$eventType = _ref.eventType,\n eventType = _ref$eventType === void 0 ? 'axis' : _ref$eventType,\n axisComponents = _ref.axisComponents,\n legendContent = _ref.legendContent,\n formatAxisMap = _ref.formatAxisMap,\n defaultProps = _ref.defaultProps;\n\n var CategoricalChartWrapper =\n /*#__PURE__*/\n function (_Component) {\n _inherits(CategoricalChartWrapper, _Component);\n\n // todo join specific chart propTypes\n\n /**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */\n function CategoricalChartWrapper(_props) {\n var _this;\n\n _classCallCheck(this, CategoricalChartWrapper);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CategoricalChartWrapper).call(this, _props));\n _this.uniqueChartId = void 0;\n _this.clipPathId = void 0;\n _this.legendInstance = void 0;\n _this.container = void 0;\n\n _this.handleLegendBBoxUpdate = function (box) {\n if (box && _this.legendInstance) {\n var _this$state = _this.state,\n dataStartIndex = _this$state.dataStartIndex,\n dataEndIndex = _this$state.dataEndIndex,\n updateId = _this$state.updateId;\n\n _this.setState(_this.updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }));\n }\n };\n\n _this.handleReceiveSyncEvent = function (cId, chartId, data) {\n var _this$props = _this.props,\n syncId = _this$props.syncId,\n layout = _this$props.layout;\n var updateId = _this.state.updateId;\n\n if (syncId === cId && chartId !== _this.uniqueChartId) {\n var dataStartIndex = data.dataStartIndex,\n dataEndIndex = data.dataEndIndex;\n\n if (!_isNil(data.dataStartIndex) || !_isNil(data.dataEndIndex)) {\n _this.setState(_objectSpread({\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, _this.updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n })));\n } else if (!_isNil(data.activeTooltipIndex)) {\n var chartX = data.chartX,\n chartY = data.chartY,\n activeTooltipIndex = data.activeTooltipIndex;\n var _this$state2 = _this.state,\n offset = _this$state2.offset,\n tooltipTicks = _this$state2.tooltipTicks;\n\n if (!offset) {\n return;\n }\n\n var viewBox = _objectSpread({}, offset, {\n x: offset.left,\n y: offset.top\n }); // When a categotical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n\n\n var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n\n var activePayload = _this.getTooltipContent(activeTooltipIndex);\n\n var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n } : originCoordinate;\n\n _this.setState(_objectSpread({}, data, {\n activeLabel: activeLabel,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload\n }));\n } else {\n _this.setState(data);\n }\n }\n };\n\n _this.handleBrushChange = function (_ref2) {\n var startIndex = _ref2.startIndex,\n endIndex = _ref2.endIndex;\n\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n var updateId = _this.state.updateId;\n\n _this.setState(function () {\n return _objectSpread({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }, _this.updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId: updateId\n }));\n });\n\n _this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n };\n\n _this.handleMouseEnter = function (e) {\n var onMouseEnter = _this.props.onMouseEnter;\n\n var mouse = _this.getMouseInfo(e);\n\n if (mouse) {\n var nextState = _objectSpread({}, mouse, {\n isTooltipActive: true\n });\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseEnter)) {\n onMouseEnter(nextState, e);\n }\n }\n };\n\n _this.triggeredAfterMouseMove = function (e) {\n var onMouseMove = _this.props.onMouseMove;\n\n var mouse = _this.getMouseInfo(e);\n\n var nextState = mouse ? _objectSpread({}, mouse, {\n isTooltipActive: true\n }) : {\n isTooltipActive: false\n };\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseMove)) {\n onMouseMove(nextState, e);\n }\n };\n\n _this.handleItemMouseEnter = function (el) {\n _this.setState(function () {\n return {\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || {\n x: el.cx,\n y: el.cy\n }\n };\n });\n };\n\n _this.handleItemMouseLeave = function () {\n _this.setState(function () {\n return {\n isTooltipActive: false\n };\n });\n };\n\n _this.handleMouseMove = function (e) {\n if (e && _isFunction(e.persist)) {\n e.persist();\n }\n\n _this.triggeredAfterMouseMove(e);\n };\n\n _this.handleMouseLeave = function (e) {\n var onMouseLeave = _this.props.onMouseLeave;\n var nextState = {\n isTooltipActive: false\n };\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n };\n\n _this.handleOuterEvent = function (e) {\n var eventName = getReactEventByType(e);\n\n var event = _get(_this.props, \"\".concat(eventName));\n\n if (eventName && _isFunction(event)) {\n var mouse = _this.getMouseInfo(e);\n\n var handler = event;\n handler(mouse, e);\n }\n };\n\n _this.handleClick = function (e) {\n var onClick = _this.props.onClick;\n\n if (_isFunction(onClick)) {\n var mouse = _this.getMouseInfo(e);\n\n onClick(mouse, e);\n }\n };\n\n _this.handleMouseDown = function (e) {\n var onMouseDown = _this.props.onMouseDown;\n\n if (_isFunction(onMouseDown)) {\n var mouse = _this.getMouseInfo(e);\n\n onMouseDown(mouse, e);\n }\n };\n\n _this.handleMouseUp = function (e) {\n var onMouseUp = _this.props.onMouseUp;\n\n if (_isFunction(onMouseUp)) {\n var mouse = _this.getMouseInfo(e);\n\n onMouseUp(mouse, e);\n }\n };\n\n _this.handleTouchMove = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseMove(e.changedTouches[0]);\n }\n };\n\n _this.handleTouchStart = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseDown(e.changedTouches[0]);\n }\n };\n\n _this.handleTouchEnd = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseUp(e.changedTouches[0]);\n }\n };\n\n _this.verticalCoordinatesGenerator = function (_ref3) {\n var xAxis = _ref3.xAxis,\n width = _ref3.width,\n height = _ref3.height,\n offset = _ref3.offset;\n return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread({}, CartesianAxis.defaultProps, {}, xAxis, {\n ticks: getTicksOfAxis(xAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.left, offset.left + offset.width);\n };\n\n _this.horizontalCoordinatesGenerator = function (_ref4) {\n var yAxis = _ref4.yAxis,\n width = _ref4.width,\n height = _ref4.height,\n offset = _ref4.offset;\n return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread({}, CartesianAxis.defaultProps, {}, yAxis, {\n ticks: getTicksOfAxis(yAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.top, offset.top + offset.height);\n };\n\n _this.axesTicksGenerator = function (axis) {\n return getTicksOfAxis(axis, true);\n };\n\n _this.tooltipTicksGenerator = function (axisMap) {\n var axis = getAnyElementOfObject(axisMap);\n var tooltipTicks = getTicksOfAxis(axis, false, true);\n return {\n tooltipTicks: tooltipTicks,\n orderedTooltipTicks: _sortBy(tooltipTicks, function (o) {\n return o.coordinate;\n }),\n tooltipAxis: axis,\n tooltipAxisBandSize: getBandSizeOfAxis(axis)\n };\n };\n\n _this.renderCursor = function (element) {\n var _this$state3 = _this.state,\n isTooltipActive = _this$state3.isTooltipActive,\n activeCoordinate = _this$state3.activeCoordinate,\n activePayload = _this$state3.activePayload,\n offset = _this$state3.offset;\n\n if (!element || !element.props.cursor || !isTooltipActive || !activeCoordinate) {\n return null;\n }\n\n var layout = _this.props.layout;\n var restProps;\n var cursorComp = Curve;\n\n if (chartName === 'ScatterChart') {\n restProps = activeCoordinate;\n cursorComp = Cross;\n } else if (chartName === 'BarChart') {\n restProps = _this.getCursorRectangle();\n cursorComp = Rectangle;\n } else if (layout === 'radial') {\n var _this$getCursorPoints = _this.getCursorPoints(),\n cx = _this$getCursorPoints.cx,\n cy = _this$getCursorPoints.cy,\n radius = _this$getCursorPoints.radius,\n startAngle = _this$getCursorPoints.startAngle,\n endAngle = _this$getCursorPoints.endAngle;\n\n restProps = {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = Sector;\n } else {\n restProps = {\n points: _this.getCursorPoints()\n };\n cursorComp = Curve;\n }\n\n var key = element.key || '_recharts-cursor';\n\n var cursorProps = _objectSpread({\n stroke: '#ccc',\n pointerEvents: 'none'\n }, offset, {}, restProps, {}, filterProps(element.props.cursor), {\n payload: activePayload,\n key: key,\n className: 'recharts-tooltip-cursor'\n });\n\n return isValidElement(element.props.cursor) ? cloneElement(element.props.cursor, cursorProps) : createElement(cursorComp, cursorProps);\n };\n\n _this.renderPolarAxis = function (element, displayName, index) {\n var axisType = _get(element, 'type.axisType');\n\n var axisMap = _get(_this.state, \"\".concat(axisType, \"Map\"));\n\n var axisOption = axisMap[element.props[\"\".concat(axisType, \"Id\")]];\n return cloneElement(element, _objectSpread({}, axisOption, {\n className: axisType,\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n ticks: getTicksOfAxis(axisOption, true)\n }));\n };\n\n _this.renderXAxis = function (element, displayName, index) {\n var xAxisMap = _this.state.xAxisMap;\n var axisObj = xAxisMap[element.props.xAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n };\n\n _this.renderYAxis = function (element, displayName, index) {\n var yAxisMap = _this.state.yAxisMap;\n var axisObj = yAxisMap[element.props.yAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n };\n\n _this.renderGrid = function (element) {\n var _this$state4 = _this.state,\n xAxisMap = _this$state4.xAxisMap,\n yAxisMap = _this$state4.yAxisMap,\n offset = _this$state4.offset;\n var _this$props2 = _this.props,\n width = _this$props2.width,\n height = _this$props2.height;\n var xAxis = getAnyElementOfObject(xAxisMap);\n\n var yAxisWithFiniteDomain = _find(yAxisMap, function (axis) {\n return _every(axis.domain, Number.isFinite);\n });\n\n var yAxis = yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n var props = element.props || {};\n return cloneElement(element, {\n key: element.key || 'grid',\n x: isNumber(props.x) ? props.x : offset.left,\n y: isNumber(props.y) ? props.y : offset.top,\n width: isNumber(props.width) ? props.width : offset.width,\n height: isNumber(props.height) ? props.height : offset.height,\n xAxis: xAxis,\n yAxis: yAxis,\n offset: offset,\n chartWidth: width,\n chartHeight: height,\n verticalCoordinatesGenerator: props.verticalCoordinatesGenerator || _this.verticalCoordinatesGenerator,\n horizontalCoordinatesGenerator: props.horizontalCoordinatesGenerator || _this.horizontalCoordinatesGenerator\n });\n };\n\n _this.renderPolarGrid = function (element) {\n var _this$state5 = _this.state,\n radiusAxisMap = _this$state5.radiusAxisMap,\n angleAxisMap = _this$state5.angleAxisMap;\n var radiusAxis = getAnyElementOfObject(radiusAxisMap);\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n var cx = angleAxis.cx,\n cy = angleAxis.cy,\n innerRadius = angleAxis.innerRadius,\n outerRadius = angleAxis.outerRadius;\n return cloneElement(element, {\n polarAngles: getTicksOfAxis(angleAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n polarRadius: getTicksOfAxis(radiusAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n key: element.key || 'polar-grid'\n });\n };\n\n _this.renderLegend = function () {\n var formatedGraphicalItems = _this.state.formatedGraphicalItems;\n var _this$props3 = _this.props,\n children = _this$props3.children,\n width = _this$props3.width,\n height = _this$props3.height;\n var margin = _this.props.margin || {};\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var legendHeight = height - (margin.top || 0) - (margin.bottom || 0);\n var props = getLegendProps({\n children: children,\n formatedGraphicalItems: formatedGraphicalItems,\n legendWidth: legendWidth,\n legendContent: legendContent\n });\n\n if (!props) {\n return null;\n }\n\n var item = props.item,\n otherProps = _objectWithoutProperties(props, [\"item\"]);\n\n return cloneElement(item, _objectSpread({}, otherProps, {\n chartWidth: width,\n chartHeight: height,\n margin: margin,\n ref: function ref(legend) {\n _this.legendInstance = legend;\n },\n onBBoxUpdate: _this.handleLegendBBoxUpdate\n }));\n };\n\n _this.renderTooltip = function () {\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n\n if (!tooltipItem) {\n return null;\n }\n\n var _this$state6 = _this.state,\n isTooltipActive = _this$state6.isTooltipActive,\n activeCoordinate = _this$state6.activeCoordinate,\n activePayload = _this$state6.activePayload,\n activeLabel = _this$state6.activeLabel,\n offset = _this$state6.offset;\n return cloneElement(tooltipItem, {\n viewBox: _objectSpread({}, offset, {\n x: offset.left,\n y: offset.top\n }),\n active: isTooltipActive,\n label: activeLabel,\n payload: isTooltipActive ? activePayload : [],\n coordinate: activeCoordinate\n });\n };\n\n _this.renderBrush = function (element) {\n var _this$props4 = _this.props,\n margin = _this$props4.margin,\n data = _this$props4.data;\n var _this$state7 = _this.state,\n offset = _this$state7.offset,\n dataStartIndex = _this$state7.dataStartIndex,\n dataEndIndex = _this$state7.dataEndIndex,\n updateId = _this$state7.updateId; // TODO: update brush when children update\n\n return cloneElement(element, {\n key: element.key || '_recharts-brush',\n onChange: combineEventHandlers(_this.handleBrushChange, null, element.props.onChange),\n data: data,\n x: isNumber(element.props.x) ? element.props.x : offset.left,\n y: isNumber(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n width: isNumber(element.props.width) ? element.props.width : offset.width,\n startIndex: dataStartIndex,\n endIndex: dataEndIndex,\n updateId: \"brush-\".concat(updateId)\n });\n };\n\n _this.renderReferenceElement = function (element, displayName, index) {\n if (!element) {\n return null;\n }\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n clipPathId = _assertThisInitialize.clipPathId;\n\n var _this$state8 = _this.state,\n xAxisMap = _this$state8.xAxisMap,\n yAxisMap = _this$state8.yAxisMap,\n offset = _this$state8.offset;\n var _element$props = element.props,\n xAxisId = _element$props.xAxisId,\n yAxisId = _element$props.yAxisId;\n return cloneElement(element, {\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n xAxis: xAxisMap[xAxisId],\n yAxis: yAxisMap[yAxisId],\n viewBox: {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n },\n clipPathId: clipPathId\n });\n };\n\n _this.renderGraphicChild = function (element, displayName, index) {\n var item = _this.filterFormatItem(element, displayName, index);\n\n if (!item) {\n return null;\n }\n\n var graphicalItem = cloneElement(element, item.props);\n var _this$state9 = _this.state,\n isTooltipActive = _this$state9.isTooltipActive,\n tooltipAxis = _this$state9.tooltipAxis,\n activeTooltipIndex = _this$state9.activeTooltipIndex,\n activeLabel = _this$state9.activeLabel;\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n var _item$props = item.props,\n points = _item$props.points,\n isRange = _item$props.isRange,\n baseLine = _item$props.baseLine;\n var _item$item$props = item.item.props,\n activeDot = _item$item$props.activeDot,\n hide = _item$item$props.hide;\n var hasActive = !hide && isTooltipActive && tooltipItem && activeDot && activeTooltipIndex >= 0;\n\n function findWithPayload(entry) {\n // TODO needs to verify dataKey is Function\n // @ts-ignore\n return tooltipAxis.dataKey(entry.payload);\n }\n\n if (hasActive) {\n var activePoint, basePoint;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // number transform to string\n var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey.toString());\n activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n\n if (!_isNil(activePoint)) {\n return [graphicalItem].concat(_toConsumableArray(_this.renderActivePoints({\n item: item,\n activePoint: activePoint,\n basePoint: basePoint,\n childIndex: activeTooltipIndex,\n isRange: isRange\n })));\n }\n }\n\n if (isRange) {\n return [graphicalItem, null, null];\n }\n\n return [graphicalItem, null];\n };\n\n _this.renderCustomized = function (element) {\n return cloneElement(element, _objectSpread({}, _this.props, {}, _this.state));\n };\n\n var defaultState = CategoricalChartWrapper.createDefaultState(_props);\n var _updateId = 0;\n _this.state = _objectSpread({}, defaultState, {\n updateId: 0\n }, _this.updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: _props\n }, defaultState, {\n updateId: _updateId\n })));\n _this.uniqueChartId = _isNil(_props.id) ? uniqueId('recharts') : _props.id;\n _this.clipPathId = \"\".concat(_this.uniqueChartId, \"-clip\");\n\n if (_props.throttleDelay) {\n _this.triggeredAfterMouseMove = _throttle(_this.triggeredAfterMouseMove, _props.throttleDelay);\n }\n\n return _this;\n }\n /* eslint-disable react/no-did-mount-set-state */\n\n\n _createClass(CategoricalChartWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_isNil(this.props.syncId)) {\n this.addListener();\n }\n } // eslint-disable-next-line camelcase\n\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var _this2 = this;\n\n var _this$props5 = this.props,\n data = _this$props5.data,\n children = _this$props5.children,\n width = _this$props5.width,\n height = _this$props5.height,\n layout = _this$props5.layout,\n stackOffset = _this$props5.stackOffset,\n margin = _this$props5.margin;\n var updateId = this.state.updateId;\n\n if (nextProps.data !== data || nextProps.width !== width || nextProps.height !== height || nextProps.layout !== layout || nextProps.stackOffset !== stackOffset || !shallowEqual(nextProps.margin, margin)) {\n var defaultState = CategoricalChartWrapper.createDefaultState(nextProps);\n this.setState(_objectSpread({}, defaultState, {\n updateId: updateId + 1\n }, this.updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, defaultState, {\n updateId: updateId + 1\n }))));\n } else if (!isChildrenEqual(nextProps.children, children)) {\n // update configuration in chilren\n var hasGlobalData = !_isNil(nextProps.data);\n var newUpdateId = hasGlobalData ? updateId : updateId + 1;\n this.setState(function (prevState) {\n return _objectSpread({\n updateId: newUpdateId\n }, _this2.updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, prevState, {\n updateId: newUpdateId\n })));\n });\n } // add syncId\n\n\n if (_isNil(this.props.syncId) && !_isNil(nextProps.syncId)) {\n this.addListener();\n } // remove syncId\n\n\n if (!_isNil(this.props.syncId) && _isNil(nextProps.syncId)) {\n this.removeListener();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_isNil(this.props.syncId)) {\n this.removeListener();\n }\n\n if (typeof this.triggeredAfterMouseMove.cancel === 'function') {\n this.triggeredAfterMouseMove.cancel();\n }\n }\n /**\n * Get the configuration of all x-axis or y-axis\n * @param {Object} props Latest props\n * @param {String} axisType The type of axis\n * @param {Array} graphicalItems The instances of item\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n }, {\n key: \"getAxisMap\",\n value: function getAxisMap(props, _ref5) {\n var _ref5$axisType = _ref5.axisType,\n axisType = _ref5$axisType === void 0 ? 'xAxis' : _ref5$axisType,\n AxisComp = _ref5.AxisComp,\n graphicalItems = _ref5.graphicalItems,\n stackGroups = _ref5.stackGroups,\n dataStartIndex = _ref5.dataStartIndex,\n dataEndIndex = _ref5.dataEndIndex;\n var children = props.children;\n var axisIdKey = \"\".concat(axisType, \"Id\"); // Get all the instance of Axis\n\n var axes = findAllByType(children, AxisComp);\n var axisMap = {};\n\n if (axes && axes.length) {\n axisMap = this.getAxisMapByAxes(props, {\n axes: axes,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = this.getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n }\n\n return axisMap;\n }\n /**\n * Get the configuration of axis by the options of axis instance\n * @param {Object} props Latest props\n * @param {Array} axes The instance of axes\n * @param {Array} graphicalItems The instances of item\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n }, {\n key: \"getAxisMapByAxes\",\n value: function getAxisMapByAxes(props, _ref6) {\n var axes = _ref6.axes,\n graphicalItems = _ref6.graphicalItems,\n axisType = _ref6.axisType,\n axisIdKey = _ref6.axisIdKey,\n stackGroups = _ref6.stackGroups,\n dataStartIndex = _ref6.dataStartIndex,\n dataEndIndex = _ref6.dataEndIndex;\n var layout = props.layout,\n children = props.children,\n stackOffset = props.stackOffset;\n var isCategorial = isCategorialAxis(layout, axisType); // Eliminate duplicated axes\n\n var axisMap = axes.reduce(function (result, child) {\n var _child$props = child.props,\n type = _child$props.type,\n dataKey = _child$props.dataKey,\n allowDataOverflow = _child$props.allowDataOverflow,\n allowDuplicatedCategory = _child$props.allowDuplicatedCategory,\n scale = _child$props.scale,\n ticks = _child$props.ticks;\n var axisId = child.props[axisIdKey];\n var displayedData = CategoricalChartWrapper.getDisplayedData(props, {\n graphicalItems: graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId;\n }),\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n\n if (!result[axisId]) {\n var domain, duplicateDomain, categoricalDomain;\n\n if (dataKey) {\n domain = getDomainOfDataByKey(displayedData, dataKey, type);\n\n if (type === 'category' && isCategorial) {\n var duplicate = hasDuplicate(domain);\n\n if (allowDuplicatedCategory && duplicate) {\n duplicateDomain = domain; // When category axis has duplicated text, serial numbers are used to generate scale\n\n domain = _range(0, len);\n } else if (!allowDuplicatedCategory) {\n // remove duplicated category\n domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n }\n } else if (type === 'category') {\n if (!allowDuplicatedCategory) {\n domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 || entry === '' || _isNil(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter(function (entry) {\n return entry !== '' && !_isNil(entry);\n });\n }\n } else if (type === 'number') {\n var errorBarsDomain = parseErrorBarsOfAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), dataKey, axisType);\n\n if (errorBarsDomain) {\n domain = errorBarsDomain;\n }\n }\n\n if (isCategorial && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n } else if (isCategorial) {\n domain = _range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === 'number') {\n // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n domain = stackOffset === 'expand' ? [0, 1] : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), type, true);\n }\n\n if (type === 'number') {\n // To detect wether there is any reference lines whose props alwaysShow is true\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType, ticks);\n\n if (child.props.domain) {\n domain = parseSpecifiedDomain(child.props.domain, domain, allowDataOverflow);\n }\n }\n\n return _objectSpread({}, result, _defineProperty({}, axisId, _objectSpread({}, child.props, {\n axisType: axisType,\n domain: domain,\n categoricalDomain: categoricalDomain,\n duplicateDomain: duplicateDomain,\n originalDomain: child.props.domain,\n isCategorial: isCategorial,\n layout: layout\n })));\n }\n\n return result;\n }, {});\n return axisMap;\n }\n /**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {ReactElement} Axis Axis Component\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n }, {\n key: \"getAxisMapByItems\",\n value: function getAxisMapByItems(props, _ref7) {\n var graphicalItems = _ref7.graphicalItems,\n Axis = _ref7.Axis,\n axisType = _ref7.axisType,\n axisIdKey = _ref7.axisIdKey,\n stackGroups = _ref7.stackGroups,\n dataStartIndex = _ref7.dataStartIndex,\n dataEndIndex = _ref7.dataEndIndex;\n var layout = props.layout,\n children = props.children;\n var displayedData = CategoricalChartWrapper.getDisplayedData(props, {\n graphicalItems: graphicalItems,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var isCategorial = isCategorialAxis(layout, axisType);\n var index = -1; // The default type of x-axis is category axis,\n // The default contents of x-axis is the serial numbers of data\n // The default type of y-axis is number axis\n // The default contents of y-axis is the domain of data\n\n var axisMap = graphicalItems.reduce(function (result, child) {\n var axisId = child.props[axisIdKey];\n\n if (!result[axisId]) {\n index++;\n var domain;\n\n if (isCategorial) {\n domain = _range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n domain = getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n } else {\n domain = parseSpecifiedDomain(Axis.defaultProps.domain, getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), 'number'), Axis.defaultProps.allowDataOverflow);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n }\n\n return _objectSpread({}, result, _defineProperty({}, axisId, _objectSpread({\n axisType: axisType\n }, Axis.defaultProps, {\n hide: true,\n orientation: _get(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n domain: domain,\n originalDomain: Axis.defaultProps.domain,\n isCategorial: isCategorial,\n layout: layout // specify scale when no Axis\n // scale: isCategorial ? 'band' : 'linear',\n\n })));\n }\n\n return result;\n }, {});\n return axisMap;\n }\n }, {\n key: \"getActiveCoordinate\",\n value: function getActiveCoordinate(tooltipTicks, activeIndex, rangeObj) {\n var layout = this.props.layout;\n var entry = tooltipTicks.find(function (tick) {\n return tick && tick.index === activeIndex;\n });\n\n if (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n\n if (layout === 'vertical') {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n\n if (layout === 'centric') {\n var _angle = entry.coordinate;\n var _radius = rangeObj.radius;\n return _objectSpread({}, rangeObj, {}, polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle), {\n angle: _angle,\n radius: _radius\n });\n }\n\n var radius = entry.coordinate;\n var angle = rangeObj.angle;\n return _objectSpread({}, rangeObj, {}, polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle), {\n angle: angle,\n radius: radius\n });\n }\n\n return originCoordinate;\n }\n /**\n * Get the information of mouse in chart, return null when the mouse is not in the chart\n * @param {Object} event The event object\n * @return {Object} Mouse data\n */\n\n }, {\n key: \"getMouseInfo\",\n value: function getMouseInfo(event) {\n if (!this.container) {\n return null;\n }\n\n var containerOffset = getOffset(this.container);\n var e = calculateChartCoordinate(event, containerOffset);\n var rangeObj = this.inRange(e.chartX, e.chartY);\n\n if (!rangeObj) {\n return null;\n }\n\n var _this$state10 = this.state,\n xAxisMap = _this$state10.xAxisMap,\n yAxisMap = _this$state10.yAxisMap;\n\n if (eventType !== 'axis' && xAxisMap && yAxisMap) {\n var xScale = getAnyElementOfObject(xAxisMap).scale;\n var yScale = getAnyElementOfObject(yAxisMap).scale;\n var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n return _objectSpread({}, e, {\n xValue: xValue,\n yValue: yValue\n });\n }\n\n var _this$state11 = this.state,\n ticks = _this$state11.orderedTooltipTicks,\n axis = _this$state11.tooltipAxis,\n tooltipTicks = _this$state11.tooltipTicks;\n var pos = this.calculateTooltipPos(rangeObj);\n var activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n\n if (activeIndex >= 0 && tooltipTicks) {\n var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n var activePayload = this.getTooltipContent(activeIndex, activeLabel);\n var activeCoordinate = this.getActiveCoordinate(ticks, activeIndex, rangeObj);\n return _objectSpread({}, e, {\n activeTooltipIndex: activeIndex,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n });\n }\n\n return null;\n }\n /**\n * Get the content to be displayed in the tooltip\n * @param {Number} activeIndex Active index of data\n * @param {String} activeLabel Active label of data\n * @return {Array} The content of tooltip\n */\n\n }, {\n key: \"getTooltipContent\",\n value: function getTooltipContent(activeIndex, activeLabel) {\n var _this$state12 = this.state,\n graphicalItems = _this$state12.graphicalItems,\n tooltipAxis = _this$state12.tooltipAxis;\n var displayedData = CategoricalChartWrapper.getDisplayedData(this.props, this.state);\n\n if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n return null;\n } // get data by activeIndex when the axis don't allow duplicated category\n\n\n return graphicalItems.reduce(function (result, child) {\n var hide = child.props.hide;\n\n if (hide) {\n return result;\n }\n\n var _child$props2 = child.props,\n dataKey = _child$props2.dataKey,\n name = _child$props2.name,\n unit = _child$props2.unit,\n formatter = _child$props2.formatter,\n data = _child$props2.data,\n tooltipType = _child$props2.tooltipType;\n var payload;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n payload = findEntryInArray(data || displayedData, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = data && data[activeIndex] || displayedData[activeIndex];\n }\n\n if (!payload) {\n return result;\n }\n\n return [].concat(_toConsumableArray(result), [_objectSpread({}, filterProps(child), {\n dataKey: dataKey,\n unit: unit,\n formatter: formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(child),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload: payload\n })]);\n }, []);\n }\n }, {\n key: \"getFormatItems\",\n value: function getFormatItems(props, currentState) {\n var _this3 = this;\n\n var graphicalItems = currentState.graphicalItems,\n stackGroups = currentState.stackGroups,\n offset = currentState.offset,\n updateId = currentState.updateId,\n dataStartIndex = currentState.dataStartIndex,\n dataEndIndex = currentState.dataEndIndex;\n var barSize = props.barSize,\n layout = props.layout,\n barGap = props.barGap,\n barCategoryGap = props.barCategoryGap,\n globalMaxBarSize = props.maxBarSize;\n\n var _CategoricalChartWrap = CategoricalChartWrapper.getAxisNameByLayout(layout),\n numericAxisName = _CategoricalChartWrap.numericAxisName,\n cateAxisName = _CategoricalChartWrap.cateAxisName;\n\n var hasBar = CategoricalChartWrapper.hasBar(graphicalItems);\n var sizeList = hasBar && getBarSizeList({\n barSize: barSize,\n stackGroups: stackGroups\n });\n var formatedItems = [];\n graphicalItems.forEach(function (item, index) {\n var displayedData = CategoricalChartWrapper.getDisplayedData(props, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, item);\n var _item$props2 = item.props,\n dataKey = _item$props2.dataKey,\n childMaxBarSize = _item$props2.maxBarSize;\n var numericAxisId = item.props[\"\".concat(numericAxisName, \"Id\")];\n var cateAxisId = item.props[\"\".concat(cateAxisName, \"Id\")];\n var axisObj = axisComponents.reduce(function (result, entry) {\n var _objectSpread4;\n\n var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n var id = item.props[\"\".concat(entry.axisType, \"Id\")];\n var axis = axisMap && axisMap[id];\n return _objectSpread({}, result, (_objectSpread4 = {}, _defineProperty(_objectSpread4, entry.axisType, axis), _defineProperty(_objectSpread4, \"\".concat(entry.axisType, \"Ticks\"), getTicksOfAxis(axis)), _objectSpread4));\n }, {});\n var cateAxis = axisObj[cateAxisName];\n var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n var bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n var maxBarSize = _isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n var barPosition = hasBar && getBarPosition({\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n bandSize: bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize: maxBarSize\n });\n var componsedFn = item && item.type && item.type.getComposedData;\n\n if (componsedFn) {\n var _objectSpread5;\n\n formatedItems.push({\n props: _objectSpread({}, componsedFn(_objectSpread({}, axisObj, {\n displayedData: displayedData,\n props: props,\n dataKey: dataKey,\n item: item,\n bandSize: bandSize,\n barPosition: barPosition,\n offset: offset,\n stackedData: stackedData,\n layout: layout,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n onItemMouseLeave: combineEventHandlers(_this3.handleItemMouseLeave, null, item.props.onMouseLeave),\n onItemMouseEnter: combineEventHandlers(_this3.handleItemMouseEnter, null, item.props.onMouseEnter)\n })), (_objectSpread5 = {\n key: item.key || \"item-\".concat(index)\n }, _defineProperty(_objectSpread5, numericAxisName, axisObj[numericAxisName]), _defineProperty(_objectSpread5, cateAxisName, axisObj[cateAxisName]), _defineProperty(_objectSpread5, \"animationId\", updateId), _objectSpread5)),\n childIndex: parseChildIndex(item, props.children),\n item: item\n });\n }\n });\n return formatedItems;\n }\n }, {\n key: \"getCursorRectangle\",\n value: function getCursorRectangle() {\n var layout = this.props.layout;\n var _this$state13 = this.state,\n activeCoordinate = _this$state13.activeCoordinate,\n offset = _this$state13.offset,\n tooltipAxisBandSize = _this$state13.tooltipAxisBandSize;\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: 'none',\n fill: '#ccc',\n x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n };\n }\n }, {\n key: \"getCursorPoints\",\n value: function getCursorPoints() {\n var layout = this.props.layout;\n var _this$state14 = this.state,\n activeCoordinate = _this$state14.activeCoordinate,\n offset = _this$state14.offset;\n var x1, y1, x2, y2;\n\n if (layout === 'horizontal') {\n x1 = activeCoordinate.x;\n x2 = x1;\n y1 = offset.top;\n y2 = offset.top + offset.height;\n } else if (layout === 'vertical') {\n y1 = activeCoordinate.y;\n y2 = y1;\n x1 = offset.left;\n x2 = offset.left + offset.width;\n } else if (!_isNil(activeCoordinate.cx) || !_isNil(activeCoordinate.cy)) {\n if (layout === 'centric') {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n innerRadius = activeCoordinate.innerRadius,\n outerRadius = activeCoordinate.outerRadius,\n angle = activeCoordinate.angle;\n var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n var _cx = activeCoordinate.cx,\n _cy = activeCoordinate.cy,\n radius = activeCoordinate.radius,\n startAngle = activeCoordinate.startAngle,\n endAngle = activeCoordinate.endAngle;\n var startPoint = polarToCartesian(_cx, _cy, radius, startAngle);\n var endPoint = polarToCartesian(_cx, _cy, radius, endAngle);\n return {\n points: [startPoint, endPoint],\n cx: _cx,\n cy: _cy,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n }\n\n return [{\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n }];\n }\n }, {\n key: \"calculateTooltipPos\",\n value: function calculateTooltipPos(rangeObj) {\n var layout = this.props.layout;\n\n if (layout === 'horizontal') {\n return rangeObj.x;\n }\n\n if (layout === 'vertical') {\n return rangeObj.y;\n }\n\n if (layout === 'centric') {\n return rangeObj.angle;\n }\n\n return rangeObj.radius;\n }\n }, {\n key: \"inRange\",\n value: function inRange(x, y) {\n var layout = this.props.layout;\n\n if (layout === 'horizontal' || layout === 'vertical') {\n var offset = this.state.offset;\n var isInRange = x >= offset.left && x <= offset.left + offset.width && y >= offset.top && y <= offset.top + offset.height;\n return isInRange ? {\n x: x,\n y: y\n } : null;\n }\n\n var _this$state15 = this.state,\n angleAxisMap = _this$state15.angleAxisMap,\n radiusAxisMap = _this$state15.radiusAxisMap;\n\n if (angleAxisMap && radiusAxisMap) {\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n return inRangeOfSector({\n x: x,\n y: y\n }, angleAxis);\n }\n\n return null;\n }\n }, {\n key: \"parseEventsOfWrapper\",\n value: function parseEventsOfWrapper() {\n var children = this.props.children;\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n var tooltipEvents = tooltipItem && eventType === 'axis' ? {\n onMouseEnter: this.handleMouseEnter,\n onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n } : {};\n var outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n return _objectSpread({}, outerEvents, {}, tooltipEvents);\n }\n /**\n * The AxisMaps are expensive to render on large data sets\n * so provide the ability to store them in state and only update them when necessary\n * they are dependent upon the start and end index of\n * the brush so it's important that this method is called _after_\n * the state is updated with any new start/end indices\n *\n * @param {Object} props The props object to be used for updating the axismaps\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @param {Number} updateId The update id\n * @return {Object} state New state to set\n */\n\n }, {\n key: \"updateStateOfAxisMapsOffsetAndStackGroups\",\n value: function updateStateOfAxisMapsOffsetAndStackGroups(_ref8) {\n var _this4 = this;\n\n var props = _ref8.props,\n dataStartIndex = _ref8.dataStartIndex,\n dataEndIndex = _ref8.dataEndIndex,\n updateId = _ref8.updateId;\n\n if (!validateWidthHeight({\n props: props\n })) {\n return null;\n }\n\n var children = props.children,\n layout = props.layout,\n stackOffset = props.stackOffset,\n data = props.data,\n reverseStackOrder = props.reverseStackOrder;\n\n var _CategoricalChartWrap2 = CategoricalChartWrapper.getAxisNameByLayout(layout),\n numericAxisName = _CategoricalChartWrap2.numericAxisName,\n cateAxisName = _CategoricalChartWrap2.cateAxisName;\n\n var graphicalItems = findAllByType(children, GraphicalChild);\n var stackGroups = getStackGroupsByAxisId(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n var axisObj = axisComponents.reduce(function (result, entry) {\n var name = \"\".concat(entry.axisType, \"Map\");\n return _objectSpread({}, result, _defineProperty({}, name, _this4.getAxisMap(props, _objectSpread({}, entry, {\n graphicalItems: graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))));\n }, {});\n var offset = this.calculateOffset(_objectSpread({}, axisObj, {\n props: props,\n graphicalItems: graphicalItems\n }));\n Object.keys(axisObj).forEach(function (key) {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n });\n var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n var ticksObj = this.tooltipTicksGenerator(cateAxisMap);\n var formatedGraphicalItems = this.getFormatItems(props, _objectSpread({}, axisObj, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId,\n graphicalItems: graphicalItems,\n stackGroups: stackGroups,\n offset: offset\n }));\n return _objectSpread({\n formatedGraphicalItems: formatedGraphicalItems,\n graphicalItems: graphicalItems,\n offset: offset,\n stackGroups: stackGroups\n }, ticksObj, {}, axisObj);\n }\n /* eslint-disable no-underscore-dangle */\n\n }, {\n key: \"addListener\",\n value: function addListener() {\n eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners + 1);\n }\n }\n }, {\n key: \"removeListener\",\n value: function removeListener() {\n eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners - 1);\n }\n }\n /**\n * Calculate the offset of main part in the svg element\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {Object} xAxisMap The configuration of x-axis\n * @param {Object} yAxisMap The configuration of y-axis\n * @return {Object} The offset of main part in the svg element\n */\n\n }, {\n key: \"calculateOffset\",\n value: function calculateOffset(_ref9) {\n var props = _ref9.props,\n graphicalItems = _ref9.graphicalItems,\n _ref9$xAxisMap = _ref9.xAxisMap,\n xAxisMap = _ref9$xAxisMap === void 0 ? {} : _ref9$xAxisMap,\n _ref9$yAxisMap = _ref9.yAxisMap,\n yAxisMap = _ref9$yAxisMap === void 0 ? {} : _ref9$yAxisMap;\n var width = props.width,\n height = props.height,\n children = props.children;\n var margin = props.margin || {};\n var brushItem = findChildByType(children, Brush.displayName);\n var legendItem = findChildByType(children, Legend.displayName);\n var offsetH = Object.keys(yAxisMap).reduce(function (result, id) {\n var entry = yAxisMap[id];\n var orientation = entry.orientation;\n\n if (!entry.mirror && !entry.hide) {\n return _objectSpread({}, result, _defineProperty({}, orientation, result[orientation] + entry.width));\n }\n\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = Object.keys(xAxisMap).reduce(function (result, id) {\n var entry = xAxisMap[id];\n var orientation = entry.orientation;\n\n if (!entry.mirror && !entry.hide) {\n return _objectSpread({}, result, _defineProperty({}, orientation, _get(result, \"\".concat(orientation)) + entry.height));\n }\n\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n\n var offset = _objectSpread({}, offsetV, {}, offsetH);\n\n var brushBottom = offset.bottom;\n\n if (brushItem) {\n offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n }\n\n if (legendItem && this.legendInstance) {\n var legendBox = this.legendInstance.getBBox();\n offset = appendOffsetOfLegend(offset, graphicalItems, props, legendBox);\n }\n\n return _objectSpread({\n brushBottom: brushBottom\n }, offset, {\n width: width - offset.left - offset.right,\n height: height - offset.top - offset.bottom\n });\n }\n }, {\n key: \"triggerSyncEvent\",\n value: function triggerSyncEvent(data) {\n var syncId = this.props.syncId;\n\n if (!_isNil(syncId)) {\n eventCenter.emit(SYNC_EVENT, syncId, this.uniqueChartId, data);\n }\n }\n }, {\n key: \"filterFormatItem\",\n value: function filterFormatItem(item, displayName, childIndex) {\n var formatedGraphicalItems = this.state.formatedGraphicalItems;\n\n for (var _i = 0, len = formatedGraphicalItems.length; _i < len; _i++) {\n var entry = formatedGraphicalItems[_i];\n\n if (entry.item === item || entry.props.key === item.key || displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex) {\n return entry;\n }\n }\n\n return null;\n }\n }, {\n key: \"renderAxis\",\n\n /**\n * Draw axis\n * @param {Object} axisOptions The options of axis\n * @param {Object} element The axis element\n * @param {String} displayName The display name of axis\n * @param {Number} index The index of element\n * @return {ReactElement} The instance of x-axes\n */\n value: function renderAxis(axisOptions, element, displayName, index) {\n var _this$props6 = this.props,\n width = _this$props6.width,\n height = _this$props6.height; // TODO CartesianAxisProps need mix BaseAxisProps\n\n return (// @ts-ignore\n React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: \"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType),\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: this.axesTicksGenerator\n }))\n );\n }\n /**\n * Draw grid\n * @param {ReactElement} element the grid item\n * @return {ReactElement} The instance of grid\n */\n\n }, {\n key: \"renderActivePoints\",\n value: function renderActivePoints(_ref10) {\n var item = _ref10.item,\n activePoint = _ref10.activePoint,\n basePoint = _ref10.basePoint,\n childIndex = _ref10.childIndex,\n isRange = _ref10.isRange;\n var result = [];\n var key = item.props.key;\n var _item$item$props2 = item.item.props,\n activeDot = _item$item$props2.activeDot,\n dataKey = _item$item$props2.dataKey;\n\n var dotProps = _objectSpread({\n index: childIndex,\n dataKey: dataKey,\n cx: activePoint.x,\n cy: activePoint.y,\n r: 4,\n fill: getMainColorOfGraphicItem(item.item),\n strokeWidth: 2,\n stroke: '#fff',\n payload: activePoint.payload,\n value: activePoint.value,\n key: \"\".concat(key, \"-activePoint-\").concat(childIndex)\n }, filterProps(activeDot), {}, adaptEventHandlers(activeDot));\n\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps));\n\n if (basePoint) {\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread({}, dotProps, {\n cx: basePoint.x,\n cy: basePoint.y,\n key: \"\".concat(key, \"-basePoint-\").concat(childIndex)\n })));\n } else if (isRange) {\n result.push(null);\n }\n\n return result;\n }\n }, {\n key: \"renderClipPath\",\n value: function renderClipPath() {\n var clipPathId = this.clipPathId;\n var _this$state$offset = this.state.offset,\n left = _this$state$offset.left,\n top = _this$state$offset.top,\n height = _this$state$offset.height,\n width = _this$state$offset.width;\n return React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: clipPathId\n }, React.createElement(\"rect\", {\n x: left,\n y: top,\n height: height,\n width: width\n })));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n\n if (!validateWidthHeight(this)) {\n return null;\n }\n\n var _this$props7 = this.props,\n children = _this$props7.children,\n className = _this$props7.className,\n width = _this$props7.width,\n height = _this$props7.height,\n style = _this$props7.style,\n compact = _this$props7.compact,\n others = _objectWithoutProperties(_this$props7, [\"children\", \"className\", \"width\", \"height\", \"style\", \"compact\"]);\n\n var attrs = filterProps(others);\n var map = {\n CartesianGrid: {\n handler: this.renderGrid,\n once: true\n },\n ReferenceArea: {\n handler: this.renderReferenceElement\n },\n ReferenceLine: {\n handler: this.renderReferenceElement\n },\n ReferenceDot: {\n handler: this.renderReferenceElement\n },\n XAxis: {\n handler: this.renderXAxis\n },\n YAxis: {\n handler: this.renderYAxis\n },\n Brush: {\n handler: this.renderBrush,\n once: true\n },\n Bar: {\n handler: this.renderGraphicChild\n },\n Line: {\n handler: this.renderGraphicChild\n },\n Area: {\n handler: this.renderGraphicChild\n },\n Radar: {\n handler: this.renderGraphicChild\n },\n RadialBar: {\n handler: this.renderGraphicChild\n },\n Scatter: {\n handler: this.renderGraphicChild\n },\n Pie: {\n handler: this.renderGraphicChild\n },\n Funnel: {\n handler: this.renderGraphicChild\n },\n Tooltip: {\n handler: this.renderCursor,\n once: true\n },\n PolarGrid: {\n handler: this.renderPolarGrid,\n once: true\n },\n PolarAngleAxis: {\n handler: this.renderPolarAxis\n },\n PolarRadiusAxis: {\n handler: this.renderPolarAxis\n },\n Customized: {\n handler: this.renderCustomized\n }\n }; // The \"compact\" mode is mainly used as the panorama within Brush\n\n if (compact) {\n return React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height\n }), this.renderClipPath(), renderByOrder(children, map));\n }\n\n var events = this.parseEventsOfWrapper();\n return React.createElement(\"div\", _extends({\n className: classNames('recharts-wrapper', className),\n style: _objectSpread({\n position: 'relative',\n cursor: 'default',\n width: width,\n height: height\n }, style)\n }, events, {\n ref: function ref(node) {\n _this5.container = node;\n }\n }), React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height\n }), this.renderClipPath(), renderByOrder(children, map)), this.renderLegend(), this.renderTooltip());\n }\n }], [{\n key: \"getAxisNameByLayout\",\n value: function getAxisNameByLayout(layout) {\n if (layout === 'horizontal') {\n return {\n numericAxisName: 'yAxis',\n cateAxisName: 'xAxis'\n };\n }\n\n if (layout === 'vertical') {\n return {\n numericAxisName: 'xAxis',\n cateAxisName: 'yAxis'\n };\n }\n\n if (layout === 'centric') {\n return {\n numericAxisName: 'radiusAxis',\n cateAxisName: 'angleAxis'\n };\n }\n\n return {\n numericAxisName: 'angleAxis',\n cateAxisName: 'radiusAxis'\n };\n }\n }, {\n key: \"renderActiveDot\",\n value: function renderActiveDot(option, props) {\n var dot;\n\n if (isValidElement(option)) {\n dot = cloneElement(option, props);\n } else if (_isFunction(option)) {\n dot = option(props);\n } else {\n dot = React.createElement(Dot, props);\n }\n\n return React.createElement(Layer, {\n className: \"recharts-active-dot\",\n key: props.key\n }, dot);\n }\n }]);\n\n return CategoricalChartWrapper;\n }(Component);\n\n CategoricalChartWrapper.displayName = chartName;\n CategoricalChartWrapper.defaultProps = _objectSpread({\n layout: 'horizontal',\n stackOffset: 'none',\n barCategoryGap: '10%',\n barGap: 4,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n reverseStackOrder: false\n }, defaultProps);\n\n CategoricalChartWrapper.createDefaultState = function (props) {\n var children = props.children,\n defaultShowTooltip = props.defaultShowTooltip;\n var brushItem = findChildByType(children, Brush.displayName);\n var startIndex = brushItem && brushItem.props && brushItem.props.startIndex || 0;\n var endIndex = brushItem && brushItem.props && brushItem.props.endIndex || props.data && props.data.length - 1 || 0;\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: !_isNil(defaultShowTooltip) ? defaultShowTooltip : false\n };\n };\n\n CategoricalChartWrapper.hasBar = function (graphicalItems) {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n\n return graphicalItems.some(function (item) {\n var name = getDisplayName(item && item.type);\n return name && name.indexOf('Bar') >= 0;\n });\n };\n\n CategoricalChartWrapper.getDisplayedData = function (props, _ref11, item) {\n var graphicalItems = _ref11.graphicalItems,\n dataStartIndex = _ref11.dataStartIndex,\n dataEndIndex = _ref11.dataEndIndex;\n var itemsData = (graphicalItems || []).reduce(function (result, child) {\n var itemData = child.props.data;\n\n if (itemData && itemData.length) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n }\n\n return result;\n }, []);\n\n if (itemsData && itemsData.length > 0) {\n return itemsData;\n }\n\n if (item && item.props && item.props.data && item.props.data.length > 0) {\n return item.props.data;\n }\n\n var data = props.data;\n\n if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n\n return [];\n };\n\n return CategoricalChartWrapper;\n};\n\nexport default generateCategoricalChart;","function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError(\"Cannot destructure undefined\"); }\n\n/**\n * @fileOverview Cross\n */\nfunction Cell(_ref) {\n _objectDestructuringEmpty(_ref);\n\n return null;\n}\n\nCell.displayName = 'Cell';\nexport default Cell;","import _isNil from \"lodash/isNil\";\nimport _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Render a group of bar\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames'; // @ts-ignore\n\nimport Animate from 'react-smooth';\nimport Rectangle from '../shape/Rectangle';\nimport Layer from '../container/Layer';\nimport ErrorBar from './ErrorBar';\nimport Cell from '../component/Cell';\nimport LabelList from '../component/LabelList';\nimport { uniqueId, mathSign, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType, isSsr } from '../util/ReactUtils';\nimport { getCateCoordinateOfBar, getValueByDataKey, truncateByDomain, getBaseValueOfBar, findPositionOfBar } from '../util/ChartUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\n;\n\nvar Bar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Bar, _PureComponent);\n\n function Bar() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Bar);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Bar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isAnimationFinished: false\n };\n _this.id = uniqueId('recharts-bar-');\n\n _this.cachePrevData = function (data) {\n _this.setState({\n prevData: data\n });\n };\n\n _this.handleAnimationEnd = function () {\n _this.setState({\n isAnimationFinished: true\n });\n\n _this.props.onAnimationEnd();\n };\n\n _this.handleAnimationStart = function () {\n _this.setState({\n isAnimationFinished: false\n });\n\n _this.props.onAnimationStart();\n };\n\n return _this;\n }\n\n _createClass(Bar, [{\n key: \"UNSAFE_componentWillReceiveProps\",\n // eslint-disable-next-line camelcase\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var _this$props = this.props,\n animationId = _this$props.animationId,\n data = _this$props.data;\n\n if (nextProps.animationId !== animationId) {\n this.cachePrevData(data);\n }\n }\n }, {\n key: \"renderRectanglesStatically\",\n value: function renderRectanglesStatically(data) {\n var _this2 = this;\n\n var shape = this.props.shape;\n var baseProps = filterProps(this.props);\n return data && data.map(function (entry, i) {\n var props = _objectSpread({}, baseProps, {}, entry, {\n index: i\n });\n\n return React.createElement(Layer, _extends({\n className: \"recharts-bar-rectangle\"\n }, adaptEventsOfChild(_this2.props, entry, i), {\n key: \"rectangle-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }), Bar.renderRectangle(shape, props));\n });\n }\n }, {\n key: \"renderRectanglesWithAnimation\",\n value: function renderRectanglesWithAnimation() {\n var _this3 = this;\n\n var _this$props2 = this.props,\n data = _this$props2.data,\n layout = _this$props2.layout,\n isAnimationActive = _this$props2.isAnimationActive,\n animationBegin = _this$props2.animationBegin,\n animationDuration = _this$props2.animationDuration,\n animationEasing = _this$props2.animationEasing,\n animationId = _this$props2.animationId;\n var prevData = this.state.prevData;\n return React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"bar-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n var stepData = data.map(function (entry, index) {\n var prev = prevData && prevData[index];\n\n if (prev) {\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n var interpolatorWidth = interpolateNumber(prev.width, entry.width);\n var interpolatorHeight = interpolateNumber(prev.height, entry.height);\n return _objectSpread({}, entry, {\n x: interpolatorX(t),\n y: interpolatorY(t),\n width: interpolatorWidth(t),\n height: interpolatorHeight(t)\n });\n }\n\n if (layout === 'horizontal') {\n var _interpolatorHeight = interpolateNumber(0, entry.height);\n\n var h = _interpolatorHeight(t);\n\n return _objectSpread({}, entry, {\n y: entry.y + entry.height - h,\n height: h\n });\n }\n\n var interpolator = interpolateNumber(0, entry.width);\n var w = interpolator(t);\n return _objectSpread({}, entry, {\n width: w\n });\n });\n return React.createElement(Layer, null, _this3.renderRectanglesStatically(stepData));\n });\n }\n }, {\n key: \"renderRectangles\",\n value: function renderRectangles() {\n var _this$props3 = this.props,\n data = _this$props3.data,\n isAnimationActive = _this$props3.isAnimationActive;\n var prevData = this.state.prevData;\n\n if (isAnimationActive && data && data.length && (!prevData || !_isEqual(prevData, data))) {\n return this.renderRectanglesWithAnimation();\n }\n\n return this.renderRectanglesStatically(data);\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this4 = this;\n\n var data = this.props.data;\n var backgroundProps = filterProps(this.props.background);\n return data.map(function (entry, i) {\n // eslint-disable-next-line no-unused-vars\n var value = entry.value,\n background = entry.background,\n rest = _objectWithoutProperties(entry, [\"value\", \"background\"]);\n\n if (!background) {\n return null;\n }\n\n var props = _objectSpread({}, rest, {\n fill: '#eee'\n }, background, {}, backgroundProps, {}, adaptEventsOfChild(_this4.props, entry, i), {\n index: i,\n key: \"background-bar-\".concat(i),\n className: 'recharts-bar-background-rectangle'\n });\n\n return Bar.renderRectangle(_this4.props.background, props);\n });\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar() {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props4 = this.props,\n data = _this$props4.data,\n xAxis = _this$props4.xAxis,\n yAxis = _this$props4.yAxis,\n layout = _this$props4.layout,\n children = _this$props4.children;\n var errorBarItems = findAllByType(children, ErrorBar.displayName);\n\n if (!errorBarItems) {\n return null;\n }\n\n var offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n\n function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n }\n\n return errorBarItems.map(function (item, i) {\n return React.cloneElement(item, {\n key: \"error-bar-\".concat(i),\n // eslint-disable-line react/no-array-index-key\n data: data,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n offset: offset,\n dataPointFormatter: dataPointFormatter\n });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props5 = this.props,\n hide = _this$props5.hide,\n data = _this$props5.data,\n className = _this$props5.className,\n xAxis = _this$props5.xAxis,\n yAxis = _this$props5.yAxis,\n left = _this$props5.left,\n top = _this$props5.top,\n width = _this$props5.width,\n height = _this$props5.height,\n isAnimationActive = _this$props5.isAnimationActive,\n background = _this$props5.background,\n id = _this$props5.id;\n\n if (hide || !data || !data.length) {\n return null;\n }\n\n var isAnimationFinished = this.state.isAnimationFinished;\n var layerClass = classNames('recharts-bar', className);\n var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n var clipPathId = _isNil(id) ? this.id : id;\n return React.createElement(Layer, {\n className: layerClass\n }, needClip ? React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, React.createElement(\"rect\", {\n x: left,\n y: top,\n width: width,\n height: height\n }))) : null, React.createElement(Layer, {\n className: \"recharts-bar-rectangles\",\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, background ? this.renderBackground() : null, this.renderRectangles()), this.renderErrorBar(), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, data));\n }\n }], [{\n key: \"renderRectangle\",\n value: function renderRectangle(option, props) {\n var rectangle;\n\n if (React.isValidElement(option)) {\n rectangle = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rectangle = option(props);\n } else {\n rectangle = React.createElement(Rectangle, props);\n }\n\n return rectangle;\n }\n }]);\n\n return Bar;\n}(PureComponent);\n\nBar.displayName = 'Bar';\nBar.defaultProps = {\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'rect',\n minPointSize: 0,\n hide: false,\n // data of bar\n data: [],\n layout: 'vertical',\n isAnimationActive: !isSsr(),\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'ease',\n onAnimationStart: function onAnimationStart() {},\n onAnimationEnd: function onAnimationEnd() {}\n};\n\nBar.getComposedData = function (_ref2) {\n var props = _ref2.props,\n item = _ref2.item,\n barPosition = _ref2.barPosition,\n bandSize = _ref2.bandSize,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n stackedData = _ref2.stackedData,\n dataStartIndex = _ref2.dataStartIndex,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var pos = findPositionOfBar(barPosition, item);\n\n if (!pos) {\n return;\n }\n\n var layout = props.layout;\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n children = _item$props.children,\n minPointSize = _item$props.minPointSize;\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n var baseValue = getBaseValueOfBar({\n numericAxis: numericAxis\n });\n var cells = findAllByType(children, Cell.displayName);\n var rects = displayedData.map(function (entry, index) {\n var value, x, y, width, height, background;\n\n if (stackedData) {\n value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n } else {\n value = getValueByDataKey(entry, dataKey);\n\n if (!_isArray(value)) {\n value = [baseValue, value];\n }\n }\n\n if (layout === 'horizontal') {\n x = getCateCoordinateOfBar({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n y = yAxis.scale(value[1]);\n width = pos.size;\n height = yAxis.scale(value[0]) - yAxis.scale(value[1]);\n background = {\n x: x,\n y: yAxis.y,\n width: width,\n height: yAxis.height\n };\n\n if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n var delta = mathSign(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n y -= delta;\n height += delta;\n }\n } else {\n x = xAxis.scale(value[0]);\n y = getCateCoordinateOfBar({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n width = xAxis.scale(value[1]) - xAxis.scale(value[0]);\n height = pos.size;\n background = {\n x: xAxis.x,\n y: y,\n width: xAxis.width,\n height: height\n };\n\n if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n var _delta = mathSign(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n\n width += _delta;\n }\n }\n\n return _objectSpread({}, entry, {\n x: x,\n y: y,\n width: width,\n height: height,\n value: stackedData ? value : value[1],\n payload: entry,\n background: background\n }, cells && cells[index] && cells[index].props);\n });\n return _objectSpread({\n data: rects,\n layout: layout\n }, offset);\n};\n\nexport default Bar;","/**\n * @fileOverview Z Axis\n */\nfunction ZAxis(props) {\n return null;\n}\n\nZAxis.displayName = 'ZAxis';\nZAxis.defaultProps = {\n zAxisId: 0,\n range: [64, 64],\n scale: 'auto',\n type: 'number'\n};\nexport default ZAxis;","import _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Render a group of scatters\n */\nimport React, { PureComponent } from 'react'; // @ts-ignore\n\nimport Animate from 'react-smooth';\nimport classNames from 'classnames';\nimport Layer from '../container/Layer';\nimport LabelList from '../component/LabelList';\nimport { isSsr, findAllByType } from '../util/ReactUtils';\nimport ZAxis from './ZAxis';\nimport Curve from '../shape/Curve';\nimport Symbols from '../shape/Symbols';\nimport ErrorBar from './ErrorBar';\nimport Cell from '../component/Cell';\nimport { uniqueId, interpolateNumber, getLinearRegression } from '../util/DataUtils';\nimport { getValueByDataKey, getCateCoordinateOfLine } from '../util/ChartUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\n;\n\nvar Scatter =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Scatter, _PureComponent);\n\n function Scatter() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Scatter);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Scatter)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isAnimationFinished: false\n };\n\n _this.cachePrevPoints = function (points) {\n _this.setState({\n prevPoints: points\n });\n };\n\n _this.handleAnimationEnd = function () {\n _this.setState({\n isAnimationFinished: true\n });\n };\n\n _this.handleAnimationStart = function () {\n _this.setState({\n isAnimationFinished: false\n });\n };\n\n _this.id = uniqueId('recharts-scatter-');\n return _this;\n }\n\n _createClass(Scatter, [{\n key: \"UNSAFE_componentWillReceiveProps\",\n // eslint-disable-next-line camelcase\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var _this$props = this.props,\n animationId = _this$props.animationId,\n points = _this$props.points;\n\n if (nextProps.animationId !== animationId) {\n this.cachePrevPoints(points);\n }\n }\n }, {\n key: \"renderSymbolsStatically\",\n value: function renderSymbolsStatically(points) {\n var _this2 = this;\n\n var _this$props2 = this.props,\n shape = _this$props2.shape,\n activeShape = _this$props2.activeShape,\n activeIndex = _this$props2.activeIndex;\n var baseProps = filterProps(this.props);\n return points.map(function (entry, i) {\n var props = _objectSpread({\n key: \"symbol-\".concat(i)\n }, baseProps, {}, entry);\n\n return React.createElement(Layer, _extends({\n className: \"recharts-scatter-symbol\"\n }, adaptEventsOfChild(_this2.props, entry, i), {\n key: \"symbol-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }), Scatter.renderSymbolItem(activeIndex === i ? activeShape : shape, props));\n });\n }\n }, {\n key: \"renderSymbolsWithAnimation\",\n value: function renderSymbolsWithAnimation() {\n var _this3 = this;\n\n var _this$props3 = this.props,\n points = _this$props3.points,\n isAnimationActive = _this$props3.isAnimationActive,\n animationBegin = _this$props3.animationBegin,\n animationDuration = _this$props3.animationDuration,\n animationEasing = _this$props3.animationEasing,\n animationId = _this$props3.animationId;\n var prevPoints = this.state.prevPoints;\n return React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"pie-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n var stepData = points.map(function (entry, index) {\n var prev = prevPoints && prevPoints[index];\n\n if (prev) {\n var interpolatorCx = interpolateNumber(prev.cx, entry.cx);\n var interpolatorCy = interpolateNumber(prev.cy, entry.cy);\n var interpolatorSize = interpolateNumber(prev.size, entry.size);\n return _objectSpread({}, entry, {\n cx: interpolatorCx(t),\n cy: interpolatorCy(t),\n size: interpolatorSize(t)\n });\n }\n\n var interpolator = interpolateNumber(0, entry.size);\n return _objectSpread({}, entry, {\n size: interpolator(t)\n });\n });\n return React.createElement(Layer, null, _this3.renderSymbolsStatically(stepData));\n });\n }\n }, {\n key: \"renderSymbols\",\n value: function renderSymbols() {\n var _this$props4 = this.props,\n points = _this$props4.points,\n isAnimationActive = _this$props4.isAnimationActive;\n var prevPoints = this.state.prevPoints;\n\n if (isAnimationActive && points && points.length && (!prevPoints || !_isEqual(prevPoints, points))) {\n return this.renderSymbolsWithAnimation();\n }\n\n return this.renderSymbolsStatically(points);\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar() {\n var isAnimationActive = this.props.isAnimationActive;\n\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props5 = this.props,\n points = _this$props5.points,\n xAxis = _this$props5.xAxis,\n yAxis = _this$props5.yAxis,\n children = _this$props5.children;\n var errorBarItems = findAllByType(children, ErrorBar.displayName);\n\n if (!errorBarItems) {\n return null;\n }\n\n function dataPointFormatterY(dataPoint, dataKey) {\n return {\n x: dataPoint.cx,\n y: dataPoint.cy,\n value: +dataPoint.node.y,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n }\n\n function dataPointFormatterX(dataPoint, dataKey) {\n return {\n x: dataPoint.cx,\n y: dataPoint.cy,\n value: +dataPoint.node.x,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n }\n\n return errorBarItems.map(function (item, i) {\n var direction = item.props.direction;\n return React.cloneElement(item, {\n key: i,\n // eslint-disable-line react/no-array-index-key\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: direction === 'x' ? 'vertical' : 'horizontal',\n dataPointFormatter: direction === 'x' ? dataPointFormatterX : dataPointFormatterY\n });\n });\n }\n }, {\n key: \"renderLine\",\n value: function renderLine() {\n var _this$props6 = this.props,\n points = _this$props6.points,\n line = _this$props6.line,\n lineType = _this$props6.lineType,\n lineJointType = _this$props6.lineJointType;\n var scatterProps = filterProps(this.props);\n var customLineProps = filterProps(line);\n var linePoints, lineItem;\n\n if (lineType === 'joint') {\n linePoints = points.map(function (entry) {\n return {\n x: entry.cx,\n y: entry.cy\n };\n });\n } else if (lineType === 'fitting') {\n var _getLinearRegression = getLinearRegression(points),\n xmin = _getLinearRegression.xmin,\n xmax = _getLinearRegression.xmax,\n a = _getLinearRegression.a,\n b = _getLinearRegression.b;\n\n var linearExp = function linearExp(x) {\n return a * x + b;\n };\n\n linePoints = [{\n x: xmin,\n y: linearExp(xmin)\n }, {\n x: xmax,\n y: linearExp(xmax)\n }];\n }\n\n var lineProps = _objectSpread({}, scatterProps, {\n fill: 'none',\n stroke: scatterProps && scatterProps.fill\n }, customLineProps, {\n points: linePoints\n });\n\n if (React.isValidElement(line)) {\n lineItem = React.cloneElement(line, lineProps);\n } else if (_isFunction(line)) {\n lineItem = line(lineProps);\n } else {\n lineItem = React.createElement(Curve, _extends({}, lineProps, {\n type: lineJointType\n }));\n }\n\n return React.createElement(Layer, {\n className: \"recharts-scatter-line\",\n key: \"recharts-scatter-line\"\n }, lineItem);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props7 = this.props,\n hide = _this$props7.hide,\n points = _this$props7.points,\n line = _this$props7.line,\n className = _this$props7.className,\n xAxis = _this$props7.xAxis,\n yAxis = _this$props7.yAxis,\n left = _this$props7.left,\n top = _this$props7.top,\n width = _this$props7.width,\n height = _this$props7.height,\n id = _this$props7.id,\n isAnimationActive = _this$props7.isAnimationActive;\n\n if (hide || !points || !points.length) {\n return null;\n }\n\n var isAnimationFinished = this.state.isAnimationFinished;\n var layerClass = classNames('recharts-scatter', className);\n var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n var clipPathId = _isNil(id) ? this.id : id;\n return React.createElement(Layer, {\n className: layerClass,\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, needClip ? React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, React.createElement(\"rect\", {\n x: left,\n y: top,\n width: width,\n height: height\n }))) : null, line && this.renderLine(), this.renderErrorBar(), React.createElement(Layer, {\n key: \"recharts-scatter-symbols\"\n }, this.renderSymbols()), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"renderSymbolItem\",\n value: function renderSymbolItem(option, props) {\n var symbol;\n\n if (React.isValidElement(option)) {\n symbol = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n symbol = option(props);\n } else if (typeof option === 'string') {\n symbol = React.createElement(Symbols, _extends({}, props, {\n type: option\n }));\n }\n\n return symbol;\n }\n }]);\n\n return Scatter;\n}(PureComponent);\n\nScatter.displayName = 'Scatter';\nScatter.defaultProps = {\n xAxisId: 0,\n yAxisId: 0,\n zAxisId: 0,\n legendType: 'circle',\n lineType: 'joint',\n lineJointType: 'linear',\n data: [],\n shape: 'circle',\n hide: false,\n isAnimationActive: !isSsr(),\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'linear'\n};\n\nScatter.getComposedData = function (_ref2) {\n var xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n zAxis = _ref2.zAxis,\n item = _ref2.item,\n displayedData = _ref2.displayedData,\n onItemMouseLeave = _ref2.onItemMouseLeave,\n onItemMouseEnter = _ref2.onItemMouseEnter,\n offset = _ref2.offset,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks;\n var tooltipType = item.props.tooltipType;\n var cells = findAllByType(item.props.children, Cell.displayName);\n var xAxisDataKey = _isNil(xAxis.dataKey) ? item.props.dataKey : xAxis.dataKey;\n var yAxisDataKey = _isNil(yAxis.dataKey) ? item.props.dataKey : yAxis.dataKey;\n var zAxisDataKey = zAxis && zAxis.dataKey;\n var defaultRangeZ = zAxis ? zAxis.range : ZAxis.defaultProps.range;\n var defaultZ = defaultRangeZ && defaultRangeZ[0];\n var xBandSize = xAxis.scale.bandwidth ? xAxis.scale.bandwidth() : 0;\n var yBandSize = yAxis.scale.bandwidth ? yAxis.scale.bandwidth() : 0;\n var points = displayedData.map(function (entry, index) {\n var x = getValueByDataKey(entry, xAxisDataKey);\n var y = getValueByDataKey(entry, yAxisDataKey);\n var z = !_isNil(zAxisDataKey) && getValueByDataKey(entry, zAxisDataKey) || '-';\n var tooltipPayload = [{\n name: xAxis.name || xAxis.dataKey,\n unit: xAxis.unit || '',\n value: x,\n payload: entry,\n dataKey: xAxisDataKey,\n type: tooltipType\n }, {\n name: yAxis.name || yAxis.dataKey,\n unit: yAxis.unit || '',\n value: y,\n payload: entry,\n dataKey: yAxisDataKey,\n type: tooltipType\n }];\n\n if (z !== '-') {\n tooltipPayload.push({\n name: zAxis.name || zAxis.dataKey,\n unit: zAxis.unit || '',\n value: z,\n payload: entry,\n dataKey: zAxisDataKey,\n type: tooltipType\n });\n }\n\n var cx = getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: xBandSize,\n entry: entry,\n index: index,\n dataKey: xAxisDataKey\n });\n var cy = getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: yBandSize,\n entry: entry,\n index: index,\n dataKey: yAxisDataKey\n });\n var size = z !== '-' ? zAxis.scale(z) : defaultZ;\n var radius = Math.sqrt(Math.max(size, 0) / Math.PI);\n return _objectSpread({}, entry, {\n cx: cx,\n cy: cy,\n x: cx - radius,\n y: cy - radius,\n xAxis: xAxis,\n yAxis: yAxis,\n zAxis: zAxis,\n width: 2 * radius,\n height: 2 * radius,\n size: size,\n node: {\n x: x,\n y: y,\n z: z\n },\n tooltipPayload: tooltipPayload,\n tooltipPosition: {\n x: cx,\n y: cy\n },\n payload: entry\n }, cells && cells[index] && cells[index].props);\n });\n return _objectSpread({\n onMouseLeave: onItemMouseLeave,\n onMouseEnter: onItemMouseEnter,\n points: points\n }, offset);\n};\n\nexport default Scatter;","/**\n * @fileOverview Composed Chart\n */\nimport generateCategoricalChart from './generateCategoricalChart';\nimport Area from '../cartesian/Area';\nimport Bar from '../cartesian/Bar';\nimport Line from '../cartesian/Line';\nimport Scatter from '../cartesian/Scatter';\nimport XAxis from '../cartesian/XAxis';\nimport YAxis from '../cartesian/YAxis';\nimport ZAxis from '../cartesian/ZAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport default generateCategoricalChart({\n chartName: 'ComposedChart',\n GraphicalChild: [Line, Area, Bar, Scatter],\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }, {\n axisType: 'zAxis',\n AxisComp: ZAxis\n }],\n formatAxisMap: formatAxisMap\n});","import './polyfill';\nimport _Surface from './container/Surface';\nexport { _Surface as Surface };\nimport _Layer from './container/Layer';\nexport { _Layer as Layer };\nimport _Legend from './component/Legend';\nexport { _Legend as Legend };\nimport _Tooltip from './component/Tooltip';\nexport { _Tooltip as Tooltip };\nimport _ResponsiveContainer from './component/ResponsiveContainer';\nexport { _ResponsiveContainer as ResponsiveContainer };\nimport _Cell from './component/Cell';\nexport { _Cell as Cell };\nimport _Text from './component/Text';\nexport { _Text as Text };\nimport _Label from './component/Label';\nexport { _Label as Label };\nimport _LabelList from './component/LabelList';\nexport { _LabelList as LabelList };\nimport _Customized from './component/Customized';\nexport { _Customized as Customized };\nimport _Sector from './shape/Sector';\nexport { _Sector as Sector };\nimport _Curve from './shape/Curve';\nexport { _Curve as Curve };\nimport _Rectangle from './shape/Rectangle';\nexport { _Rectangle as Rectangle };\nimport _Polygon from './shape/Polygon';\nexport { _Polygon as Polygon };\nimport _Dot from './shape/Dot';\nexport { _Dot as Dot };\nimport _Cross from './shape/Cross';\nexport { _Cross as Cross };\nimport _Symbols from './shape/Symbols';\nexport { _Symbols as Symbols };\nimport _PolarGrid from './polar/PolarGrid';\nexport { _PolarGrid as PolarGrid };\nimport _PolarRadiusAxis from './polar/PolarRadiusAxis';\nexport { _PolarRadiusAxis as PolarRadiusAxis };\nimport _PolarAngleAxis from './polar/PolarAngleAxis';\nexport { _PolarAngleAxis as PolarAngleAxis };\nimport _Pie from './polar/Pie';\nexport { _Pie as Pie };\nimport _Radar from './polar/Radar';\nexport { _Radar as Radar };\nimport _RadialBar from './polar/RadialBar';\nexport { _RadialBar as RadialBar };\nimport _Brush from './cartesian/Brush';\nexport { _Brush as Brush };\nimport _ReferenceLine from './cartesian/ReferenceLine';\nexport { _ReferenceLine as ReferenceLine };\nimport _ReferenceDot from './cartesian/ReferenceDot';\nexport { _ReferenceDot as ReferenceDot };\nimport _ReferenceArea from './cartesian/ReferenceArea';\nexport { _ReferenceArea as ReferenceArea };\nimport _CartesianAxis from './cartesian/CartesianAxis';\nexport { _CartesianAxis as CartesianAxis };\nimport _CartesianGrid from './cartesian/CartesianGrid';\nexport { _CartesianGrid as CartesianGrid };\nimport _Line from './cartesian/Line';\nexport { _Line as Line };\nimport _Area from './cartesian/Area';\nexport { _Area as Area };\nimport _Bar from './cartesian/Bar';\nexport { _Bar as Bar };\nimport _Scatter from './cartesian/Scatter';\nexport { _Scatter as Scatter };\nimport _XAxis from './cartesian/XAxis';\nexport { _XAxis as XAxis };\nimport _YAxis from './cartesian/YAxis';\nexport { _YAxis as YAxis };\nimport _ZAxis from './cartesian/ZAxis';\nexport { _ZAxis as ZAxis };\nimport _ErrorBar from './cartesian/ErrorBar';\nexport { _ErrorBar as ErrorBar };\nimport _LineChart from './chart/LineChart';\nexport { _LineChart as LineChart };\nimport _BarChart from './chart/BarChart';\nexport { _BarChart as BarChart };\nimport _PieChart from './chart/PieChart';\nexport { _PieChart as PieChart };\nimport _Treemap from './chart/Treemap';\nexport { _Treemap as Treemap };\nimport _Sankey from './chart/Sankey';\nexport { _Sankey as Sankey };\nimport _RadarChart from './chart/RadarChart';\nexport { _RadarChart as RadarChart };\nimport _ScatterChart from './chart/ScatterChart';\nexport { _ScatterChart as ScatterChart };\nimport _AreaChart from './chart/AreaChart';\nexport { _AreaChart as AreaChart };\nimport _RadialBarChart from './chart/RadialBarChart';\nexport { _RadialBarChart as RadialBarChart };\nimport _ComposedChart from './chart/ComposedChart';\nexport { _ComposedChart as ComposedChart };\nimport _Funnel from './numberAxis/Funnel';\nexport { _Funnel as Funnel };\nimport _FunnelChart from './chart/FunnelChart';\nexport { _FunnelChart as FunnelChart };\nimport _Trapezoid from './shape/Trapezoid';\nexport { _Trapezoid as Trapezoid };","import {assert} from '../utils';\nimport {isWebGL, isWebGL2} from '@luma.gl/gltools';\n\n// Heuristic testing of contexts (to indentify debug wrappers around gl contexts)\n// const GL_ARRAY_BUFFER = 0x8892;\n\nexport const ERR_CONTEXT = 'Invalid WebGLRenderingContext';\nexport const ERR_WEBGL = ERR_CONTEXT;\nexport const ERR_WEBGL2 = 'Requires WebGL2';\n\nexport function assertWebGLContext(gl) {\n // Need to handle debug context\n assert(isWebGL(gl), ERR_CONTEXT);\n}\n\nexport function assertWebGL2Context(gl) {\n // Need to handle debug context\n assert(isWebGL2(gl), ERR_WEBGL2);\n}\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","// Provides a unified API for getting and setting any WebGL parameter\n// Also knows default values of all parameters, enabling fast cache initialization\n// Provides base functionality for the state caching.\nimport {\n GL_PARAMETER_DEFAULTS,\n GL_PARAMETER_SETTERS,\n GL_COMPOSITE_PARAMETER_SETTERS,\n GL_PARAMETER_GETTERS\n} from './webgl-parameter-tables';\n\nimport {pushContextState, popContextState} from './track-context-state';\nimport {isObjectEmpty, isWebGL, assert} from '../utils';\n\n// Sets any GL parameter regardless of function (gl.blendMode, ...)\n// Note: requires a `cache` object to be set on the context (gl.state.cache)\n// This object is used to fill in any missing values for composite setter functions\nexport function setParameters(gl, values) {\n assert(isWebGL(gl), 'setParameters requires a WebGL context');\n\n if (isObjectEmpty(values)) {\n return;\n }\n\n const compositeSetters = {};\n\n // HANDLE PRIMITIVE SETTERS (and make note of any composite setters)\n\n for (const key in values) {\n const glConstant = Number(key);\n const setter = GL_PARAMETER_SETTERS[key];\n if (setter) {\n // Composite setters should only be called once, so save them\n if (typeof setter === 'string') {\n compositeSetters[setter] = true;\n } else {\n // if (gl[glConstant] !== undefined) {\n // TODO - added above check since this is being called on WebGL2 values in WebGL1...\n // TODO - deep equal on values? only call setter if value has changed?\n // NOTE - the setter will automatically update this.state\n setter(gl, values[key], glConstant);\n }\n }\n }\n\n // HANDLE COMPOSITE SETTERS\n\n // NOTE: any non-provided values needed by composite setters are filled in from state cache\n // The cache parameter is automatically retrieved from the context\n // This depends on `trackContextState`, which is technically a \"circular\" dependency.\n // But it is too inconvenient to always require a cache parameter here.\n // This is the ONLY external dependency in this module/\n const cache = gl.state && gl.state.cache;\n if (cache) {\n for (const key in compositeSetters) {\n // TODO - avoid calling composite setters if values have not changed.\n const compositeSetter = GL_COMPOSITE_PARAMETER_SETTERS[key];\n // Note - if `trackContextState` has been called,\n // the setter will automatically update this.state.cache\n compositeSetter(gl, values, cache);\n }\n }\n\n // Add a log for the else case?\n}\n\n// Copies the state from a context (gl.getParameter should not be overriden)\n// Reads the entire WebGL state from a context\n// Caveat: This generates a huge amount of synchronous driver roundtrips and should be\n// considered a very slow operation, to be used only if/when a context already manipulated\n// by external code needs to be synchronized for the first time\n// @return {Object} - a newly created map, with values keyed by GL parameters\nexport function getParameters(gl, parameters) {\n // default to querying all parameters\n parameters = parameters || GL_PARAMETER_DEFAULTS;\n // support both arrays of parameters and objects (keys represent parameters)\n\n if (typeof parameters === 'number') {\n // single GL enum\n const key = parameters;\n const getter = GL_PARAMETER_GETTERS[key];\n return getter ? getter(gl, key) : gl.getParameter(key);\n }\n\n const parameterKeys = Array.isArray(parameters) ? parameters : Object.keys(parameters);\n\n const state = {};\n for (const key of parameterKeys) {\n const getter = GL_PARAMETER_GETTERS[key];\n state[key] = getter ? getter(gl, Number(key)) : gl.getParameter(Number(key));\n }\n return state;\n}\n\n// Reset all parameters to a (almost) pure context state\n// NOTE: viewport and scissor will be set to the values in GL_PARAMETER_DEFAULTS,\n// NOT the canvas size dimensions, so they will have to be properly set after\n// calling this function.\nexport function resetParameters(gl) {\n setParameters(gl, GL_PARAMETER_DEFAULTS);\n}\n\n// Stores current \"global\" WebGL context settings, changes selected parameters,\n// executes function, restores parameters\nexport function withParameters(gl, parameters, func) {\n if (isObjectEmpty(parameters)) {\n // Avoid setting state if no parameters provided. Just call and return\n return func(gl);\n }\n\n const {nocatch = true} = parameters;\n\n pushContextState(gl);\n setParameters(gl, parameters);\n\n // Setup is done, call the function\n let value;\n\n if (nocatch) {\n // Avoid try catch to minimize stack size impact for safe execution paths\n value = func(gl);\n popContextState(gl);\n } else {\n // Wrap in a try-catch to ensure that parameters are restored on exceptions\n try {\n value = func(gl);\n } finally {\n popContextState(gl);\n }\n }\n\n return value;\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import { deepmerge } from '@material-ui/utils';\n\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n\n });\n}\n\nexport default merge;","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/**\n * Flattens a nested array into a single level array,\n * or a single value into an array with one value\n * @example flatten([[1, [2]], [3], 4]) => [1, 2, 3, 4]\n * @example flatten(1) => [1]\n * @param {Array} array The array to flatten.\n * @param {Function} filter= - Optional predicate called on each `value` to\n * determine if it should be included (pushed onto) the resulting array.\n * @param {Function} map= - Optional transform applied to each array elements.\n * @param {Array} result=[] - Optional array to push value into\n * @return {Array} Returns the new flattened array (new array or `result` if provided)\n */\nexport function flatten(array, {filter = () => true, map = x => x, result = []} = {}) {\n // Wrap single object in array\n if (!Array.isArray(array)) {\n return filter(array) ? [map(array)] : [];\n }\n // Deep flatten and filter the array\n return flattenArray(array, filter, map, result);\n}\n\n// Deep flattens an array. Helper to `flatten`, see its parameters\nfunction flattenArray(array, filter, map, result) {\n let index = -1;\n while (++index < array.length) {\n const value = array[index];\n if (Array.isArray(value)) {\n flattenArray(value, filter, map, result);\n } else if (filter(value)) {\n result.push(map(value));\n }\n }\n return result;\n}\n\n// Uses copyWithin to significantly speed up typed array value filling\nexport function fillArray({target, source, start = 0, count = 1}) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n // If we have copied less than half, copy everything we got\n // else copy remaining in one operation\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar ListContext = React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ListContext.displayName = 'ListContext';\n}\n\nexport default ListContext;","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport gud from 'gud';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + gud() + '__';\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer =\n /*#__PURE__*/\n function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n <RouterContext.Provider\n children={this.props.children || null}\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n />\n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change <Router history>\"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return <Router {...rest} history={history} staticContext={context} />;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport RouterContext from \"./RouterContext\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a <Router>`\n );\n return (\n <Component\n {...remainingProps}\n {...context}\n ref={wrappedComponentRef}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(Context).history;\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n return path\n ? matchPath(useLocation().pathname, path)\n : useContext(Context).match;\n}\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","import {assert} from '../utils';\n\n// Resolve a WebGL enumeration name (returns itself if already a number)\nexport function getKeyValue(gl, name) {\n // If not a string, return (assume number)\n if (typeof name !== 'string') {\n return name;\n }\n\n // If string converts to number, return number\n const number = Number(name);\n if (!isNaN(number)) {\n return number;\n }\n\n // Look up string, after removing any 'GL.' or 'gl.' prefix\n name = name.replace(/^.*\\./, '');\n const value = gl[name];\n assert(value !== undefined, `Accessing undefined constant GL.${name}`);\n return value;\n}\n\nexport function getKey(gl, value) {\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n\nexport function getKeyType(gl, value) {\n assert(value !== undefined, 'undefined key');\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(`math.gl assertion ${message}`);\n }\n}\n","const fp32shader = `\\\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n\n// All these functions are for substituting tan() function from Intel GPU only\nconst float TWO_PI = 6.2831854820251465;\nconst float PI_2 = 1.5707963705062866;\nconst float PI_16 = 0.1963495463132858;\n\nconst float SIN_TABLE_0 = 0.19509032368659973;\nconst float SIN_TABLE_1 = 0.3826834261417389;\nconst float SIN_TABLE_2 = 0.5555702447891235;\nconst float SIN_TABLE_3 = 0.7071067690849304;\n\nconst float COS_TABLE_0 = 0.9807852506637573;\nconst float COS_TABLE_1 = 0.9238795042037964;\nconst float COS_TABLE_2 = 0.8314695954322815;\nconst float COS_TABLE_3 = 0.7071067690849304;\n\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01; // 1/3!\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03; // 1/5!\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04; // 1/7!\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06; // 1/9!\n\nfloat sin_taylor_fp32(float a) {\n float r, s, t, x;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n x = -a * a;\n s = a;\n r = a;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_3;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_5;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_7;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_9;\n s = s + t;\n\n return s;\n}\n\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\n if (a == 0.0) {\n sin_t = 0.0;\n cos_t = 1.0;\n }\n sin_t = sin_taylor_fp32(a);\n cos_t = sqrt(1.0 - sin_t * sin_t);\n}\n\nfloat tan_taylor_fp32(float a) {\n float sin_a;\n float cos_a;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n // 2pi range reduction\n float z = floor(a / TWO_PI);\n float r = a - TWO_PI * z;\n\n float t;\n float q = floor(r / PI_2 + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return 0.0 / 0.0;\n }\n\n t = r - PI_2 * q;\n\n q = floor(t / PI_16 + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return 0.0 / 0.0;\n } else {\n t = t - PI_16 * q;\n }\n\n float u = 0.0;\n float v = 0.0;\n\n float sin_t, cos_t;\n float s, c;\n sincos_taylor_fp32(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0;\n v = SIN_TABLE_0;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1;\n v = SIN_TABLE_1;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2;\n v = SIN_TABLE_2;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3;\n v = SIN_TABLE_3;\n }\n if (k > 0) {\n s = u * sin_t + v * cos_t;\n c = u * cos_t - v * sin_t;\n } else {\n s = u * sin_t - v * cos_t;\n c = u * cos_t + v * sin_t;\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return sin_a / cos_a;\n}\n#endif\n\nfloat tan_fp32(float a) {\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n return tan_taylor_fp32(a);\n#else\n return tan(a);\n#endif\n}\n`;\n\nexport default {\n name: 'fp32',\n vs: fp32shader,\n fs: null\n};\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {COORDINATE_SYSTEM, PROJECTION_MODE} from '../../lib/constants';\n\n// We are generating these from the js code in constants.js\nconst COORDINATE_SYSTEM_GLSL_CONSTANTS = Object.keys(COORDINATE_SYSTEM)\n .map(key => `const float COORDINATE_SYSTEM_${key} = ${COORDINATE_SYSTEM[key]}.;`)\n .join('');\nconst PROJECTION_MODE_GLSL_CONSTANTS = Object.keys(PROJECTION_MODE)\n .map(key => `const float PROJECTION_MODE_${key} = ${PROJECTION_MODE[key]}.;`)\n .join('');\n\nexport default `\\\n${COORDINATE_SYSTEM_GLSL_CONSTANTS}\n${PROJECTION_MODE_GLSL_CONSTANTS}\n\nuniform float project_uCoordinateSystem;\nuniform float project_uProjectionMode;\nuniform float project_uScale;\nuniform bool project_uWrapLongitude;\nuniform float project_uAntimeridian;\nuniform vec3 project_uCommonUnitsPerMeter;\nuniform vec3 project_uCommonUnitsPerWorldUnit;\nuniform vec3 project_uCommonUnitsPerWorldUnit2;\nuniform vec4 project_uCenter;\nuniform mat4 project_uModelMatrix;\nuniform mat4 project_uViewProjectionMatrix;\nuniform vec2 project_uViewportSize;\nuniform float project_uDevicePixelRatio;\nuniform float project_uFocalDistance;\nuniform vec3 project_uCameraPosition;\nuniform vec3 project_uCoordinateOrigin;\n\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\nconst vec3 ZERO_64_LOW = vec3(0.0);\n\n//\n// Scaling offsets - scales meters to \"world distance\"\n// Note the scalar version of project_size is for scaling the z component only\n//\nfloat project_size(float meters) {\n return meters * project_uCommonUnitsPerMeter.z;\n}\n\nvec2 project_size(vec2 meters) {\n return meters * project_uCommonUnitsPerMeter.xy;\n}\n\nvec3 project_size(vec3 meters) {\n return meters * project_uCommonUnitsPerMeter;\n}\n\nvec4 project_size(vec4 meters) {\n return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w);\n}\n\n//\n// Projecting normal - transform deltas from current coordinate system to\n// normals in the worldspace\n//\nvec3 project_normal(vec3 vector) {\n // Apply model matrix\n vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0);\n return normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter);\n}\n\nvec4 project_offset_(vec4 offset) {\n float dy = offset.y;\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n dy = clamp(dy, -1., 1.);\n }\n vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy;\n return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\n}\n\n//\n// Projecting positions - non-linear projection: lnglats => unit tile [0-1, 0-1]\n//\nvec2 project_mercator_(vec2 lnglat) {\n float x = lnglat.x;\n if (project_uWrapLongitude) {\n x = mod(x - project_uAntimeridian, 360.0) + project_uAntimeridian;\n }\n return vec2(\n radians(x) + PI,\n PI + log(tan_fp32(PI * 0.25 + radians(lnglat.y) * 0.5))\n );\n}\n\n//\n// Projects positions (defined by project_uCoordinateSystem) to common space (defined by project_uProjectionMode)\n//\nvec4 project_position(vec4 position, vec3 position64Low) {\n vec4 position_world = project_uModelMatrix * position;\n\n // Work around for a Mac+NVIDIA bug https://github.com/uber/deck.gl/issues/4145\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_mercator_(position_world.xy) * WORLD_SCALE,\n project_size(position_world.z),\n position_world.w\n );\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_IDENTITY ||\n (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT)) {\n // Subtract high part of 64 bit value. Convert remainder to float32, preserving precision.\n position_world.xyz -= project_uCoordinateOrigin;\n // Translation is already added to the high parts\n position_world += project_uModelMatrix * vec4(position64Low, 0.0);\n }\n\n return project_offset_(position_world);\n}\n\nvec4 project_position(vec4 position) {\n return project_position(position, ZERO_64_LOW);\n}\n\nvec3 project_position(vec3 position, vec3 position64Low) {\n vec4 projected_position = project_position(vec4(position, 1.0), position64Low);\n return projected_position.xyz;\n}\n\nvec3 project_position(vec3 position) {\n vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\n return projected_position.xyz;\n}\n\nvec2 project_position(vec2 position) {\n vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\n return projected_position.xy;\n}\n\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_METER_OFFSETS ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\n // Needs to be divided with project_uCommonUnitsPerMeter\n position.w *= project_uCommonUnitsPerMeter.z;\n }\n return viewProjectionMatrix * position + center;\n}\n\n//\n// Projects from common space coordinates to clip space.\n// Uses project_uViewProjectionMatrix\n//\nvec4 project_common_position_to_clipspace(vec4 position) {\n return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter);\n}\n\n// Returns a clip space offset that corresponds to a given number of screen pixels\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\n vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0;\n return offset * project_uFocalDistance;\n}\n\nfloat project_size_to_pixel(float meters) {\n return project_size(meters) * project_uScale;\n}\nfloat project_pixel_size(float pixels) {\n return pixels / project_uScale;\n}\nvec2 project_pixel_size(vec2 pixels) {\n return pixels / project_uScale;\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {fp32} from '@luma.gl/core';\nimport projectShader from './project.glsl';\nimport {getUniformsFromViewport} from './viewport-uniforms';\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n if (opts.viewport) {\n return getUniformsFromViewport(opts);\n }\n return {};\n}\n\nexport default {\n name: 'project',\n dependencies: [fp32],\n vs: projectShader,\n getUniforms\n};\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","var isNumber = require('./isNumber');\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n}\n\nmodule.exports = isNaN;\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import React from 'react';\nexport default React.createContext(null);","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","import GL from '@luma.gl/constants';\n\n// Define local extension strings to optimize minification\n// const SRGB = 'EXT_sRGB';\n// const EXT_FLOAT_WEBGL1 = 'WEBGL.color_buffer_float';\nconst EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';\n// const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';\n\n// NOTE(Tarek): bpp === \"bytes per pixel\", used for\n// memory usage calculations.\nexport default {\n [GL.DEPTH_COMPONENT16]: {bpp: 2}, // 16 depth bits.\n [GL.DEPTH_COMPONENT24]: {gl2: true, bpp: 3},\n [GL.DEPTH_COMPONENT32F]: {gl2: true, bpp: 4},\n\n [GL.STENCIL_INDEX8]: {bpp: 1}, // 8 stencil bits.\n\n [GL.DEPTH_STENCIL]: {bpp: 4},\n [GL.DEPTH24_STENCIL8]: {gl2: true, bpp: 4},\n [GL.DEPTH32F_STENCIL8]: {gl2: true, bpp: 5},\n\n // When using a WebGL 1 context, color renderbuffer formats are limited\n [GL.RGBA4]: {bpp: 2},\n [GL.RGB565]: {bpp: 2},\n [GL.RGB5_A1]: {bpp: 2},\n\n // When using a WebGL 2 context, the following values are available additionally:\n [GL.R8]: {gl2: true, bpp: 1},\n [GL.R8UI]: {gl2: true, bpp: 1},\n [GL.R8I]: {gl2: true, bpp: 1},\n [GL.R16UI]: {gl2: true, bpp: 2},\n [GL.R16I]: {gl2: true, bpp: 2},\n [GL.R32UI]: {gl2: true, bpp: 4},\n [GL.R32I]: {gl2: true, bpp: 4},\n [GL.RG8]: {gl2: true, bpp: 2},\n [GL.RG8UI]: {gl2: true, bpp: 2},\n [GL.RG8I]: {gl2: true, bpp: 2},\n [GL.RG16UI]: {gl2: true, bpp: 4},\n [GL.RG16I]: {gl2: true, bpp: 4},\n [GL.RG32UI]: {gl2: true, bpp: 8},\n [GL.RG32I]: {gl2: true, bpp: 8},\n [GL.RGB8]: {gl2: true, bpp: 3},\n [GL.RGBA8]: {gl2: true, bpp: 4},\n // [GL.SRGB8_ALPHA8]: {gl2: true, gl1: SRGB}, // When using the EXT_sRGB WebGL1 extension\n [GL.RGB10_A2]: {gl2: true, bpp: 4},\n [GL.RGBA8UI]: {gl2: true, bpp: 4},\n [GL.RGBA8I]: {gl2: true, bpp: 4},\n [GL.RGB10_A2UI]: {gl2: true, bpp: 4},\n [GL.RGBA16UI]: {gl2: true, bpp: 8},\n [GL.RGBA16I]: {gl2: true, bpp: 8},\n [GL.RGBA32I]: {gl2: true, bpp: 16},\n [GL.RGBA32UI]: {gl2: true, bpp: 16},\n\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n [GL.R16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 2},\n [GL.RG16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RGBA16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n [GL.R32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RG32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n // TODO - can't get WEBGL.color_buffer_float to work on renderbuffers\n [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 16},\n // [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},\n [GL.R11F_G11F_B10F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4}\n};\n","/* eslint-disable no-inline-comments */\nimport GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport RENDERBUFFER_FORMATS from './renderbuffer-formats';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert} from '../utils';\n\nfunction isFormatSupported(gl, format, formats) {\n const info = formats[format];\n if (!info) {\n return false;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n if (typeof value === 'string') {\n return gl.getExtension(value);\n }\n return value;\n}\n\nexport default class Renderbuffer extends Resource {\n static isSupported(gl, {format} = {}) {\n return !format || isFormatSupported(gl, format, RENDERBUFFER_FORMATS);\n }\n\n static getSamplesForFormat(gl, {format}) {\n // Polyfilled to return [0] under WebGL1\n return gl.getInternalformatParameter(GL.RENDERBUFFER, format, GL.SAMPLES);\n }\n\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n // Creates and initializes a renderbuffer object's data store\n initialize({format, width = 1, height = 1, samples = 0}) {\n assert(format, 'Needs format');\n\n this._trackDeallocatedMemory();\n\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n\n if (samples !== 0 && isWebGL2(this.gl)) {\n this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);\n } else {\n this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);\n }\n\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n\n this.format = format;\n this.width = width;\n this.height = height;\n this.samples = samples;\n\n this._trackAllocatedMemory(\n this.width * this.height * (this.samples || 1) * RENDERBUFFER_FORMATS[this.format].bpp\n );\n\n return this;\n }\n\n resize({width, height}) {\n // Don't resize if width/height haven't changed\n if (width !== this.width || height !== this.height) {\n return this.initialize({width, height, format: this.format, samples: this.samples});\n }\n return this;\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createRenderbuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteRenderbuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _bindHandle(handle) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);\n }\n\n _syncHandle(handle) {\n this.format = this.getParameter(GL.RENDERBUFFER_INTERNAL_FORMAT);\n this.width = this.getParameter(GL.RENDERBUFFER_WIDTH);\n this.height = this.getParameter(GL.RENDERBUFFER_HEIGHT);\n this.samples = this.getParameter(GL.RENDERBUFFER_SAMPLES);\n }\n\n // @param {Boolean} opt.autobind=true - method call will bind/unbind object\n // @returns {GLenum|GLint} - depends on pname\n _getParameter(pname) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n const value = this.gl.getRenderbufferParameter(GL.RENDERBUFFER, pname);\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n return value;\n }\n}\n","import GL from '@luma.gl/constants';\n\nconst ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\n\n// Converts TYPED ARRAYS to corresponding GL constant\n// Used to auto deduce gl parameter types\nexport function getGLTypeFromTypedArray(arrayOrType) {\n // If typed array, look up constructor\n const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n switch (type) {\n case Float32Array:\n return GL.FLOAT;\n case Uint16Array:\n return GL.UNSIGNED_SHORT;\n case Uint32Array:\n return GL.UNSIGNED_INT;\n case Uint8Array:\n return GL.UNSIGNED_BYTE;\n case Uint8ClampedArray:\n return GL.UNSIGNED_BYTE;\n case Int8Array:\n return GL.BYTE;\n case Int16Array:\n return GL.SHORT;\n case Int32Array:\n return GL.INT;\n default:\n throw new Error(ERR_TYPE_DEDUCTION);\n }\n}\n\n// Converts GL constant to corresponding TYPED ARRAY\n// Used to auto deduce gl parameter types\n\n/* eslint-disable complexity */\nexport function getTypedArrayFromGLType(glType, {clamped = true} = {}) {\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return clamped ? Uint8ClampedArray : Uint8Array;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Failed to deduce typed array type from GL constant');\n }\n}\n/* eslint-enable complexity */\n\n// Flip rows (can be used on arrays returned from `Framebuffer.readPixels`)\n// https://stackoverflow.com/questions/41969562/\n// how-can-i-flip-the-result-of-webglrenderingcontext-readpixels\nexport function flipRows({data, width, height, bytesPerPixel = 4, temp}) {\n const bytesPerRow = width * bytesPerPixel;\n\n // make a temp buffer to hold one row\n temp = temp || new Uint8Array(bytesPerRow);\n for (let y = 0; y < height / 2; ++y) {\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n // make copy of a row on the top half\n temp.set(data.subarray(topOffset, topOffset + bytesPerRow));\n // copy a row from the bottom half to the top\n data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n // copy the copy of the top half row to the bottom half\n data.set(temp, bottomOffset);\n }\n}\n\nexport function scalePixels({data, width, height}) {\n const newWidth = Math.round(width / 2);\n const newHeight = Math.round(height / 2);\n const newData = new Uint8Array(newWidth * newHeight * 4);\n for (let y = 0; y < newHeight; y++) {\n for (let x = 0; x < newWidth; x++) {\n for (let c = 0; c < 4; c++) {\n newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n }\n }\n }\n return {data: newData, width: newWidth, height: newHeight};\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// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _SnackbarProvider = require('./SnackbarProvider');\n\nObject.defineProperty(exports, 'SnackbarProvider', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_SnackbarProvider).default;\n }\n});\n\nvar _withSnackbar = require('./withSnackbar');\n\nObject.defineProperty(exports, 'withSnackbar', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_withSnackbar).default;\n }\n});\n\nvar _useSnackbar = require('./useSnackbar');\n\nObject.defineProperty(exports, 'useSnackbar', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_useSnackbar).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\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 punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","/* global fetch, Image */\nimport {assert} from '../utils';\n\nlet pathPrefix = '';\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\n\n// Reads raw file data from:\nexport function loadFile(url, options = {}) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n const dataType = options.dataType || 'text';\n return fetch(url, options).then(res => res[dataType]());\n}\n\n/*\n * Loads images asynchronously\n * image.crossOrigin can be set via opts.crossOrigin, default to 'anonymous'\n * returns a promise tracking the load\n */\nexport function loadImage(url, opts) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n return new Promise((resolve, reject) => {\n try {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = () => reject(new Error(`Could not load image ${url}.`));\n image.crossOrigin = (opts && opts.crossOrigin) || 'anonymous';\n image.src = url;\n } catch (error) {\n reject(error);\n }\n });\n}\n","import GL from '@luma.gl/constants';\nimport Texture from './texture';\nimport {assertWebGLContext} from '../webgl-utils';\nimport {loadImage} from '../utils/load-file';\n\nexport default class Texture2D extends Texture {\n static isSupported(gl, opts) {\n return Texture.isSupported(gl, opts);\n }\n\n constructor(gl, props = {}) {\n assertWebGLContext(gl);\n\n // Signature: new Texture2D(gl, url | Promise)\n if (props instanceof Promise || typeof props === 'string') {\n props = {data: props};\n }\n\n // Signature: new Texture2D(gl, {data: url})\n if (typeof props.data === 'string') {\n props = Object.assign({}, props, {data: loadImage(props.data)});\n }\n\n super(gl, Object.assign({}, props, {target: GL.TEXTURE_2D}));\n\n this.initialize(props);\n\n Object.seal(this);\n }\n}\n","import superPropBase from \"./superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.reduce(function (acc, func) {\n if (func == null) {\n return acc;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof func !== 'function') {\n console.error('Material-UI: invalid Argument Type, must only provide functions, undefined, or null.');\n }\n }\n\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, function () {});\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","// vec2 additions\n\nexport function vec2_transformMat4AsVector(out, a, m) {\n const x = a[0];\n const y = a[1];\n const w = m[3] * x + m[7] * y || 1.0;\n out[0] = (m[0] * x + m[4] * y) / w;\n out[1] = (m[1] * x + m[5] * y) / w;\n return out;\n}\n\n// vec3 additions\n\n// Transform as vector, only uses 3x3 minor matrix\nexport function vec3_transformMat4AsVector(out, a, m) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = m[3] * x + m[7] * y + m[11] * z || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z) / w;\n return out;\n}\n\nexport function vec3_transformMat2(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n return out;\n}\n\n// vec4 additions\n\nexport function vec4_transformMat2(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\nexport function vec4_transformMat3(out, a, m) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n out[0] = m[0] * x + m[3] * y + m[6] * z;\n out[1] = m[1] * x + m[4] * y + m[7] * z;\n out[2] = m[2] * x + m[5] * y + m[8] * z;\n out[3] = a[3];\n return out;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\n/* global process, window, global, document, self, importScripts */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst global_ = globals.global || globals.self || globals.window;\nconst document_ = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\nexport const isBrowser =\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n\nexport const isWorker = typeof importScripts === 'function';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && process.version.match(/v([0-9]*)/);\nexport const nodeVersion = (matches && parseFloat(matches[1])) || 0;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","/* eslint-disable no-inline-comments, max-len, camelcase */\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../utils';\n\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\n\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245; // vendor string of the graphics driver.\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246; // renderer string of the graphics driver.\n\nconst getWebGL2ValueOrZero = gl => (!isWebGL2(gl) ? 0 : undefined);\n\n// if a function returns undefined in this table,\n// the original getParameter will be called, defeating the override\nconst WEBGL_PARAMETERS = {\n [GL.READ_BUFFER]: gl => (!isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined),\n\n // WebGL2 context parameters\n [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: gl => (!isWebGL2(gl) ? GL_DONT_CARE : undefined),\n\n [GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,\n\n [GL.SAMPLES]: getWebGL2ValueOrZero,\n\n // WebGL2 extension context parameters\n [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {\n const ext = isWebGL2(gl)\n ? gl.getExtension(EXT_disjoint_timer_query_webgl2)\n : gl.getExtension(EXT_disjoint_timer_query);\n return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n },\n\n // Extension fixed values\n [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);\n },\n\n [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);\n },\n\n // Extension LIMITS\n [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {\n const ext = gl.luma.extensions[EXT_texture_filter_anisotropic];\n return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n },\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,\n [GL.MAX_COLOR_ATTACHMENTS]: (gl, getParameter) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n }\n return undefined;\n },\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_DRAW_BUFFERS]: gl => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n }\n return undefined;\n },\n [GL.MAX_ELEMENT_INDEX]:\n // Guess: per webglstats.com 99.6% of webgl2 supports 2147483647\n gl => (gl.getExtension(OES_element_index) ? 2147483647 : 65535),\n [GL.MAX_ELEMENTS_INDICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n gl => (gl.getExtension(OES_element_index) ? 16777216 : 65535),\n [GL.MAX_ELEMENTS_VERTICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n gl => 16777216,\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_SAMPLES]: getWebGL2ValueOrZero,\n [GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,\n [GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,\n [GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero\n};\n\n// A \"replacement\" gl.getParameter that accepts \"enums\" from extensions and WebGL2\n// and returns reasonably safe defaults\nexport function getParameterPolyfill(gl, originalGetParameter, pname) {\n // Return mock limits (usually 0) for WebGL2 constants to ensure these\n // can be queries without error\n const limit = WEBGL_PARAMETERS[pname];\n const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n const result = value !== undefined ? value : originalGetParameter(pname);\n return result;\n}\n","import GL from '@luma.gl/constants';\nimport {assert, isWebGL2} from '../utils';\n\nimport {getParameterPolyfill} from './get-parameter-polyfill';\n\nconst OES_vertex_array_object = 'OES_vertex_array_object';\nconst ANGLE_instanced_arrays = 'ANGLE_instanced_arrays';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\n\nconst ERR_VAO_NOT_SUPPORTED = 'VertexArray requires WebGL2 or OES_vertex_array_object extension';\n\n// Return object with webgl2 flag and an extension\nfunction getExtensionData(gl, extension) {\n return {\n webgl2: isWebGL2(gl),\n ext: gl.getExtension(extension)\n };\n}\n\n// function mapExtensionConstant(gl, constant) {\n// switch (constant) {\n// case ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES: return GL.FRAGMENT_SHADER_DERIVATIVE_HINT;\n// }\n// }\n\nexport const WEBGL2_CONTEXT_POLYFILLS = {\n // POLYFILL TABLE\n [OES_vertex_array_object]: {\n meta: {suffix: 'OES'},\n // NEW METHODS\n createVertexArray: () => {\n assert(false, ERR_VAO_NOT_SUPPORTED);\n },\n deleteVertexArray: () => {},\n bindVertexArray: () => {},\n isVertexArray: () => false\n },\n [ANGLE_instanced_arrays]: {\n meta: {\n suffix: 'ANGLE'\n // constants: {\n // VERTEX_ATTRIB_ARRAY_DIVISOR: 'VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE'\n // }\n },\n vertexAttribDivisor(location, divisor) {\n // Accept divisor 0 even if instancing is not supported (0 = no instancing)\n assert(divisor === 0, 'WebGL instanced rendering not supported');\n },\n drawElementsInstanced: () => {},\n drawArraysInstanced: () => {}\n },\n [WEBGL_draw_buffers]: {\n meta: {\n suffix: 'WEBGL'\n },\n drawBuffers: () => {\n assert(false);\n }\n },\n [EXT_disjoint_timer_query]: {\n meta: {suffix: 'EXT'},\n // WebGL1: Polyfills the WebGL2 Query API\n createQuery: () => {\n assert(false);\n },\n deleteQuery: () => {\n assert(false);\n },\n beginQuery: () => {\n assert(false);\n },\n endQuery: () => {},\n getQuery(handle, pname) {\n return this.getQueryObject(handle, pname);\n },\n // The WebGL1 extension uses getQueryObject rather then getQueryParameter\n getQueryParameter(handle, pname) {\n return this.getQueryObject(handle, pname);\n },\n getQueryObject: () => {}\n }\n};\n\nexport const WEBGL2_CONTEXT_OVERRIDES = {\n // Ensure readBuffer is a no-op\n readBuffer: (gl, originalFunc, attachment) => {\n if (isWebGL2(gl)) {\n originalFunc(attachment);\n } else {\n // assert(attachment !== GL_COLOR_ATTACHMENT0 && attachment !== GL_FRONT);\n }\n },\n // Override for getVertexAttrib that returns sane values for non-WebGL1 constants\n getVertexAttrib: (gl, originalFunc, location, pname) => {\n // const gl = this; // eslint-disable-line\n const {webgl2, ext} = getExtensionData(gl, ANGLE_instanced_arrays);\n\n let result;\n switch (pname) {\n // WebGL1 attributes will never be integer\n case GL.VERTEX_ATTRIB_ARRAY_INTEGER:\n result = !webgl2 ? false : undefined;\n break;\n // if instancing is not available, return 0 meaning divisor has not been set\n case GL.VERTEX_ATTRIB_ARRAY_DIVISOR:\n result = !webgl2 && !ext ? 0 : undefined;\n break;\n default:\n }\n\n return result !== undefined ? result : originalFunc(location, pname);\n },\n // Handle transform feedback and uniform block queries in WebGL1\n getProgramParameter: (gl, originalFunc, program, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.TRANSFORM_FEEDBACK_BUFFER_MODE:\n return GL.SEPARATE_ATTRIBS;\n case GL.TRANSFORM_FEEDBACK_VARYINGS:\n return 0;\n case GL.ACTIVE_UNIFORM_BLOCKS:\n return 0;\n default:\n }\n }\n return originalFunc(program, pname);\n },\n getInternalformatParameter: (gl, originalFunc, target, format, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.SAMPLES:\n return new Int32Array([0]);\n default:\n }\n }\n return gl.getInternalformatParameter(target, format, pname);\n },\n getTexParameter(gl, originalFunc, target, pname) {\n switch (pname) {\n case GL.TEXTURE_MAX_ANISOTROPY_EXT:\n const {extensions} = gl.luma;\n const ext = extensions[EXT_texture_filter_anisotropic];\n pname = (ext && ext.TEXTURE_MAX_ANISOTROPY_EXT) || GL.TEXTURE_MAX_ANISOTROPY_EXT;\n break;\n default:\n }\n return originalFunc(target, pname);\n },\n getParameter: getParameterPolyfill,\n hint(gl, originalFunc, pname, value) {\n // TODO - handle GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // switch (pname) {\n // case GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // }\n return originalFunc(pname, value);\n }\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.REASONS = exports.originKeyExtractor = exports.capitalise = exports.SNACKBAR_INDENTS = exports.MESSAGES = exports.defaultIconVariant = exports.allClasses = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _SvgIcon = require('@material-ui/core/SvgIcon');\n\nvar _SvgIcon2 = _interopRequireDefault(_SvgIcon);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CheckIcon = function CheckIcon(props) {\n return _react2.default.createElement(\n _SvgIcon2.default,\n props,\n _react2.default.createElement('path', { d: 'M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z'\n })\n );\n};\n\nvar WarningIcon = function WarningIcon(props) {\n return _react2.default.createElement(\n _SvgIcon2.default,\n props,\n _react2.default.createElement('path', { d: 'M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z' })\n );\n};\n\nvar ErrorIcon = function ErrorIcon(props) {\n return _react2.default.createElement(\n _SvgIcon2.default,\n props,\n _react2.default.createElement('path', { d: 'M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41, 20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53, 2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16, 14.59L13.41,12L16,9.41L14.59,8Z'\n })\n );\n};\n\nvar InfoIcon = function InfoIcon(props) {\n return _react2.default.createElement(\n _SvgIcon2.default,\n props,\n _react2.default.createElement('path', { d: 'M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z'\n })\n );\n};\n\nvar allClasses = exports.allClasses = {\n mui: {\n root: {},\n anchorOriginTopCenter: {},\n anchorOriginBottomCenter: {},\n anchorOriginTopRight: {},\n anchorOriginBottomRight: {},\n anchorOriginTopLeft: {},\n anchorOriginBottomLeft: {}\n },\n container: {\n containerAnchorOriginTopCenter: {},\n containerAnchorOriginBottomCenter: {},\n containerAnchorOriginTopRight: {},\n containerAnchorOriginBottomRight: {},\n containerAnchorOriginTopLeft: {},\n containerAnchorOriginBottomLeft: {}\n }\n};\n\nvar iconStyles = {\n opacity: 0.9,\n fontSize: 20,\n marginRight: 8\n};\n\nvar defaultIconVariant = exports.defaultIconVariant = {\n success: _react2.default.createElement(CheckIcon, { style: iconStyles }),\n warning: _react2.default.createElement(WarningIcon, { style: iconStyles }),\n error: _react2.default.createElement(ErrorIcon, { style: iconStyles }),\n info: _react2.default.createElement(InfoIcon, { style: iconStyles })\n};\n\nvar MESSAGES = exports.MESSAGES = {\n NO_PERSIST_ALL: 'WARNING - notistack: Reached maxSnack while all enqueued snackbars have \\'persist\\' flag. Notistack will dismiss the oldest snackbar anyway to allow other ones in the queue to be presented.',\n NO_CHILDREN_OPTION: 'WARNING - notistack: \\'children\\' option in enqueueSnackbar has been deprecated and renamed to \\'content\\', and it will be removed in the next major release.'\n};\n\nvar SNACKBAR_INDENTS = exports.SNACKBAR_INDENTS = {\n view: { default: 20, dense: 4 },\n snackbar: { default: 6, dense: 2 }\n};\n\nvar capitalise = exports.capitalise = function capitalise(text) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\n\nvar originKeyExtractor = exports.originKeyExtractor = function originKeyExtractor(anchor) {\n return '' + capitalise(anchor.vertical) + capitalise(anchor.horizontal);\n};\n\nvar REASONS = exports.REASONS = {\n CLICKAWAY: 'clickaway',\n MAXSNACK: 'maxsnack'\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// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<HashRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n return <a {...props} />;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Link> outside a <Router>\");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return <Link {...props} />;\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/**\n * Common environment setup\n */\nimport {window, process, isBrowser} from './globals';\n\nexport default function getHiResTimestamp() {\n let timestamp;\n // Get best timer available.\n if (isBrowser && window.performance) {\n timestamp = window.performance.now();\n } else if (process.hrtime) {\n const timeParts = process.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","function isEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a)) {\n // Special treatment for arrays: compare 1-level deep\n // This is to support equality of matrix/coordinate props\n const len = a.length;\n if (!b || b.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\n/**\n * Speed up consecutive function calls by caching the result of calls with identical input\n * https://en.wikipedia.org/wiki/Memoization\n * @param {function} compute - the function to be memoized\n */\nexport default function memoize(compute) {\n let cachedArgs = {};\n let cachedResult;\n\n return args => {\n for (const key in args) {\n if (!isEqual(args[key], cachedArgs[key])) {\n cachedResult = compute(args);\n cachedArgs = args;\n break;\n }\n }\n return cachedResult;\n };\n}\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","import {log} from '@luma.gl/gltools';\nimport {Stats} from 'probe.gl';\nimport {isBrowser, global} from 'probe.gl/env';\n\n// Version detection using babel plugin\n/* global __VERSION__ */\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nconst STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';\n// Assign luma.log.level in console to control logging: \\\n// 0: none, 1: minimal, 2: verbose, 3: attribute/uniforms, 4: gl logs\n// luma.log.break[], set to gl funcs, luma.log.profile[] set to model names`;\n\nclass StatsManager {\n constructor() {\n this.stats = new Map();\n }\n\n get(name) {\n if (!this.stats.has(name)) {\n this.stats.set(name, new Stats({id: name}));\n }\n\n return this.stats.get(name);\n }\n}\n\nconst lumaStats = new StatsManager();\n\nif (global.luma && global.luma.VERSION !== VERSION) {\n throw new Error(`luma.gl - multiple VERSIONs detected: ${global.luma.VERSION} vs ${VERSION}`);\n}\n\nif (!global.luma) {\n if (isBrowser()) {\n log.log(1, `luma.gl ${VERSION} - ${STARTUP_MESSAGE}`)();\n }\n\n global.luma = global.luma || {\n VERSION,\n version: VERSION,\n log,\n\n // A global stats object that various components can add information to\n // E.g. see webgl/resource.js\n stats: lumaStats,\n\n // Keep some luma globals in a sub-object\n // This allows us to dynamically detect if certain modules have been\n // included (such as IO and headless) and enable related functionality,\n // without unconditionally requiring and thus bundling big dependencies\n // into the app.\n globals: {\n modules: {},\n nodeIO: {}\n }\n };\n}\n\nexport {lumaStats};\nexport default global.luma;\n","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'loader assertion failed.');\n }\n}\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","// @flow\ntype MapboxStyle =\n | string\n | {\n toJS?: Function,\n layers: Array<any>\n };\n\nconst refProps = ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n\n// Prepare a map style object for diffing\n// If immutable - convert to plain object\n// Work around some issues in the styles that would fail Mapbox's diffing\nexport function normalizeStyle(style: ?MapboxStyle): ?MapboxStyle {\n if (!style) {\n return null;\n }\n if (typeof style === 'string') {\n return style;\n }\n if (style.toJS) {\n style = style.toJS();\n }\n const layerIndex = {};\n\n for (const layer of style.layers) {\n layerIndex[layer.id] = layer;\n }\n\n const layers = style.layers.map(layer => {\n const layerRef = layerIndex[layer.ref];\n let normalizedLayer = null;\n\n if ('interactive' in layer) {\n normalizedLayer = {...layer};\n // Breaks style diffing :(\n delete normalizedLayer.interactive;\n }\n\n // Style diffing doesn't work with refs so expand them out manually before diffing.\n if (layerRef) {\n normalizedLayer = normalizedLayer || {...layer};\n delete normalizedLayer.ref;\n // https://github.com/mapbox/mapbox-gl-js/blob/master/src/style-spec/deref.js\n for (const propName of refProps) {\n if (propName in layerRef) {\n normalizedLayer[propName] = layerRef[propName];\n }\n }\n }\n\n return normalizedLayer || layer;\n });\n\n // Do not mutate the style object provided by the user\n return {...style, layers};\n}\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","// @flow\nimport {equals} from '../math-utils';\nimport assert from '../assert';\nimport type {MapStateProps} from '../map-state';\n\nexport default class TransitionInterpolator {\n propNames: Array<string> = [];\n\n /**\n * Checks if two sets of props need transition in between\n * @param currentProps {object} - a list of viewport props\n * @param nextProps {object} - a list of viewport props\n * @returns {bool} - true if two props are equivalent\n */\n arePropsEqual(currentProps: any, nextProps: any): boolean {\n for (const key of this.propNames || []) {\n if (!equals(currentProps[key], nextProps[key])) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Called before transition starts to validate/pre-process start and end props\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Object} {start, end} - start and end props to be passed\n * to `interpolateProps`\n */\n initializeProps(\n startProps: any,\n endProps: any\n ): {\n start: any,\n end: any\n } {\n return {start: startProps, end: endProps};\n }\n\n /**\n * Returns viewport props in transition\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @param t {number} - a time factor between [0, 1]\n * @returns {object} - a list of interpolated viewport props\n */\n interpolateProps(startProps: any, endProps: any, t: number): any {\n assert(false, 'interpolateProps is not implemented');\n }\n\n /**\n * Returns transition duration\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Number} - transition duration in milliseconds\n */\n getDuration(startProps: MapStateProps, endProps: MapStateProps) {\n return endProps.transitionDuration;\n }\n}\n","// @flow\n\nconst WRAPPED_ANGULAR_PROPS = {\n longitude: 1,\n bearing: 1\n};\n\nexport function mod(value: number, divisor: number): number {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\n\nexport function isValid(prop: any): boolean {\n return Number.isFinite(prop) || Array.isArray(prop);\n}\n\nfunction isWrappedAngularProp(propName: string): boolean {\n return propName in WRAPPED_ANGULAR_PROPS;\n}\n\nexport function getEndValueByShortestPath(\n propName: string,\n startValue: number,\n endValue: number\n): number {\n if (isWrappedAngularProp(propName) && Math.abs(endValue - startValue) > 180) {\n endValue = endValue < 0 ? endValue + 360 : endValue - 360;\n }\n return endValue;\n}\n","// @flow\nimport assert from '../assert';\nimport TransitionInterpolator from './transition-interpolator';\n\nimport {flyToViewport, getFlyToDuration} from 'viewport-mercator-project';\nimport {isValid, getEndValueByShortestPath} from './transition-utils';\nimport {lerp} from '../math-utils';\n\nimport type {MapStateProps} from '../map-state';\n\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\nconst REQUIRED_PROPS = ['latitude', 'longitude', 'zoom', 'width', 'height'];\nconst LINEARLY_INTERPOLATED_PROPS = ['bearing', 'pitch'];\nconst DEFAULT_OPTS = {\n speed: 1.2,\n curve: 1.414\n // screenSpeed and maxDuration are used only if specified\n};\n\ntype FlyToInterpolatorProps = {\n curve?: number,\n speed?: number,\n screenSpeed?: number,\n maxDuraiton?: number\n};\n\n/**\n * This class adapts mapbox-gl-js Map#flyTo animation so it can be used in\n * react/redux architecture.\n * mapbox-gl-js flyTo : https://www.mapbox.com/mapbox-gl-js/api/#map#flyto.\n * It implements “Smooth and efficient zooming and panning.†algorithm by\n * \"Jarke J. van Wijk and Wim A.A. Nuij\"\n */\nexport default class ViewportFlyToInterpolator extends TransitionInterpolator {\n speed: number;\n propNames = VIEWPORT_TRANSITION_PROPS;\n\n /**\n * @param props {Object}\n - `props.curve` (Number, optional, default: 1.414) - The zooming \"curve\" that will occur along the flight path.\n - `props.speed` (Number, optional, default: 1.2) - The average speed of the animation defined in relation to `options.curve`, it linearly affects the duration, higher speed returns smaller durations and vice versa.\n - `props.screenSpeed` (Number, optional) - The average speed of the animation measured in screenfuls per second. Similar to `opts.speed` it linearly affects the duration, when specified `opts.speed` is ignored.\n - `props.maxDuration` (Number, optional) - Maximum duration in milliseconds, if calculated duration exceeds this value, `0` is returned.\n */\n constructor(props: FlyToInterpolatorProps = {}) {\n super();\n\n this.props = Object.assign({}, DEFAULT_OPTS, props);\n }\n\n props: FlyToInterpolatorProps;\n\n initializeProps(startProps: MapStateProps, endProps: MapStateProps) {\n const startViewportProps = {};\n const endViewportProps = {};\n\n // Check minimum required props\n for (const key of REQUIRED_PROPS) {\n const startValue = startProps[key];\n const endValue = endProps[key];\n assert(isValid(startValue) && isValid(endValue), `${key} must be supplied for transition`);\n startViewportProps[key] = startValue;\n endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue);\n }\n\n for (const key of LINEARLY_INTERPOLATED_PROPS) {\n const startValue = startProps[key] || 0;\n const endValue = endProps[key] || 0;\n startViewportProps[key] = startValue;\n endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue);\n }\n\n return {\n start: startViewportProps,\n end: endViewportProps\n };\n }\n\n interpolateProps(startProps: MapStateProps, endProps: MapStateProps, t: number) {\n const viewport = flyToViewport(startProps, endProps, t, this.props);\n\n // Linearly interpolate 'bearing' and 'pitch' if exist.\n for (const key of LINEARLY_INTERPOLATED_PROPS) {\n viewport[key] = lerp(startProps[key], endProps[key], t);\n }\n\n return viewport;\n }\n\n // computes the transition duration\n getDuration(startProps: MapStateProps, endProps: MapStateProps) {\n let {transitionDuration} = endProps;\n if (transitionDuration === 'auto') {\n // auto calculate duration based on start and end props\n transitionDuration = getFlyToDuration(startProps, endProps, this.props);\n }\n return transitionDuration;\n }\n}\n","// @flow\nimport WebMercatorViewport from 'viewport-mercator-project';\n\nimport assert from '../assert';\nimport TransitionInterpolator from './transition-interpolator';\n\nimport {isValid, getEndValueByShortestPath} from './transition-utils';\nimport {lerp} from '../math-utils';\n\nimport type {MapStateProps} from '../map-state';\n\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\n\ntype TransitionProps = MapStateProps & {\n around: Array<number>,\n aroundLngLat: Array<number>\n};\n\n/**\n * Performs linear interpolation of two viewports.\n */\nexport default class LinearInterpolator extends TransitionInterpolator {\n /**\n * @param opts {Object}\n * - opts.transitionProps {Array}] - list of props to apply linear transition to.\n * - opts.around {Array} - a screen point to zoom/rotate around\n */\n constructor(\n opts: {\n transitionProps?: Array<string>,\n around?: Array<number>\n } = {}\n ) {\n super();\n\n if (Array.isArray(opts)) {\n // backward compatibility\n opts = {transitionProps: opts};\n }\n\n this.propNames = opts.transitionProps || VIEWPORT_TRANSITION_PROPS;\n if (opts.around) {\n this.around = opts.around;\n }\n }\n\n around: Array<number>;\n\n initializeProps(startProps: MapStateProps, endProps: MapStateProps) {\n const startViewportProps = {};\n const endViewportProps = {};\n\n if (this.around) {\n // anchor point in origin screen coordinates\n startViewportProps.around = this.around;\n // anchor point in spherical coordinates\n const aroundLngLat = new WebMercatorViewport(startProps).unproject(this.around);\n Object.assign(endViewportProps, endProps, {\n // anchor point in destination screen coordinates\n around: new WebMercatorViewport(endProps).project(aroundLngLat),\n aroundLngLat\n });\n }\n\n for (const key of this.propNames) {\n const startValue = startProps[key];\n const endValue = endProps[key];\n assert(isValid(startValue) && isValid(endValue), `${key} must be supplied for transition`);\n\n startViewportProps[key] = startValue;\n endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue);\n }\n\n return {\n start: startViewportProps,\n end: endViewportProps\n };\n }\n\n interpolateProps(startProps: TransitionProps, endProps: TransitionProps, t: number) {\n const viewport = {};\n for (const key of this.propNames) {\n viewport[key] = lerp(startProps[key], endProps[key], t);\n }\n\n if (endProps.around) {\n // zoom around provided point\n const [longitude, latitude] = new WebMercatorViewport(\n Object.assign({}, endProps, viewport)\n ).getMapCenterByLngLatPosition({\n lngLat: endProps.aroundLngLat,\n // anchor point in current screen coordinates\n pos: lerp(startProps.around, endProps.around, t)\n });\n viewport.longitude = longitude;\n viewport.latitude = latitude;\n }\n\n return viewport;\n }\n}\n","// @flow\nimport WebMercatorViewport, {normalizeViewportProps} from 'viewport-mercator-project';\nimport {TransitionInterpolator} from './transition';\nimport {clamp} from './math-utils';\nimport assert from './assert';\n\n// MAPBOX LIMITS\nexport const MAPBOX_LIMITS = {\n minZoom: 0,\n maxZoom: 24,\n minPitch: 0,\n maxPitch: 60\n};\n\nconst DEFAULT_STATE = {\n pitch: 0,\n bearing: 0,\n altitude: 1.5\n};\n\ntype ViewportProps = {\n width: number,\n height: number,\n latitude: number,\n longitude: number,\n zoom: number,\n bearing: number,\n pitch: number,\n altitude: number,\n maxZoom: number,\n minZoom: number,\n maxPitch: number,\n minPitch: number,\n transitionDuration: number,\n transitionEasing: number => number,\n transitionInterpolator: TransitionInterpolator,\n transitionInterruption: number\n};\n\ntype InteractiveState = {\n startPanLngLat?: Array<number>,\n startZoomLngLat?: Array<number>,\n startBearing?: number,\n startPitch?: number,\n startZoom?: number\n};\n\nexport type MapStateProps = ViewportProps &\n InteractiveState & {\n altitude?: number,\n maxZoom?: number,\n minZoom?: number,\n maxPitch?: number,\n minPitch?: number\n };\n\nexport default class MapState {\n constructor({\n /** Mapbox viewport properties */\n /** The width of the viewport */\n width,\n /** The height of the viewport */\n height,\n /** The latitude at the center of the viewport */\n latitude,\n /** The longitude at the center of the viewport */\n longitude,\n /** The tile zoom level of the map. */\n zoom,\n /** The bearing of the viewport in degrees */\n bearing = DEFAULT_STATE.bearing,\n /** The pitch of the viewport in degrees */\n pitch = DEFAULT_STATE.pitch,\n /**\n * Specify the altitude of the viewport camera\n * Unit: map heights, default 1.5\n * Non-public API, see https://github.com/mapbox/mapbox-gl-js/issues/1137\n */\n altitude = DEFAULT_STATE.altitude,\n\n /** Viewport constraints */\n maxZoom = MAPBOX_LIMITS.maxZoom,\n minZoom = MAPBOX_LIMITS.minZoom,\n maxPitch = MAPBOX_LIMITS.maxPitch,\n minPitch = MAPBOX_LIMITS.minPitch,\n\n /** Transition props */\n transitionDuration,\n transitionEasing,\n transitionInterpolator,\n transitionInterruption,\n\n /** Interaction states, required to calculate change during transform */\n /* The point on map being grabbed when the operation first started */\n startPanLngLat,\n /* Center of the zoom when the operation first started */\n startZoomLngLat,\n /** Bearing when current perspective rotate operation started */\n startBearing,\n /** Pitch when current perspective rotate operation started */\n startPitch,\n /** Zoom when current zoom operation started */\n startZoom\n }: MapStateProps) {\n assert(Number.isFinite(width), '`width` must be supplied');\n assert(Number.isFinite(height), '`height` must be supplied');\n assert(Number.isFinite(longitude), '`longitude` must be supplied');\n assert(Number.isFinite(latitude), '`latitude` must be supplied');\n assert(Number.isFinite(zoom), '`zoom` must be supplied');\n\n this._viewportProps = this._applyConstraints({\n width,\n height,\n latitude,\n longitude,\n zoom,\n bearing,\n pitch,\n altitude,\n maxZoom,\n minZoom,\n maxPitch,\n minPitch,\n transitionDuration,\n transitionEasing,\n transitionInterpolator,\n transitionInterruption\n });\n\n this._interactiveState = {\n startPanLngLat,\n startZoomLngLat,\n startBearing,\n startPitch,\n startZoom\n };\n }\n\n _viewportProps: ViewportProps;\n _interactiveState: InteractiveState;\n\n /* Public API */\n\n getViewportProps() {\n return this._viewportProps;\n }\n\n getInteractiveState() {\n return this._interactiveState;\n }\n\n /**\n * Start panning\n * @param {[Number, Number]} pos - position on screen where the pointer grabs\n */\n panStart({pos}: {pos: Array<number>}) {\n return this._getUpdatedMapState({\n startPanLngLat: this._unproject(pos)\n });\n }\n\n /**\n * Pan\n * @param {[Number, Number]} pos - position on screen where the pointer is\n * @param {[Number, Number], optional} startPos - where the pointer grabbed at\n * the start of the operation. Must be supplied of `panStart()` was not called\n */\n pan({pos, startPos}: {pos: Array<number>, startPos?: Array<number>}) {\n const startPanLngLat = this._interactiveState.startPanLngLat || this._unproject(startPos);\n\n if (!startPanLngLat) {\n return this;\n }\n\n const [longitude, latitude] = this._calculateNewLngLat({\n startPanLngLat,\n pos\n });\n\n return this._getUpdatedMapState({\n longitude,\n latitude\n });\n }\n\n /**\n * End panning\n * Must call if `panStart()` was called\n */\n panEnd() {\n return this._getUpdatedMapState({\n startPanLngLat: null\n });\n }\n\n /**\n * Start rotating\n * @param {[Number, Number]} pos - position on screen where the center is\n */\n rotateStart({pos}: {pos: Array<number>}) {\n return this._getUpdatedMapState({\n startBearing: this._viewportProps.bearing,\n startPitch: this._viewportProps.pitch\n });\n }\n\n /**\n * Rotate\n * @param {Number} deltaScaleX - a number between [-1, 1] specifying the\n * change to bearing.\n * @param {Number} deltaScaleY - a number between [-1, 1] specifying the\n * change to pitch. -1 sets to minPitch and 1 sets to maxPitch.\n */\n rotate({deltaScaleX = 0, deltaScaleY = 0}: {deltaScaleX?: number, deltaScaleY?: number}) {\n const {startBearing, startPitch} = this._interactiveState;\n\n if (!Number.isFinite(startBearing) || !Number.isFinite(startPitch)) {\n return this;\n }\n\n const {pitch, bearing} = this._calculateNewPitchAndBearing({\n deltaScaleX,\n deltaScaleY,\n startBearing: startBearing || 0,\n startPitch: startPitch || 0\n });\n\n return this._getUpdatedMapState({\n bearing,\n pitch\n });\n }\n\n /**\n * End rotating\n * Must call if `rotateStart()` was called\n */\n rotateEnd() {\n return this._getUpdatedMapState({\n startBearing: null,\n startPitch: null\n });\n }\n\n /**\n * Start zooming\n * @param {[Number, Number]} pos - position on screen where the center is\n */\n zoomStart({pos}: {pos: Array<number>}) {\n return this._getUpdatedMapState({\n startZoomLngLat: this._unproject(pos),\n startZoom: this._viewportProps.zoom\n });\n }\n\n /**\n * Zoom\n * @param {[Number, Number]} pos - position on screen where the current center is\n * @param {[Number, Number]} startPos - the center position at\n * the start of the operation. Must be supplied of `zoomStart()` was not called\n * @param {Number} scale - a number between [0, 1] specifying the accumulated\n * relative scale.\n */\n zoom({pos, startPos, scale}: {pos: Array<number>, startPos?: Array<number>, scale: number}) {\n assert(scale > 0, '`scale` must be a positive number');\n\n // Make sure we zoom around the current mouse position rather than map center\n let {startZoom, startZoomLngLat} = this._interactiveState;\n\n if (!Number.isFinite(startZoom)) {\n // We have two modes of zoom:\n // scroll zoom that are discrete events (transform from the current zoom level),\n // and pinch zoom that are continuous events (transform from the zoom level when\n // pinch started).\n // If startZoom state is defined, then use the startZoom state;\n // otherwise assume discrete zooming\n startZoom = this._viewportProps.zoom;\n startZoomLngLat = this._unproject(startPos) || this._unproject(pos);\n }\n\n // take the start lnglat and put it where the mouse is down.\n assert(\n startZoomLngLat,\n '`startZoomLngLat` prop is required ' +\n 'for zoom behavior to calculate where to position the map.'\n );\n\n const zoom = this._calculateNewZoom({scale, startZoom: startZoom || 0});\n\n const zoomedViewport = new WebMercatorViewport(Object.assign({}, this._viewportProps, {zoom}));\n // $FlowFixMe\n const [longitude, latitude] = zoomedViewport.getMapCenterByLngLatPosition({\n lngLat: startZoomLngLat,\n pos\n });\n\n return this._getUpdatedMapState({\n zoom,\n longitude,\n latitude\n });\n }\n\n /**\n * End zooming\n * Must call if `zoomStart()` was called\n */\n zoomEnd() {\n return this._getUpdatedMapState({\n startZoomLngLat: null,\n startZoom: null\n });\n }\n\n /* Private methods */\n\n _getUpdatedMapState(newProps: any): MapState {\n // Update _viewportProps\n return new MapState(Object.assign({}, this._viewportProps, this._interactiveState, newProps));\n }\n\n // Apply any constraints (mathematical or defined by _viewportProps) to map state\n _applyConstraints(props: ViewportProps): ViewportProps {\n // Ensure zoom is within specified range\n const {maxZoom, minZoom, zoom} = props;\n props.zoom = clamp(zoom, minZoom, maxZoom);\n\n // Ensure pitch is within specified range\n const {maxPitch, minPitch, pitch} = props;\n props.pitch = clamp(pitch, minPitch, maxPitch);\n\n Object.assign(props, normalizeViewportProps(props));\n\n return props;\n }\n\n _unproject(pos: ?Array<number>): ?Array<number> {\n const viewport = new WebMercatorViewport(this._viewportProps);\n return pos && viewport.unproject(pos);\n }\n\n // Calculate a new lnglat based on pixel dragging position\n _calculateNewLngLat({\n startPanLngLat,\n pos\n }: {\n startPanLngLat: Array<number>,\n pos: Array<number>\n }): Array<number> {\n const viewport = new WebMercatorViewport(this._viewportProps);\n return viewport.getMapCenterByLngLatPosition({\n lngLat: startPanLngLat,\n pos\n });\n }\n\n // Calculates new zoom\n _calculateNewZoom({scale, startZoom}: {scale: number, startZoom: number}): number {\n const {maxZoom, minZoom} = this._viewportProps;\n const zoom = startZoom + Math.log2(scale);\n return clamp(zoom, minZoom, maxZoom);\n }\n\n // Calculates a new pitch and bearing from a position (coming from an event)\n _calculateNewPitchAndBearing({\n deltaScaleX,\n deltaScaleY,\n startBearing,\n startPitch\n }: {\n deltaScaleX: number,\n deltaScaleY: number,\n startBearing: number,\n startPitch: number\n }) {\n // clamp deltaScaleY to [-1, 1] so that rotation is constrained between minPitch and maxPitch.\n // deltaScaleX does not need to be clamped as bearing does not have constraints.\n deltaScaleY = clamp(deltaScaleY, -1, 1);\n\n const {minPitch, maxPitch} = this._viewportProps;\n\n const bearing = startBearing + 180 * deltaScaleX;\n let pitch = startPitch;\n if (deltaScaleY > 0) {\n // Gradually increase pitch\n pitch = startPitch + deltaScaleY * (maxPitch - startPitch);\n } else if (deltaScaleY < 0) {\n // Gradually decrease pitch\n pitch = startPitch - deltaScaleY * (minPitch - startPitch);\n }\n\n return {\n pitch,\n bearing\n };\n }\n}\n","// @flow\nimport {MAPBOX_LIMITS} from './map-state';\n\nimport type {ViewState} from '../mapbox/mapbox';\n\nfunction decapitalize(s: string): string {\n return s[0].toLowerCase() + s.slice(1);\n}\n\n// Checks a visibilityConstraints object to see if the map should be displayed\n// Returns true if props are within the constraints\nexport function checkVisibilityConstraints(props: ViewState, constraints: any = MAPBOX_LIMITS) {\n for (const constraintName in constraints) {\n // in the format of min* or max*\n const type = constraintName.slice(0, 3);\n const propName = decapitalize(constraintName.slice(3));\n\n if (type === 'min' && props[propName] < constraints[constraintName]) {\n return false;\n }\n if (type === 'max' && props[propName] > constraints[constraintName]) {\n return false;\n }\n }\n return true;\n}\n","// @flow\n\nimport {createContext} from 'react';\n\nimport type {WebMercatorViewport} from 'viewport-mercator-project';\n\nexport type MapContextProps = {\n viewport: ?WebMercatorViewport,\n\n map: any,\n mapContainer: null | HTMLDivElement,\n\n onViewStateChange: ?Function,\n onViewportChange: ?Function,\n\n isDragging: boolean,\n eventManager: any\n};\n\nexport default createContext<MapContextProps>({\n /* Map context */\n\n // Viewport\n viewport: null,\n // mapboxgl.Map instance\n map: null,\n // DOM element that contains the map\n mapContainer: null,\n\n /* Interactive-only context */\n onViewportChange: null,\n onViewStateChange: null,\n\n // EventManager instance\n eventManager: null,\n // whether the map is being dragged\n isDragging: false\n});\n","// @flow\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport React, {PureComponent, createRef} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {normalizeStyle} from '../utils/style-utils';\n\nimport WebMercatorViewport from 'viewport-mercator-project';\nimport AutoSizer from 'react-virtualized-auto-sizer';\n\nimport Mapbox from '../mapbox/mapbox';\nimport mapboxgl from '../utils/mapboxgl';\nimport {checkVisibilityConstraints} from '../utils/map-constraints';\nimport {MAPBOX_LIMITS} from '../utils/map-state';\nimport MapContext from './map-context';\n\nimport type {ViewState} from '../mapbox/mapbox';\n\n/* eslint-disable max-len */\nconst TOKEN_DOC_URL =\n 'https://uber.github.io/react-map-gl/#/Documentation/getting-started/about-mapbox-tokens';\nconst NO_TOKEN_WARNING = 'A valid API access token is required to use Mapbox data';\n/* eslint-disable max-len */\n\nfunction noop() {}\n\nconst UNAUTHORIZED_ERROR_CODE = 401;\n\nconst CONTAINER_STYLE = {\n position: 'absolute',\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n};\n\nconst propTypes = Object.assign({}, Mapbox.propTypes, {\n /** The dimensions of the map **/\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** Callback when map size changes **/\n onResize: PropTypes.func,\n /** There are known issues with style diffing. As stopgap, add option to prevent style diffing. */\n preventStyleDiffing: PropTypes.bool,\n /** Hide invalid token warning even if request fails */\n disableTokenWarning: PropTypes.bool,\n /** Whether the map is visible */\n visible: PropTypes.bool,\n /** Custom class name for the map */\n className: PropTypes.string,\n /** Custom CSS for the container */\n style: PropTypes.object,\n\n /** Advanced features */\n // Contraints for displaying the map. If not met, then the map is hidden.\n // Experimental! May be changed in minor version updates.\n visibilityConstraints: PropTypes.object\n});\n\nconst defaultProps = Object.assign({}, Mapbox.defaultProps, {\n preventStyleDiffing: false,\n disableTokenWarning: false,\n visible: true,\n onResize: noop,\n className: '',\n style: null,\n visibilityConstraints: MAPBOX_LIMITS\n});\n\nexport type StaticMapProps = {\n gl?: any,\n width: number | string,\n height: number | string,\n preventStyleDiffing: boolean,\n disableTokenWarning: boolean,\n visible: boolean,\n className: string,\n style: any,\n visibilityConstraints: any,\n children?: any,\n onLoad: Function,\n onError: Function,\n onResize: Function,\n mapStyle: any,\n visible: boolean,\n viewState?: ViewState,\n longitude: number,\n latitude: number,\n zoom: number,\n bearing: number,\n pitch: number,\n altitude?: number\n};\n\ntype State = {\n accessTokenInvalid: boolean\n};\n\nexport default class StaticMap extends PureComponent<StaticMapProps, State> {\n static supported() {\n return mapboxgl && mapboxgl.supported();\n }\n\n static propTypes: any = propTypes;\n static defaultProps: StaticMapProps = defaultProps;\n\n state: State = {\n accessTokenInvalid: false\n };\n\n componentDidMount() {\n if (!StaticMap.supported()) {\n return;\n }\n const {mapStyle} = this.props;\n\n this._mapbox = new Mapbox(\n // $FlowFixMe\n Object.assign({}, this.props, {\n mapboxgl, // Handle to mapbox-gl library\n width: this._width,\n height: this._height,\n container: this._mapboxMapRef.current,\n onError: this._mapboxMapError,\n mapStyle: normalizeStyle(mapStyle)\n })\n );\n this._map = this._mapbox.getMap();\n }\n\n componentDidUpdate(prevProps: StaticMapProps) {\n if (this._mapbox) {\n this._updateMapStyle(prevProps, this.props);\n this._updateMapProps(this.props);\n }\n }\n\n componentWillUnmount() {\n if (this._mapbox) {\n this._mapbox.finalize();\n this._mapbox = null;\n this._map = null;\n }\n }\n\n _mapbox: any = null;\n _map: any = null;\n _mapboxMapRef: {current: null | HTMLDivElement} = createRef();\n _mapContainerRef: {current: null | HTMLDivElement} = createRef();\n _queryParams: any = {};\n _width: number = 0;\n _height: number = 0;\n\n // External apps can access map this way\n getMap = () => {\n return this._map;\n };\n\n /** Uses Mapbox's\n * queryRenderedFeatures API to find features at point or in a bounding box.\n * https://www.mapbox.com/mapbox-gl-js/api/#Map#queryRenderedFeatures\n * To query only some of the layers, set the `interactive` property in the\n * layer style to `true`.\n * @param {[Number, Number]|[[Number, Number], [Number, Number]]} geometry -\n * Point or an array of two points defining the bounding box\n * @param {Object} options - query options\n */\n queryRenderedFeatures = (geometry: any, options: any = {}) => {\n return this._map.queryRenderedFeatures(geometry, options);\n };\n\n // Note: needs to be called after render (e.g. in componentDidUpdate)\n _updateMapSize(width: number, height: number) {\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n this._updateMapProps(this.props);\n }\n }\n\n _updateMapStyle(oldProps: StaticMapProps, newProps: StaticMapProps) {\n const mapStyle = newProps.mapStyle;\n const oldMapStyle = oldProps.mapStyle;\n if (mapStyle !== oldMapStyle && mapStyle) {\n this._map.setStyle(normalizeStyle(mapStyle), {\n diff: !this.props.preventStyleDiffing\n });\n }\n }\n\n _updateMapProps(props: StaticMapProps) {\n if (!this._mapbox) {\n return;\n }\n this._mapbox.setProps(\n Object.assign({}, props, {\n width: this._width,\n height: this._height\n })\n );\n }\n\n // Handle map error\n _mapboxMapError = (evt: {\n error?: {\n message: string,\n status: number\n },\n status: number\n }) => {\n const statusCode = (evt.error && evt.error.status) || evt.status;\n if (statusCode === UNAUTHORIZED_ERROR_CODE && !this.state.accessTokenInvalid) {\n // Mapbox throws unauthorized error - invalid token\n console.error(NO_TOKEN_WARNING); // eslint-disable-line\n this.setState({accessTokenInvalid: true});\n }\n this.props.onError(evt);\n };\n\n _renderNoTokenWarning() {\n if (this.state.accessTokenInvalid && !this.props.disableTokenWarning) {\n const style = {\n position: 'absolute',\n left: 0,\n top: 0\n };\n return (\n <div key=\"warning\" id=\"no-token-warning\" style={style}>\n <h3 key=\"header\">NO_TOKEN_WARNING</h3>\n <div key=\"text\">For information on setting up your basemap, read</div>\n <a key=\"link\" href={TOKEN_DOC_URL}>\n Note on Map Tokens\n </a>\n </div>\n );\n }\n\n return null;\n }\n\n _renderOverlays(dimensions: {width?: number, height?: number}) {\n const {width = Number(this.props.width), height = Number(this.props.height)} = dimensions;\n this._updateMapSize(width, height);\n\n return (\n <MapContext.Consumer>\n {interactiveContext => {\n const context = {\n ...interactiveContext,\n // $FlowFixMe\n viewport: new WebMercatorViewport({\n ...this.props,\n ...this.props.viewState,\n width,\n height\n }),\n map: this._map,\n mapContainer: interactiveContext.mapContainer || this._mapContainerRef.current\n };\n return (\n <MapContext.Provider value={context}>\n <div key=\"map-overlays\" className=\"overlays\" style={CONTAINER_STYLE}>\n {this.props.children}\n </div>\n </MapContext.Provider>\n );\n }}\n </MapContext.Consumer>\n );\n }\n\n render() {\n const {className, width, height, style, visibilityConstraints} = this.props;\n const mapContainerStyle = Object.assign({position: 'relative'}, style, {\n width,\n height\n });\n\n const visible =\n this.props.visible &&\n checkVisibilityConstraints(this.props.viewState || this.props, visibilityConstraints);\n\n const mapStyle = Object.assign({}, CONTAINER_STYLE, {\n visibility: visible ? 'inherit' : 'hidden'\n });\n\n return (\n <div key=\"map-container\" style={mapContainerStyle} ref={this._mapContainerRef}>\n <div key=\"map-mapbox\" ref={this._mapboxMapRef} style={mapStyle} className={className} />\n {/* AutoSizer is a pure component and does not rerender when map props change */}\n {/* rebind the callback so that it's triggered every render pass */}\n <AutoSizer\n key=\"autosizer\"\n disableWidth={Number.isFinite(width)}\n disableHeight={Number.isFinite(height)}\n onResize={this.props.onResize}\n >\n {this._renderOverlays.bind(this)}\n </AutoSizer>\n {this._renderNoTokenWarning()}\n </div>\n );\n }\n}\n","// @flow\n/* global requestAnimationFrame, cancelAnimationFrame */\nimport assert from './assert';\nimport {TransitionInterpolator, LinearInterpolator} from './transition';\nimport MapState from './map-state';\n\nimport type {MapStateProps} from './map-state';\n\nconst noop = () => {};\n\n// crops the old easing function from x0 to 1 where x0 is the interruption point\n// returns a new easing function with domain [0, 1] and range [0, 1]\nexport function cropEasingFunction(easing: number => number, x0: number): number => number {\n const y0 = easing(x0);\n return (t: number) => (1 / (1 - y0)) * (easing(t * (1 - x0) + x0) - y0);\n}\n\nexport const TRANSITION_EVENTS = {\n BREAK: 1,\n SNAP_TO_END: 2,\n IGNORE: 3,\n UPDATE: 4\n};\n\nconst DEFAULT_PROPS = {\n transitionDuration: 0,\n transitionEasing: (t: number) => t,\n transitionInterpolator: new LinearInterpolator(),\n transitionInterruption: TRANSITION_EVENTS.BREAK,\n onTransitionStart: noop,\n onTransitionInterrupt: noop,\n onTransitionEnd: noop,\n onViewportChange: noop,\n onStateChange: noop\n};\n\nexport type ViewportProps = MapStateProps & {\n onTransitionStart: Function,\n onTransitionInterrupt: Function,\n onTransitionEnd: Function,\n onViewportChange: Function,\n onStateChange: Function\n};\n\ntype TransitionState = {\n propsInTransition: any,\n interactionState: any,\n startProps: MapStateProps,\n endProps: MapStateProps,\n\n duration: number,\n easing: number => number,\n interpolator: TransitionInterpolator,\n interruption: number,\n\n startTime: number\n};\n\nexport default class TransitionManager {\n static defaultProps = DEFAULT_PROPS;\n\n constructor(props?: ViewportProps, getTime: Function) {\n if (props) {\n this.props = props;\n }\n this.time = getTime || Date.now;\n }\n\n props: ViewportProps;\n state: TransitionState;\n time: () => number;\n\n _animationFrame: ?AnimationFrameID = null;\n\n // Returns current transitioned viewport.\n getViewportInTransition() {\n return this._animationFrame ? this.state.propsInTransition : null;\n }\n\n // Process the viewport change, either ignore or trigger a new transiton.\n // Return true if a new transition is triggered, false otherwise.\n processViewportChange(nextProps: ViewportProps) {\n const currentProps = this.props;\n // Set this.props here as '_triggerTransition' calls '_updateViewport' that uses this.props.\n this.props = nextProps;\n\n // NOTE: Be cautious re-ordering statements in this function.\n if (this._shouldIgnoreViewportChange(currentProps, nextProps)) {\n return false;\n }\n\n if (this._isTransitionEnabled(nextProps)) {\n const startProps = Object.assign({}, currentProps);\n const endProps = Object.assign({}, nextProps);\n\n if (this._isTransitionInProgress()) {\n currentProps.onTransitionInterrupt();\n\n if (this.state.interruption === TRANSITION_EVENTS.SNAP_TO_END) {\n Object.assign(startProps, this.state.endProps);\n } else {\n Object.assign(startProps, this.state.propsInTransition);\n }\n\n if (this.state.interruption === TRANSITION_EVENTS.UPDATE) {\n const currentTime = this.time();\n const x0 = (currentTime - this.state.startTime) / this.state.duration;\n endProps.transitionDuration = this.state.duration - (currentTime - this.state.startTime);\n endProps.transitionEasing = cropEasingFunction(this.state.easing, x0);\n endProps.transitionInterpolator = startProps.transitionInterpolator;\n }\n }\n endProps.onTransitionStart();\n\n this._triggerTransition(startProps, endProps);\n\n return true;\n }\n\n if (this._isTransitionInProgress()) {\n currentProps.onTransitionInterrupt();\n this._endTransition();\n }\n\n return false;\n }\n\n // Helper methods\n\n _isTransitionInProgress(): boolean {\n return Boolean(this._animationFrame);\n }\n\n _isTransitionEnabled(props: ViewportProps): boolean {\n const {transitionDuration, transitionInterpolator} = props;\n return (\n (transitionDuration > 0 || transitionDuration === 'auto') && Boolean(transitionInterpolator)\n );\n }\n\n _isUpdateDueToCurrentTransition(props: ViewportProps): boolean {\n if (this.state.propsInTransition) {\n return this.state.interpolator.arePropsEqual(props, this.state.propsInTransition);\n }\n return false;\n }\n\n _shouldIgnoreViewportChange(currentProps: ViewportProps, nextProps: ViewportProps): boolean {\n if (!currentProps) {\n return true;\n }\n if (this._isTransitionInProgress()) {\n // Ignore update if it is requested to be ignored\n return (\n this.state.interruption === TRANSITION_EVENTS.IGNORE ||\n // Ignore update if it is due to current active transition.\n this._isUpdateDueToCurrentTransition(nextProps)\n );\n }\n if (this._isTransitionEnabled(nextProps)) {\n // Ignore if none of the viewport props changed.\n return nextProps.transitionInterpolator.arePropsEqual(currentProps, nextProps);\n }\n\n return true;\n }\n\n _triggerTransition(startProps: ViewportProps, endProps: ViewportProps) {\n assert(this._isTransitionEnabled(endProps), 'Transition is not enabled');\n\n if (this._animationFrame) {\n cancelAnimationFrame(this._animationFrame);\n }\n\n // update transitionDuration for 'auto' mode\n const {transitionInterpolator} = endProps;\n const duration = transitionInterpolator.getDuration\n ? transitionInterpolator.getDuration(startProps, endProps)\n : endProps.transitionDuration;\n\n const initialProps = endProps.transitionInterpolator.initializeProps(startProps, endProps);\n\n const interactionState = {\n inTransition: true,\n isZooming: startProps.zoom !== endProps.zoom,\n isPanning:\n startProps.longitude !== endProps.longitude || startProps.latitude !== endProps.latitude,\n isRotating: startProps.bearing !== endProps.bearing || startProps.pitch !== endProps.pitch\n };\n\n this.state = {\n // Save current transition props\n duration,\n easing: endProps.transitionEasing,\n interpolator: endProps.transitionInterpolator,\n interruption: endProps.transitionInterruption,\n\n startTime: this.time(),\n startProps: initialProps.start,\n endProps: initialProps.end,\n animation: null,\n propsInTransition: {},\n interactionState\n };\n this._onTransitionFrame();\n this.props.onStateChange(interactionState);\n }\n\n _onTransitionFrame = () => {\n // _updateViewport() may cancel the animation\n this._animationFrame = requestAnimationFrame(this._onTransitionFrame);\n this._updateViewport();\n };\n\n _endTransition() {\n if (this._animationFrame) {\n cancelAnimationFrame(this._animationFrame);\n this._animationFrame = null;\n }\n this.props.onStateChange({\n inTransition: false,\n isZooming: false,\n isPanning: false,\n isRotating: false\n });\n }\n\n _updateViewport() {\n // NOTE: Be cautious re-ordering statements in this function.\n const currentTime = this.time();\n const {startTime, duration, easing, interpolator, startProps, endProps} = this.state;\n let shouldEnd = false;\n let t = (currentTime - startTime) / duration;\n if (t >= 1) {\n t = 1;\n shouldEnd = true;\n }\n t = easing(t);\n\n const viewport = interpolator.interpolateProps(startProps, endProps, t);\n // Normalize viewport props\n const mapState = new MapState(Object.assign({}, this.props, viewport));\n this.state.propsInTransition = mapState.getViewportProps();\n\n this.props.onViewportChange(\n this.state.propsInTransition,\n this.state.interactionState,\n this.props\n );\n\n if (shouldEnd) {\n this._endTransition();\n this.props.onTransitionEnd();\n }\n }\n}\n","// @flow\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport MapState from './map-state';\nimport {LinearInterpolator} from './transition';\nimport TransitionManager, {TRANSITION_EVENTS} from './transition-manager';\nimport debounce from './debounce';\n\nimport type {MjolnirEvent} from 'mjolnir.js';\n\nconst NO_TRANSITION_PROPS = {\n transitionDuration: 0\n};\nexport const LINEAR_TRANSITION_PROPS = {\n transitionDuration: 300,\n transitionEasing: (t: number) => t,\n transitionInterpolator: new LinearInterpolator(),\n transitionInterruption: TRANSITION_EVENTS.BREAK\n};\n\n// EVENT HANDLING PARAMETERS\nconst PITCH_MOUSE_THRESHOLD = 5;\nconst PITCH_ACCEL = 1.2;\nconst ZOOM_ACCEL = 0.01;\n\nconst EVENT_TYPES = {\n WHEEL: ['wheel'],\n PAN: ['panstart', 'panmove', 'panend'],\n PINCH: ['pinchstart', 'pinchmove', 'pinchend', 'pinchcancel'],\n DOUBLE_TAP: ['doubletap'],\n KEYBOARD: ['keydown']\n};\n\n/**\n * @classdesc\n * A class that handles events and updates mercator style viewport parameters\n */\nexport default class MapController {\n events: Array<string> = [];\n mapState: MapState;\n onViewportChange: Function;\n onStateChange: Function;\n mapStateProps: any;\n eventManager: any;\n scrollZoom: boolean = true;\n dragPan: boolean = true;\n dragRotate: boolean = true;\n doubleClickZoom: boolean = true;\n touchZoom: boolean = true;\n touchRotate: boolean = false;\n keyboard: boolean = true;\n\n _state: any = {\n isDragging: false\n };\n _events: any = {};\n _transitionManager: TransitionManager = new TransitionManager();\n\n constructor() {\n (this: any).handleEvent = this.handleEvent.bind(this);\n (this: any)._onWheelEnd = debounce(this._onWheelEnd, 100);\n }\n\n /**\n * Callback for events\n * @param {hammer.Event} event\n */\n handleEvent(event: MjolnirEvent) {\n this.mapState = this.getMapState();\n\n switch (event.type) {\n case 'panstart':\n return this._onPanStart(event);\n case 'panmove':\n return this._onPan(event);\n case 'panend':\n return this._onPanEnd(event);\n case 'pinchstart':\n return this._onPinchStart(event);\n case 'pinchmove':\n return this._onPinch(event);\n case 'pinchcancel':\n case 'pinchend':\n return this._onPinchEnd(event);\n case 'doubletap':\n return this._onDoubleTap(event);\n case 'wheel':\n return this._onWheel(event);\n case 'keydown':\n return this._onKeyDown(event);\n default:\n return false;\n }\n }\n\n /* Event utils */\n // Event object: http://hammerjs.github.io/api/#event-object\n getCenter(event: MjolnirEvent): Array<number> {\n const {\n offsetCenter: {x, y}\n } = event;\n return [x, y];\n }\n\n isFunctionKeyPressed(event: MjolnirEvent): boolean {\n const {srcEvent} = event;\n return Boolean(srcEvent.metaKey || srcEvent.altKey || srcEvent.ctrlKey || srcEvent.shiftKey);\n }\n\n setState = (newState: any) => {\n Object.assign(this._state, newState);\n if (this.onStateChange) {\n this.onStateChange(this._state);\n }\n };\n\n /* Callback util */\n // formats map state and invokes callback function\n updateViewport(newMapState: MapState, extraProps: any = {}, extraState: any = {}) {\n // Always trigger callback on initial update (resize)\n const oldViewport = this.mapState ? this.mapState.getViewportProps() : {};\n const newViewport = Object.assign({}, newMapState.getViewportProps(), extraProps);\n\n const viewStateChanged = Object.keys(newViewport).some(\n key => oldViewport[key] !== newViewport[key]\n );\n\n // viewState has changed\n if (viewStateChanged) {\n this.onViewportChange(newViewport, extraState, oldViewport);\n }\n\n this.setState(Object.assign({}, newMapState.getInteractiveState(), extraState));\n }\n\n getMapState(overrides?: any): MapState {\n return new MapState(Object.assign({}, this.mapStateProps, this._state, overrides));\n }\n\n /**\n * Extract interactivity options\n */\n setOptions(options: any) {\n const {\n onViewportChange,\n onStateChange,\n eventManager = this.eventManager,\n\n isInteractive = true,\n scrollZoom = this.scrollZoom,\n dragPan = this.dragPan,\n dragRotate = this.dragRotate,\n doubleClickZoom = this.doubleClickZoom,\n touchZoom = this.touchZoom,\n touchRotate = this.touchRotate,\n keyboard = this.keyboard\n } = options;\n\n this.onViewportChange = onViewportChange;\n this.onStateChange = onStateChange;\n\n const dimensionChanged = !this.mapStateProps || this.mapStateProps.height !== options.height;\n\n this.mapStateProps = options;\n\n if (dimensionChanged) {\n // Dimensions changed, normalize the props\n this.updateViewport(new MapState(options));\n }\n // Update transition\n this._transitionManager.processViewportChange(\n Object.assign({}, options, {\n onStateChange: this.setState\n })\n );\n\n if (this.eventManager !== eventManager) {\n // EventManager has changed\n this.eventManager = eventManager;\n this._events = {};\n this.toggleEvents(this.events, true);\n }\n\n // Register/unregister events\n this.toggleEvents(EVENT_TYPES.WHEEL, isInteractive && scrollZoom);\n this.toggleEvents(EVENT_TYPES.PAN, isInteractive && (dragPan || dragRotate));\n this.toggleEvents(EVENT_TYPES.PINCH, isInteractive && (touchZoom || touchRotate));\n this.toggleEvents(EVENT_TYPES.DOUBLE_TAP, isInteractive && doubleClickZoom);\n this.toggleEvents(EVENT_TYPES.KEYBOARD, isInteractive && keyboard);\n\n // Interaction toggles\n this.scrollZoom = scrollZoom;\n this.dragPan = dragPan;\n this.dragRotate = dragRotate;\n this.doubleClickZoom = doubleClickZoom;\n this.touchZoom = touchZoom;\n this.touchRotate = touchRotate;\n this.keyboard = keyboard;\n }\n\n toggleEvents(eventNames: Array<string>, enabled: boolean) {\n if (this.eventManager) {\n eventNames.forEach(eventName => {\n if (this._events[eventName] !== enabled) {\n this._events[eventName] = enabled;\n if (enabled) {\n this.eventManager.on(eventName, this.handleEvent);\n } else {\n this.eventManager.off(eventName, this.handleEvent);\n }\n }\n });\n }\n }\n\n /* Event handlers */\n // Default handler for the `panstart` event.\n _onPanStart(event: MjolnirEvent) {\n const pos = this.getCenter(event);\n const newMapState = this.mapState.panStart({pos}).rotateStart({pos});\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {isDragging: true});\n return true;\n }\n\n // Default handler for the `panmove` event.\n _onPan(event: MjolnirEvent) {\n return this.isFunctionKeyPressed(event) || event.rightButton\n ? this._onPanRotate(event)\n : this._onPanMove(event);\n }\n\n // Default handler for the `panend` event.\n _onPanEnd(event: MjolnirEvent) {\n const newMapState = this.mapState.panEnd().rotateEnd();\n this.updateViewport(newMapState, null, {\n isDragging: false,\n isPanning: false,\n isRotating: false\n });\n return true;\n }\n\n // Default handler for panning to move.\n // Called by `_onPan` when panning without function key pressed.\n _onPanMove(event: MjolnirEvent) {\n if (!this.dragPan) {\n return false;\n }\n const pos = this.getCenter(event);\n const newMapState = this.mapState.pan({pos});\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {isPanning: true});\n return true;\n }\n\n // Default handler for panning to rotate.\n // Called by `_onPan` when panning with function key pressed.\n _onPanRotate(event: MjolnirEvent) {\n if (!this.dragRotate) {\n return false;\n }\n\n const {deltaX, deltaY} = event;\n const [, centerY] = this.getCenter(event);\n const startY = centerY - deltaY;\n const {width, height} = this.mapState.getViewportProps();\n\n const deltaScaleX = deltaX / width;\n let deltaScaleY = 0;\n\n if (deltaY > 0) {\n if (Math.abs(height - startY) > PITCH_MOUSE_THRESHOLD) {\n // Move from 0 to -1 as we drag upwards\n deltaScaleY = (deltaY / (startY - height)) * PITCH_ACCEL;\n }\n } else if (deltaY < 0) {\n if (startY > PITCH_MOUSE_THRESHOLD) {\n // Move from 0 to 1 as we drag upwards\n deltaScaleY = 1 - centerY / startY;\n }\n }\n deltaScaleY = Math.min(1, Math.max(-1, deltaScaleY));\n\n const newMapState = this.mapState.rotate({deltaScaleX, deltaScaleY});\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {isRotating: true});\n return true;\n }\n\n // Default handler for the `wheel` event.\n _onWheel(event: MjolnirEvent) {\n if (!this.scrollZoom) {\n return false;\n }\n\n event.preventDefault();\n\n const pos = this.getCenter(event);\n const {delta} = event;\n\n // Map wheel delta to relative scale\n let scale = 2 / (1 + Math.exp(-Math.abs(delta * ZOOM_ACCEL)));\n if (delta < 0 && scale !== 0) {\n scale = 1 / scale;\n }\n\n const newMapState = this.mapState.zoom({pos, scale});\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {isZooming: true});\n // Wheel events are discrete, let's wait a little before resetting isZooming\n this._onWheelEnd();\n return true;\n }\n\n _onWheelEnd() {\n this.setState({isZooming: false});\n }\n\n // Default handler for the `pinchstart` event.\n _onPinchStart(event: MjolnirEvent) {\n const pos = this.getCenter(event);\n const newMapState = this.mapState.zoomStart({pos}).rotateStart({pos});\n // hack - hammer's `rotation` field doesn't seem to produce the correct angle\n this._state.startPinchRotation = event.rotation;\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {isDragging: true});\n return true;\n }\n\n // Default handler for the `pinch` event.\n _onPinch(event: MjolnirEvent) {\n if (!this.touchZoom && !this.touchRotate) {\n return false;\n }\n\n let newMapState = this.mapState;\n if (this.touchZoom) {\n const {scale} = event;\n const pos = this.getCenter(event);\n newMapState = newMapState.zoom({pos, scale});\n }\n if (this.touchRotate) {\n const {rotation} = event;\n const {startPinchRotation} = this._state;\n newMapState = newMapState.rotate({\n deltaScaleX: -(rotation - startPinchRotation) / 180\n });\n }\n\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n isDragging: true,\n isPanning: this.touchZoom,\n isZooming: this.touchZoom,\n isRotating: this.touchRotate\n });\n return true;\n }\n\n // Default handler for the `pinchend` event.\n _onPinchEnd(event: MjolnirEvent) {\n const newMapState = this.mapState.zoomEnd().rotateEnd();\n this._state.startPinchRotation = 0;\n this.updateViewport(newMapState, null, {\n isDragging: false,\n isPanning: false,\n isZooming: false,\n isRotating: false\n });\n return true;\n }\n\n // Default handler for the `doubletap` event.\n _onDoubleTap(event: MjolnirEvent) {\n if (!this.doubleClickZoom) {\n return false;\n }\n const pos = this.getCenter(event);\n const isZoomOut = this.isFunctionKeyPressed(event);\n\n const newMapState = this.mapState.zoom({pos, scale: isZoomOut ? 0.5 : 2});\n this.updateViewport(\n newMapState,\n Object.assign({}, LINEAR_TRANSITION_PROPS, {\n transitionInterpolator: new LinearInterpolator({around: pos})\n })\n );\n return true;\n }\n\n /* eslint-disable complexity */\n // Default handler for the `keydown` event\n _onKeyDown(event: MjolnirEvent) {\n if (!this.keyboard) {\n return false;\n }\n const funcKey = this.isFunctionKeyPressed(event);\n const {mapStateProps} = this;\n let newMapState;\n\n switch (event.srcEvent.keyCode) {\n case 189: // -\n if (funcKey) {\n newMapState = this.getMapState({zoom: mapStateProps.zoom - 2});\n } else {\n newMapState = this.getMapState({zoom: mapStateProps.zoom - 1});\n }\n break;\n case 187: // +\n if (funcKey) {\n newMapState = this.getMapState({zoom: mapStateProps.zoom + 2});\n } else {\n newMapState = this.getMapState({zoom: mapStateProps.zoom + 1});\n }\n break;\n case 37: // left\n if (funcKey) {\n newMapState = this.getMapState({\n bearing: mapStateProps.bearing - 15\n });\n } else {\n newMapState = this.mapState.pan({pos: [100, 0], startPos: [0, 0]});\n }\n break;\n case 39: // right\n if (funcKey) {\n newMapState = this.getMapState({\n bearing: mapStateProps.bearing + 15\n });\n } else {\n newMapState = this.mapState.pan({pos: [-100, 0], startPos: [0, 0]});\n }\n break;\n case 38: // up\n if (funcKey) {\n newMapState = this.getMapState({pitch: mapStateProps.pitch + 10});\n } else {\n newMapState = this.mapState.pan({pos: [0, 100], startPos: [0, 0]});\n }\n break;\n case 40: // down\n if (funcKey) {\n newMapState = this.getMapState({pitch: mapStateProps.pitch - 10});\n } else {\n newMapState = this.mapState.pan({pos: [0, -100], startPos: [0, 0]});\n }\n break;\n default:\n return false;\n }\n return this.updateViewport(newMapState, LINEAR_TRANSITION_PROPS);\n }\n /* eslint-enable complexity */\n}\n","/* global setTimeout, clearTimeout */\n/* eslint-disable consistent-this, func-names */\nexport default function debounce(func, delay) {\n let _this;\n let _arguments;\n let timeout;\n\n const executeNow = () => {\n timeout = null;\n return func.apply(_this, _arguments);\n };\n\n return function() {\n _this = this;\n _arguments = arguments;\n\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(executeNow, delay);\n };\n}\n","// @flow\n\n// 'new' is optional\nconst DEPRECATED_PROPS = [\n {old: 'onChangeViewport', new: 'onViewportChange'},\n {old: 'perspectiveEnabled', new: 'dragRotate'},\n {old: 'onHoverFeatures', new: 'onHover'},\n {old: 'onClickFeatures', new: 'onClick'},\n {old: 'touchZoomRotate', new: 'touchZoom, touchRotate'},\n {old: 'mapControls', new: 'controller'}\n];\n\nfunction getDeprecatedText(name: string): string {\n return `react-map-gl: \\`${name}\\` is removed.`;\n}\n\nfunction getNewText(name: string): string {\n return `Use \\`${name}\\` instead.`;\n}\n\n/**\n * Checks props object for any prop that is deprecated and insert a console\n * warning to the user. This will also print out the recommended new prop/API\n * if one exists.\n */\nexport default function checkDeprecatedProps(props: any = {}) {\n /* eslint-disable no-console, no-undef */\n DEPRECATED_PROPS.forEach(depProp => {\n if (props.hasOwnProperty(depProp.old)) {\n let warnMessage = getDeprecatedText(depProp.old);\n if (depProp.new) {\n warnMessage = `${warnMessage} ${getNewText(depProp.new)}`;\n }\n console.warn(warnMessage);\n }\n });\n}\n","// @flow\nimport React, {PureComponent, createRef} from 'react';\nimport PropTypes from 'prop-types';\n\nimport StaticMap from './static-map';\nimport {MAPBOX_LIMITS} from '../utils/map-state';\nimport WebMercatorViewport from 'viewport-mercator-project';\n\nimport TransitionManager from '../utils/transition-manager';\nimport MapContext from './map-context';\n\nimport {EventManager} from 'mjolnir.js';\nimport MapController from '../utils/map-controller';\nimport deprecateWarn from '../utils/deprecate-warn';\n\nimport type {ViewState} from '../mapbox/mapbox';\nimport type {StaticMapProps} from './static-map';\nimport type {MjolnirEvent} from 'mjolnir.js';\nimport type {MapContextProps} from './map-context';\n\nconst propTypes = Object.assign({}, StaticMap.propTypes, {\n // Additional props on top of StaticMap\n\n /** Viewport constraints */\n // Max zoom level\n maxZoom: PropTypes.number,\n // Min zoom level\n minZoom: PropTypes.number,\n // Max pitch in degrees\n maxPitch: PropTypes.number,\n // Min pitch in degrees\n minPitch: PropTypes.number,\n\n // Callbacks fired when the user interacted with the map. The object passed to the callbacks\n // contains viewport properties such as `longitude`, `latitude`, `zoom` etc.\n onViewStateChange: PropTypes.func,\n onViewportChange: PropTypes.func,\n onInteractionStateChange: PropTypes.func,\n\n /** Viewport transition **/\n // transition duration for viewport change\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n // TransitionInterpolator instance, can be used to perform custom transitions.\n transitionInterpolator: PropTypes.object,\n // type of interruption of current transition on update.\n transitionInterruption: PropTypes.number,\n // easing function\n transitionEasing: PropTypes.func,\n // transition status update functions\n onTransitionStart: PropTypes.func,\n onTransitionInterrupt: PropTypes.func,\n onTransitionEnd: PropTypes.func,\n\n /** Enables control event handling */\n // Scroll to zoom\n scrollZoom: PropTypes.bool,\n // Drag to pan\n dragPan: PropTypes.bool,\n // Drag to rotate\n dragRotate: PropTypes.bool,\n // Double click to zoom\n doubleClickZoom: PropTypes.bool,\n // Multitouch zoom\n touchZoom: PropTypes.bool,\n // Multitouch rotate\n touchRotate: PropTypes.bool,\n // Keyboard\n keyboard: PropTypes.bool,\n\n /** Event callbacks */\n onHover: PropTypes.func,\n onClick: PropTypes.func,\n onDblClick: PropTypes.func,\n onContextMenu: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseMove: PropTypes.func,\n onMouseUp: PropTypes.func,\n onTouchStart: PropTypes.func,\n onTouchMove: PropTypes.func,\n onTouchEnd: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOut: PropTypes.func,\n onWheel: PropTypes.func,\n\n /** Custom touch-action CSS for the event canvas. Defaults to 'none' */\n touchAction: PropTypes.string,\n\n /** Radius to detect features around a clicked point. Defaults to 0. */\n clickRadius: PropTypes.number,\n\n /** List of layers that are interactive */\n interactiveLayerIds: PropTypes.array,\n\n /** Accessor that returns a cursor style to show interactive state */\n getCursor: PropTypes.func,\n\n // A map control instance to replace the default map controller\n // The object must expose a method: `setOptions(opts)`\n controller: PropTypes.instanceOf(MapController)\n});\n\ntype State = {\n isLoaded: boolean,\n isDragging: boolean,\n isHovering: boolean\n};\n\nconst getDefaultCursor = ({isDragging, isHovering}: State) =>\n isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab';\n\nconst defaultProps = Object.assign(\n {},\n StaticMap.defaultProps,\n MAPBOX_LIMITS,\n TransitionManager.defaultProps,\n {\n onViewStateChange: null,\n onViewportChange: null,\n onClick: null,\n onNativeClick: null,\n onHover: null,\n onContextMenu: (event: MouseEvent) => event.preventDefault(),\n\n scrollZoom: true,\n dragPan: true,\n dragRotate: true,\n doubleClickZoom: true,\n touchZoom: true,\n touchRotate: false,\n keyboard: true,\n\n touchAction: 'none',\n clickRadius: 0,\n getCursor: getDefaultCursor\n }\n);\n\ntype InteractionState = {\n isDragging: boolean\n};\n\ntype MapEvent = MjolnirEvent & {\n point: Array<number>,\n lngLat: Array<number>,\n features: ?Array<any>\n};\n\nexport type InteractiveMapProps = StaticMapProps & {\n onViewStateChange: Function,\n onViewportChange: Function,\n onInteractionStateChange: Function,\n onHover: Function,\n onClick: Function,\n onNativeClick: Function,\n onDblClick: Function,\n onContextMenu: Function,\n onMouseDown: Function,\n onMouseMove: Function,\n onMouseUp: Function,\n onTouchStart: Function,\n onTouchMove: Function,\n onTouchEnd: Function,\n onMouseEnter: Function,\n onMouseLeave: Function,\n onMouseOut: Function,\n onWheel: Function,\n\n transitionDuration: number,\n transitionInterpolator: any,\n transitionInterruption: number,\n transitionEasing: Function,\n\n scrollZoom: boolean,\n dragPan: boolean,\n dragRotate: boolean,\n doubleClickZoom: boolean,\n touchZoom: boolean,\n touchRotate: boolean,\n keyboard: boolean,\n\n touchAction: string,\n clickRadius: number,\n interactiveLayerIds: Array<string>,\n getCursor: Function,\n controller: MapController\n};\n\nexport default class InteractiveMap extends PureComponent<InteractiveMapProps, State> {\n static supported() {\n return StaticMap.supported();\n }\n\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n constructor(props: InteractiveMapProps) {\n super(props);\n // Check for deprecated props\n deprecateWarn(props);\n\n // If props.controller is not provided, fallback to default MapController instance\n // Cannot use defaultProps here because it needs to be per map instance\n this._controller = props.controller || new MapController();\n\n this._eventManager = new EventManager(null, {\n touchAction: props.touchAction\n });\n\n this._updateInteractiveContext({\n isDragging: false,\n eventManager: this._eventManager\n });\n }\n\n state: State = {\n // Whether mapbox styles have finished loading\n isLoaded: false,\n // Whether the cursor is down\n isDragging: false,\n // Whether the cursor is over a clickable feature\n isHovering: false\n };\n\n componentDidMount() {\n const eventManager = this._eventManager;\n\n const mapContainer = this._eventCanvasRef.current;\n eventManager.setElement(mapContainer);\n // Register additional event handlers for click and hover\n eventManager.on({\n pointerdown: this._onPointerDown,\n pointermove: this._onPointerMove,\n pointerup: this._onPointerUp,\n pointerleave: this._onEvent.bind(this, 'onMouseOut'),\n click: this._onClick,\n anyclick: this._onClick,\n dblclick: this._onEvent.bind(this, 'onDblClick'),\n wheel: this._onEvent.bind(this, 'onWheel'),\n contextmenu: this._onEvent.bind(this, 'onContextMenu')\n });\n\n this._setControllerProps(this.props);\n\n this._updateInteractiveContext({mapContainer});\n }\n\n componentDidUpdate() {\n this._setControllerProps(this.props);\n }\n\n componentWillUnmount() {\n this._eventManager.destroy();\n }\n\n _controller: MapController;\n _eventManager: any;\n _interactiveContext: MapContextProps;\n _width: number = 0;\n _height: number = 0;\n _eventCanvasRef: {current: null | HTMLDivElement} = createRef();\n _staticMapRef: {current: null | StaticMap} = createRef();\n\n getMap = () => {\n return this._staticMapRef.current ? this._staticMapRef.current.getMap() : null;\n };\n\n queryRenderedFeatures = (geometry: any, options: any = {}) => {\n const map = this.getMap();\n return map && map.queryRenderedFeatures(geometry, options);\n };\n\n _setControllerProps(props: InteractiveMapProps) {\n props = Object.assign({}, props, props.viewState, {\n isInteractive: Boolean(props.onViewStateChange || props.onViewportChange),\n onViewportChange: this._onViewportChange,\n onStateChange: this._onInteractionStateChange,\n eventManager: this._eventManager,\n width: this._width,\n height: this._height\n });\n\n this._controller.setOptions(props);\n\n // Pass callbacks via MapContext\n // Do not create a new context object because these do not affect render\n const context = this._interactiveContext;\n context.onViewportChange = props.onViewportChange;\n context.onViewStateChange = props.onViewStateChange;\n }\n\n _getFeatures({pos, radius}: {pos: Array<number>, radius: number}) {\n let features;\n const queryParams = {};\n const map = this.getMap();\n\n if (this.props.interactiveLayerIds) {\n queryParams.layers = this.props.interactiveLayerIds;\n }\n\n if (radius) {\n // Radius enables point features, like marker symbols, to be clicked.\n const size = radius;\n const bbox = [[pos[0] - size, pos[1] + size], [pos[0] + size, pos[1] - size]];\n features = map && map.queryRenderedFeatures(bbox, queryParams);\n } else {\n features = map && map.queryRenderedFeatures(pos, queryParams);\n }\n return features;\n }\n\n _onInteractionStateChange = (interactionState: InteractionState) => {\n const {isDragging = false} = interactionState;\n if (isDragging !== this.state.isDragging) {\n this._updateInteractiveContext({isDragging});\n this.setState({isDragging});\n }\n\n const {onInteractionStateChange} = this.props;\n if (onInteractionStateChange) {\n onInteractionStateChange(interactionState);\n }\n };\n\n _updateInteractiveContext(updatedContext: $Shape<MapContextProps>) {\n this._interactiveContext = Object.assign({}, this._interactiveContext, updatedContext);\n }\n\n _onResize = ({width, height}: {width: number, height: number}) => {\n this._width = width;\n this._height = height;\n this._setControllerProps(this.props);\n this.props.onResize({width, height});\n };\n\n _onViewportChange = (\n viewState: ViewState,\n interactionState: InteractionState,\n oldViewState: ViewState\n ) => {\n const {onViewStateChange, onViewportChange} = this.props;\n\n if (onViewStateChange) {\n onViewStateChange({viewState, interactionState, oldViewState});\n }\n if (onViewportChange) {\n onViewportChange(viewState, interactionState, oldViewState);\n }\n };\n\n /* Generic event handling */\n _normalizeEvent(event: MapEvent) {\n if (event.lngLat) {\n // Already unprojected\n return event;\n }\n\n const {\n offsetCenter: {x, y}\n } = event;\n const pos = [x, y];\n\n const viewport = new WebMercatorViewport(\n // $FlowFixMe\n Object.assign({}, this.props, {\n width: this._width,\n height: this._height\n })\n );\n\n event.point = pos;\n event.lngLat = viewport.unproject(pos);\n\n return event;\n }\n\n _onLoad = (event: MapEvent) => {\n this.setState({isLoaded: true});\n this.props.onLoad(event);\n };\n\n _onEvent = (callbackName: string, event: MapEvent) => {\n const func = this.props[callbackName];\n if (func) {\n func(this._normalizeEvent(event));\n }\n };\n\n /* Special case event handling */\n _onPointerDown = (event: MapEvent) => {\n switch (event.pointerType) {\n case 'touch':\n this._onEvent('onTouchStart', event);\n break;\n\n default:\n this._onEvent('onMouseDown', event);\n }\n };\n\n _onPointerUp = (event: MapEvent) => {\n switch (event.pointerType) {\n case 'touch':\n this._onEvent('onTouchEnd', event);\n break;\n\n default:\n this._onEvent('onMouseUp', event);\n }\n };\n\n // eslint-disable-next-line complexity\n _onPointerMove = (event: MapEvent) => {\n switch (event.pointerType) {\n case 'touch':\n this._onEvent('onTouchMove', event);\n break;\n\n default:\n this._onEvent('onMouseMove', event);\n }\n\n if (!this.state.isDragging) {\n const {onHover, interactiveLayerIds} = this.props;\n let features;\n event = this._normalizeEvent(event);\n if (this.state.isLoaded && (interactiveLayerIds || onHover)) {\n features = this._getFeatures({\n pos: event.point,\n radius: this.props.clickRadius\n });\n }\n if (onHover) {\n // backward compatibility: v3 `onHover` interface\n event.features = features;\n onHover(event);\n }\n\n const isHovering = Boolean(interactiveLayerIds && features && features.length > 0);\n const isEntering = isHovering && !this.state.isHovering;\n const isExiting = !isHovering && this.state.isHovering;\n\n if (isEntering) {\n this._onEvent('onMouseEnter', event);\n }\n if (isExiting) {\n this._onEvent('onMouseLeave', event);\n }\n if (isEntering || isExiting) {\n this.setState({isHovering});\n }\n }\n };\n\n _onClick = (event: MapEvent) => {\n const {onClick, onNativeClick, onDblClick, doubleClickZoom} = this.props;\n let callbacks = [];\n const isDoubleClickEnabled = onDblClick || doubleClickZoom;\n\n // `click` is only fired on single click. `anyclick` is fired twice if double clicking.\n // `click` has a delay period after pointer up that prevents it from firing when\n // double clicking. `anyclick` is always fired immediately after pointer up.\n // If double click is turned off by the user, we want to immediately fire the\n // onClick event. Otherwise, we wait to make sure it's a single click.\n switch (event.type) {\n case 'anyclick':\n callbacks.push(onNativeClick);\n if (!isDoubleClickEnabled) {\n callbacks.push(onClick);\n }\n break;\n\n case 'click':\n if (isDoubleClickEnabled) {\n callbacks.push(onClick);\n }\n break;\n\n default:\n }\n\n callbacks = callbacks.filter(Boolean);\n\n if (callbacks.length) {\n event = this._normalizeEvent(event);\n // backward compatibility: v3 `onClick` interface\n event.features = this._getFeatures({\n pos: event.point,\n radius: this.props.clickRadius\n });\n callbacks.forEach(cb => cb(event));\n }\n };\n\n render() {\n const {width, height, style, getCursor} = this.props;\n\n const eventCanvasStyle = Object.assign({position: 'relative'}, style, {\n width,\n height,\n cursor: getCursor(this.state)\n });\n\n return (\n <MapContext.Provider value={this._interactiveContext}>\n <div key=\"event-canvas\" ref={this._eventCanvasRef} style={eventCanvasStyle}>\n <StaticMap\n {...this.props}\n width=\"100%\"\n height=\"100%\"\n style={null}\n onResize={this._onResize}\n onLoad={this._onLoad}\n ref={this._staticMapRef}\n >\n {this.props.children}\n </StaticMap>\n </div>\n </MapContext.Provider>\n );\n }\n}\n","// Compare two objects, partial deep equal\nexport function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n // TODO - implement deep equal on view descriptors\n return Object.keys(a).every(key => {\n if (Array.isArray(a[key]) && Array.isArray(b[key])) {\n return deepEqual(a[key], b[key]);\n }\n return a[key] === b[key];\n });\n}\n","// @flow\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport React, {PureComponent, cloneElement} from 'react';\nimport PropTypes from 'prop-types';\nimport MapContext from './map-context';\nimport assert from '../utils/assert';\nimport deepEqual from '../utils/deep-equal';\n\nimport type {MapContextProps} from './map-context';\n\nconst propTypes = {\n type: PropTypes.string.isRequired,\n id: PropTypes.string\n};\n\ntype SourceProps = {\n id?: string,\n type: string,\n children?: any\n};\n\nlet sourceCounter = 0;\n\nexport default class Source<Props: SourceProps> extends PureComponent<Props> {\n static propTypes = propTypes;\n\n constructor(props: Props) {\n super(props);\n this.id = props.id || `jsx-source-${sourceCounter++}`;\n this.type = props.type;\n }\n\n componentWillUnmount() {\n /* global requestAnimationFrame */\n // Do not remove source immediately because the\n // dependent <Layer>s' componentWillUnmount() might not have been called\n // Removing source before dependent layers will throw error\n // TODO - find a more robust solution\n const map = this._map;\n if (map) {\n map.off('styledata', this._updateSource);\n if (map.style) {\n requestAnimationFrame(() => map.removeSource(this.id));\n }\n }\n }\n\n id: string;\n type: string;\n _map: any = null;\n _sourceOptions: any = {};\n\n getSource() {\n const map = this._map;\n return map && map.style && map.getSource(this.id);\n }\n\n _createSource(sourceOptions: any) {\n const map = this._map;\n if (map.style && map.style._loaded) {\n map.addSource(this.id, sourceOptions);\n }\n }\n\n /* eslint-disable complexity */\n _updateSource = () => {\n const {type, _map: map} = this;\n if (!map) {\n return;\n }\n\n const {_sourceOptions: sourceOptions, props} = this;\n assert(!props.id || props.id === this.id, 'source id changed');\n assert(props.type === type, 'source type changed');\n\n let changedKey = '';\n let changedKeyCount = 0;\n\n for (const key in props) {\n if (key !== 'children' && key !== 'id' && !deepEqual(sourceOptions[key], props[key])) {\n sourceOptions[key] = props[key];\n changedKey = key;\n changedKeyCount++;\n }\n }\n\n const source = this.getSource();\n if (!source) {\n this._createSource(sourceOptions);\n return;\n }\n if (!changedKeyCount) {\n return;\n }\n if (type === 'geojson') {\n source.setData(sourceOptions.data);\n } else if (type === 'image') {\n source.updateImage({url: sourceOptions.url, coordinates: sourceOptions.coordinates});\n } else if (\n (type === 'canvas' || type === 'video') &&\n changedKeyCount === 1 &&\n changedKey === 'coordinates'\n ) {\n source.setCoordinates(sourceOptions.coordinates);\n } else {\n // eslint-disable-next-line\n console.warn(`Unable to update <Source> prop: ${changedKey}`);\n }\n };\n /* eslint-enable complexity */\n\n _render(context: MapContextProps) {\n if (!this._map) {\n this._map = context.map;\n this._map.on('styledata', this._updateSource);\n }\n this._updateSource();\n return React.Children.map(this.props.children, child =>\n cloneElement(child, {\n source: this.id\n })\n );\n }\n\n render() {\n return <MapContext.Consumer>{this._render.bind(this)}</MapContext.Consumer>;\n }\n}\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// @flow\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport React, {PureComponent} from 'react';\nimport PropTypes from 'prop-types';\nimport MapContext from './map-context';\nimport assert from '../utils/assert';\nimport deepEqual from '../utils/deep-equal';\n\nimport type {MapContextProps} from './map-context';\n\nconst propTypes = {\n type: PropTypes.string.isRequired,\n id: PropTypes.string,\n source: PropTypes.string,\n beforeId: PropTypes.string\n};\n\ntype LayerProps = {\n id?: string,\n type: string,\n source?: string,\n beforeId?: string,\n layout: any,\n paint: any,\n filter?: Array<mixed>,\n minzoom?: number,\n maxzoom?: number\n};\n\n/* eslint-disable complexity */\nfunction diffLayerStyles(map: any, id: string, props: LayerProps, prevProps: LayerProps) {\n const {layout = {}, paint = {}, filter, minzoom, maxzoom, beforeId, ...otherProps} = props;\n\n if (beforeId !== prevProps.beforeId) {\n map.moveLayer(id, beforeId);\n }\n if (layout !== prevProps.layout) {\n for (const key in layout) {\n if (!deepEqual(layout[key], prevProps.layout[key])) {\n map.setLayoutProperty(id, key, layout[key]);\n }\n }\n }\n if (paint !== prevProps.paint) {\n for (const key in paint) {\n if (!deepEqual(paint[key], prevProps.paint[key])) {\n map.setPaintProperty(id, key, paint[key]);\n }\n }\n }\n if (!deepEqual(filter, prevProps.filter)) {\n map.setFilter(id, filter);\n }\n if (minzoom !== prevProps.minzoom || maxzoom !== prevProps.maxzoom) {\n map.setLayerZoomRange(id, minzoom, maxzoom);\n }\n for (const key in otherProps) {\n if (!deepEqual(otherProps[key], prevProps[key])) {\n map.setLayerProperty(id, key, otherProps[key]);\n }\n }\n}\n/* eslint-enable complexity */\n\nlet layerCounter = 0;\n\nexport default class Layer<Props: LayerProps> extends PureComponent<Props> {\n static propTypes = propTypes;\n\n constructor(props: Props) {\n super(props);\n this.id = props.id || `jsx-layer-${layerCounter++}`;\n this.type = props.type;\n }\n\n componentDidMount() {\n this._updateLayer();\n }\n\n componentDidUpdate() {\n this._updateLayer();\n }\n\n componentWillUnmount() {\n const map = this._map;\n if (map) {\n map.off('styledata', this._updateLayer);\n if (map.style) {\n map.removeLayer(this.id);\n }\n }\n }\n\n id: string;\n type: string;\n _map: any = null;\n _layerOptions: any = {};\n\n getLayer() {\n const map = this._map;\n return map && map.style && map.getLayer(this.id);\n }\n\n _createLayer() {\n const map = this._map;\n\n if (map.style && map.style._loaded) {\n const options = Object.assign({}, this.props);\n options.id = this.id;\n delete options.beforeId;\n\n map.addLayer(options, this.props.beforeId);\n this._layerOptions = options;\n }\n }\n\n /* eslint-disable complexity */\n _updateLayer = () => {\n const map = this._map;\n if (!map) {\n return;\n }\n\n const {props, _layerOptions: layerOptions} = this;\n assert(!props.id || props.id === this.id, 'layer id changed');\n assert(props.type === this.type, 'layer type changed');\n\n if (!this.getLayer()) {\n this._createLayer();\n return;\n }\n\n try {\n diffLayerStyles(map, this.id, props, layerOptions);\n Object.assign(layerOptions, props);\n } catch (error) {\n console.warn(error); // eslint-disable-line\n }\n };\n /* eslint-disable complexity */\n\n _render(context: MapContextProps) {\n if (!this._map) {\n this._map = context.map;\n this._map.on('styledata', this._updateLayer);\n }\n return null;\n }\n\n render() {\n return <MapContext.Consumer>{this._render.bind(this)}</MapContext.Consumer>;\n }\n}\n","// @flow\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport React, {PureComponent, createRef} from 'react';\nimport PropTypes from 'prop-types';\nimport MapContext from './map-context';\n\nimport type {MjolnirEvent} from 'mjolnir.js';\n\nconst propTypes = {\n /** Event handling */\n captureScroll: PropTypes.bool,\n // Stop map pan & rotate\n captureDrag: PropTypes.bool,\n // Stop map click\n captureClick: PropTypes.bool,\n // Stop map double click\n captureDoubleClick: PropTypes.bool\n};\n\nconst defaultProps = {\n captureScroll: false,\n captureDrag: true,\n captureClick: true,\n captureDoubleClick: true\n};\n\nexport type BaseControlProps = {\n captureScroll: boolean,\n captureDrag: boolean,\n captureClick: boolean,\n captureDoubleClick: boolean,\n children?: any\n};\n\n/*\n * PureComponent doesn't update when context changes.\n * The only way is to implement our own shouldComponentUpdate here. Considering\n * the parent component (StaticMap or InteractiveMap) is pure, and map re-render\n * is almost always triggered by a viewport change, we almost definitely need to\n * recalculate the marker's position when the parent re-renders.\n */\nexport default class BaseControl<\n Props: BaseControlProps,\n State: any,\n ContainerType: Element\n> extends PureComponent<Props, State> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n componentDidMount() {\n const ref = this._containerRef.current;\n if (!ref) {\n return;\n }\n\n const {eventManager} = this._context;\n\n // Return early if no eventManager is found\n if (eventManager) {\n this._events = {\n wheel: this._onScroll,\n panstart: this._onDragStart,\n anyclick: this._onClick,\n click: this._onClick,\n dblclick: this._onDblClick\n };\n eventManager.on(this._events, ref);\n }\n }\n\n componentWillUnmount() {\n const {eventManager} = this._context;\n if (eventManager && this._events) {\n eventManager.off(this._events);\n }\n }\n\n _context: any = {};\n _events: any = null;\n _containerRef: {current: null | ContainerType} = createRef();\n\n _onScroll = (evt: MjolnirEvent) => {\n if (this.props.captureScroll) {\n evt.stopPropagation();\n }\n };\n\n _onDragStart = (evt: MjolnirEvent) => {\n if (this.props.captureDrag) {\n evt.stopPropagation();\n }\n };\n\n _onDblClick = (evt: MjolnirEvent) => {\n if (this.props.captureDoubleClick) {\n evt.stopPropagation();\n }\n };\n\n _onClick = (evt: MjolnirEvent) => {\n if (this.props.captureClick) {\n evt.stopPropagation();\n }\n };\n\n _render() {\n throw new Error('_render() not implemented');\n }\n\n render() {\n return (\n <MapContext.Consumer>\n {context => {\n this._context = context;\n return this._render();\n }}\n </MapContext.Consumer>\n );\n }\n}\n","import superPropBase from \"./superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","// @flow\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport PropTypes from 'prop-types';\nimport BaseControl from './base-control';\n\nimport type {MjolnirEvent} from 'mjolnir.js';\nimport type {BaseControlProps} from './base-control';\n\nconst propTypes = Object.assign({}, BaseControl.propTypes, {\n draggable: PropTypes.bool,\n onDrag: PropTypes.func,\n onDragEnd: PropTypes.func,\n onDragStart: PropTypes.func,\n // Offset from the left\n offsetLeft: PropTypes.number,\n // Offset from the top\n offsetTop: PropTypes.number\n});\n\nconst defaultProps = Object.assign({}, BaseControl.defaultProps, {\n draggable: false,\n offsetLeft: 0,\n offsetTop: 0\n});\n\ntype Coordinate = [number, number];\ntype Offset = [number, number];\ntype CallbackEvent = MjolnirEvent & {\n lngLat: Coordinate\n};\n\nexport type DraggableControlProps = BaseControlProps & {\n draggable: boolean,\n onDrag?: CallbackEvent => any,\n onDragEnd?: CallbackEvent => any,\n onDragStart?: CallbackEvent => any,\n offsetLeft: number,\n offsetTop: number\n};\n\ntype State = {\n dragPos: ?Coordinate,\n dragOffset: ?Offset\n};\n\nexport default class DraggableControl<Props: DraggableControlProps> extends BaseControl<\n Props,\n State,\n HTMLDivElement\n> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n state = {\n dragPos: null,\n dragOffset: null\n };\n\n _dragEvents: any = null;\n\n componentWillUnmount() {\n super.componentWillUnmount();\n this._removeDragEvents();\n }\n\n _setupDragEvents() {\n const {eventManager} = this._context;\n if (!eventManager) {\n return;\n }\n\n // panstart is already attached by parent class BaseControl,\n // here we just add listeners for subsequent drag events\n this._dragEvents = {\n panmove: this._onDrag,\n panend: this._onDragEnd,\n pancancel: this._onDragCancel\n };\n eventManager.on(this._dragEvents);\n }\n\n _removeDragEvents() {\n const {eventManager} = this._context;\n if (!eventManager || !this._dragEvents) {\n return;\n }\n eventManager.off(this._dragEvents);\n this._dragEvents = null;\n }\n\n _getDragEventPosition(event: MjolnirEvent): Coordinate {\n const {\n offsetCenter: {x, y}\n } = event;\n return [x, y];\n }\n\n /**\n * Returns offset of top-left of marker from drag start event\n * (used for positioning marker relative to next mouse coordinates)\n */\n _getDragEventOffset(event: MjolnirEvent): ?Offset {\n const {\n center: {x, y}\n } = event;\n const container = this._containerRef.current;\n if (container) {\n const rect = container.getBoundingClientRect();\n return [rect.left - x, rect.top - y];\n }\n return null;\n }\n\n _getDraggedPosition(dragPos: Coordinate, dragOffset: Offset): Coordinate {\n return [dragPos[0] + dragOffset[0], dragPos[1] + dragOffset[1]];\n }\n\n _getDragLngLat(dragPos: Coordinate, dragOffset: Offset): Coordinate {\n const {offsetLeft, offsetTop} = this.props;\n const [x, y] = this._getDraggedPosition(dragPos, dragOffset);\n // Unproject x/y value while respecting offset coordinates\n return this._context.viewport.unproject([x - offsetLeft, y - offsetTop]);\n }\n\n _onDragStart = (event: MjolnirEvent) => {\n const {draggable, captureDrag} = this.props;\n if (draggable || captureDrag) {\n event.stopPropagation();\n }\n if (!draggable) {\n return;\n }\n\n const dragPos = this._getDragEventPosition(event);\n const dragOffset = this._getDragEventOffset(event);\n this.setState({dragPos, dragOffset});\n this._setupDragEvents();\n\n const {onDragStart} = this.props;\n if (onDragStart && dragOffset) {\n const callbackEvent: CallbackEvent = Object.assign({}, event);\n callbackEvent.lngLat = this._getDragLngLat(dragPos, dragOffset);\n onDragStart(callbackEvent);\n }\n };\n\n _onDrag = (event: MjolnirEvent) => {\n event.stopPropagation();\n\n const dragPos = this._getDragEventPosition(event);\n this.setState({dragPos});\n\n const {onDrag} = this.props;\n const {dragOffset} = this.state;\n if (onDrag && dragOffset) {\n const callbackEvent: CallbackEvent = Object.assign({}, event);\n callbackEvent.lngLat = this._getDragLngLat(dragPos, dragOffset);\n onDrag(callbackEvent);\n }\n };\n\n _onDragEnd = (event: MjolnirEvent) => {\n const {dragPos, dragOffset} = this.state;\n\n event.stopPropagation();\n this.setState({dragPos: null, dragOffset: null});\n this._removeDragEvents();\n\n const {onDragEnd} = this.props;\n if (onDragEnd && dragPos && dragOffset) {\n const callbackEvent: CallbackEvent = Object.assign({}, event);\n callbackEvent.lngLat = this._getDragLngLat(dragPos, dragOffset);\n onDragEnd(callbackEvent);\n }\n };\n\n _onDragCancel = (event: MjolnirEvent) => {\n event.stopPropagation();\n this.setState({dragPos: null, dragOffset: null});\n this._removeDragEvents();\n };\n}\n","// @flow\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport DraggableControl from './draggable-control';\n\nimport type {DraggableControlProps} from './draggable-control';\n\nconst propTypes = Object.assign({}, DraggableControl.propTypes, {\n // Custom className\n className: PropTypes.string,\n // Longitude of the anchor point\n longitude: PropTypes.number.isRequired,\n // Latitude of the anchor point\n latitude: PropTypes.number.isRequired\n});\n\nconst defaultProps = Object.assign({}, DraggableControl.defaultProps, {\n className: ''\n});\n\nexport type MarkerProps = DraggableControlProps & {\n className: string,\n longitude: number,\n latitude: number\n};\n\n/*\n * PureComponent doesn't update when context changes.\n * The only way is to implement our own shouldComponentUpdate here. Considering\n * the parent component (StaticMap or InteractiveMap) is pure, and map re-render\n * is almost always triggered by a viewport change, we almost definitely need to\n * recalculate the marker's position when the parent re-renders.\n */\nexport default class Marker extends DraggableControl<MarkerProps> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n _control: any = null;\n\n _getPosition(): [number, number] {\n const {longitude, latitude, offsetLeft, offsetTop} = this.props;\n const {dragPos, dragOffset} = this.state;\n\n // If dragging, just return the current drag position\n if (dragPos && dragOffset) {\n return this._getDraggedPosition(dragPos, dragOffset);\n }\n\n // Otherwise return the projected lat/lng with offset\n let [x, y] = this._context.viewport.project([longitude, latitude]);\n x += offsetLeft;\n y += offsetTop;\n return [x, y];\n }\n\n _render() {\n const [x, y] = this._getPosition();\n const transform = `translate(${x}px, ${y}px)`;\n const div = this._containerRef.current;\n\n if (this._control && div) {\n // Perf: avoid rerendering if only the viewport changed\n div.style.transform = transform;\n } else {\n const {className, draggable} = this.props;\n const {dragPos} = this.state;\n\n const containerStyle = {\n position: 'absolute',\n left: 0,\n top: 0,\n transform,\n cursor: draggable ? (dragPos ? 'grabbing' : 'grab') : 'auto'\n };\n\n this._control = (\n <div\n className={`mapboxgl-marker ${className}`}\n ref={this._containerRef}\n style={containerStyle}\n >\n {this.props.children}\n </div>\n );\n }\n return this._control;\n }\n\n render() {\n // invalidate cached element\n this._control = null;\n return super.render();\n }\n}\n","// @flow\n\nexport const ANCHOR_POSITION = {\n top: {x: 0.5, y: 0},\n 'top-left': {x: 0, y: 0},\n 'top-right': {x: 1, y: 0},\n bottom: {x: 0.5, y: 1},\n 'bottom-left': {x: 0, y: 1},\n 'bottom-right': {x: 1, y: 1},\n left: {x: 0, y: 0.5},\n right: {x: 1, y: 0.5}\n};\n\nexport type PositionType = $Keys<typeof ANCHOR_POSITION>;\n\nconst ANCHOR_TYPES = Object.keys(ANCHOR_POSITION);\n\n/**\n * Calculate the dynamic position for a popup to fit in a container.\n * @param {Number} x - x position of the anchor on screen\n * @param {Number} y - y position of the anchor on screen\n * @param {Number} width - width of the container\n * @param {Number} height - height of the container\n * @param {Number} padding - extra space from the edge in pixels\n * @param {Number} selfWidth - width of the popup\n * @param {Number} selfHeight - height of the popup\n * @param {String} anchor - type of the anchor, one of 'top', 'bottom',\n 'left', 'right', 'top-left', 'top-right', 'bottom-left' , and 'bottom-right'\n * @returns {String} position - one of 'top', 'bottom',\n 'left', 'right', 'top-left', 'top-right', 'bottom-left' , and 'bottom-right'\n */\n// eslint-disable-next-line complexity\nexport function getDynamicPosition({\n x,\n y,\n width,\n height,\n selfWidth,\n selfHeight,\n anchor,\n padding = 0\n}: {\n x: number,\n y: number,\n width: number,\n height: number,\n selfWidth: number,\n selfHeight: number,\n anchor: PositionType,\n padding: number\n}): PositionType {\n let {x: anchorX, y: anchorY} = ANCHOR_POSITION[anchor];\n\n // anchorY: top - 0, center - 0.5, bottom - 1\n let top = y - anchorY * selfHeight;\n let bottom = top + selfHeight;\n // If needed, adjust anchorY at 0.5 step between [0, 1]\n const yStep = 0.5;\n\n if (top < padding) {\n // Top edge is outside, try move down\n while (top < padding && anchorY >= yStep) {\n anchorY -= yStep;\n top += yStep * selfHeight;\n }\n } else if (bottom > height - padding) {\n // bottom edge is outside, try move up\n while (bottom > height - padding && anchorY <= 1 - yStep) {\n anchorY += yStep;\n bottom -= yStep * selfHeight;\n }\n }\n\n // anchorX: left - 0, center - 0.5, right - 1\n let left = x - anchorX * selfWidth;\n let right = left + selfWidth;\n\n // If needed, adjust anchorX at 0.5 step between [0, 1]\n let xStep = 0.5;\n if (anchorY === 0.5) {\n // If y is centered, then x cannot also be centered\n anchorX = Math.floor(anchorX);\n xStep = 1;\n }\n\n if (left < padding) {\n // Left edge is outside, try move right\n while (left < padding && anchorX >= xStep) {\n anchorX -= xStep;\n left += xStep * selfWidth;\n }\n } else if (right > width - padding) {\n // Right edge is outside, try move left\n while (right > width - padding && anchorX <= 1 - xStep) {\n anchorX += xStep;\n right -= xStep * selfWidth;\n }\n }\n\n // Find the name of the new anchor position\n return (\n ANCHOR_TYPES.find(positionType => {\n const anchorPosition = ANCHOR_POSITION[positionType];\n return anchorPosition.x === anchorX && anchorPosition.y === anchorY;\n }) || anchor\n );\n}\n","// @flow\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport React, {createRef} from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from './base-control';\n\nimport {getDynamicPosition, ANCHOR_POSITION} from '../utils/dynamic-position';\n\nimport type {BaseControlProps} from './base-control';\nimport type {PositionType} from '../utils/dynamic-position';\n\nconst propTypes = Object.assign({}, BaseControl.propTypes, {\n // Custom className\n className: PropTypes.string,\n // Longitude of the anchor point\n longitude: PropTypes.number.isRequired,\n // Latitude of the anchor point\n latitude: PropTypes.number.isRequired,\n // Altitude of the anchor point\n altitude: PropTypes.number,\n // Offset from the left\n offsetLeft: PropTypes.number,\n // Offset from the top\n offsetTop: PropTypes.number,\n // Size of the tip\n tipSize: PropTypes.number,\n // Whether to show close button\n closeButton: PropTypes.bool,\n // Whether to close on click\n closeOnClick: PropTypes.bool,\n // The popup's location relative to the coordinate\n anchor: PropTypes.oneOf(Object.keys(ANCHOR_POSITION)),\n // Whether the popup anchor should be auto-adjusted to fit within the container\n dynamicPosition: PropTypes.bool,\n // Whether popups should be sorted by depth. Useful when using multiple popups with tilted map.\n sortByDepth: PropTypes.bool,\n // Callback when component is closed\n onClose: PropTypes.func\n});\n\nconst defaultProps = Object.assign({}, BaseControl.defaultProps, {\n className: '',\n altitude: 0,\n offsetLeft: 0,\n offsetTop: 0,\n tipSize: 10,\n anchor: 'bottom',\n dynamicPosition: true,\n sortByDepth: false,\n closeButton: true,\n closeOnClick: true,\n onClose: () => {}\n});\n\nexport type PopupProps = BaseControlProps & {\n className: string,\n longitude: number,\n latitude: number,\n altitude: number,\n offsetLeft: number,\n offsetTop: number,\n tipSize: number,\n closeButton: boolean,\n closeOnClick: boolean,\n anchor: PositionType,\n dynamicPosition: boolean,\n sortByDepth: boolean,\n onClose: Function\n};\n\n/*\n * PureComponent doesn't update when context changes.\n * The only way is to implement our own shouldComponentUpdate here. Considering\n * the parent component (StaticMap or InteractiveMap) is pure, and map re-render\n * is almost always triggered by a viewport change, we almost definitely need to\n * recalculate the popup's position when the parent re-renders.\n */\nexport default class Popup extends BaseControl<PopupProps, *, HTMLDivElement> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n _closeOnClick: boolean = false;\n _contentRef: {current: null | HTMLDivElement} = createRef();\n\n componentDidMount() {\n super.componentDidMount();\n // Container just got a size, re-calculate position\n this.forceUpdate();\n }\n\n _getPosition(x: number, y: number): PositionType {\n const {viewport} = this._context;\n const {anchor, dynamicPosition, tipSize} = this.props;\n const content = this._contentRef.current;\n\n if (content) {\n return dynamicPosition\n ? getDynamicPosition({\n x,\n y,\n anchor,\n padding: tipSize,\n width: viewport.width,\n height: viewport.height,\n selfWidth: content.clientWidth,\n selfHeight: content.clientHeight\n })\n : anchor;\n }\n\n return anchor;\n }\n\n _getContainerStyle(x: number, y: number, z: number, positionType: PositionType) {\n const {viewport} = this._context;\n const {offsetLeft, offsetTop, sortByDepth} = this.props;\n const anchorPosition = ANCHOR_POSITION[positionType];\n const left = x + offsetLeft;\n const top = y + offsetTop;\n const style = {\n position: 'absolute',\n transform: `\n translate(${-anchorPosition.x * 100}%, ${-anchorPosition.y * 100}%)\n translate(${left}px, ${top}px)\n `,\n display: undefined,\n zIndex: undefined\n };\n\n if (!sortByDepth) {\n return style;\n }\n if (z > 1 || z < -1 || x < 0 || x > viewport.width || y < 0 || y > viewport.height) {\n // clipped\n style.display = 'none';\n } else {\n // use z-index to rearrange components\n style.zIndex = Math.floor(((1 - z) / 2) * 100000);\n }\n\n return style;\n }\n\n _onClick = evt => {\n if (this.props.captureClick) {\n evt.stopPropagation();\n }\n\n if (this.props.closeOnClick || evt.target.className === 'mapboxgl-popup-close-button') {\n this.props.onClose();\n\n const {eventManager} = this._context;\n if (eventManager) {\n // Using with InteractiveMap\n // After we call `onClose` on `anyclick`, this component will be unmounted\n // at which point we unregister the event listeners and stop blocking propagation.\n // Then after a short delay a `click` event will fire\n // Attach a one-time event listener here to prevent it from triggering `onClick` of the base map\n eventManager.once('click', e => e.stopPropagation(), evt.target);\n }\n }\n };\n\n _renderTip(positionType: PositionType) {\n const {tipSize} = this.props;\n\n return <div key=\"tip\" className=\"mapboxgl-popup-tip\" style={{borderWidth: tipSize}} />;\n }\n\n _renderContent() {\n const {closeButton, children} = this.props;\n // If eventManager does not exist (using with static map), listen to React event\n const onClick = this._context.eventManager ? null : this._onClick;\n\n return (\n <div\n key=\"content\"\n ref={this._contentRef}\n className=\"mapboxgl-popup-content\"\n onClick={onClick}\n >\n {closeButton && (\n <button key=\"close-button\" className=\"mapboxgl-popup-close-button\" type=\"button\">\n ×\n </button>\n )}\n {children}\n </div>\n );\n }\n\n _render() {\n const {className, longitude, latitude, altitude} = this.props;\n\n const [x, y, z] = this._context.viewport.project([longitude, latitude, altitude]);\n\n const positionType = this._getPosition(x, y);\n const containerStyle = this._getContainerStyle(x, y, z, positionType);\n\n return (\n <div\n className={`mapboxgl-popup mapboxgl-popup-anchor-${positionType} ${className}`}\n style={containerStyle}\n ref={this._containerRef}\n >\n {this._renderTip(positionType)}\n {this._renderContent()}\n </div>\n );\n }\n}\n","/* global window */\nlet supported;\n\nexport function isGeolocationSupported() {\n // not necessary to check again\n if (supported !== undefined) {\n return Promise.resolve(supported);\n }\n\n if (window.navigator.permissions !== undefined) {\n // navigator.permissions has incomplete browser support\n // http://caniuse.com/#feat=permissions-api\n // Test for the case where a browser disables Geolocation because of an\n // insecure origin\n return window.navigator.permissions.query({name: 'geolocation'}).then(p => {\n supported = p.state !== 'denied';\n return supported;\n });\n }\n\n supported = Boolean(window.navigator.geolocation);\n return Promise.resolve(supported);\n}\n","// @flow\n\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {document} from '../utils/globals';\nimport PropTypes from 'prop-types';\nimport BaseControl from './base-control';\nimport React from 'react';\nimport mapboxgl from '../utils/mapboxgl';\n\nimport type {BaseControlProps} from './base-control';\n\nconst propTypes = Object.assign({}, BaseControl.propTypes, {\n // Custom className\n className: PropTypes.string,\n /* eslint-disable max-len */\n // `container` is the [compatible DOM element](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen#Compatible_elements)\n // which should be made full screen. By default, the map container element will be made full screen.\n /* eslint-enable max-len */\n container: PropTypes.object\n});\n\nconst defaultProps = Object.assign({}, BaseControl.defaultProps, {\n className: '',\n container: null\n});\n\nexport type FullscreenControlProps = BaseControlProps & {\n className: string,\n container: ?HTMLElement\n};\n\ntype State = {\n isFullscreen: boolean,\n showButton: boolean\n};\n\nexport default class FullscreenControl extends BaseControl<\n FullscreenControlProps,\n State,\n HTMLDivElement\n> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n state = {\n isFullscreen: false,\n showButton: false\n };\n\n _mapboxFullscreenControl: any = null;\n\n componentDidMount() {\n const container = this.props.container || this._context.mapContainer;\n\n this._mapboxFullscreenControl = new mapboxgl.FullscreenControl({\n container\n });\n\n // eslint-disable-next-line\n this.setState({\n showButton: this._mapboxFullscreenControl._checkFullscreenSupport()\n });\n\n document.addEventListener(\n this._mapboxFullscreenControl._fullscreenchange,\n this._onFullscreenChange\n );\n }\n\n componentWillUnmount() {\n document.removeEventListener(\n this._mapboxFullscreenControl._fullscreenchange,\n this._onFullscreenChange\n );\n }\n\n _onFullscreenChange = () => {\n const nextState = !this._mapboxFullscreenControl._fullscreen;\n // this is a hack\n // Mapbox use `_fullscreen` flag to toggle fullscreen mode\n this._mapboxFullscreenControl._fullscreen = nextState;\n this.setState({isFullscreen: nextState});\n };\n\n _onClickFullscreen = () => {\n this._mapboxFullscreenControl._onClickFullscreen();\n };\n\n _renderButton(type: string, label: string, callback: Function) {\n return (\n <button\n key={type}\n className={`mapboxgl-ctrl-icon mapboxgl-ctrl-${type}`}\n type=\"button\"\n title={label}\n onClick={callback}\n >\n <span className=\"mapboxgl-ctrl-icon\" aria-hidden=\"true\" />\n </button>\n );\n }\n\n _render() {\n if (!this.state.showButton) {\n return null;\n }\n\n const {className} = this.props;\n const {isFullscreen} = this.state;\n\n const type = isFullscreen ? 'shrink' : 'fullscreen';\n\n return (\n <div className={`mapboxgl-ctrl mapboxgl-ctrl-group ${className}`} ref={this._containerRef}>\n {this._renderButton(type, 'Toggle fullscreen', this._onClickFullscreen)}\n </div>\n );\n }\n}\n","// @flow\n\n/* global window */\nimport React, {createRef} from 'react';\nimport PropTypes from 'prop-types';\nimport WebMercatorViewport from 'viewport-mercator-project';\n\nimport mapboxgl from '../utils/mapboxgl';\n\nimport BaseControl from './base-control';\nimport Marker from './marker';\nimport MapState from '../utils/map-state';\nimport TransitionManager from '../utils/transition-manager';\nimport {isGeolocationSupported} from '../utils/geolocate-utils';\n\nimport type {BaseControlProps} from './base-control';\n\nconst LINEAR_TRANSITION_PROPS = Object.assign({}, TransitionManager.defaultProps, {\n transitionDuration: 500\n});\n\nconst noop = () => {};\n\nconst propTypes = Object.assign({}, BaseControl.propTypes, {\n // Custom className\n className: PropTypes.string,\n style: PropTypes.object,\n // Custom label assigned to the control\n label: PropTypes.string,\n\n // mapbox geolocate options\n // https://docs.mapbox.com/mapbox-gl-js/api/#geolocatecontrol\n positionOptions: PropTypes.object,\n fitBoundsOptions: PropTypes.object,\n trackUserLocation: PropTypes.bool,\n showUserLocation: PropTypes.bool,\n\n // Callbacks fired when the user interacted with the map. The object passed to the callbacks\n // contains viewport properties such as `longitude`, `latitude`, `zoom` etc.\n onViewStateChange: PropTypes.func,\n onViewportChange: PropTypes.func,\n\n onGeolocate: PropTypes.func\n});\n\nconst defaultProps = Object.assign({}, BaseControl.defaultProps, {\n className: '',\n style: {},\n label: 'Geolocate',\n\n // mapbox geolocate options\n positionOptions: null,\n fitBoundsOptions: null,\n trackUserLocation: false,\n showUserLocation: true,\n\n onGeolocate: () => {}\n});\n\nexport type GeolocateControlProps = BaseControlProps & {\n className: string,\n style: Object,\n label: string,\n positionOptions: any,\n fitBoundsOptions: any,\n trackUserLocation: boolean,\n showUserLocation: boolean,\n onViewStateChange?: Function,\n onViewportChange?: Function,\n onGeolocate?: Function\n};\n\ntype Coordinate = {\n longitude: number,\n latitude: number,\n accuracy: number\n};\ntype Position = {\n coords: Coordinate\n};\ntype State = {\n supportsGeolocation: boolean,\n markerPosition: ?Coordinate\n};\ntype GeolocateControlOptions = {\n positionOptions?: any,\n fitBoundsOptions?: any,\n trackUserLocation?: boolean,\n showUserLocation?: boolean\n};\n\nexport default class GeolocateControl extends BaseControl<\n GeolocateControlProps,\n State,\n HTMLDivElement\n> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n state = {\n supportsGeolocation: false,\n markerPosition: null\n };\n\n _mapboxGeolocateControl: any = null;\n\n _geolocateButtonRef: {current: null | HTMLButtonElement} = createRef();\n\n componentDidMount() {\n isGeolocationSupported().then(result => {\n this.setState({supportsGeolocation: result});\n this._setupMapboxGeolocateControl(result);\n });\n }\n\n componentWillUnmount() {\n // re-implement MapboxGeolocateControl's _onRemove\n // clear the geolocation watch if exists\n if (this._mapboxGeolocateControl) {\n const geolocationWatchID = this._mapboxGeolocateControl._geolocationWatchID;\n if (geolocationWatchID !== undefined) {\n window.navigator.geolocation.clearWatch(geolocationWatchID);\n this._mapboxGeolocateControl._geolocationWatchID = undefined;\n }\n }\n }\n\n _setupMapboxGeolocateControl = (supportsGeolocation: boolean) => {\n if (!supportsGeolocation) {\n /* eslint-disable no-console, no-undef */\n console.warn(\n 'Geolocation support is not available, the GeolocateControl will not be visible.'\n );\n /* eslint-enable no-console, no-undef */\n return;\n }\n\n // For null option, use Mapbox default value\n const controlOptions: GeolocateControlOptions = {\n // disable showUserLocation to avoid Mapbox accessing marker before rendering\n showUserLocation: false\n };\n ['positionOptions', 'fitBoundsOptions', 'trackUserLocation'].forEach(prop => {\n if (prop in this.props && this.props[prop] !== null) {\n controlOptions[prop] = this.props[prop];\n }\n });\n\n this._mapboxGeolocateControl = new mapboxgl.GeolocateControl(controlOptions);\n\n // the following re-implement MapboxGeolocateControl's _setupUI\n // replace mapbox internal prop\n this._mapboxGeolocateControl._watchState = 'OFF';\n\n // replace mapbox internal UI elements\n this._mapboxGeolocateControl._geolocateButton = this._geolocateButtonRef.current;\n if (\n this._mapboxGeolocateControl.options.trackUserLocation &&\n this._mapboxGeolocateControl._geolocateButton\n ) {\n this._mapboxGeolocateControl._geolocateButton.setAttribute('aria-pressed', 'false');\n }\n\n // replace mapbox internal methods\n this._mapboxGeolocateControl._updateMarker = this._updateMarker;\n this._mapboxGeolocateControl._updateCamera = this._updateCamera;\n\n this._mapboxGeolocateControl._setup = true;\n\n // when the camera is changed (and it's not as a result of the Geolocation Control) change\n // the watch mode to background watch, so that the marker is updated but not the camera.\n if (this._mapboxGeolocateControl.options.trackUserLocation) {\n this._context.eventManager.on('panstart', () => {\n if (this._mapboxGeolocateControl._watchState === 'ACTIVE_LOCK') {\n this._mapboxGeolocateControl._watchState = 'BACKGROUND';\n this._mapboxGeolocateControl._geolocateButton.classList.add(\n 'mapboxgl-ctrl-geolocate-background'\n );\n this._mapboxGeolocateControl._geolocateButton.classList.remove(\n 'mapboxgl-ctrl-geolocate-active'\n );\n }\n });\n }\n\n this._mapboxGeolocateControl.on('geolocate', this.props.onGeolocate);\n };\n\n _onClickGeolocate = () => {\n this._mapboxGeolocateControl._map = this._context.map;\n\n if (this.props.showUserLocation) {\n this._mapboxGeolocateControl.on('geolocate', this._updateMarker);\n this._mapboxGeolocateControl.on('trackuserlocationend', this._updateMarker);\n }\n\n return this._mapboxGeolocateControl.trigger();\n };\n\n _updateMarker = (position: Position) => {\n if (position) {\n this.setState({markerPosition: position.coords});\n }\n };\n\n _getBounds = (position: Position) => {\n const center = new mapboxgl.LngLat(position.coords.longitude, position.coords.latitude);\n const radius = position.coords.accuracy;\n const bounds = center.toBounds(radius);\n\n return [[bounds._ne.lng, bounds._ne.lat], [bounds._sw.lng, bounds._sw.lat]];\n };\n\n _updateCamera = (position: Position) => {\n const {viewport} = this._context;\n\n const bounds = this._getBounds(position);\n const {longitude, latitude, zoom} = new WebMercatorViewport(viewport).fitBounds(bounds);\n\n const newViewState = Object.assign({}, viewport, {\n longitude,\n latitude,\n zoom\n });\n const mapState = new MapState(newViewState);\n const viewState = Object.assign({}, mapState.getViewportProps(), LINEAR_TRANSITION_PROPS);\n\n const onViewportChange = this.props.onViewportChange || this._context.onViewportChange || noop;\n const onViewStateChange =\n this.props.onViewStateChange || this._context.onViewStateChange || noop;\n\n // Call new style callback\n onViewStateChange({viewState});\n\n // Call old style callback\n onViewportChange(viewState);\n };\n\n _renderButton = (type: string, label: string, callback: Function) => {\n return (\n <button\n key={type}\n className={`mapboxgl-ctrl-icon mapboxgl-ctrl-${type}`}\n ref={this._geolocateButtonRef}\n type=\"button\"\n title={label}\n onClick={callback}\n >\n <span className=\"mapboxgl-ctrl-icon\" aria-hidden=\"true\" />\n </button>\n );\n };\n\n _renderMarker = () => {\n const {markerPosition} = this.state;\n const {showUserLocation} = this.props;\n if (!markerPosition || !showUserLocation) {\n return null;\n }\n\n return (\n // $FlowFixMe\n <Marker\n key=\"location-maker\"\n className=\"mapboxgl-user-location-dot\"\n longitude={markerPosition.longitude}\n latitude={markerPosition.latitude}\n onContextMenu={e => e.preventDefault()}\n captureDrag={false}\n captureDoubleClick={false}\n />\n );\n };\n\n _render() {\n if (!this.state.supportsGeolocation) {\n return null;\n }\n\n const {className, style, label} = this.props;\n return (\n <div>\n {this._renderMarker()}\n <div\n key=\"geolocate-control\"\n className={`mapboxgl-ctrl mapboxgl-ctrl-group ${className}`}\n ref={this._containerRef}\n style={style}\n onContextMenu={e => e.preventDefault()}\n >\n {this._renderButton('geolocate', label, this._onClickGeolocate)}\n </div>\n </div>\n );\n }\n}\n","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from './base-control';\n\nimport MapState from '../utils/map-state';\nimport {LINEAR_TRANSITION_PROPS} from '../utils/map-controller';\n\nimport deprecateWarn from '../utils/deprecate-warn';\nimport {compareVersions} from '../utils/version';\n\nimport type {BaseControlProps} from './base-control';\n\nconst noop = () => {};\n\nconst propTypes = Object.assign({}, BaseControl.propTypes, {\n // Custom className\n className: PropTypes.string,\n // Callbacks fired when the user interacted with the map. The object passed to the callbacks\n // contains viewport properties such as `longitude`, `latitude`, `zoom` etc.\n onViewStateChange: PropTypes.func,\n onViewportChange: PropTypes.func,\n // Show/hide compass button\n showCompass: PropTypes.bool,\n // Show/hide zoom buttons\n showZoom: PropTypes.bool,\n // Custom labels assigned to the controls\n zoomInLabel: PropTypes.string,\n zoomOutLabel: PropTypes.string,\n compassLabel: PropTypes.string\n});\n\nconst defaultProps = Object.assign({}, BaseControl.defaultProps, {\n className: '',\n showCompass: true,\n showZoom: true,\n zoomInLabel: 'Zoom In',\n zoomOutLabel: 'Zoom Out',\n compassLabel: 'Reset North'\n});\n\nexport type NavigationControlProps = BaseControlProps & {\n className: string,\n onViewStateChange?: Function,\n onViewportChange?: Function,\n showCompass: boolean,\n showZoom: boolean,\n zoomInLabel: string,\n zoomOutLabel: string,\n compassLabel: string\n};\n\ntype ViewportProps = {\n longitude: number,\n latitude: number,\n zoom: number,\n pitch: number,\n bearing: number\n};\n\n// Mapbox version flags. CSS classes were changed in certain versions.\nconst VERSION_LEGACY = 1;\nconst VERSION_1_6 = 2;\n\nfunction getUIVersion(mapboxVersion: string): number {\n return compareVersions(mapboxVersion, '1.6.0') >= 0 ? VERSION_1_6 : VERSION_LEGACY;\n}\n\n/*\n * PureComponent doesn't update when context changes, so\n * implementing our own shouldComponentUpdate here.\n */\nexport default class NavigationControl extends BaseControl<\n NavigationControlProps,\n *,\n HTMLDivElement\n> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n constructor(props: NavigationControlProps) {\n super(props);\n // Check for deprecated props\n deprecateWarn(props);\n }\n\n _uiVersion: number;\n\n _updateViewport(opts: $Shape<ViewportProps>) {\n const {viewport} = this._context;\n const mapState = new MapState(Object.assign({}, viewport, opts));\n const viewState = Object.assign({}, mapState.getViewportProps(), LINEAR_TRANSITION_PROPS);\n\n const onViewportChange = this.props.onViewportChange || this._context.onViewportChange || noop;\n const onViewStateChange =\n this.props.onViewStateChange || this._context.onViewStateChange || noop;\n\n // Call new style callback\n onViewStateChange({viewState});\n\n // Call old style callback\n onViewportChange(viewState);\n }\n\n _onZoomIn = () => {\n this._updateViewport({zoom: this._context.viewport.zoom + 1});\n };\n\n _onZoomOut = () => {\n this._updateViewport({zoom: this._context.viewport.zoom - 1});\n };\n\n _onResetNorth = () => {\n this._updateViewport({bearing: 0, pitch: 0});\n };\n\n _renderCompass() {\n const {bearing} = this._context.viewport;\n const style = {transform: `rotate(${-bearing}deg)`};\n\n return this._uiVersion === VERSION_1_6 ? (\n <span className=\"mapboxgl-ctrl-icon\" aria-hidden=\"true\" style={style} />\n ) : (\n <span className=\"mapboxgl-ctrl-compass-arrow\" style={style} />\n );\n }\n\n _renderButton(type: string, label: string, callback: Function, children: any) {\n return (\n <button\n key={type}\n className={`mapboxgl-ctrl-icon mapboxgl-ctrl-${type}`}\n type=\"button\"\n title={label}\n onClick={callback}\n >\n {children || <span className=\"mapboxgl-ctrl-icon\" aria-hidden=\"true\" />}\n </button>\n );\n }\n\n _render() {\n const {className, showCompass, showZoom, zoomInLabel, zoomOutLabel, compassLabel} = this.props;\n\n if (!this._uiVersion) {\n // map may not exist if context is provided by user application (e.g. DeckGL)\n const {map} = this._context;\n this._uiVersion = getUIVersion(map && map.version);\n }\n\n return (\n <div className={`mapboxgl-ctrl mapboxgl-ctrl-group ${className}`} ref={this._containerRef}>\n {showZoom && this._renderButton('zoom-in', zoomInLabel, this._onZoomIn)}\n {showZoom && this._renderButton('zoom-out', zoomOutLabel, this._onZoomOut)}\n {showCompass &&\n this._renderButton('compass', compassLabel, this._onResetNorth, this._renderCompass())}\n </div>\n );\n }\n}\n","// @flow\n\n// Helper function for version comparison\n// A version is a string in the format of \"{major}.{minor}.{patch}\"\n// Empty/missing version is treated as \"0.0.0\"\n// If version1 is smaller than version2, return -1\n// If version1 is larger than version2, return 1\n// If equal, return 0\nexport function compareVersions(version1: string, version2: string): number {\n const v1 = (version1 || '').split('.').map(Number);\n const v2 = (version2 || '').split('.').map(Number);\n\n for (let i = 0; i < 3; i++) {\n const part1 = v1[i] || 0;\n const part2 = v2[i] || 0;\n if (part1 < part2) {\n return -1;\n }\n if (part1 > part2) {\n return 1;\n }\n }\n\n return 0;\n}\n","// @flow\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from './base-control';\nimport mapboxgl from '../utils/mapboxgl';\n\nimport type {BaseControlProps} from './base-control';\n\nconst propTypes = Object.assign({}, BaseControl.propTypes, {\n maxWidth: PropTypes.number,\n unit: PropTypes.oneOf(['imperial', 'metric', 'nautical'])\n});\n\nconst defaultProps = Object.assign({}, BaseControl.defaultProps, {\n maxWidth: 100,\n unit: 'metric'\n});\n\nexport type ScaleControlProps = BaseControlProps & {\n maxWidth: number,\n unit: string\n};\n\nexport default class ScaleControl extends BaseControl<ScaleControlProps, *, HTMLDivElement> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n componentDidMount() {\n const mapboxScaleControl = new mapboxgl.ScaleControl();\n mapboxScaleControl._map = this._context.map;\n mapboxScaleControl._container = this._containerRef.current;\n this._mapboxScaleControl = mapboxScaleControl;\n\n this._update();\n }\n\n _control: any = null;\n _mapboxScaleControl: any = null;\n\n _update() {\n const mapboxScaleControl = this._mapboxScaleControl;\n if (mapboxScaleControl) {\n mapboxScaleControl.options = this.props;\n mapboxScaleControl._onMove();\n }\n }\n\n _render() {\n this._control = this._control || (\n <div ref={this._containerRef} className=\"mapboxgl-ctrl mapboxgl-ctrl-scale\" />\n );\n // Likely viewport has changed\n this._update();\n\n return this._control;\n }\n}\n","// @flow\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from '../components/base-control';\nimport {window} from '../utils/globals';\n\nimport type {BaseControlProps} from '../components/base-control';\n\nconst propTypes = Object.assign({}, BaseControl.propTypes, {\n redraw: PropTypes.func.isRequired\n});\n\nconst defaultProps = {\n captureScroll: false,\n captureDrag: false,\n captureClick: false,\n captureDoubleClick: false\n};\n\nexport type CanvasOverlayProps = BaseControlProps & {\n redraw: Function\n};\n\nexport default class CanvasOverlay extends BaseControl<CanvasOverlayProps, *, HTMLCanvasElement> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n _canvas: ?HTMLCanvasElement;\n _ctx: any;\n\n componentDidMount() {\n const canvas = this._containerRef.current;\n if (canvas) {\n this._canvas = canvas;\n this._ctx = canvas.getContext('2d');\n }\n this._redraw();\n }\n\n _redraw = () => {\n const ctx = this._ctx;\n if (!ctx) {\n return;\n }\n\n const pixelRatio = window.devicePixelRatio || 1;\n ctx.save();\n ctx.scale(pixelRatio, pixelRatio);\n\n const {viewport, isDragging} = this._context;\n this.props.redraw({\n width: viewport.width,\n height: viewport.height,\n ctx,\n isDragging,\n project: viewport.project.bind(viewport),\n unproject: viewport.unproject.bind(viewport)\n });\n\n ctx.restore();\n };\n\n _render() {\n const pixelRatio = window.devicePixelRatio || 1;\n const {\n viewport: {width, height}\n } = this._context;\n this._redraw();\n\n return (\n <canvas\n ref={this._containerRef}\n width={width * pixelRatio}\n height={height * pixelRatio}\n style={{\n width: `${width}px`,\n height: `${height}px`,\n position: 'absolute',\n left: 0,\n top: 0\n }}\n />\n );\n }\n}\n","// @flow\n\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from '../components/base-control';\n\nimport type {BaseControlProps} from '../components/base-control';\n\nconst propTypes = Object.assign({}, BaseControl.propTypes, {\n redraw: PropTypes.func.isRequired,\n style: PropTypes.object\n});\n\nconst defaultProps = {\n captureScroll: false,\n captureDrag: false,\n captureClick: false,\n captureDoubleClick: false\n};\n\nexport type HTMLOverlayProps = BaseControlProps & {\n redraw: Function,\n style?: Object\n};\n\nexport default class HTMLOverlay extends BaseControl<HTMLOverlayProps, *, HTMLDivElement> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n _render() {\n const {viewport, isDragging} = this._context;\n const style = Object.assign(\n {\n position: 'absolute',\n left: 0,\n top: 0,\n width: viewport.width,\n height: viewport.height\n },\n this.props.style\n );\n\n return (\n <div ref={this._containerRef} style={style}>\n {this.props.redraw({\n width: viewport.width,\n height: viewport.height,\n isDragging,\n project: viewport.project.bind(viewport),\n unproject: viewport.unproject.bind(viewport)\n })}\n </div>\n );\n }\n}\n","// @flow\n\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from '../components/base-control';\n\nimport type {BaseControlProps} from '../components/base-control';\n\nconst propTypes = Object.assign({}, BaseControl.propTypes, {\n redraw: PropTypes.func.isRequired,\n style: PropTypes.object\n});\n\nconst defaultProps = {\n captureScroll: false,\n captureDrag: false,\n captureClick: false,\n captureDoubleClick: false\n};\n\nexport type SVGOverlayProps = BaseControlProps & {\n redraw: Function,\n style?: Object\n};\n\nexport default class SVGOverlay extends BaseControl<SVGOverlayProps, *, Element> {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n _render() {\n const {viewport, isDragging} = this._context;\n const style = Object.assign(\n {\n position: 'absolute',\n left: 0,\n top: 0\n },\n this.props.style\n );\n\n return (\n <svg width={viewport.width} height={viewport.height} ref={this._containerRef} style={style}>\n {this.props.redraw({\n width: viewport.width,\n height: viewport.height,\n isDragging,\n project: viewport.project.bind(viewport),\n unproject: viewport.unproject.bind(viewport)\n })}\n </svg>\n );\n }\n}\n","export { default } from './SvgIcon';","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var nativeExpm1 = Math.expm1;\nvar exp = Math.exp;\n\n// `Math.expm1` method implementation\n// https://tc39.github.io/ecma262/#sec-math.expm1\nmodule.exports = (!nativeExpm1\n // Old FF bug\n || nativeExpm1(10) > 22025.465794806719 || nativeExpm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || nativeExpm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp(x) - 1;\n} : nativeExpm1;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","import { createStyles as createStylesOriginal } from '@material-ui/styles'; // let warnOnce = false;\n// To remove in v5\n\nexport default function createStyles(styles) {\n // warning(\n // warnOnce,\n // [\n // 'Material-UI: createStyles from @material-ui/core/styles is deprecated.',\n // 'Please use @material-ui/styles/createStyles',\n // ].join('\\n'),\n // );\n // warnOnce = true;\n return createStylesOriginal(styles);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport function isUnitless(value) {\n return String(parseFloat(value)).length === String(value).length;\n} // Ported from Compass\n// https://github.com/Compass/compass/blob/master/core/stylesheets/compass/typography/_units.scss\n// Emulate the sass function \"unit\"\n\nexport function getUnit(input) {\n return String(input).match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n} // Emulate the sass function \"unitless\"\n\nexport function toUnitless(length) {\n return parseFloat(length);\n} // Convert any CSS <length> or <percentage> value to any another.\n// From https://github.com/KyleAMathews/convert-css-length\n\nexport function convertLength(baseFontSize) {\n return function (length, toUnit) {\n var fromUnit = getUnit(length); // Optimize for cases where `from` and `to` units are accidentally the same.\n\n if (fromUnit === toUnit) {\n return length;\n } // Convert input length to pixels.\n\n\n var pxLength = toUnitless(length);\n\n if (fromUnit !== 'px') {\n if (fromUnit === 'em') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n } else if (fromUnit === 'rem') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n return length;\n }\n } // Convert length in pixels to the output unit\n\n\n var outputLength = pxLength;\n\n if (toUnit !== 'px') {\n if (toUnit === 'em') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else if (toUnit === 'rem') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else {\n return length;\n }\n }\n\n return parseFloat(outputLength.toFixed(5)) + toUnit;\n };\n}\nexport function alignProperty(_ref) {\n var size = _ref.size,\n grid = _ref.grid;\n var sizeBelow = size - size % grid;\n var sizeAbove = sizeBelow + grid;\n return size - sizeBelow < sizeAbove - size ? sizeBelow : sizeAbove;\n} // fontGrid finds a minimal grid (in rem) for the fontSize values so that the\n// lineHeight falls under a x pixels grid, 4px in the case of Material Design,\n// without changing the relative line height\n\nexport function fontGrid(_ref2) {\n var lineHeight = _ref2.lineHeight,\n pixels = _ref2.pixels,\n htmlFontSize = _ref2.htmlFontSize;\n return pixels / (lineHeight * htmlFontSize);\n}\n/**\n * generate a responsive version of a given CSS property\n * @example\n * responsiveProperty({\n * cssProperty: 'fontSize',\n * min: 15,\n * max: 20,\n * unit: 'px',\n * breakpoints: [300, 600],\n * })\n *\n * // this returns\n *\n * {\n * fontSize: '15px',\n * '@media (min-width:300px)': {\n * fontSize: '17.5px',\n * },\n * '@media (min-width:600px)': {\n * fontSize: '20px',\n * },\n * }\n *\n * @param {Object} params\n * @param {string} params.cssProperty - The CSS property to be made responsive\n * @param {number} params.min - The smallest value of the CSS property\n * @param {number} params.max - The largest value of the CSS property\n * @param {string} [params.unit] - The unit to be used for the CSS property\n * @param {Array.number} [params.breakpoints] - An array of breakpoints\n * @param {number} [params.alignStep] - Round scaled value to fall under this grid\n * @returns {Object} responsive styles for {params.cssProperty}\n */\n\nexport function responsiveProperty(_ref3) {\n var cssProperty = _ref3.cssProperty,\n min = _ref3.min,\n max = _ref3.max,\n _ref3$unit = _ref3.unit,\n unit = _ref3$unit === void 0 ? 'rem' : _ref3$unit,\n _ref3$breakpoints = _ref3.breakpoints,\n breakpoints = _ref3$breakpoints === void 0 ? [600, 960, 1280] : _ref3$breakpoints,\n _ref3$transform = _ref3.transform,\n transform = _ref3$transform === void 0 ? null : _ref3$transform;\n\n var output = _defineProperty({}, cssProperty, \"\".concat(min).concat(unit));\n\n var factor = (max - min) / breakpoints[breakpoints.length - 1];\n breakpoints.forEach(function (breakpoint) {\n var value = min + factor * breakpoint;\n\n if (transform !== null) {\n value = transform(value);\n }\n\n output[\"@media (min-width:\".concat(breakpoint, \"px)\")] = _defineProperty({}, cssProperty, \"\".concat(Math.round(value * 10000) / 10000).concat(unit));\n });\n return output;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { isUnitless, convertLength, responsiveProperty, alignProperty, fontGrid } from './cssUtils';\nexport default function responsiveFontSizes(themeInput) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$breakpoints = options.breakpoints,\n breakpoints = _options$breakpoints === void 0 ? ['sm', 'md', 'lg'] : _options$breakpoints,\n _options$disableAlign = options.disableAlign,\n disableAlign = _options$disableAlign === void 0 ? false : _options$disableAlign,\n _options$factor = options.factor,\n factor = _options$factor === void 0 ? 2 : _options$factor,\n _options$variants = options.variants,\n variants = _options$variants === void 0 ? ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'caption', 'button', 'overline'] : _options$variants;\n\n var theme = _extends({}, themeInput);\n\n theme.typography = _extends({}, theme.typography);\n var typography = theme.typography; // Convert between css lengths e.g. em->px or px->rem\n // Set the baseFontSize for your project. Defaults to 16px (also the browser default).\n\n var convert = convertLength(typography.htmlFontSize);\n var breakpointValues = breakpoints.map(function (x) {\n return theme.breakpoints.values[x];\n });\n variants.forEach(function (variant) {\n var style = typography[variant];\n var remFontSize = parseFloat(convert(style.fontSize, 'rem'));\n\n if (remFontSize <= 1) {\n return;\n }\n\n var maxFontSize = remFontSize;\n var minFontSize = 1 + (maxFontSize - 1) / factor;\n var lineHeight = style.lineHeight;\n\n if (!isUnitless(lineHeight) && !disableAlign) {\n throw new Error([\"Material-UI: unsupported non-unitless line height with grid alignment.\", 'Use unitless line heights instead.'].join('\\n'));\n }\n\n if (!isUnitless(lineHeight)) {\n // make it unitless\n lineHeight = parseFloat(convert(lineHeight, 'rem')) / parseFloat(remFontSize);\n }\n\n var transform = null;\n\n if (!disableAlign) {\n transform = function transform(value) {\n return alignProperty({\n size: value,\n grid: fontGrid({\n pixels: 4,\n lineHeight: lineHeight,\n htmlFontSize: typography.htmlFontSize\n })\n });\n };\n }\n\n typography[variant] = _extends({}, style, {}, responsiveProperty({\n cssProperty: 'fontSize',\n min: minFontSize,\n max: maxFontSize,\n unit: 'rem',\n breakpoints: breakpointValues,\n transform: transform\n }));\n });\n return theme;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport useTheme from '../useTheme';\nexport function withThemeCreator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaultTheme = options.defaultTheme;\n\n var withTheme = function withTheme(Component) {\n if (process.env.NODE_ENV !== 'production') {\n if (Component === undefined) {\n throw new Error(['You are calling withTheme(Component) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n }\n\n var WithTheme = React.forwardRef(function WithTheme(props, ref) {\n var innerRef = props.innerRef,\n other = _objectWithoutProperties(props, [\"innerRef\"]);\n\n var theme = useTheme() || defaultTheme;\n return React.createElement(Component, _extends({\n theme: theme,\n ref: innerRef || ref\n }, other));\n });\n process.env.NODE_ENV !== \"production\" ? WithTheme.propTypes = {\n /**\n * Use that prop to pass a ref to the decorated component.\n * @deprecated\n */\n innerRef: chainPropTypes(PropTypes.oneOfType([PropTypes.func, PropTypes.object]), function (props) {\n if (props.innerRef == null) {\n return null;\n }\n\n return new Error('Material-UI: the `innerRef` prop is deprecated and will be removed in v5. ' + 'Refs are now automatically forwarded to the inner component.');\n })\n } : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n WithTheme.displayName = \"WithTheme(\".concat(getDisplayName(Component), \")\");\n }\n\n hoistNonReactStatics(WithTheme, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Exposed for test purposes.\n WithTheme.Naked = Component;\n }\n\n return WithTheme;\n };\n\n return withTheme;\n} // Provide the theme object as a prop to the input component.\n// It's an alternative API to useTheme().\n// We encourage the usage of useTheme() where possible.\n\nvar withTheme = withThemeCreator();\nexport default withTheme;","import { withThemeCreator } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\nvar withTheme = withThemeCreator({\n defaultTheme: defaultTheme\n});\nexport default withTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport React from 'react';\nimport { SheetsRegistry } from 'jss';\nimport StylesProvider from '../StylesProvider';\nimport createGenerateClassName from '../createGenerateClassName';\n\nvar ServerStyleSheets = /*#__PURE__*/function () {\n function ServerStyleSheets() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, ServerStyleSheets);\n\n this.options = options;\n }\n\n _createClass(ServerStyleSheets, [{\n key: \"collect\",\n value: function collect(children) {\n // This is needed in order to deduplicate the injection of CSS in the page.\n var sheetsManager = new Map(); // This is needed in order to inject the critical CSS.\n\n this.sheetsRegistry = new SheetsRegistry(); // A new class name generator\n\n var generateClassName = createGenerateClassName();\n return React.createElement(StylesProvider, _extends({\n sheetsManager: sheetsManager,\n serverGenerateClassName: generateClassName,\n sheetsRegistry: this.sheetsRegistry\n }, this.options), children);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.sheetsRegistry ? this.sheetsRegistry.toString() : '';\n }\n }, {\n key: \"getStyleElement\",\n value: function getStyleElement(props) {\n return React.createElement('style', _extends({\n id: 'jss-server-side',\n key: 'jss-server-side',\n dangerouslySetInnerHTML: {\n __html: this.toString()\n }\n }, props));\n }\n }]);\n\n return ServerStyleSheets;\n}();\n\nexport { ServerStyleSheets as default };","export * from './colorManipulator';\nexport { default as createMuiTheme } from './createMuiTheme';\nexport { default as createStyles } from './createStyles';\nexport { default as makeStyles } from './makeStyles';\nexport { default as responsiveFontSizes } from './responsiveFontSizes';\nexport { default as styled } from './styled';\nexport * from './transitions';\nexport { default as useTheme } from './useTheme';\nexport { default as withStyles } from './withStyles';\nexport { default as withTheme } from './withTheme';\nexport { createGenerateClassName, jssPreset, ServerStyleSheets, StylesProvider, ThemeProvider as MuiThemeProvider, ThemeProvider } from '@material-ui/styles';","// 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;\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\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 if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\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 var args = [];\n for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n ReflectApply(this.listener, this.target, args);\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 if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\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 if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\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","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport var keys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.\n\nexport default function createBreakpoints(breakpoints) {\n var _breakpoints$values = breakpoints.values,\n values = _breakpoints$values === void 0 ? {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n } : _breakpoints$values,\n _breakpoints$unit = breakpoints.unit,\n unit = _breakpoints$unit === void 0 ? 'px' : _breakpoints$unit,\n _breakpoints$step = breakpoints.step,\n step = _breakpoints$step === void 0 ? 5 : _breakpoints$step,\n other = _objectWithoutProperties(breakpoints, [\"values\", \"unit\", \"step\"]);\n\n function up(key) {\n var value = typeof values[key] === 'number' ? values[key] : key;\n return \"@media (min-width:\".concat(value).concat(unit, \")\");\n }\n\n function down(key) {\n var endIndex = keys.indexOf(key) + 1;\n var upperbound = values[keys[endIndex]];\n\n if (endIndex === keys.length) {\n // xl down applies to all sizes\n return up('xs');\n }\n\n var value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key;\n return \"@media (max-width:\".concat(value - step / 100).concat(unit, \")\");\n }\n\n function between(start, end) {\n var endIndex = keys.indexOf(end);\n\n if (endIndex === keys.length - 1) {\n return up(start);\n }\n\n return \"@media (min-width:\".concat(typeof values[start] === 'number' ? values[start] : start).concat(unit, \") and \") + \"(max-width:\".concat((endIndex !== -1 && typeof values[keys[endIndex + 1]] === 'number' ? values[keys[endIndex + 1]] : end) - step / 100).concat(unit, \")\");\n }\n\n function only(key) {\n return between(key, key);\n }\n\n function width(key) {\n return values[key];\n }\n\n return _extends({\n keys: keys,\n values: values,\n up: up,\n down: down,\n between: between,\n only: only,\n width: width\n }, other);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, spacing, mixins) {\n var _toolbar;\n\n return _extends({\n gutters: function gutters() {\n var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // To deprecate in v4.1\n // warning(\n // false,\n // [\n // 'Material-UI: theme.mixins.gutters() is deprecated.',\n // 'You can use the source of the mixin directly:',\n // `\n // paddingLeft: theme.spacing(2),\n // paddingRight: theme.spacing(2),\n // [theme.breakpoints.up('sm')]: {\n // paddingLeft: theme.spacing(3),\n // paddingRight: theme.spacing(3),\n // },\n // `,\n // ].join('\\n'),\n // );\n return _extends({\n paddingLeft: spacing(2),\n paddingRight: spacing(2)\n }, styles, _defineProperty({}, breakpoints.up('sm'), _extends({\n paddingLeft: spacing(3),\n paddingRight: spacing(3)\n }, styles[breakpoints.up('sm')])));\n },\n toolbar: (_toolbar = {\n minHeight: 56\n }, _defineProperty(_toolbar, \"\".concat(breakpoints.up('xs'), \" and (orientation: landscape)\"), {\n minHeight: 48\n }), _defineProperty(_toolbar, breakpoints.up('sm'), {\n minHeight: 64\n }), _toolbar)\n }, mixins);\n}","var common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","var grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#d5d5d5',\n A200: '#aaaaaa',\n A400: '#303030',\n A700: '#616161'\n};\nexport default grey;","var indigo = {\n 50: '#e8eaf6',\n 100: '#c5cae9',\n 200: '#9fa8da',\n 300: '#7986cb',\n 400: '#5c6bc0',\n 500: '#3f51b5',\n 600: '#3949ab',\n 700: '#303f9f',\n 800: '#283593',\n 900: '#1a237e',\n A100: '#8c9eff',\n A200: '#536dfe',\n A400: '#3d5afe',\n A700: '#304ffe'\n};\nexport default indigo;","var pink = {\n 50: '#fce4ec',\n 100: '#f8bbd0',\n 200: '#f48fb1',\n 300: '#f06292',\n 400: '#ec407a',\n 500: '#e91e63',\n 600: '#d81b60',\n 700: '#c2185b',\n 800: '#ad1457',\n 900: '#880e4f',\n A100: '#ff80ab',\n A200: '#ff4081',\n A400: '#f50057',\n A700: '#c51162'\n};\nexport default pink;","var red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","var orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","var blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","var green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport indigo from '../colors/indigo';\nimport pink from '../colors/pink';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport green from '../colors/green';\nimport { darken, getContrastRatio, lighten } from './colorManipulator';\nexport var light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.54)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)',\n // Text hints.\n hint: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: grey[50]\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport var dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n hint: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: grey[800],\n default: '#303030'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\n\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffset);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffset * 1.5);\n }\n }\n}\n\nexport default function createPalette(palette) {\n var _palette$primary = palette.primary,\n primary = _palette$primary === void 0 ? {\n light: indigo[300],\n main: indigo[500],\n dark: indigo[700]\n } : _palette$primary,\n _palette$secondary = palette.secondary,\n secondary = _palette$secondary === void 0 ? {\n light: pink.A200,\n main: pink.A400,\n dark: pink.A700\n } : _palette$secondary,\n _palette$error = palette.error,\n error = _palette$error === void 0 ? {\n light: red[300],\n main: red[500],\n dark: red[700]\n } : _palette$error,\n _palette$warning = palette.warning,\n warning = _palette$warning === void 0 ? {\n light: orange[300],\n main: orange[500],\n dark: orange[700]\n } : _palette$warning,\n _palette$info = palette.info,\n info = _palette$info === void 0 ? {\n light: blue[300],\n main: blue[500],\n dark: blue[700]\n } : _palette$info,\n _palette$success = palette.success,\n success = _palette$success === void 0 ? {\n light: green[300],\n main: green[500],\n dark: green[700]\n } : _palette$success,\n _palette$type = palette.type,\n type = _palette$type === void 0 ? 'light' : _palette$type,\n _palette$contrastThre = palette.contrastThreshold,\n contrastThreshold = _palette$contrastThre === void 0 ? 3 : _palette$contrastThre,\n _palette$tonalOffset = palette.tonalOffset,\n tonalOffset = _palette$tonalOffset === void 0 ? 0.2 : _palette$tonalOffset,\n other = _objectWithoutProperties(palette, [\"primary\", \"secondary\", \"error\", \"warning\", \"info\", \"success\", \"type\", \"contrastThreshold\", \"tonalOffset\"]); // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n\n\n function getContrastText(background) {\n if (!background) {\n throw new TypeError(\"Material-UI: missing background argument in getContrastText(\".concat(background, \").\"));\n }\n\n var contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n\n if (process.env.NODE_ENV !== 'production') {\n var contrast = getContrastRatio(background, contrastText);\n\n if (contrast < 3) {\n console.error([\"Material-UI: the contrast ratio of \".concat(contrast, \":1 for \").concat(contrastText, \" on \").concat(background), 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n\n return contrastText;\n }\n\n function augmentColor(color) {\n var mainShade = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n var lightShade = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;\n var darkShade = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 700;\n color = _extends({}, color);\n\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!color.main) {\n throw new Error(['Material-UI: the color provided to augmentColor(color) is invalid.', \"The color object needs to have a `main` property or a `\".concat(mainShade, \"` property.\")].join('\\n'));\n }\n }\n\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n\n return color;\n }\n\n var types = {\n dark: dark,\n light: light\n };\n\n if (process.env.NODE_ENV !== 'production') {\n if (!types[type]) {\n console.error(\"Material-UI: the palette type `\".concat(type, \"` is not supported.\"));\n }\n }\n\n var paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: common,\n // The palette type, can be light or dark.\n type: type,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor(primary),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor(secondary, 'A400', 'A200', 'A700'),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor(error),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor(warning),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor(info),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor(success),\n // The grey colors.\n grey: grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold: contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText: getContrastText,\n // Generate a rich color object.\n augmentColor: augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset: tonalOffset\n }, types[type]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\n\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\n\nvar caseAllCaps = {\n textTransform: 'uppercase'\n};\nvar defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n/**\n * @see @link{https://material.io/design/typography/the-type-system.html}\n * @see @link{https://material.io/design/typography/understanding-typography.html}\n */\n\nexport default function createTypography(palette, typography) {\n var _ref = typeof typography === 'function' ? typography(palette) : typography,\n _ref$fontFamily = _ref.fontFamily,\n fontFamily = _ref$fontFamily === void 0 ? defaultFontFamily : _ref$fontFamily,\n _ref$fontSize = _ref.fontSize,\n fontSize = _ref$fontSize === void 0 ? 14 : _ref$fontSize,\n _ref$fontWeightLight = _ref.fontWeightLight,\n fontWeightLight = _ref$fontWeightLight === void 0 ? 300 : _ref$fontWeightLight,\n _ref$fontWeightRegula = _ref.fontWeightRegular,\n fontWeightRegular = _ref$fontWeightRegula === void 0 ? 400 : _ref$fontWeightRegula,\n _ref$fontWeightMedium = _ref.fontWeightMedium,\n fontWeightMedium = _ref$fontWeightMedium === void 0 ? 500 : _ref$fontWeightMedium,\n _ref$fontWeightBold = _ref.fontWeightBold,\n fontWeightBold = _ref$fontWeightBold === void 0 ? 700 : _ref$fontWeightBold,\n _ref$htmlFontSize = _ref.htmlFontSize,\n htmlFontSize = _ref$htmlFontSize === void 0 ? 16 : _ref$htmlFontSize,\n allVariants = _ref.allVariants,\n pxToRem2 = _ref.pxToRem,\n other = _objectWithoutProperties(_ref, [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('Material-UI: `fontSize` is required to be a number.');\n }\n\n if (typeof htmlFontSize !== 'number') {\n console.error('Material-UI: `htmlFontSize` is required to be a number.');\n }\n }\n\n var coef = fontSize / 14;\n\n var pxToRem = pxToRem2 || function (size) {\n return \"\".concat(size / htmlFontSize * coef, \"rem\");\n };\n\n var buildVariant = function buildVariant(fontWeight, size, lineHeight, letterSpacing, casing) {\n return _extends({\n fontFamily: fontFamily,\n fontWeight: fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight: lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: \"\".concat(round(letterSpacing / size), \"em\")\n } : {}, {}, casing, {}, allVariants);\n };\n\n var variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n };\n return deepmerge(_extends({\n htmlFontSize: htmlFontSize,\n pxToRem: pxToRem,\n round: round,\n // TODO v5: remove\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeightLight: fontWeightLight,\n fontWeightRegular: fontWeightRegular,\n fontWeightMedium: fontWeightMedium,\n fontWeightBold: fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n\n });\n}","var shadowKeyUmbraOpacity = 0.2;\nvar shadowKeyPenumbraOpacity = 0.14;\nvar shadowAmbientShadowOpacity = 0.12;\n\nfunction createShadow() {\n return [\"\".concat(arguments.length <= 0 ? undefined : arguments[0], \"px \").concat(arguments.length <= 1 ? undefined : arguments[1], \"px \").concat(arguments.length <= 2 ? undefined : arguments[2], \"px \").concat(arguments.length <= 3 ? undefined : arguments[3], \"px rgba(0,0,0,\").concat(shadowKeyUmbraOpacity, \")\"), \"\".concat(arguments.length <= 4 ? undefined : arguments[4], \"px \").concat(arguments.length <= 5 ? undefined : arguments[5], \"px \").concat(arguments.length <= 6 ? undefined : arguments[6], \"px \").concat(arguments.length <= 7 ? undefined : arguments[7], \"px rgba(0,0,0,\").concat(shadowKeyPenumbraOpacity, \")\"), \"\".concat(arguments.length <= 8 ? undefined : arguments[8], \"px \").concat(arguments.length <= 9 ? undefined : arguments[9], \"px \").concat(arguments.length <= 10 ? undefined : arguments[10], \"px \").concat(arguments.length <= 11 ? undefined : arguments[11], \"px rgba(0,0,0,\").concat(shadowAmbientShadowOpacity, \")\")].join(',');\n} // Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\n\n\nvar shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","var shape = {\n borderRadius: 4\n};\nexport default shape;","import { createUnarySpacing } from '@material-ui/system';\nvar warnOnce;\nexport default function createSpacing() {\n var spacingInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8;\n\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n } // Material Design layouts are visually balanced. Most measurements align to an 8dp grid applied, which aligns both spacing and the overall layout.\n // Smaller components, such as icons and type, can align to a 4dp grid.\n // https://material.io/design/layout/understanding-layout.html#usage\n\n\n var transform = createUnarySpacing({\n spacing: spacingInput\n });\n\n var spacing = function spacing() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!(args.length <= 4)) {\n console.error(\"Material-UI: Too many arguments provided, expected between 0 and 4, got \".concat(args.length));\n }\n }\n\n if (args.length === 0) {\n return transform(1);\n }\n\n if (args.length === 1) {\n return transform(args[0]);\n }\n\n return args.map(function (factor) {\n var output = transform(factor);\n return typeof output === 'number' ? \"\".concat(output, \"px\") : output;\n }).join(' ');\n }; // Backward compatibility, to remove in v5.\n\n\n Object.defineProperty(spacing, 'unit', {\n get: function get() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnOnce || process.env.NODE_ENV === 'test') {\n console.error(['Material-UI: theme.spacing.unit usage has been deprecated.', 'It will be removed in v5.', 'You can replace `theme.spacing.unit * y` with `theme.spacing(y)`.', '', 'You can use the `https://github.com/mui-org/material-ui/tree/master/packages/material-ui-codemod/README.md#theme-spacing-api` migration helper to make the process smoother.'].join('\\n'));\n }\n\n warnOnce = true;\n }\n\n return spacingInput;\n }\n });\n spacing.mui = true;\n return spacing;\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nvar zIndex = {\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\nimport createBreakpoints from './createBreakpoints';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport transitions from './transitions';\nimport zIndex from './zIndex';\n\nfunction createMuiTheme() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _options$breakpoints = options.breakpoints,\n breakpointsInput = _options$breakpoints === void 0 ? {} : _options$breakpoints,\n _options$mixins = options.mixins,\n mixinsInput = _options$mixins === void 0 ? {} : _options$mixins,\n _options$palette = options.palette,\n paletteInput = _options$palette === void 0 ? {} : _options$palette,\n spacingInput = options.spacing,\n _options$typography = options.typography,\n typographyInput = _options$typography === void 0 ? {} : _options$typography,\n other = _objectWithoutProperties(options, [\"breakpoints\", \"mixins\", \"palette\", \"spacing\", \"typography\"]);\n\n var palette = createPalette(paletteInput);\n var breakpoints = createBreakpoints(breakpointsInput);\n var spacing = createSpacing(spacingInput);\n var muiTheme = deepmerge({\n breakpoints: breakpoints,\n direction: 'ltr',\n mixins: createMixins(breakpoints, spacing, mixinsInput),\n overrides: {},\n // Inject custom styles\n palette: palette,\n props: {},\n // Provide default props\n shadows: shadows,\n typography: createTypography(palette, typographyInput),\n spacing: spacing,\n shape: shape,\n transitions: transitions,\n zIndex: zIndex\n }, other);\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n muiTheme = args.reduce(function (acc, argument) {\n return deepmerge(acc, argument);\n }, muiTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n var pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected'];\n\n var traverse = function traverse(node, parentKey) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var key; // eslint-disable-next-line guard-for-in, no-restricted-syntax\n\n for (key in node) {\n var child = node[key];\n\n if (depth === 1) {\n if (key.indexOf('Mui') === 0 && child) {\n traverse(child, key, depth + 1);\n }\n } else if (pseudoClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: the `\".concat(parentKey, \"` component increases \") + \"the CSS specificity of the `\".concat(key, \"` internal state.\"), 'You can not override it like this: ', JSON.stringify(node, null, 2), '', 'Instead, you need to use the $ruleName syntax:', JSON.stringify({\n root: _defineProperty({}, \"&$\".concat(key), child)\n }, null, 2), '', 'https://material-ui.com/r/pseudo-classes-guide'].join('\\n'));\n } // Remove the style to prevent global conflicts.\n\n\n node[key] = {};\n }\n }\n };\n\n traverse(muiTheme.overrides);\n }\n\n return muiTheme;\n}\n\nexport default createMuiTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport makeStyles from '../makeStyles';\n\nfunction omit(input, fields) {\n var output = {};\n Object.keys(input).forEach(function (prop) {\n if (fields.indexOf(prop) === -1) {\n output[prop] = input[prop];\n }\n });\n return output;\n} // styled-components's API removes the mapping between components and styles.\n// Using components as a low-level styling construct can be simpler.\n\n\nexport default function styled(Component) {\n var componentCreator = function componentCreator(style) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var name = options.name,\n stylesOptions = _objectWithoutProperties(options, [\"name\"]);\n\n if (process.env.NODE_ENV !== 'production' && Component === undefined) {\n throw new Error(['You are calling styled(Component)(style) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n\n var classNamePrefix = name;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n var displayName = getDisplayName(Component);\n\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n\n var stylesOrCreator = typeof style === 'function' ? function (theme) {\n return {\n root: function root(props) {\n return style(_extends({\n theme: theme\n }, props));\n }\n };\n } : {\n root: style\n };\n var useStyles = makeStyles(stylesOrCreator, _extends({\n Component: Component,\n name: name || Component.displayName,\n classNamePrefix: classNamePrefix\n }, stylesOptions));\n var filterProps;\n var propTypes = {};\n\n if (style.filterProps) {\n filterProps = style.filterProps;\n delete style.filterProps;\n }\n /* eslint-disable react/forbid-foreign-prop-types */\n\n\n if (style.propTypes) {\n propTypes = style.propTypes;\n delete style.propTypes;\n }\n /* eslint-enable react/forbid-foreign-prop-types */\n\n\n var StyledComponent = React.forwardRef(function StyledComponent(props, ref) {\n var children = props.children,\n classNameProp = props.className,\n clone = props.clone,\n ComponentProp = props.component,\n other = _objectWithoutProperties(props, [\"children\", \"className\", \"clone\", \"component\"]);\n\n var classes = useStyles(props);\n var className = clsx(classes.root, classNameProp);\n var spread = other;\n\n if (filterProps) {\n spread = omit(spread, filterProps);\n }\n\n if (clone) {\n return React.cloneElement(children, _extends({\n className: clsx(children.props.className, className)\n }, spread));\n }\n\n if (typeof children === 'function') {\n return children(_extends({\n className: className\n }, spread));\n }\n\n var FinalComponent = ComponentProp || Component;\n return React.createElement(FinalComponent, _extends({\n ref: ref,\n className: className\n }, spread), children);\n });\n process.env.NODE_ENV !== \"production\" ? StyledComponent.propTypes = _extends({\n /**\n * A render function or node.\n */\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the component will recycle it's children DOM element.\n * It's using `React.cloneElement` internally.\n *\n * This prop will be deprecated and removed in v5\n */\n clone: chainPropTypes(PropTypes.bool, function (props) {\n if (props.clone && props.component) {\n return new Error('You can not use the clone and component prop at the same time.');\n }\n\n return null;\n }),\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType\n }, propTypes) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n StyledComponent.displayName = \"Styled(\".concat(classNamePrefix, \")\");\n }\n\n hoistNonReactStatics(StyledComponent, Component);\n return StyledComponent;\n };\n\n return componentCreator;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { styled as styledWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nvar styled = function styled(Component) {\n var componentCreator = styledWithoutDefault(Component);\n return function (style, options) {\n return componentCreator(style, _extends({\n defaultTheme: defaultTheme\n }, options));\n };\n};\n\nexport default styled;","import React from 'react';\nvar ThemeContext = React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\n\nexport default ThemeContext;","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport PropTypes from 'prop-types';\nimport merge from './merge'; // The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\n\nvar values = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n};\nvar defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: function up(key) {\n return \"@media (min-width:\".concat(values[key], \"px)\");\n }\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n if (process.env.NODE_ENV !== 'production') {\n if (!props.theme) {\n console.error('@material-ui/system: you are calling a style function without a theme value.');\n }\n }\n\n if (Array.isArray(propValue)) {\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n return propValue.reduce(function (acc, item, index) {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n\n if (_typeof(propValue) === 'object') {\n var _themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n\n return Object.keys(propValue).reduce(function (acc, breakpoint) {\n acc[_themeBreakpoints.up(breakpoint)] = styleFromPropValue(propValue[breakpoint]);\n return acc;\n }, {});\n }\n\n var output = styleFromPropValue(propValue);\n return output;\n}\n\nfunction breakpoints(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var base = styleFunction(props);\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n var extended = themeBreakpoints.keys.reduce(function (acc, key) {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme: props.theme\n }, props[key]));\n }\n\n return acc;\n }, null);\n return merge(base, extended);\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default breakpoints;","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n fill: 'currentColor',\n flexShrink: 0,\n fontSize: theme.typography.pxToRem(24),\n transition: theme.transitions.create('fill', {\n duration: theme.transitions.duration.shorter\n })\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"action\"`. */\n colorAction: {\n color: theme.palette.action.active\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `color=\"disabled\"`. */\n colorDisabled: {\n color: theme.palette.action.disabled\n },\n\n /* Styles applied to the root element if `fontSize=\"inherit\"`. */\n fontSizeInherit: {\n fontSize: 'inherit'\n },\n\n /* Styles applied to the root element if `fontSize=\"small\"`. */\n fontSizeSmall: {\n fontSize: theme.typography.pxToRem(20)\n },\n\n /* Styles applied to the root element if `fontSize=\"large\"`. */\n fontSizeLarge: {\n fontSize: theme.typography.pxToRem(35)\n }\n };\n};\nvar SvgIcon = React.forwardRef(function SvgIcon(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'inherit' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'svg' : _props$component,\n _props$fontSize = props.fontSize,\n fontSize = _props$fontSize === void 0 ? 'default' : _props$fontSize,\n htmlColor = props.htmlColor,\n titleAccess = props.titleAccess,\n _props$viewBox = props.viewBox,\n viewBox = _props$viewBox === void 0 ? '0 0 24 24' : _props$viewBox,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"titleAccess\", \"viewBox\"]);\n\n return React.createElement(Component, _extends({\n className: clsx(classes.root, className, color !== 'inherit' && classes[\"color\".concat(capitalize(color))], fontSize !== 'default' && classes[\"fontSize\".concat(capitalize(fontSize))]),\n focusable: \"false\",\n viewBox: viewBox,\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : 'true',\n role: titleAccess ? 'img' : 'presentation',\n ref: ref\n }, other), children, titleAccess ? React.createElement(\"title\", null, titleAccess) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n */\n color: PropTypes.oneOf(['action', 'disabled', 'error', 'inherit', 'primary', 'secondary']),\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n */\n fontSize: PropTypes.oneOf(['default', 'inherit', 'large', 'small']),\n\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this property.\n */\n shapeRendering: PropTypes.string,\n\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default withStyles(styles, {\n name: 'MuiSvgIcon'\n})(SvgIcon);","var hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nvar hadKeyboardEvent = true;\nvar hadFocusVisibleRecently = false;\nvar hadFocusVisibleRecentlyTimeout = null;\nvar inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @return {boolean}\n */\n\nfunction focusTriggersKeyboardModality(node) {\n var type = node.type,\n tagName = node.tagName;\n\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n\n if (node.isContentEditable) {\n return true;\n }\n\n return false;\n}\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\n\n\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n\n hadKeyboardEvent = true;\n}\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\n\n\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\n\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\n\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nfunction isFocusVisible(event) {\n var target = event.target;\n\n try {\n return target.matches(':focus-visible');\n } catch (error) {} // browsers not implementing :focus-visible will throw a SyntaxError\n // we use our own heuristic for those browsers\n // rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n // no need for validFocusTarget check. the user does that by attaching it to\n // focusable events only\n\n\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\n/**\n * Should be called if a blur event is fired on a focus-visible element\n */\n\n\nfunction handleBlurVisible() {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function () {\n hadFocusVisibleRecently = false;\n }, 100);\n}\n\nexport function useIsFocusVisible() {\n var ref = React.useCallback(function (instance) {\n var node = ReactDOM.findDOMNode(instance);\n\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n return {\n isFocusVisible: isFocusVisible,\n onBlurVisible: handleBlurVisible,\n ref: ref\n };\n}","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec4 from 'gl-matrix/vec4';\n\nimport {COORDINATE_SYSTEM, PROJECTION_MODE} from '../../lib/constants';\n\nimport memoize from '../../utils/memoize';\nimport assert from '../../utils/assert';\n\n// To quickly set a vector to zero\nconst ZERO_VECTOR = [0, 0, 0, 0];\n// 4x4 matrix that drops 4th component of vector\nconst VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\nconst DEFAULT_PIXELS_PER_UNIT2 = [0, 0, 0];\nconst DEFAULT_COORDINATE_ORIGIN = [0, 0, 0];\n\n// Based on viewport-mercator-project/test/fp32-limits.js\nexport const LNGLAT_AUTO_OFFSET_ZOOM_THRESHOLD = 12;\n\nconst getMemoizedViewportUniforms = memoize(calculateViewportUniforms);\n\n// The code that utilizes Matrix4 does the same calculation as their mat4 counterparts,\n// has lower performance but provides error checking.\n// Uncomment when debugging\nfunction calculateMatrixAndOffset({viewport, coordinateSystem, coordinateOrigin}) {\n const {viewMatrixUncentered, projectionMatrix, projectionMode} = viewport;\n let {viewMatrix, viewProjectionMatrix} = viewport;\n\n let projectionCenter = ZERO_VECTOR;\n let cameraPosCommon = viewport.cameraPosition;\n let shaderCoordinateOrigin = coordinateOrigin;\n let offsetMode = true;\n\n if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {\n if (projectionMode === PROJECTION_MODE.WEB_MERCATOR) {\n offsetMode = false;\n } else {\n shaderCoordinateOrigin = [Math.fround(viewport.longitude), Math.fround(viewport.latitude), 0];\n }\n } else if (projectionMode === PROJECTION_MODE.IDENTITY) {\n shaderCoordinateOrigin = viewport.position.map(Math.fround);\n }\n\n shaderCoordinateOrigin[2] = shaderCoordinateOrigin[2] || 0;\n\n if (offsetMode) {\n // Calculate transformed projectionCenter (using 64 bit precision JS)\n // This is the key to offset mode precision\n // (avoids doing this addition in 32 bit precision in GLSL)\n const positionCommonSpace = viewport.projectPosition(shaderCoordinateOrigin);\n\n cameraPosCommon = [\n cameraPosCommon[0] - positionCommonSpace[0],\n cameraPosCommon[1] - positionCommonSpace[1],\n cameraPosCommon[2] - positionCommonSpace[2]\n ];\n\n positionCommonSpace[3] = 1;\n\n // projectionCenter = new Matrix4(viewProjectionMatrix)\n // .transformVector([positionPixels[0], positionPixels[1], 0.0, 1.0]);\n projectionCenter = vec4.transformMat4([], positionCommonSpace, viewProjectionMatrix);\n\n // Always apply uncentered projection matrix if available (shader adds center)\n viewMatrix = viewMatrixUncentered || viewMatrix;\n\n // Zero out 4th coordinate (\"after\" model matrix) - avoids further translations\n // viewMatrix = new Matrix4(viewMatrixUncentered || viewMatrix)\n // .multiplyRight(VECTOR_TO_POINT_MATRIX);\n viewProjectionMatrix = mat4.multiply([], projectionMatrix, viewMatrix);\n viewProjectionMatrix = mat4.multiply([], viewProjectionMatrix, VECTOR_TO_POINT_MATRIX);\n }\n\n return {\n viewMatrix,\n viewProjectionMatrix,\n projectionCenter,\n cameraPosCommon,\n shaderCoordinateOrigin\n };\n}\n\n/**\n * Returns uniforms for shaders based on current projection\n * includes: projection matrix suitable for shaders\n *\n * TODO - Ensure this works with any viewport, not just WebMercatorViewports\n *\n * @param {WebMercatorViewport} viewport -\n * @return {Float32Array} - 4x4 projection matrix that can be used in shaders\n */\nexport function getUniformsFromViewport({\n viewport,\n devicePixelRatio = 1,\n modelMatrix = null,\n // Match Layer.defaultProps\n coordinateSystem = COORDINATE_SYSTEM.DEFAULT,\n coordinateOrigin = DEFAULT_COORDINATE_ORIGIN,\n wrapLongitude = false,\n // Deprecated\n projectionMode,\n positionOrigin\n} = {}) {\n assert(viewport);\n\n if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = viewport.isGeospatial\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN;\n }\n\n const uniforms = getMemoizedViewportUniforms({\n viewport,\n devicePixelRatio,\n coordinateSystem,\n coordinateOrigin\n });\n\n uniforms.project_uWrapLongitude = wrapLongitude;\n uniforms.project_uModelMatrix = modelMatrix || IDENTITY_MATRIX;\n\n return uniforms;\n}\n\nfunction calculateViewportUniforms({\n viewport,\n devicePixelRatio,\n coordinateSystem,\n coordinateOrigin\n}) {\n const {\n projectionCenter,\n viewProjectionMatrix,\n cameraPosCommon,\n shaderCoordinateOrigin\n } = calculateMatrixAndOffset({\n coordinateSystem,\n coordinateOrigin,\n viewport\n });\n\n // Calculate projection pixels per unit\n const distanceScales = viewport.getDistanceScales();\n\n const viewportSize = [viewport.width * devicePixelRatio, viewport.height * devicePixelRatio];\n\n const uniforms = {\n // Projection mode values\n project_uCoordinateSystem: coordinateSystem,\n project_uProjectionMode: viewport.projectionMode,\n project_uCoordinateOrigin: shaderCoordinateOrigin,\n project_uCenter: projectionCenter,\n project_uAntimeridian: (viewport.longitude || 0) - 180,\n\n // Screen size\n project_uViewportSize: viewportSize,\n project_uDevicePixelRatio: devicePixelRatio,\n\n // Distance at which screen pixels are projected\n project_uFocalDistance: viewport.focalDistance || 1,\n project_uCommonUnitsPerMeter: distanceScales.unitsPerMeter,\n project_uCommonUnitsPerWorldUnit: distanceScales.unitsPerMeter,\n project_uCommonUnitsPerWorldUnit2: DEFAULT_PIXELS_PER_UNIT2,\n project_uScale: viewport.scale, // This is the mercator scale (2 ** zoom)\n\n project_uViewProjectionMatrix: viewProjectionMatrix,\n\n // This is for lighting calculations\n project_uCameraPosition: cameraPosCommon\n };\n\n const distanceScalesAtOrigin = viewport.getDistanceScales(shaderCoordinateOrigin);\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.METER_OFFSETS:\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerMeter;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerMeter2;\n break;\n\n case COORDINATE_SYSTEM.LNGLAT:\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerDegree;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerDegree2;\n break;\n\n default:\n break;\n }\n\n return uniforms;\n}\n","// This function is needed in initialization stages,\n// make sure it can be imported in isolation\n\nimport isElectron from './is-electron';\n\nexport default function isBrowser() {\n // Check if in browser by duck-typing Node context\n const isNode =\n typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n\n return !isNode || isElectron();\n}\n\n// document does not exist on worker thread\nexport function isBrowserMainThread() {\n return isBrowser() && typeof document !== 'undefined';\n}\n","// based on https://github.com/cheton/is-electron\n// https://github.com/electron/electron/issues/2288\n/* eslint-disable complexity */\nexport default function isElectron(mockUserAgent) {\n // Renderer process\n if (\n typeof window !== 'undefined' &&\n typeof window.process === 'object' &&\n window.process.type === 'renderer'\n ) {\n return true;\n }\n // Main process\n if (\n typeof process !== 'undefined' &&\n typeof process.versions === 'object' &&\n Boolean(process.versions.electron)\n ) {\n return true;\n }\n // Detect the user agent when the `nodeIntegration` option is set to true\n const realUserAgent =\n typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n if (userAgent && userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n return false;\n}\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import defineProperty from \"./defineProperty\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","import setPrototypeOf from \"./setPrototypeOf\";\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\nexport default function createSvgIcon(path, displayName) {\n var Component = React.memo(React.forwardRef(function (props, ref) {\n return React.createElement(SvgIcon, _extends({\n ref: ref\n }, props), path);\n }));\n\n if (process.env.NODE_ENV !== 'production') {\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = SvgIcon.muiName;\n return Component;\n}","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","var arrayEvery = require('./_arrayEvery'),\n baseEvery = require('./_baseEvery'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = every;\n","var MILLISECONDS_IN_MINUTE = 60000;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\nexport default function getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import * as React from 'react';\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */\n\nvar ExpansionPanelContext = React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ExpansionPanelContext.displayName = 'ExpansionPanelContext';\n}\n\nexport default ExpansionPanelContext;","/* eslint-disable complexity */\n\n/* This class creates a luma.gl-compatible \"view\" on top of a DataColumn instance */\nexport default class ShaderAttribute {\n constructor(dataColumn, opts) {\n // Options that cannot be changed later\n this.opts = opts;\n this.source = dataColumn;\n }\n\n get value() {\n return this.source.value;\n }\n\n getValue() {\n const buffer = this.source.getBuffer();\n const accessor = this.getAccessor();\n if (buffer) {\n return [buffer, accessor];\n }\n\n const {value} = this.source;\n const {size} = accessor;\n let constantValue = value;\n\n if (value && value.length !== size) {\n constantValue = new Float32Array(size);\n // initiate offset values\n const index = accessor.elementOffset || 0; // element offset\n for (let i = 0; i < size; ++i) {\n constantValue[i] = value[index + i];\n }\n }\n\n return constantValue;\n }\n\n getAccessor() {\n return {\n // source data accessor\n ...this.source.getAccessor(),\n // shader attribute overrides\n ...this.opts\n };\n }\n}\n","/* eslint-disable complexity */\nimport GL from '@luma.gl/constants';\nimport {hasFeature, FEATURES, Buffer} from '@luma.gl/core';\nimport ShaderAttribute from './shader-attribute';\nimport {glArrayFromType} from './gl-utils';\nimport typedArrayManager from '../../utils/typed-array-manager';\nimport {toDoublePrecisionArray} from '../../utils/math-utils';\nimport log from '../../utils/log';\n\nfunction getStride(accessor) {\n return accessor.stride || accessor.size * accessor.bytesPerElement;\n}\n\nfunction resolveShaderAttribute(baseAccessor, shaderAttributeOptions) {\n if (shaderAttributeOptions.offset) {\n log.removed('shaderAttribute.offset', 'vertexOffset, elementOffset')();\n }\n\n // All shader attributes share the parent's stride\n const stride = getStride(baseAccessor);\n // `vertexOffset` is used to access the neighboring vertex's value\n // e.g. `nextPositions` in polygon\n const vertexOffset =\n 'vertexOffset' in shaderAttributeOptions\n ? shaderAttributeOptions.vertexOffset\n : baseAccessor.vertexOffset || 0;\n // `elementOffset` is defined when shader attribute's size is smaller than the parent's\n // e.g. `translations` in transform matrix\n const elementOffset = shaderAttributeOptions.elementOffset || 0;\n const offset =\n // offsets defined by the attribute\n vertexOffset * stride +\n elementOffset * baseAccessor.bytesPerElement +\n // offsets defined by external buffers if any\n (baseAccessor.offset || 0);\n\n return {\n ...shaderAttributeOptions,\n offset,\n stride\n };\n}\n\nfunction resolveDoublePrecisionShaderAttributes(baseAccessor, shaderAttributeOptions) {\n const resolvedOptions = resolveShaderAttribute(baseAccessor, shaderAttributeOptions);\n\n return {\n high: resolvedOptions,\n low: {\n ...resolvedOptions,\n offset: resolvedOptions.offset + baseAccessor.size * 4\n }\n };\n}\n\nexport default class DataColumn {\n /* eslint-disable max-statements */\n constructor(gl, opts) {\n this.gl = gl;\n this.id = opts.id;\n this.size = opts.size;\n\n const logicalType = opts.logicalType || opts.type;\n const doublePrecision = logicalType === GL.DOUBLE;\n\n let {defaultValue} = opts;\n defaultValue = Number.isFinite(defaultValue)\n ? [defaultValue]\n : defaultValue || new Array(this.size).fill(0);\n opts.defaultValue = defaultValue;\n\n let bufferType = logicalType;\n if (doublePrecision) {\n bufferType = GL.FLOAT;\n } else if (!bufferType && opts.isIndexed) {\n bufferType =\n gl && hasFeature(gl, FEATURES.ELEMENT_INDEX_UINT32) ? GL.UNSIGNED_INT : GL.UNSIGNED_SHORT;\n } else if (!bufferType) {\n bufferType = GL.FLOAT;\n }\n opts.logicalType = logicalType;\n opts.type = bufferType;\n\n // This is the attribute type defined by the layer\n // If an external buffer is provided, this.type may be overwritten\n // But we always want to use defaultType for allocation\n let defaultType = glArrayFromType(logicalType || bufferType || GL.FLOAT);\n this.shaderAttributes = {};\n this.doublePrecision = doublePrecision;\n\n // `fp64: false` tells a double-precision attribute to allocate Float32Arrays\n // by default when using auto-packing. This is more efficient in use cases where\n // high precision is unnecessary, but the `64Low` attribute is still required\n // by the shader.\n if (doublePrecision && opts.fp64 === false) {\n defaultType = Float32Array;\n }\n opts.bytesPerElement = defaultType.BYTES_PER_ELEMENT;\n\n this.defaultType = defaultType;\n this.value = null;\n this.settings = opts;\n this.state = {\n externalBuffer: null,\n bufferAccessor: opts,\n allocatedValue: null,\n constant: false\n };\n this._buffer = null;\n\n this.setData(opts);\n }\n /* eslint-enable max-statements */\n\n get buffer() {\n if (!this._buffer) {\n const {isIndexed, type} = this.settings;\n this._buffer = new Buffer(this.gl, {\n id: this.id,\n target: isIndexed ? GL.ELEMENT_ARRAY_BUFFER : GL.ARRAY_BUFFER,\n accessor: {type}\n });\n }\n return this._buffer;\n }\n\n get byteOffset() {\n const accessor = this.getAccessor();\n if (accessor.vertexOffset) {\n return accessor.vertexOffset * getStride(accessor);\n }\n return 0;\n }\n\n delete() {\n if (this._buffer) {\n this._buffer.delete();\n this._buffer = null;\n }\n typedArrayManager.release(this.state.allocatedValue);\n }\n\n getShaderAttributes(id, options) {\n if (this.doublePrecision) {\n const shaderAttributes = {};\n const isBuffer64Bit = this.value instanceof Float64Array;\n\n const doubleShaderAttributeDefs = resolveDoublePrecisionShaderAttributes(\n this.getAccessor(),\n options || {}\n );\n\n shaderAttributes[id] = new ShaderAttribute(this, doubleShaderAttributeDefs.high);\n shaderAttributes[`${id}64Low`] = isBuffer64Bit\n ? new ShaderAttribute(this, doubleShaderAttributeDefs.low)\n : new Float32Array(this.size); // use constant for low part if buffer is 32-bit\n return shaderAttributes;\n }\n if (options) {\n const shaderAttributeDef = resolveShaderAttribute(this.getAccessor(), options);\n return {[id]: new ShaderAttribute(this, shaderAttributeDef)};\n }\n return {[id]: this};\n }\n\n getBuffer() {\n if (this.state.constant) {\n return null;\n }\n return this.state.externalBuffer || this._buffer;\n }\n\n getValue() {\n if (this.state.constant) {\n return this.value;\n }\n return [this.getBuffer(), this.getAccessor()];\n }\n\n getAccessor() {\n return this.state.bufferAccessor;\n }\n\n // returns true if success\n // eslint-disable-next-line max-statements\n setData(opts) {\n const {state} = this;\n if (ArrayBuffer.isView(opts)) {\n opts = {value: opts};\n } else if (opts instanceof Buffer) {\n opts = {buffer: opts};\n }\n\n const accessor = {...this.settings, ...opts};\n state.bufferAccessor = accessor;\n\n if (opts.constant) {\n // set constant\n let value = opts.value;\n value = this._normalizeValue(value, [], 0);\n if (this.settings.normalized) {\n value = this._normalizeConstant(value);\n }\n const hasChanged = !state.constant || !this._areValuesEqual(value, this.value);\n\n if (!hasChanged) {\n return false;\n }\n state.externalBuffer = null;\n state.constant = true;\n this.value = value;\n } else if (opts.buffer) {\n const buffer = opts.buffer;\n state.externalBuffer = buffer;\n state.constant = false;\n this.value = opts.value;\n const isBuffer64Bit = opts.value instanceof Float64Array;\n\n // Copy the type of the buffer into the accessor\n accessor.type = opts.type || buffer.accessor.type;\n accessor.bytesPerElement = buffer.accessor.BYTES_PER_ELEMENT * (isBuffer64Bit ? 2 : 1);\n accessor.stride = getStride(accessor);\n } else if (opts.value) {\n this._checkExternalBuffer(opts);\n\n let value = opts.value;\n state.externalBuffer = null;\n state.constant = false;\n this.value = value;\n\n accessor.bytesPerElement = value.BYTES_PER_ELEMENT;\n accessor.stride = getStride(accessor);\n\n const {buffer, byteOffset} = this;\n\n if (this.doublePrecision && value instanceof Float64Array) {\n value = toDoublePrecisionArray(value, accessor);\n }\n // TODO: support offset in buffer.setData?\n if (buffer.byteLength < value.byteLength + byteOffset) {\n // Over allocation is required because shader attributes may have bigger offsets\n buffer.reallocate((value.byteLength + byteOffset) * 2);\n }\n // Hack: force Buffer to infer data type\n buffer.setAccessor(null);\n buffer.subData({data: value, offset: byteOffset});\n accessor.type = opts.type || buffer.accessor.type;\n }\n\n return true;\n }\n\n updateSubBuffer(opts = {}) {\n const {value} = this;\n const {startOffset = 0, endOffset} = opts;\n this.buffer.subData({\n data:\n this.doublePrecision && value instanceof Float64Array\n ? toDoublePrecisionArray(value, {\n size: this.size,\n startIndex: startOffset,\n endIndex: endOffset\n })\n : value.subarray(startOffset, endOffset),\n offset: startOffset * value.BYTES_PER_ELEMENT + this.byteOffset\n });\n }\n\n allocate({numInstances, copy = false}) {\n const {state} = this;\n const oldValue = state.allocatedValue;\n\n // Allocate at least one element to ensure a valid buffer\n const value = typedArrayManager.allocate(oldValue, numInstances + 1, {\n size: this.size,\n type: this.defaultType,\n copy\n });\n this.value = value;\n const {buffer, byteOffset} = this;\n\n if (buffer.byteLength < value.byteLength + byteOffset) {\n buffer.reallocate(value.byteLength + byteOffset);\n\n if (copy && oldValue) {\n // Upload the full existing attribute value to the GPU, so that updateBuffer\n // can choose to only update a partial range.\n // TODO - copy old buffer to new buffer on the GPU\n buffer.subData({\n data:\n oldValue instanceof Float64Array ? toDoublePrecisionArray(oldValue, this) : oldValue,\n offset: byteOffset\n });\n }\n }\n\n state.allocatedValue = value;\n state.constant = false;\n state.externalBuffer = null;\n state.bufferAccessor = this.settings;\n return true;\n }\n\n // PRIVATE HELPER METHODS\n _checkExternalBuffer(opts) {\n const {value} = opts;\n if (!opts.constant && value) {\n const ArrayType = this.defaultType;\n\n let illegalArrayType = false;\n if (this.doublePrecision) {\n // not 32bit or 64bit\n illegalArrayType = value.BYTES_PER_ELEMENT < 4;\n }\n if (illegalArrayType) {\n throw new Error(`Attribute ${this.id} does not support ${value.constructor.name}`);\n }\n if (!(value instanceof ArrayType) && this.settings.normalized && !('normalized' in opts)) {\n log.warn(`Attribute ${this.id} is normalized`)();\n }\n }\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/vertexAttribPointer\n _normalizeConstant(value) {\n switch (this.settings.type) {\n case GL.BYTE:\n // normalize [-128, 127] to [-1, 1]\n return new Float32Array(value).map(x => ((x + 128) / 255) * 2 - 1);\n\n case GL.SHORT:\n // normalize [-32768, 32767] to [-1, 1]\n return new Float32Array(value).map(x => ((x + 32768) / 65535) * 2 - 1);\n\n case GL.UNSIGNED_BYTE:\n // normalize [0, 255] to [0, 1]\n return new Float32Array(value).map(x => x / 255);\n\n case GL.UNSIGNED_SHORT:\n // normalize [0, 65535] to [0, 1]\n return new Float32Array(value).map(x => x / 65535);\n\n default:\n // No normalization for gl.FLOAT and gl.HALF_FLOAT\n return value;\n }\n }\n\n /* check user supplied values and apply fallback */\n _normalizeValue(value, out, start) {\n const {defaultValue, size} = this.settings;\n\n if (Number.isFinite(value)) {\n out[start] = value;\n return out;\n }\n if (!value) {\n out[start] = defaultValue[0];\n return out;\n }\n\n // Important - switch cases are 5x more performant than a for loop!\n /* eslint-disable no-fallthrough, default-case */\n switch (size) {\n case 4:\n out[start + 3] = Number.isFinite(value[3]) ? value[3] : defaultValue[3];\n case 3:\n out[start + 2] = Number.isFinite(value[2]) ? value[2] : defaultValue[2];\n case 2:\n out[start + 1] = Number.isFinite(value[1]) ? value[1] : defaultValue[1];\n case 1:\n out[start + 0] = Number.isFinite(value[0]) ? value[0] : defaultValue[0];\n break;\n\n default:\n // In the rare case where the attribute size > 4, do it the slow way\n // This is used for e.g. transform matrices\n let i = size;\n while (--i >= 0) {\n out[start + i] = Number.isFinite(value[i]) ? value[i] : defaultValue[i];\n }\n }\n\n return out;\n }\n\n _areValuesEqual(value1, value2) {\n if (!value1 || !value2) {\n return false;\n }\n const {size} = this;\n for (let i = 0; i < size; i++) {\n if (value1[i] !== value2[i]) {\n return false;\n }\n }\n return true;\n }\n}\n","import GL from '@luma.gl/constants';\n\n/* eslint-disable complexity */\nexport function glArrayFromType(glType) {\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.DOUBLE:\n return Float64Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return Uint8ClampedArray;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Unknown GL type');\n }\n}\n/* eslint-enable complexity */\n","/* \n * range (Array)\n * + start (Number) - the start index (incl.)\n * + end (Number) - the end index (excl.)\n * rangeList (Array) - array of sorted, combined ranges\n */\nexport const EMPTY = [];\nexport const FULL = [[0, Infinity]];\n\n// Insert a range into a range collection\nexport function add(rangeList, range) {\n // Noop if range collection already covers all\n if (rangeList === FULL) {\n return rangeList;\n }\n\n // Validate the input range\n if (range[0] < 0) {\n range[0] = 0;\n }\n if (range[0] >= range[1]) {\n return rangeList;\n }\n\n // TODO - split off to tree-shakable Range class\n const newRangeList = [];\n const len = rangeList.length;\n let insertPosition = 0;\n\n for (let i = 0; i < len; i++) {\n const range0 = rangeList[i];\n\n if (range0[1] < range[0]) {\n // the current range is to the left of the new range\n newRangeList.push(range0);\n insertPosition = i + 1;\n } else if (range0[0] > range[1]) {\n // the current range is to the right of the new range\n newRangeList.push(range0);\n } else {\n range = [Math.min(range0[0], range[0]), Math.max(range0[1], range[1])];\n }\n }\n newRangeList.splice(insertPosition, 0, range);\n return newRangeList;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/*\n * Helper function for padArray\n */\nfunction padArrayChunk({source, target, start = 0, end, getData}) {\n end = end || target.length;\n\n const sourceLength = source.length;\n const targetLength = end - start;\n\n if (sourceLength > targetLength) {\n target.set(source.subarray(0, targetLength), start);\n return;\n }\n\n target.set(source, start);\n\n if (!getData) {\n return;\n }\n\n // source is not large enough to fill target space, call `getData` to get filler data\n let i = sourceLength;\n while (i < targetLength) {\n const datum = getData(i, source);\n for (let j = 0; j < datum.length; j++) {\n target[start + i] = datum[j];\n i++;\n }\n }\n}\n\n/*\n * The padArray function stretches a source array to the size of a target array.\n The arrays can have internal structures (like the attributes of PathLayer and\n SolidPolygonLayer), defined by the optional sourceStartIndices and targetStartIndices parameters.\n If the target array is larger, the getData callback is used to fill in the blanks.\n * @params {TypedArray} source - original data\n * @params {TypedArray} target - output data\n * @params {Number} size - length per datum\n * @params {Function} getData - callback to get new data when source is short\n * @params {Array<Number>} [sourceStartIndices] - subdivision of the original data in [object0StartIndex, object1StartIndex, ...]\n * @params {Array<Number>} [targetStartIndices] - subdivision of the output data in [object0StartIndex, object1StartIndex, ...]\n */\nexport function padArray({source, target, size, getData, sourceStartIndices, targetStartIndices}) {\n if (!Array.isArray(targetStartIndices)) {\n // Flat arrays\n padArrayChunk({\n source,\n target,\n getData\n });\n return target;\n }\n\n // Arrays have internal structure\n let sourceIndex = 0;\n let targetIndex = 0;\n const getChunkData = getData && ((i, chunk) => getData(i + targetIndex, chunk));\n\n const n = Math.min(sourceStartIndices.length, targetStartIndices.length);\n\n for (let i = 1; i < n; i++) {\n const nextSourceIndex = sourceStartIndices[i] * size;\n const nextTargetIndex = targetStartIndices[i] * size;\n\n padArrayChunk({\n source: source.subarray(sourceIndex, nextSourceIndex),\n target,\n start: targetIndex,\n end: nextTargetIndex,\n getData: getChunkData\n });\n\n sourceIndex = nextSourceIndex;\n targetIndex = nextTargetIndex;\n }\n\n if (targetIndex < target.length) {\n padArrayChunk({\n source: [],\n target,\n start: targetIndex,\n getData: getChunkData\n });\n }\n\n return target;\n}\n","import {padArray} from '../../utils/array-utils';\n\nconst DEFAULT_TRANSITION_SETTINGS = {\n interpolation: {\n duration: 0,\n easing: t => t\n },\n spring: {\n stiffness: 0.05,\n damping: 0.5\n }\n};\n\nexport function normalizeTransitionSettings(userSettings, layerSettings) {\n if (!userSettings) {\n return null;\n }\n if (Number.isFinite(userSettings)) {\n userSettings = {duration: userSettings};\n }\n userSettings.type = userSettings.type || 'interpolation';\n return Object.assign(\n {},\n DEFAULT_TRANSITION_SETTINGS[userSettings.type],\n layerSettings,\n userSettings\n );\n}\n\n// NOTE: NOT COPYING OVER OFFSET OR STRIDE HERE BECAUSE:\n// (1) WE DON'T SUPPORT INTERLEAVED BUFFERS FOR TRANSITIONS\n// (2) BUFFERS WITH OFFSETS ALWAYS CONTAIN VALUES OF THE SAME SIZE\n// (3) THE OPERATIONS IN THE SHADER ARE PER-COMPONENT (addition and scaling)\nexport function getSourceBufferAttribute(gl, attribute) {\n // The Attribute we pass to Transform as a sourceBuffer must have {divisor: 0}\n // so we create a copy of the attribute (with divisor=0) to use when running\n // transform feedback\n const buffer = attribute.getBuffer();\n if (buffer) {\n return [\n attribute.getBuffer(),\n {\n divisor: 0,\n size: attribute.size,\n normalized: attribute.settings.normalized\n }\n ];\n }\n // constant\n // don't pass normalized here because the `value` from a normalized attribute is\n // already normalized\n return attribute.value;\n}\n\nexport function getAttributeTypeFromSize(size) {\n switch (size) {\n case 1:\n return 'float';\n case 2:\n return 'vec2';\n case 3:\n return 'vec3';\n case 4:\n return 'vec4';\n default:\n throw new Error(`No defined attribute type for size \"${size}\"`);\n }\n}\n\nexport function cycleBuffers(buffers) {\n buffers.push(buffers.shift());\n}\n\nexport function getAttributeBufferLength(attribute, numInstances) {\n const {doublePrecision, settings, value, size} = attribute;\n const multiplier = doublePrecision ? 2 : 1;\n return (settings.noAlloc ? value.length : numInstances * size) * multiplier;\n}\n\n// This helper is used when transitioning attributes from a set of values in one buffer layout\n// to a set of values in a different buffer layout. (Buffer layouts are used when attribute values\n// within a buffer should be grouped for drawElements, like the Polygon layer.) For example, a\n// buffer layout of [3, 4] might have data [A1, A2, A3, B1, B2, B3, B4]. If it needs to transition\n// to a buffer layout of [4, 2], it should produce a buffer, using the transition setting's `enter`\n// function, that looks like this: [A1, A2, A3, A4 (user `enter` fn), B1, B2, 0]. Note: the final\n// 0 in this buffer is because we never shrink buffers, only grow them, for performance reasons.\nexport function padBuffer({\n buffer,\n numInstances,\n attribute,\n fromLength,\n fromStartIndices,\n getData = x => x\n}) {\n // TODO: move the precisionMultiplier logic to the attribute when retrieving\n // its `size` and `elementOffset`?\n const precisionMultiplier = attribute.doublePrecision ? 2 : 1;\n const size = attribute.size * precisionMultiplier;\n const byteOffset = attribute.byteOffset;\n const toStartIndices = attribute.startIndices;\n const hasStartIndices = fromStartIndices && toStartIndices;\n const toLength = getAttributeBufferLength(attribute, numInstances);\n const isConstant = attribute.state.constant;\n\n // check if buffer needs to be padded\n if (!hasStartIndices && fromLength >= toLength) {\n return;\n }\n\n const toData = isConstant\n ? attribute.value\n : attribute.getBuffer().getData({srcByteOffset: byteOffset});\n if (attribute.settings.normalized && !isConstant) {\n const getter = getData;\n getData = (value, chunk) => attribute._normalizeConstant(getter(value, chunk));\n }\n\n const getMissingData = isConstant\n ? (i, chunk) => getData(toData, chunk)\n : (i, chunk) => getData(toData.subarray(i, i + size), chunk);\n\n const source = buffer.getData({length: fromLength});\n const data = new Float32Array(toLength);\n padArray({\n source,\n target: data,\n sourceStartIndices: fromStartIndices,\n targetStartIndices: toStartIndices,\n size,\n getData: getMissingData\n });\n\n // TODO: support offset in buffer.setData?\n if (buffer.byteLength < data.byteLength + byteOffset) {\n buffer.reallocate(data.byteLength + byteOffset);\n }\n buffer.subData({data, offset: byteOffset});\n}\n","/* eslint-disable complexity */\nimport DataColumn from './data-column';\nimport assert from '../../utils/assert';\nimport {createIterable, getAccessorFromBuffer} from '../../utils/iterable-utils';\nimport {fillArray} from '../../utils/flatten';\nimport * as range from '../../utils/range';\nimport {normalizeTransitionSettings} from './attribute-transition-utils';\n\nexport default class Attribute extends DataColumn {\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n const {\n // deck.gl fields\n transition = false,\n noAlloc = false,\n update = null,\n accessor = null,\n transform = null,\n startIndices = null\n } = opts;\n\n Object.assign(this.settings, {\n transition,\n noAlloc,\n update: update || (accessor && this._autoUpdater),\n accessor,\n transform\n });\n\n Object.assign(this.state, {\n lastExternalBuffer: null,\n binaryValue: null,\n binaryAccessor: null,\n needsUpdate: true,\n needsRedraw: false,\n updateRanges: range.FULL,\n startIndices\n });\n\n Object.seal(this.settings);\n Object.seal(this.state);\n\n // Check all fields and generate helpful error messages\n this._validateAttributeUpdaters();\n }\n\n get startIndices() {\n return this.state.startIndices;\n }\n\n set startIndices(layout) {\n this.state.startIndices = layout;\n }\n\n needsUpdate() {\n return this.state.needsUpdate;\n }\n\n needsRedraw({clearChangedFlags = false} = {}) {\n const needsRedraw = this.state.needsRedraw;\n this.state.needsRedraw = needsRedraw && !clearChangedFlags;\n return needsRedraw;\n }\n\n getUpdateTriggers() {\n const {accessor} = this.settings;\n\n // Backards compatibility: allow attribute name to be used as update trigger key\n return [this.id].concat((typeof accessor !== 'function' && accessor) || []);\n }\n\n supportsTransition() {\n return Boolean(this.settings.transition);\n }\n\n // Resolve transition settings object if transition is enabled, otherwise `null`\n getTransitionSetting(opts) {\n const {accessor} = this.settings;\n // TODO: have the layer resolve these transition settings itself?\n const layerSettings = this.settings.transition;\n if (!this.supportsTransition()) {\n return null;\n }\n // these are the transition settings passed in by the user\n const userSettings = Array.isArray(accessor)\n ? opts[accessor.find(a => opts[a])]\n : opts[accessor];\n\n // Shorthand: use duration instead of parameter object\n return normalizeTransitionSettings(userSettings, layerSettings);\n }\n\n setNeedsUpdate(reason = this.id, dataRange) {\n this.state.needsUpdate = this.state.needsUpdate || reason;\n if (dataRange) {\n const {startRow = 0, endRow = Infinity} = dataRange;\n this.state.updateRanges = range.add(this.state.updateRanges, [startRow, endRow]);\n } else {\n this.state.updateRanges = range.FULL;\n }\n }\n\n clearNeedsUpdate() {\n this.state.needsUpdate = false;\n this.state.updateRanges = range.EMPTY;\n }\n\n setNeedsRedraw(reason = this.id) {\n this.state.needsRedraw = this.state.needsRedraw || reason;\n }\n\n update(opts) {\n // backward compatibility\n this.setData(opts);\n }\n\n allocate(numInstances) {\n const {state, settings} = this;\n\n if (settings.noAlloc) {\n // Data is provided through a Buffer object.\n return false;\n }\n\n if (settings.update) {\n assert(Number.isFinite(numInstances));\n super.allocate({\n numInstances,\n copy: state.updateRanges !== range.FULL\n });\n return true;\n }\n\n return false;\n }\n\n updateBuffer({numInstances, data, props, context}) {\n if (!this.needsUpdate()) {\n return false;\n }\n\n const {\n state: {updateRanges},\n settings: {update, noAlloc}\n } = this;\n\n let updated = true;\n if (update) {\n // Custom updater - typically for non-instanced layers\n for (const [startRow, endRow] of updateRanges) {\n update.call(context, this, {data, startRow, endRow, props, numInstances});\n }\n if (!this.value) {\n // no value was assigned during update\n } else if (\n this.constant ||\n this.buffer.byteLength < this.value.byteLength + this.byteOffset\n ) {\n this.setData({\n value: this.value,\n constant: this.constant\n });\n } else {\n for (const [startRow, endRow] of updateRanges) {\n const startOffset = Number.isFinite(startRow) ? this.getVertexOffset(startRow) : 0;\n const endOffset = Number.isFinite(endRow)\n ? this.getVertexOffset(endRow)\n : noAlloc || !Number.isFinite(numInstances)\n ? this.value.length\n : numInstances * this.size;\n\n super.updateSubBuffer({startOffset, endOffset});\n }\n }\n this._checkAttributeArray();\n } else {\n updated = false;\n }\n\n this.clearNeedsUpdate();\n this.setNeedsRedraw();\n\n return updated;\n }\n\n // Use generic value\n // Returns true if successful\n setConstantValue(value) {\n if (value === undefined || typeof value === 'function') {\n return false;\n }\n\n const hasChanged = this.setData({constant: true, value});\n\n if (hasChanged) {\n this.setNeedsRedraw();\n }\n this.clearNeedsUpdate();\n return true;\n }\n\n // Use external buffer\n // Returns true if successful\n // eslint-disable-next-line max-statements\n setExternalBuffer(buffer) {\n const {state} = this;\n\n if (!buffer) {\n state.lastExternalBuffer = null;\n return false;\n }\n\n this.clearNeedsUpdate();\n\n if (state.lastExternalBuffer === buffer) {\n return true;\n }\n state.lastExternalBuffer = buffer;\n this.setNeedsRedraw();\n this.setData(buffer);\n return true;\n }\n\n // Binary value is a typed array packed from mapping the source data with the accessor\n // If the returned value from the accessor is the same as the attribute value, set it directly\n // Otherwise use the auto updater for transform/normalization\n setBinaryValue(buffer, startIndices = null) {\n const {state, settings} = this;\n\n if (!buffer) {\n state.binaryValue = null;\n state.binaryAccessor = null;\n return false;\n }\n\n if (settings.noAlloc) {\n // Let the layer handle this\n return false;\n }\n\n if (state.binaryValue === buffer) {\n this.clearNeedsUpdate();\n return true;\n }\n state.binaryValue = buffer;\n this.setNeedsRedraw();\n\n if (ArrayBuffer.isView(buffer)) {\n buffer = {value: buffer};\n }\n const needsUpdate = settings.transform || startIndices !== this.startIndices;\n\n if (needsUpdate) {\n assert(ArrayBuffer.isView(buffer.value), `invalid ${settings.accessor}`);\n const needsNormalize = buffer.size && buffer.size !== this.size;\n\n state.binaryAccessor = getAccessorFromBuffer(buffer.value, {\n size: buffer.size || this.size,\n stride: buffer.stride,\n offset: buffer.offset,\n startIndices,\n nested: needsNormalize\n });\n // Fall through to auto updater\n return false;\n }\n\n this.clearNeedsUpdate();\n this.setData(buffer);\n return true;\n }\n\n getVertexOffset(row) {\n const {startIndices} = this;\n const vertexIndex = startIndices ? startIndices[row] : row;\n return vertexIndex * this.size;\n }\n\n getShaderAttributes() {\n const shaderAttributeDefs = this.settings.shaderAttributes || {[this.id]: null};\n const shaderAttributes = {};\n\n for (const shaderAttributeName in shaderAttributeDefs) {\n Object.assign(\n shaderAttributes,\n super.getShaderAttributes(shaderAttributeName, shaderAttributeDefs[shaderAttributeName])\n );\n }\n\n return shaderAttributes;\n }\n\n /* eslint-disable max-depth, max-statements */\n _autoUpdater(attribute, {data, startRow, endRow, props, numInstances}) {\n const {settings, state, value, size, startIndices} = attribute;\n\n const {accessor, transform} = settings;\n const accessorFunc =\n state.binaryAccessor || (typeof accessor === 'function' ? accessor : props[accessor]);\n\n assert(typeof accessorFunc === 'function', `accessor \"${accessor}\" is not a function`);\n\n let i = attribute.getVertexOffset(startRow);\n const {iterable, objectInfo} = createIterable(data, startRow, endRow);\n for (const object of iterable) {\n objectInfo.index++;\n\n let objectValue = accessorFunc(object, objectInfo);\n if (transform) {\n // transform callbacks could be bound to a particular layer instance.\n // always point `this` to the current layer.\n objectValue = transform.call(this, objectValue);\n }\n\n if (startIndices) {\n const numVertices =\n (startIndices[objectInfo.index + 1] || numInstances) - startIndices[objectInfo.index];\n if (objectValue && Array.isArray(objectValue[0])) {\n let startIndex = i;\n for (const item of objectValue) {\n attribute._normalizeValue(item, value, startIndex);\n startIndex += size;\n }\n } else if (objectValue && objectValue.length > size) {\n value.set(objectValue, i);\n } else {\n attribute._normalizeValue(objectValue, objectInfo.target, 0);\n fillArray({\n target: value,\n source: objectInfo.target,\n start: i,\n count: numVertices\n });\n }\n i += numVertices * size;\n } else {\n attribute._normalizeValue(objectValue, value, i);\n i += size;\n }\n }\n attribute.constant = false;\n }\n /* eslint-enable max-depth, max-statements */\n\n // Validate deck.gl level fields\n _validateAttributeUpdaters() {\n const {settings} = this;\n\n // Check that 'update' is a valid function\n const hasUpdater = settings.noAlloc || typeof settings.update === 'function';\n if (!hasUpdater) {\n throw new Error(`Attribute ${this.id} missing update or accessor`);\n }\n }\n\n _checkAttributeArray() {\n const {value} = this;\n if (value && value.length >= 4) {\n const valid =\n Number.isFinite(value[0]) &&\n Number.isFinite(value[1]) &&\n Number.isFinite(value[2]) &&\n Number.isFinite(value[3]);\n if (!valid) {\n throw new Error(`Illegal attribute generated for ${this.id}`);\n }\n }\n }\n}\n","import {assert} from '../utils';\nconst FS100 = `void main() {gl_FragColor = vec4(0);}`;\nconst FS_GLES = `\\\nout vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`;\nconst FS300 = `#version 300 es\\n${FS_GLES}`;\n\n// Prase given glsl line and return qualifier details or null\nexport function getQualifierDetails(line, qualifiers) {\n qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n const words = line.replace(/^\\s+/, '').split(/\\s+/);\n // TODO add support for precession qualifiers (highp, mediump and lowp)\n const [qualifier, type, definition] = words;\n if (!qualifiers.includes(qualifier) || !type || !definition) {\n return null;\n }\n const name = definition.split(';')[0];\n return {qualifier, type, name};\n}\n\n// Given the shader version, input and output variable names,\n// builds and return a pass through fragment shader.\nexport function getPassthroughFS({version = 100, input, inputType, output} = {}) {\n if (!input) {\n if (version === 300) {\n // Fast-path for WebGL 2.0\n return FS300;\n } else if (version > 300) {\n // Use the supplied version for OpenGL/ES 3.2+\n return `#version ${version}\\n${FS_GLES}`;\n }\n // Fast-path for WebGL 1.0\n return FS100;\n }\n const outputValue = convertToVec4(input, inputType);\n if (version >= 300) {\n // If version is 300, assume WebGL 2.0\n return `\\\n#version ${version} ${version === 300 ? 'es' : ''}\nin ${inputType} ${input};\nout vec4 ${output};\nvoid main() {\n ${output} = ${outputValue};\n}`;\n }\n // WebGL 1.0\n return `\\\nvarying ${inputType} ${input};\nvoid main() {\n gl_FragColor = ${outputValue};\n}`;\n}\n\n// convert glsl type to suffix\nexport function typeToChannelSuffix(type) {\n switch (type) {\n case 'float':\n return 'x';\n case 'vec2':\n return 'xy';\n case 'vec3':\n return 'xyz';\n case 'vec4':\n return 'xyzw';\n default:\n assert(false);\n return null;\n }\n}\n\n// convert glsl type to channel count\nexport function typeToChannelCount(type) {\n switch (type) {\n case 'float':\n return 1;\n case 'vec2':\n return 2;\n case 'vec3':\n return 3;\n case 'vec4':\n return 4;\n default:\n assert(false);\n return null;\n }\n}\n\n// Returns glsl instruction for converting to vec4\nexport function convertToVec4(variable, type) {\n switch (type) {\n case 'float':\n return `vec4(${variable}, 0.0, 0.0, 1.0)`;\n case 'vec2':\n return `vec4(${variable}, 0.0, 1.0)`;\n case 'vec3':\n return `vec4(${variable}, 1.0)`;\n case 'vec4':\n return variable;\n default:\n assert(false);\n return null;\n }\n}\n","import {isWebGL2} from '@luma.gl/gltools';\nimport {Buffer, TransformFeedback} from '@luma.gl/webgl';\nimport {assert} from '@luma.gl/webgl';\n\nexport default class BufferTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.currentIndex = 0;\n this.feedbackMap = {};\n this.varyings = null; // varyings array\n this.bindings = []; // each element is an object : {sourceBuffers, feedbackBuffers, transformFeedback}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n setupResources(opts) {\n for (const binding of this.bindings) {\n this._setupTransformFeedback(binding, opts);\n }\n }\n\n updateModelProps(props = {}) {\n const {varyings} = this;\n if (varyings.length > 0) {\n props = Object.assign({}, props, {varyings});\n }\n return props;\n }\n\n getDrawOptions(opts = {}) {\n const binding = this.bindings[this.currentIndex];\n const {sourceBuffers, transformFeedback} = binding;\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n\n return {attributes, transformFeedback};\n }\n\n swap() {\n if (this.feedbackMap) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupBuffers(opts);\n }\n\n // returns current feedbackBuffer of given name\n getBuffer(varyingName) {\n const {feedbackBuffers} = this.bindings[this.currentIndex];\n const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n if (!bufferOrParams) {\n return null;\n }\n return bufferOrParams instanceof Buffer ? bufferOrParams : bufferOrParams.buffer;\n }\n\n getData({varyingName} = {}) {\n const buffer = this.getBuffer(varyingName);\n if (buffer) {\n return buffer.getData();\n }\n return null;\n }\n\n // Delete owned resources.\n delete() {\n for (const name in this.resources) {\n this.resources[name].delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n this._setupBuffers(props);\n this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n if (this.varyings.length > 0) {\n // if writting to buffers make sure it is WebGL2\n assert(isWebGL2(this.gl));\n }\n }\n\n // auto create feedback buffers if requested\n _getFeedbackBuffers(props) {\n const {sourceBuffers = {}} = props;\n const feedbackBuffers = {};\n if (this.bindings[this.currentIndex]) {\n // this gurantees a partial feedback buffer set doesn't update\n // previously set buffers during auto creation mode.\n Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n }\n if (this.feedbackMap) {\n // feedbackMap is defined as sourceBuffer as key and feedbackBuffer name as object\n for (const sourceName in this.feedbackMap) {\n const feedbackName = this.feedbackMap[sourceName];\n if (sourceName in sourceBuffers) {\n feedbackBuffers[feedbackName] = sourceName;\n }\n }\n }\n Object.assign(feedbackBuffers, props.feedbackBuffers);\n for (const bufferName in feedbackBuffers) {\n const bufferOrRef = feedbackBuffers[bufferName];\n if (typeof bufferOrRef === 'string') {\n // Create new buffer with same layout and settings as source buffer\n const sourceBuffer = sourceBuffers[bufferOrRef];\n const {byteLength, usage, accessor} = sourceBuffer;\n feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n byteLength,\n usage,\n accessor\n });\n }\n }\n\n return feedbackBuffers;\n }\n\n _setupBuffers(props = {}) {\n const {sourceBuffers = null} = props;\n Object.assign(this.feedbackMap, props.feedbackMap);\n const feedbackBuffers = this._getFeedbackBuffers(props);\n this._updateBindings({sourceBuffers, feedbackBuffers});\n }\n\n _setupTransformFeedback(binding, {model}) {\n const {program} = model;\n binding.transformFeedback = new TransformFeedback(this.gl, {\n program,\n buffers: binding.feedbackBuffers\n });\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this.feedbackMap) {\n const {sourceBuffers, feedbackBuffers} = this._swapBuffers(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceBuffers,\n feedbackBuffers\n });\n }\n }\n\n _updateBinding(binding, opts) {\n if (!binding) {\n return {\n sourceBuffers: Object.assign({}, opts.sourceBuffers),\n feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n };\n }\n Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n if (binding.transformFeedback) {\n binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n }\n return binding;\n }\n\n _swapBuffers(opts) {\n if (!this.feedbackMap) {\n return null;\n }\n const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n for (const srcName in this.feedbackMap) {\n const dstName = this.feedbackMap[srcName];\n sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n\n // make sure the new destination buffer is a Buffer object\n assert(feedbackBuffers[dstName] instanceof Buffer);\n }\n return {sourceBuffers, feedbackBuffers};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewBuffer(name, opts) {\n const buffer = new Buffer(this.gl, opts);\n if (this.resources[name]) {\n this.resources[name].delete();\n }\n this.resources[name] = buffer;\n return buffer;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n}\n","// returns GLSL shader version of given shader string\nexport default function getShaderVersion(source) {\n let version = 100;\n const words = source.match(/[^\\s]+/g);\n if (words.length >= 2 && words[0] === '#version') {\n const v = parseInt(words[1], 10);\n if (Number.isFinite(v)) {\n version = v;\n }\n }\n return version;\n}\n","// Private shader module used by `Transform`\n\nconst vs = `\\\nattribute float transform_elementID;\n\n// returns half of pixel size, used to move the pixel position to center of the pixel.\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\n// returns current elements pixel indeces [x, y],\n// where x ranges in [0 to texSize-1] and y ranges in [0 to texSize-1]\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n // Add safe offset (half of pixel height) before doing floor\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\n\n// returns current elementID's texture co-ordianate\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\n\n// returns current elementID's position\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n // Change from [0 1] range to [-1 1]\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\n\n// returns current elementID's pixel value\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n`;\n\nexport default {\n name: 'transform',\n vs,\n fs: null\n};\n","import {assert} from '@luma.gl/webgl';\nimport {combineInjects, getQualifierDetails, typeToChannelSuffix} from '@luma.gl/shadertools';\n\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\n\n// Scan provided vertex shader\n// for each texture attribute, inject sampler instructions and build uniforms for sampler\n// for texture target, get varying type and inject position instruction\nexport function updateForTextures({vs, sourceTextureMap, targetTextureVarying, targetTexture}) {\n const texAttributeNames = Object.keys(sourceTextureMap);\n let sourceCount = texAttributeNames.length;\n let targetTextureType = null;\n const samplerTextureMap = {};\n let updatedVs = vs;\n let finalInject = {};\n\n if (sourceCount > 0 || targetTextureVarying) {\n const vsLines = updatedVs.split('\\n');\n const updateVsLines = vsLines.slice();\n vsLines.forEach((line, index, lines) => {\n // TODO add early exit\n if (sourceCount > 0) {\n const updated = processAttributeDefinition(line, sourceTextureMap);\n if (updated) {\n const {updatedLine, inject} = updated;\n updateVsLines[index] = updatedLine;\n // sampleInstructions.push(sampleInstruction);\n finalInject = combineInjects([finalInject, inject]);\n Object.assign(samplerTextureMap, updated.samplerTextureMap);\n sourceCount--;\n }\n }\n if (targetTextureVarying && !targetTextureType) {\n targetTextureType = getVaryingType(line, targetTextureVarying);\n }\n });\n\n if (targetTextureVarying) {\n assert(targetTexture);\n const sizeName = `${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`;\n\n const uniformDeclaration = `uniform vec2 ${sizeName};\\n`;\n const posInstructions = `\\\n vec2 ${VS_POS_VARIABLE} = transform_getPos(${sizeName});\n gl_Position = vec4(${VS_POS_VARIABLE}, 0, 1.);\\n`;\n const inject = {\n 'vs:#decl': uniformDeclaration,\n 'vs:#main-start': posInstructions\n };\n finalInject = combineInjects([finalInject, inject]);\n }\n updatedVs = updateVsLines.join('\\n');\n }\n return {\n // updated vertex shader (commented texture attribute definition)\n vs: updatedVs,\n // type (float, vec2, vec3 of vec4) target texture varying\n targetTextureType,\n // required vertex and fragment shader injects\n inject: finalInject,\n // map of sampler name to texture name, can be used to set attributes\n // usefull when swapping textures, as source and destination texture change when swap is called.\n samplerTextureMap\n };\n}\n\n// builds and returns an object contaning size uniform for each texture\nexport function getSizeUniforms({sourceTextureMap, targetTextureVarying, targetTexture}) {\n const uniforms = {};\n let width;\n let height;\n if (targetTextureVarying) {\n ({width, height} = targetTexture);\n uniforms[`${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`] = [width, height];\n }\n for (const textureName in sourceTextureMap) {\n ({width, height} = sourceTextureMap[textureName]);\n uniforms[`${SIZE_UNIFORM_PREFIX}${textureName}`] = [width, height];\n }\n return uniforms;\n}\n\n// Checks if provided line is defining an attribute, if so returns details otherwise null\nfunction getAttributeDefinition(line) {\n return getQualifierDetails(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclerations(textureName) {\n const samplerName = `${SAMPLER_UNIFORM_PREFIX}${textureName}`;\n const sizeName = `${SIZE_UNIFORM_PREFIX}${textureName}`;\n const uniformDeclerations = `\\\n uniform sampler2D ${samplerName};\n uniform vec2 ${sizeName};`;\n return {samplerName, sizeName, uniformDeclerations};\n}\n\n// Return size (float, vec2 etc) of a given varying, null if doens't exist.\nexport function getVaryingType(line, varying) {\n const qualaiferDetails = getQualifierDetails(line, ['varying', 'out']);\n if (!qualaiferDetails) {\n return null;\n }\n return qualaiferDetails.name === varying ? qualaiferDetails.type : null;\n}\n\n// build required definitions, sample instructions for each texture attribute\nexport function processAttributeDefinition(line, textureMap) {\n const samplerTextureMap = {};\n const attributeData = getAttributeDefinition(line);\n if (!attributeData) {\n return null;\n }\n const {type, name} = attributeData;\n if (name && textureMap[name]) {\n // eslint-disable-next-line no-useless-escape\n const updatedLine = `\\// ${line} => Replaced by Transform with a sampler`;\n const {samplerName, sizeName, uniformDeclerations} = getSamplerDeclerations(name);\n\n const channels = typeToChannelSuffix(type);\n const sampleInstruction = ` ${type} ${name} = transform_getInput(${samplerName}, ${sizeName}).${channels};\\n`;\n\n samplerTextureMap[samplerName] = name;\n const inject = {\n 'vs:#decl': uniformDeclerations,\n 'vs:#main-start': sampleInstruction\n };\n\n // samplerNameMap\n return {\n // update vertex shader line.\n updatedLine,\n // inject object with sampler instructions.\n inject,\n // sampler name to texture name map\n samplerTextureMap\n };\n }\n return null;\n}\n","import GL from '@luma.gl/constants';\nimport {\n cloneTextureFrom,\n readPixelsToArray,\n getShaderVersion,\n Buffer,\n Texture2D,\n Framebuffer\n} from '@luma.gl/webgl';\nimport {\n _transform as transformModule,\n getPassthroughFS,\n typeToChannelCount,\n combineInjects\n} from '@luma.gl/shadertools';\nimport {updateForTextures, getSizeUniforms} from './transform-shader-utils';\n\n// TODO: move these constants to transform-shader-utils\n// Texture parameters needed so sample can precisely pick pixel for given element id.\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\n\nexport default class TextureTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.currentIndex = 0;\n this._swapTexture = null;\n this.targetTextureVarying = null;\n this.targetTextureType = null;\n this.samplerTextureMap = null;\n this.bindings = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n updateModelProps(props = {}) {\n const updatedModelProps = this._processVertexShader(props);\n return Object.assign({}, props, updatedModelProps);\n }\n\n getDrawOptions(opts = {}) {\n const {sourceTextures, framebuffer, targetTexture} = this.bindings[this.currentIndex];\n\n const attributes = Object.assign({}, opts.attributes);\n const uniforms = Object.assign({}, opts.uniforms);\n const parameters = Object.assign({}, opts.parameters);\n let discard = opts.discard;\n\n if (this.hasSourceTextures || this.hasTargetTexture) {\n attributes.transform_elementID = this.elementIDBuffer;\n\n for (const sampler in this.samplerTextureMap) {\n const textureName = this.samplerTextureMap[sampler];\n uniforms[sampler] = sourceTextures[textureName];\n }\n this._setSourceTextureParameters();\n // get texture size uniforms\n const sizeUniforms = getSizeUniforms({\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n Object.assign(uniforms, sizeUniforms);\n }\n\n if (this.hasTargetTexture) {\n discard = false;\n parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n }\n\n return {attributes, framebuffer, uniforms, discard, parameters};\n }\n\n swap() {\n if (this._swapTexture) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupTextures(opts);\n }\n\n // returns current target texture\n getTargetTexture() {\n const {targetTexture} = this.bindings[this.currentIndex];\n return targetTexture;\n }\n\n getData({packed = false} = {}) {\n const {framebuffer} = this.bindings[this.currentIndex];\n const pixels = readPixelsToArray(framebuffer);\n\n if (!packed) {\n return pixels;\n }\n\n // readPixels returns 4 elements for each pixel, pack the elements when requested\n const ArrayType = pixels.constructor;\n const channelCount = typeToChannelCount(this.targetTextureType);\n const packedPixels = new ArrayType((pixels.length * channelCount) / 4);\n let packCount = 0;\n for (let i = 0; i < pixels.length; i += 4) {\n for (let j = 0; j < channelCount; j++) {\n packedPixels[packCount++] = pixels[i + j];\n }\n }\n return packedPixels;\n }\n\n // returns current framebuffer object that is being used.\n getFramebuffer() {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n\n // Delete owned resources.\n delete() {\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n if (this.elementIDBuffer) {\n this.elementIDBuffer.delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {_targetTextureVarying, _swapTexture} = props;\n this._swapTexture = _swapTexture;\n this.targetTextureVarying = _targetTextureVarying;\n this.hasTargetTexture = _targetTextureVarying;\n this._setupTextures(props);\n }\n\n // auto create target texture if requested\n _createTargetTexture(props) {\n const {sourceTextures, textureOrReference} = props;\n if (textureOrReference instanceof Texture2D) {\n return textureOrReference;\n }\n // 'targetTexture' is a reference souce texture.\n const refTexture = sourceTextures[textureOrReference];\n if (!refTexture) {\n return null;\n }\n\n // save reference texture name, when corresponding source texture is updated\n // we also update target texture.\n this._targetRefTexName = textureOrReference;\n\n return this._createNewTexture(refTexture);\n }\n\n _setupTextures(props = {}) {\n const {_sourceTextures = {}, _targetTexture} = props;\n const targetTexture = this._createTargetTexture({\n sourceTextures: _sourceTextures,\n textureOrReference: _targetTexture\n });\n this.hasSourceTextures =\n this.hasSourceTextures || (_sourceTextures && Object.keys(_sourceTextures).length > 0);\n this._updateBindings({sourceTextures: _sourceTextures, targetTexture});\n if ('elementCount' in props) {\n this._updateElementIDBuffer(props.elementCount);\n }\n }\n\n _updateElementIDBuffer(elementCount) {\n if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n return;\n }\n // NOTE: using float so this will work with GLSL 1.0 shaders.\n const elementIds = new Float32Array(elementCount);\n elementIds.forEach((_, index, array) => {\n array[index] = index;\n });\n if (!this.elementIDBuffer) {\n this.elementIDBuffer = new Buffer(this.gl, {\n data: elementIds,\n accessor: {size: 1}\n });\n } else {\n this.elementIDBuffer.setData({data: elementIds});\n }\n this.elementCount = elementCount;\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this._swapTexture) {\n const {sourceTextures, targetTexture} = this._swapTextures(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceTextures,\n targetTexture\n });\n }\n }\n\n _updateBinding(binding, opts) {\n const {sourceTextures, targetTexture} = opts;\n if (!binding) {\n binding = {\n sourceTextures: {},\n targetTexture: null\n };\n }\n Object.assign(binding.sourceTextures, sourceTextures);\n if (targetTexture) {\n binding.targetTexture = targetTexture;\n\n const {width, height} = targetTexture;\n const {framebuffer} = binding;\n if (framebuffer) {\n // First update texture without re-sizing attachments\n framebuffer.update({\n attachments: {[GL.COLOR_ATTACHMENT0]: targetTexture},\n resizeAttachments: false\n });\n // Resize to new taget texture size\n framebuffer.resize({width, height});\n } else {\n binding.framebuffer = new Framebuffer(this.gl, {\n id: `${this.id || 'transform'}-framebuffer`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: targetTexture\n }\n });\n }\n }\n return binding;\n }\n\n // set texture filtering parameters on source textures.\n _setSourceTextureParameters() {\n const index = this.currentIndex;\n const {sourceTextures} = this.bindings[index];\n for (const name in sourceTextures) {\n sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n }\n }\n\n _swapTextures(opts) {\n if (!this._swapTexture) {\n return null;\n }\n const sourceTextures = Object.assign({}, opts.sourceTextures);\n sourceTextures[this._swapTexture] = opts.targetTexture;\n\n const targetTexture = opts.sourceTextures[this._swapTexture];\n\n return {sourceTextures, targetTexture};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewTexture(refTexture) {\n const texture = cloneTextureFrom(refTexture, {\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n },\n pixelStore: {\n [GL.UNPACK_FLIP_Y_WEBGL]: false\n }\n });\n\n // thre can only be one target texture\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n this.ownTexture = texture;\n\n return texture;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n\n // build and return shader releated parameters\n _processVertexShader(props = {}) {\n const {sourceTextures, targetTexture} = this.bindings[this.currentIndex];\n const {vs, uniforms, targetTextureType, inject, samplerTextureMap} = updateForTextures({\n vs: props.vs,\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n const combinedInject = combineInjects([props.inject || {}, inject]);\n this.targetTextureType = targetTextureType;\n this.samplerTextureMap = samplerTextureMap;\n const fs =\n props._fs ||\n getPassthroughFS({\n version: getShaderVersion(vs),\n input: this.targetTextureVarying,\n inputType: targetTextureType,\n output: FS_OUTPUT_VARIABLE\n });\n const modules =\n this.hasSourceTextures || this.targetTextureVarying\n ? [transformModule].concat(props.modules || [])\n : props.modules;\n return {vs, fs, modules, uniforms, inject: combinedInject};\n }\n}\n","import GL from '@luma.gl/constants';\nimport {getPassthroughFS} from '@luma.gl/shadertools';\nimport BufferTransform from './buffer-transform';\nimport TextureTransform from './texture-transform';\n\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert, isObjectEmpty, getShaderVersion} from '@luma.gl/webgl';\nimport Model from '../lib/model';\n\n// takes source and target buffers/textures and setsup the pipeline\nexport default class Transform {\n static isSupported(gl) {\n // TODO : differentiate writting to buffer vs not\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n this.gl = gl;\n this.model = null;\n this.elementCount = 0;\n this.bufferTransform = null;\n this.textureTransform = null;\n this.elementIDBuffer = null;\n this._initialize(props);\n Object.seal(this);\n }\n\n // Delete owned resources.\n delete() {\n const {model, bufferTransform, textureTransform} = this;\n if (model) {\n model.delete();\n }\n if (bufferTransform) {\n bufferTransform.delete();\n }\n if (textureTransform) {\n textureTransform.delete();\n }\n }\n\n // Run one transform loop.\n run(opts = {}) {\n const {clearRenderTarget = true} = opts;\n\n const updatedOpts = this._updateDrawOptions(opts);\n\n if (clearRenderTarget && updatedOpts.framebuffer) {\n updatedOpts.framebuffer.clear({color: true});\n }\n\n this.model.transform(updatedOpts);\n }\n\n // swap resources if a map is provided\n swap() {\n let swapped = false;\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n swapped = swapped || resourceTransform.swap();\n }\n assert(swapped, 'Nothing to swap');\n }\n\n // Return Buffer object for given varying name.\n getBuffer(varyingName = null) {\n return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n }\n\n // Return data either from Buffer or from Texture\n getData(opts = {}) {\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n const data = resourceTransform.getData(opts);\n if (data) {\n return data;\n }\n }\n return null;\n }\n\n // Return framebuffer object if rendering to textures\n getFramebuffer() {\n return this.textureTransform && this.textureTransform.getFramebuffer();\n }\n\n // Update some or all buffer/texture bindings.\n update(opts = {}) {\n if ('elementCount' in opts) {\n this.model.setVertexCount(opts.elementCount);\n }\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n resourceTransform.update(opts);\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {gl} = this;\n this._buildResourceTransforms(gl, props);\n\n props = this._updateModelProps(props);\n this.model = new Model(\n gl,\n Object.assign({}, props, {\n fs: props.fs || getPassthroughFS({version: getShaderVersion(props.vs)}),\n id: props.id || 'transform-model',\n drawMode: props.drawMode || GL.POINTS,\n vertexCount: props.elementCount\n })\n );\n\n /* eslint-disable no-unused-expressions */\n this.bufferTransform && this.bufferTransform.setupResources({model: this.model});\n /* eslint-enable no-unused-expressions */\n }\n\n _updateModelProps(props) {\n let updatedProps = Object.assign({}, props);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedProps = resourceTransform.updateModelProps(updatedProps);\n }\n return updatedProps;\n }\n\n _buildResourceTransforms(gl, props) {\n if (canCreateBufferTransform(props)) {\n this.bufferTransform = new BufferTransform(gl, props);\n }\n if (canCreateTextureTransform(props)) {\n this.textureTransform = new TextureTransform(gl, props);\n }\n assert(\n this.bufferTransform || this.textureTransform,\n 'must provide source/feedback buffers or source/target textures'\n );\n }\n\n _updateDrawOptions(opts) {\n let updatedOpts = Object.assign({}, opts);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n }\n return updatedOpts;\n }\n}\n\n// Helper Methods\n\nfunction canCreateBufferTransform(props) {\n if (\n !isObjectEmpty(props.sourceBuffers) ||\n !isObjectEmpty(props.feedbackBuffers) ||\n (props.varyings && props.varyings.length > 0)\n ) {\n return true;\n }\n return false;\n}\n\nfunction canCreateTextureTransform(props) {\n if (\n !isObjectEmpty(props._sourceTextures) ||\n props._targetTexture ||\n props._targetTextureVarying\n ) {\n return true;\n }\n\n return false;\n}\n","import GL from '@luma.gl/constants';\nimport {Buffer, Transform} from '@luma.gl/core';\nimport Attribute from '../lib/attribute/attribute';\nimport {\n padBuffer,\n getAttributeTypeFromSize,\n getSourceBufferAttribute,\n getAttributeBufferLength,\n cycleBuffers\n} from '../lib/attribute/attribute-transition-utils';\nimport Transition from './transition';\n\nexport default class GPUInterpolationTransition {\n constructor({gl, attribute, timeline}) {\n this.gl = gl;\n this.type = 'interpolation';\n this.transition = new Transition(timeline);\n this.attribute = attribute;\n // this is the attribute we return during the transition - note: if it is a constant\n // attribute, it will be converted and returned as a regular attribute\n // `attribute.userData` is the original options passed when constructing the attribute.\n // This ensures that we set the proper `doublePrecision` flag and shader attributes.\n this.attributeInTransition = new Attribute(gl, attribute.settings);\n this.currentStartIndices = attribute.startIndices;\n // storing currentLength because this.buffer may be larger than the actual length we want to use\n // this is because we only reallocate buffers when they grow, not when they shrink,\n // due to performance costs\n this.currentLength = 0;\n this.transform = getTransform(gl, attribute);\n const bufferOpts = {\n byteLength: 0,\n usage: GL.DYNAMIC_COPY\n };\n this.buffers = [\n new Buffer(gl, bufferOpts), // from\n new Buffer(gl, bufferOpts) // current\n ];\n }\n\n get inProgress() {\n return this.transition.inProgress;\n }\n\n // this is called when an attribute's values have changed and\n // we need to start animating towards the new values\n // this also correctly resizes / pads the transform's buffers\n // in case the attribute's buffer has changed in length or in\n // startIndices\n start(transitionSettings, numInstances) {\n if (transitionSettings.duration <= 0) {\n this.transition.cancel();\n return;\n }\n\n const {gl, buffers, attribute} = this;\n // Alternate between two buffers when new transitions start.\n // Last destination buffer is used as an attribute (from state),\n // And the other buffer is now the current buffer.\n cycleBuffers(buffers);\n\n const padBufferOpts = {\n numInstances,\n attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n\n for (const buffer of buffers) {\n padBuffer({buffer, ...padBufferOpts});\n }\n\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = getAttributeBufferLength(attribute, numInstances);\n this.attributeInTransition.update({\n buffer: buffers[1],\n // Hack: Float64Array is required for double-precision attributes\n // to generate correct shader attributes\n value: attribute.value\n });\n\n this.transition.start(transitionSettings);\n\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aFrom: buffers[0],\n aTo: getSourceBufferAttribute(gl, attribute)\n },\n feedbackBuffers: {\n vCurrent: buffers[1]\n }\n });\n }\n\n update() {\n const updated = this.transition.update();\n if (updated) {\n const {\n time,\n settings: {duration, easing}\n } = this.transition;\n const t = easing(time / duration);\n this.transform.run({\n uniforms: {time: t}\n });\n }\n return updated;\n }\n\n cancel() {\n this.transition.cancel();\n this.transform.delete();\n while (this.buffers.length) {\n this.buffers.pop().delete();\n }\n }\n}\n\nconst vs = `\n#define SHADER_NAME interpolation-transition-vertex-shader\n\nuniform float time;\nattribute ATTRIBUTE_TYPE aFrom;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vCurrent;\n\nvoid main(void) {\n vCurrent = mix(aFrom, aTo, time);\n gl_Position = vec4(0.0);\n}\n`;\n\nfunction getTransform(gl, attribute) {\n const attributeType = getAttributeTypeFromSize(attribute.size);\n return new Transform(gl, {\n vs,\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: ['vCurrent']\n });\n}\n","import {Transform} from '@luma.gl/core';\nimport GPUInterpolationTransition from '../../transitions/gpu-interpolation-transition';\nimport GPUSpringTransition from '../../transitions/gpu-spring-transition';\nimport log from '../../utils/log';\n\nconst TRANSITION_TYPES = {\n interpolation: GPUInterpolationTransition,\n spring: GPUSpringTransition\n};\n\nexport default class AttributeTransitionManager {\n constructor(gl, {id, timeline}) {\n this.id = id;\n this.gl = gl;\n this.timeline = timeline;\n\n this.transitions = {};\n this.needsRedraw = false;\n this.numInstances = 1;\n\n if (Transform.isSupported(gl)) {\n this.isSupported = true;\n } else if (gl) {\n // This class may be instantiated without a WebGL context (e.g. web worker)\n log.warn('WebGL2 not supported by this browser. Transition animation is disabled.')();\n }\n }\n\n finalize() {\n for (const attributeName in this.transitions) {\n this._removeTransition(attributeName);\n }\n }\n\n /* Public methods */\n\n // Called when attribute manager updates\n // Check the latest attributes for updates.\n update({attributes, transitions = {}, numInstances}) {\n // Transform class will crash if elementCount is 0\n this.numInstances = numInstances || 1;\n\n if (!this.isSupported) {\n return;\n }\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const settings = attribute.getTransitionSetting(transitions);\n\n // this attribute might not support transitions?\n if (!settings) continue; // eslint-disable-line no-continue\n this._updateAttribute(attributeName, attribute, settings);\n }\n\n for (const attributeName in this.transitions) {\n const attribute = attributes[attributeName];\n if (!attribute || !attribute.getTransitionSetting(transitions)) {\n // Animated attribute has been removed\n this._removeTransition(attributeName);\n }\n }\n }\n\n // Returns `true` if attribute is transition-enabled\n hasAttribute(attributeName) {\n const transition = this.transitions[attributeName];\n return transition && transition.inProgress;\n }\n\n // Get all the animated attributes\n getAttributes() {\n const animatedAttributes = {};\n\n for (const attributeName in this.transitions) {\n const transition = this.transitions[attributeName];\n if (transition.inProgress) {\n animatedAttributes[attributeName] = transition.attributeInTransition;\n }\n }\n\n return animatedAttributes;\n }\n\n /* eslint-disable max-statements */\n // Called every render cycle, run transform feedback\n // Returns `true` if anything changes\n run() {\n if (!this.isSupported || this.numInstances === 0) {\n return false;\n }\n\n for (const attributeName in this.transitions) {\n const updated = this.transitions[attributeName].update();\n if (updated) {\n this.needsRedraw = true;\n }\n }\n\n const needsRedraw = this.needsRedraw;\n this.needsRedraw = false;\n return needsRedraw;\n }\n /* eslint-enable max-statements */\n\n /* Private methods */\n _removeTransition(attributeName) {\n this.transitions[attributeName].cancel();\n delete this.transitions[attributeName];\n }\n\n // Check an attributes for updates\n // Returns a transition object if a new transition is triggered.\n _updateAttribute(attributeName, attribute, settings) {\n const transition = this.transitions[attributeName];\n // an attribute can change transition type when it updates\n // let's remove the transition when that happens so we can create the new transition type\n // TODO: when switching transition types, make sure to carry over the attribute's\n // previous buffers, currentLength, startIndices, etc, to be used as the starting point\n // for the next transition\n let isNew = !transition || transition.type !== settings.type;\n if (isNew) {\n if (transition) {\n this._removeTransition(attributeName);\n }\n\n const TransitionType = TRANSITION_TYPES[settings.type];\n if (TransitionType) {\n this.transitions[attributeName] = new TransitionType({\n attribute,\n timeline: this.timeline,\n gl: this.gl\n });\n } else {\n log.error(`unsupported transition type '${settings.type}'`)();\n isNew = false;\n }\n }\n\n if (isNew || attribute.needsRedraw()) {\n this.needsRedraw = true;\n this.transitions[attributeName].start(settings, this.numInstances);\n }\n }\n}\n","/* eslint-disable complexity, max-statements, max-params */\nimport GL from '@luma.gl/constants';\nimport {Buffer, Transform, Framebuffer, Texture2D, readPixelsToArray} from '@luma.gl/core';\nimport {\n padBuffer,\n getAttributeTypeFromSize,\n getSourceBufferAttribute,\n getAttributeBufferLength,\n cycleBuffers\n} from '../lib/attribute/attribute-transition-utils';\nimport Attribute from '../lib/attribute/attribute';\nimport Transition from './transition';\n\nexport default class GPUSpringTransition {\n constructor({gl, attribute, timeline}) {\n this.gl = gl;\n this.type = 'spring';\n this.transition = new Transition(timeline);\n this.attribute = attribute;\n // this is the attribute we return during the transition - note: if it is a constant\n // attribute, it will be converted and returned as a regular attribute\n // `attribute.userData` is the original options passed when constructing the attribute.\n // This ensures that we set the proper `doublePrecision` flag and shader attributes.\n this.attributeInTransition = new Attribute(\n gl,\n Object.assign({}, attribute.settings, {normalized: false})\n );\n this.currentStartIndices = attribute.startIndices;\n // storing currentLength because this.buffer may be larger than the actual length we want to use\n // this is because we only reallocate buffers when they grow, not when they shrink,\n // due to performance costs\n this.currentLength = 0;\n this.texture = getTexture(gl);\n this.framebuffer = getFramebuffer(gl, this.texture);\n this.transform = getTransform(gl, attribute, this.framebuffer);\n const bufferOpts = {\n byteLength: 0,\n usage: GL.DYNAMIC_COPY\n };\n this.buffers = [\n new Buffer(gl, bufferOpts), // previous\n new Buffer(gl, bufferOpts), // current\n new Buffer(gl, bufferOpts) // next\n ];\n }\n\n get inProgress() {\n return this.transition.inProgress;\n }\n\n // this is called when an attribute's values have changed and\n // we need to start animating towards the new values\n // this also correctly resizes / pads the transform's buffers\n // in case the attribute's buffer has changed in length or in\n // startIndices\n start(transitionSettings, numInstances) {\n const {gl, buffers, attribute} = this;\n const padBufferOpts = {\n numInstances,\n attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n\n for (const buffer of buffers) {\n padBuffer({buffer, ...padBufferOpts});\n }\n\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = getAttributeBufferLength(attribute, numInstances);\n this.attributeInTransition.update({\n buffer: buffers[1],\n // Hack: Float64Array is required for double-precision attributes\n // to generate correct shader attributes\n value: attribute.value\n });\n\n // when an attribute changes values, a new transition is started. These\n // are properties that we have to store on this.transition but can change\n // when new transitions are started, so we have to keep them up-to-date.\n // this.transition.start() takes the latest settings and updates them.\n this.transition.start(transitionSettings);\n\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aTo: getSourceBufferAttribute(gl, attribute)\n }\n });\n }\n\n update() {\n const {buffers, transform, framebuffer, transition} = this;\n const updated = transition.update();\n if (!updated) {\n return false;\n }\n\n transform.update({\n sourceBuffers: {\n aPrev: buffers[0],\n aCur: buffers[1]\n },\n feedbackBuffers: {\n vNext: buffers[2]\n }\n });\n transform.run({\n framebuffer,\n discard: false,\n clearRenderTarget: true,\n uniforms: {\n stiffness: transition.settings.stiffness,\n damping: transition.settings.damping\n },\n parameters: {\n depthTest: false,\n blend: true,\n viewport: [0, 0, 1, 1],\n blendFunc: [GL.ONE, GL.ONE],\n blendEquation: [GL.MAX, GL.MAX]\n }\n });\n\n cycleBuffers(buffers);\n this.attributeInTransition.update({\n buffer: buffers[1],\n // Hack: Float64Array is required for double-precision attributes\n // to generate correct shader attributes\n value: this.attribute.value\n });\n\n const isTransitioning = readPixelsToArray(framebuffer)[0] > 0;\n\n if (!isTransitioning) {\n transition.end();\n }\n\n return true;\n }\n\n cancel() {\n this.transition.cancel();\n this.transform.delete();\n while (this.buffers.length) {\n this.buffers.pop().delete();\n }\n this.texture.delete();\n this.texture = null;\n this.framebuffer.delete();\n this.framebuffer = null;\n }\n}\n\nfunction getTransform(gl, attribute, framebuffer) {\n const attributeType = getAttributeTypeFromSize(attribute.size);\n return new Transform(gl, {\n framebuffer,\n vs: `\n#define SHADER_NAME spring-transition-vertex-shader\n\n#define EPSILON 0.00001\n\nuniform float stiffness;\nuniform float damping;\nattribute ATTRIBUTE_TYPE aPrev;\nattribute ATTRIBUTE_TYPE aCur;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vNext;\nvarying float vIsTransitioningFlag;\n\nATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {\n ATTRIBUTE_TYPE velocity = cur - prev;\n ATTRIBUTE_TYPE delta = dest - cur;\n ATTRIBUTE_TYPE spring = delta * stiffness;\n ATTRIBUTE_TYPE damper = velocity * -1.0 * damping;\n return spring + damper + velocity + cur;\n}\n\nvoid main(void) {\n bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;\n vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;\n\n vNext = getNextValue(aCur, aPrev, aTo);\n gl_Position = vec4(0, 0, 0, 1);\n gl_PointSize = 100.0;\n}\n`,\n fs: `\n#define SHADER_NAME spring-transition-is-transitioning-fragment-shader\n\nvarying float vIsTransitioningFlag;\n\nvoid main(void) {\n if (vIsTransitioningFlag == 0.0) {\n discard;\n }\n gl_FragColor = vec4(1.0);\n}`,\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: ['vNext']\n });\n}\n\nfunction getTexture(gl) {\n return new Texture2D(gl, {\n data: new Uint8Array(4),\n format: GL.RGBA,\n type: GL.UNSIGNED_BYTE,\n border: 0,\n mipmaps: false,\n dataFormat: GL.RGBA,\n width: 1,\n height: 1\n });\n}\n\nfunction getFramebuffer(gl, texture) {\n return new Framebuffer(gl, {\n id: 'spring-transition-is-transitioning-framebuffer',\n width: 1,\n height: 1,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: texture\n }\n });\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable guard-for-in */\nimport Attribute from './attribute';\nimport log from '../../utils/log';\nimport debug from '../../debug';\n\nimport AttributeTransitionManager from './attribute-transition-manager';\n\nconst TRACE_INVALIDATE = 'attributeManager.invalidate';\nconst TRACE_UPDATE_START = 'attributeManager.updateStart';\nconst TRACE_UPDATE_END = 'attributeManager.updateEnd';\nconst TRACE_ATTRIBUTE_UPDATE_START = 'attribute.updateStart';\nconst TRACE_ATTRIBUTE_ALLOCATE = 'attribute.allocate';\nconst TRACE_ATTRIBUTE_UPDATE_END = 'attribute.updateEnd';\n\nexport default class AttributeManager {\n /**\n * @classdesc\n * Automated attribute generation and management. Suitable when a set of\n * vertex shader attributes are generated by iteration over a data array,\n * and updates to these attributes are needed either when the data itself\n * changes, or when other data relevant to the calculations change.\n *\n * - First the application registers descriptions of its dynamic vertex\n * attributes using AttributeManager.add().\n * - Then, when any change that affects attributes is detected by the\n * application, the app will call AttributeManager.invalidate().\n * - Finally before it renders, it calls AttributeManager.update() to\n * ensure that attributes are automatically rebuilt if anything has been\n * invalidated.\n *\n * The application provided update functions describe how attributes\n * should be updated from a data array and are expected to traverse\n * that data array (or iterable) and fill in the attribute's typed array.\n *\n * Note that the attribute manager intentionally does not do advanced\n * change detection, but instead makes it easy to build such detection\n * by offering the ability to \"invalidate\" each attribute separately.\n */\n constructor(gl, {id = 'attribute-manager', stats, timeline} = {}) {\n this.id = id;\n this.gl = gl;\n\n this.attributes = {};\n\n this.updateTriggers = {};\n this.accessors = {};\n this.needsRedraw = true;\n\n this.userData = {};\n this.stats = stats;\n\n this.attributeTransitionManager = new AttributeTransitionManager(gl, {\n id: `${id}-transitions`,\n timeline\n });\n\n // For debugging sanity, prevent uninitialized members\n Object.seal(this);\n }\n\n finalize() {\n for (const attributeName in this.attributes) {\n this.attributes[attributeName].delete();\n }\n this.attributeTransitionManager.finalize();\n }\n\n // Returns the redraw flag, optionally clearing it.\n // Redraw flag will be set if any attributes attributes changed since\n // flag was last cleared.\n //\n // @param {String} [clearRedrawFlags=false] - whether to clear the flag\n // @return {false|String} - reason a redraw is needed.\n getNeedsRedraw(opts = {clearRedrawFlags: false}) {\n const redraw = this.needsRedraw;\n this.needsRedraw = this.needsRedraw && !opts.clearRedrawFlags;\n return redraw && this.id;\n }\n\n // Sets the redraw flag.\n // @param {Boolean} redraw=true\n // @return {AttributeManager} - for chaining\n setNeedsRedraw(redraw = true) {\n this.needsRedraw = true;\n return this;\n }\n\n // Adds attributes\n add(attributes, updaters) {\n this._add(attributes, updaters);\n }\n\n // Adds attributes\n addInstanced(attributes, updaters) {\n this._add(attributes, updaters, {instanced: 1});\n }\n\n /**\n * Removes attributes\n * Takes an array of attribute names and delete them from\n * the attribute map if they exists\n *\n * @example\n * attributeManager.remove(['position']);\n *\n * @param {Object} attributeNameArray - attribute name array (see above)\n */\n remove(attributeNameArray) {\n for (let i = 0; i < attributeNameArray.length; i++) {\n const name = attributeNameArray[i];\n if (this.attributes[name] !== undefined) {\n this.attributes[name].delete();\n delete this.attributes[name];\n }\n }\n }\n\n // Marks an attribute for update\n invalidate(triggerName, dataRange) {\n const invalidatedAttributes = this._invalidateTrigger(triggerName, dataRange);\n // For performance tuning\n debug(TRACE_INVALIDATE, this, triggerName, invalidatedAttributes);\n }\n\n invalidateAll(dataRange) {\n for (const attributeName in this.attributes) {\n this.attributes[attributeName].setNeedsUpdate(attributeName, dataRange);\n }\n // For performance tuning\n debug(TRACE_INVALIDATE, this, 'all');\n }\n\n // Ensure all attribute buffers are updated from props or data.\n update({\n data,\n numInstances,\n startIndices = null,\n transitions,\n props = {},\n buffers = {},\n context = {}\n } = {}) {\n // keep track of whether some attributes are updated\n let updated = false;\n\n debug(TRACE_UPDATE_START, this);\n if (this.stats) {\n this.stats.get('Update Attributes').timeStart();\n }\n\n for (const attributeName in this.attributes) {\n const attribute = this.attributes[attributeName];\n const accessorName = attribute.settings.accessor;\n attribute.startIndices = startIndices;\n\n if (props[attributeName]) {\n log.removed(`props.${attributeName}`, `data.attributes.${attributeName}`)();\n }\n\n if (attribute.setExternalBuffer(buffers[attributeName])) {\n // Step 1: try update attribute directly from external buffers\n } else if (attribute.setBinaryValue(buffers[accessorName], data.startIndices)) {\n // Step 2: try set packed value from external typed array\n } else if (!buffers[accessorName] && attribute.setConstantValue(props[accessorName])) {\n // Step 3: try set constant value from props\n // Note: if buffers[accessorName] is supplied, ignore props[accessorName]\n // This may happen when setBinaryValue falls through to use the auto updater\n } else if (attribute.needsUpdate()) {\n // Step 4: update via updater callback\n updated = true;\n this._updateAttribute({\n attribute,\n numInstances,\n data,\n props,\n context\n });\n }\n\n this.needsRedraw |= attribute.needsRedraw();\n }\n\n if (updated) {\n // Only initiate alloc/update (and logging) if actually needed\n debug(TRACE_UPDATE_END, this, numInstances);\n }\n\n if (this.stats) {\n this.stats.get('Update Attributes').timeEnd();\n }\n\n this.attributeTransitionManager.update({\n attributes: this.attributes,\n numInstances,\n transitions\n });\n }\n\n // Update attribute transition to the current timestamp\n // Returns `true` if any transition is in progress\n updateTransition() {\n const {attributeTransitionManager} = this;\n const transitionUpdated = attributeTransitionManager.run();\n this.needsRedraw = this.needsRedraw || transitionUpdated;\n return transitionUpdated;\n }\n\n /**\n * Returns all attribute descriptors\n * Note: Format matches luma.gl Model/Program.setAttributes()\n * @return {Object} attributes - descriptors\n */\n getAttributes() {\n return this.attributes;\n }\n\n /**\n * Returns changed attribute descriptors\n * This indicates which WebGLBuffers need to be updated\n * @return {Object} attributes - descriptors\n */\n getChangedAttributes(opts = {clearChangedFlags: false}) {\n const {attributes, attributeTransitionManager} = this;\n\n const changedAttributes = Object.assign({}, attributeTransitionManager.getAttributes());\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n if (attribute.needsRedraw(opts) && !attributeTransitionManager.hasAttribute(attributeName)) {\n changedAttributes[attributeName] = attribute;\n }\n }\n\n return changedAttributes;\n }\n\n // Returns shader attributes\n getShaderAttributes(attributes, excludeAttributes = {}) {\n if (!attributes) {\n attributes = this.getAttributes();\n }\n const shaderAttributes = {};\n for (const attributeName in attributes) {\n if (!excludeAttributes[attributeName]) {\n Object.assign(shaderAttributes, attributes[attributeName].getShaderAttributes());\n }\n }\n return shaderAttributes;\n }\n\n // PROTECTED METHODS - Only to be used by collaborating classes, not by apps\n\n // Returns object containing all accessors as keys, with non-null values\n // @return {Object} - accessors object\n getAccessors() {\n return this.updateTriggers;\n }\n\n // PRIVATE METHODS\n\n // Used to register an attribute\n _add(attributes, updaters, extraProps = {}) {\n if (updaters) {\n log.warn('AttributeManager.add({updaters}) - updater map no longer supported')();\n }\n\n const newAttributes = {};\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n\n // Initialize the attribute descriptor, with WebGL and metadata fields\n const newAttribute = this._createAttribute(attributeName, attribute, extraProps);\n\n newAttributes[attributeName] = newAttribute;\n }\n\n Object.assign(this.attributes, newAttributes);\n\n this._mapUpdateTriggersToAttributes();\n }\n /* eslint-enable max-statements */\n\n _createAttribute(name, attribute, extraProps) {\n const props = {\n id: name,\n // Luma fields\n constant: attribute.constant || false,\n isIndexed: attribute.isIndexed || attribute.elements,\n size: (attribute.elements && 1) || attribute.size,\n value: attribute.value || null,\n divisor: attribute.instanced || extraProps.instanced ? 1 : attribute.divisor\n };\n\n return new Attribute(this.gl, Object.assign({}, attribute, props));\n }\n\n // build updateTrigger name to attribute name mapping\n _mapUpdateTriggersToAttributes() {\n const triggers = {};\n\n for (const attributeName in this.attributes) {\n const attribute = this.attributes[attributeName];\n attribute.getUpdateTriggers().forEach(triggerName => {\n if (!triggers[triggerName]) {\n triggers[triggerName] = [];\n }\n triggers[triggerName].push(attributeName);\n });\n }\n\n this.updateTriggers = triggers;\n }\n\n _invalidateTrigger(triggerName, dataRange) {\n const {attributes, updateTriggers} = this;\n const invalidatedAttributes = updateTriggers[triggerName];\n\n if (invalidatedAttributes) {\n invalidatedAttributes.forEach(name => {\n const attribute = attributes[name];\n if (attribute) {\n attribute.setNeedsUpdate(attribute.id, dataRange);\n }\n });\n }\n return invalidatedAttributes;\n }\n\n _updateAttribute(opts) {\n const {attribute, numInstances} = opts;\n debug(TRACE_ATTRIBUTE_UPDATE_START, attribute);\n\n if (attribute.allocate(numInstances)) {\n debug(TRACE_ATTRIBUTE_ALLOCATE, attribute, numInstances);\n }\n\n // Calls update on any buffers that need update\n const updated = attribute.updateBuffer(opts);\n if (updated) {\n this.needsRedraw = true;\n debug(TRACE_ATTRIBUTE_UPDATE_END, attribute, numInstances);\n }\n }\n}\n","import {lerp} from 'math.gl';\nimport Transition from './transition';\n\nexport default class CPUInterpolationTransition extends Transition {\n get value() {\n return this._value;\n }\n\n _onUpdate() {\n const {\n time,\n settings: {fromValue, toValue, duration, easing}\n } = this;\n const t = easing(time / duration);\n this._value = lerp(fromValue, toValue, t);\n }\n}\n","import Transition from './transition';\n\nconst EPSILON = 1e-5;\n\n/*\n * Calculate the next value in the spring transition\n * @param prev {Number} - previous value\n * @param cur {Number} - current value\n * @param dest {Number} - destination value\n * @param damping {Number}\n * @param stiffness {Number}\n */\nfunction updateSpringElement(prev, cur, dest, damping, stiffness) {\n const velocity = cur - prev;\n const delta = dest - cur;\n const spring = delta * stiffness;\n const damper = -velocity * damping;\n return spring + damper + velocity + cur;\n}\n\n/*\n * Calculate the next value in the spring transition\n * @param prev {Number|Array} - previous value\n * @param cur {Number|Array} - current value\n * @param dest {Number|Array} - destination value\n * @param damping {Number}\n * @param stiffness {Number}\n */\nfunction updateSpring(prev, cur, dest, damping, stiffness) {\n if (Array.isArray(dest)) {\n const next = [];\n for (let i = 0; i < dest.length; i++) {\n next[i] = updateSpringElement(prev[i], cur[i], dest[i], damping, stiffness);\n }\n return next;\n }\n return updateSpringElement(prev, cur, dest, damping, stiffness);\n}\n\n/*\n * Calculate the distance between two numbers or two vectors\n */\nfunction distance(value1, value2) {\n if (Array.isArray(value1)) {\n let distanceSquare = 0;\n for (let i = 0; i < value1.length; i++) {\n const d = value1[i] - value2[i];\n distanceSquare += d * d;\n }\n return Math.sqrt(distanceSquare);\n }\n return Math.abs(value1 - value2);\n}\n\nexport default class CPUSpringTransition extends Transition {\n get value() {\n return this._currValue;\n }\n\n _onUpdate() {\n // TODO - use timeline\n // const {time} = this;\n\n const {fromValue, toValue, damping, stiffness} = this.settings;\n const {_prevValue = fromValue, _currValue = fromValue} = this;\n let nextValue = updateSpring(_prevValue, _currValue, toValue, damping, stiffness);\n const delta = distance(nextValue, toValue);\n const velocity = distance(nextValue, _currValue);\n\n if (delta < EPSILON && velocity < EPSILON) {\n nextValue = toValue;\n this.end();\n }\n\n this._prevValue = _currValue;\n this._currValue = nextValue;\n }\n}\n","import {normalizeTransitionSettings} from './attribute/attribute-transition-utils';\nimport CPUInterpolationTransition from '../transitions/cpu-interpolation-transition';\nimport CPUSpringTransition from '../transitions/cpu-spring-transition';\nimport log from '../utils/log';\n\nconst TRANSITION_TYPES = {\n interpolation: CPUInterpolationTransition,\n spring: CPUSpringTransition\n};\n\nexport default class UniformTransitionManager {\n constructor(timeline) {\n this.transitions = new Map();\n this.timeline = timeline;\n }\n\n get active() {\n return this.transitions.size > 0;\n }\n\n add(key, fromValue, toValue, settings) {\n const {transitions} = this;\n if (transitions.has(key)) {\n const transition = transitions.get(key);\n // start from interrupted position\n fromValue = transition.value;\n this.remove(key);\n }\n\n settings = normalizeTransitionSettings(settings);\n if (!settings) {\n return;\n }\n\n const TransitionType = TRANSITION_TYPES[settings.type];\n if (!TransitionType) {\n log.error(`unsupported transition type '${settings.type}'`)();\n return;\n }\n const transition = new TransitionType(this.timeline);\n transition.start({\n ...settings,\n fromValue,\n toValue\n });\n transitions.set(key, transition);\n }\n\n remove(key) {\n const {transitions} = this;\n if (transitions.has(key)) {\n transitions.get(key).cancel();\n transitions.delete(key);\n }\n }\n\n update() {\n const propsInTransition = {};\n\n for (const [key, transition] of this.transitions) {\n transition.update();\n propsInTransition[key] = transition.value;\n if (!transition.inProgress) {\n // transition ended\n this.remove(key);\n }\n }\n\n return propsInTransition;\n }\n\n clear() {\n for (const key of this.transitions.keys()) {\n this.remove(key);\n }\n }\n}\n","import {PROP_SYMBOLS} from './constants';\n\nconst {COMPONENT} = PROP_SYMBOLS;\n\nexport function validateProps(props) {\n const propTypes = getPropTypes(props);\n\n for (const propName in propTypes) {\n const propType = propTypes[propName];\n const {validate} = propType;\n if (validate && !validate(props[propName], propType)) {\n throw new Error(`Invalid prop ${propName}: ${props[propName]}`);\n }\n }\n}\n\n// Returns an object with \"change flags\", either false or strings indicating reason for change\nexport function diffProps(props, oldProps) {\n // First check if any props have changed (ignore props that will be examined separately)\n const propsChangedReason = compareProps({\n newProps: props,\n oldProps,\n propTypes: getPropTypes(props),\n ignoreProps: {data: null, updateTriggers: null, extensions: null, transitions: null}\n });\n\n // Now check if any data related props have changed\n const dataChangedReason = diffDataProps(props, oldProps);\n\n // Check update triggers to determine if any attributes need regeneration\n // Note - if data has changed, all attributes will need regeneration, so skip this step\n let updateTriggersChangedReason = false;\n if (!dataChangedReason) {\n updateTriggersChangedReason = diffUpdateTriggers(props, oldProps);\n }\n\n return {\n dataChanged: dataChangedReason,\n propsChanged: propsChangedReason,\n updateTriggersChanged: updateTriggersChangedReason,\n extensionsChanged: diffExtensions(props, oldProps),\n transitionsChanged: diffTransitions(props, oldProps)\n };\n}\n\nfunction diffTransitions(props, oldProps) {\n if (!props.transitions) {\n return null;\n }\n const result = {};\n const propTypes = getPropTypes(props);\n\n for (const key in props.transitions) {\n const propType = propTypes[key];\n const type = propType && propType.type;\n const isTransitionable = type === 'number' || type === 'color' || type === 'array';\n if (isTransitionable && comparePropValues(props[key], oldProps[key], propType)) {\n result[key] = true;\n }\n }\n return result;\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * @param {Object} opt.oldProps - object with old key/value pairs\n * @param {Object} opt.newProps - object with new key/value pairs\n * @param {Object} opt.ignoreProps={} - object, keys that should not be compared\n * @returns {null|String} - null when values of all keys are strictly equal.\n * if unequal, returns a string explaining what changed.\n */\n/* eslint-disable max-statements, max-depth, complexity */\n/*\n * Note: for better performance, this function assumes that both oldProps and newProps\n inherit the same prototype (defaultProps). That is, if neither object contains own\n property <key>, assume `oldProps.<key>` and `newProps.<key>` are equal.\n */\nexport function compareProps({\n newProps,\n oldProps,\n ignoreProps = {},\n propTypes = {},\n triggerName = 'props'\n} = {}) {\n // shallow equality => deep equality\n if (oldProps === newProps) {\n return null;\n }\n\n // TODO - do we need these checks? Should never happen...\n if (typeof newProps !== 'object' || newProps === null) {\n return `${triggerName} changed shallowly`;\n }\n\n if (typeof oldProps !== 'object' || oldProps === null) {\n return `${triggerName} changed shallowly`;\n }\n\n // Compare explicitly defined new props against old/default values\n for (const key of Object.keys(newProps)) {\n if (!(key in ignoreProps)) {\n if (!(key in oldProps)) {\n return `${triggerName}.${key} added`;\n }\n const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n if (changed) {\n return `${triggerName}.${key} ${changed}`;\n }\n }\n }\n\n // Test if any old props have been dropped\n for (const key of Object.keys(oldProps)) {\n if (!(key in ignoreProps)) {\n if (!(key in newProps)) {\n return `${triggerName}.${key} dropped`;\n }\n if (!Object.hasOwnProperty.call(newProps, key)) {\n // Compare dropped old prop against default value\n const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n if (changed) {\n return `${triggerName}.${key} ${changed}`;\n }\n }\n }\n }\n\n return null;\n}\n/* eslint-enable max-statements, max-depth, complexity */\n\n// HELPERS\nfunction comparePropValues(newProp, oldProp, propType) {\n // If prop type has an equal function, invoke it\n let equal = propType && propType.equal;\n if (equal && !equal(newProp, oldProp, propType)) {\n return 'changed deeply';\n }\n\n if (!equal) {\n // If object has an equals function, invoke it\n equal = newProp && oldProp && newProp.equals;\n if (equal && !equal.call(newProp, oldProp)) {\n return 'changed deeply';\n }\n }\n\n if (!equal && oldProp !== newProp) {\n return 'changed shallowly';\n }\n\n return null;\n}\n\n// The comparison of the data prop requires special handling\n// the dataComparator should be used if supplied\nfunction diffDataProps(props, oldProps) {\n if (oldProps === null) {\n return 'oldProps is null, initial diff';\n }\n\n let dataChanged = null;\n // Support optional app defined comparison of data\n const {dataComparator, _dataDiff} = props;\n if (dataComparator) {\n if (!dataComparator(props.data, oldProps.data)) {\n dataChanged = 'Data comparator detected a change';\n }\n // Otherwise, do a shallow equal on props\n } else if (props.data !== oldProps.data) {\n dataChanged = 'A new data container was supplied';\n }\n if (dataChanged && _dataDiff) {\n dataChanged = _dataDiff(props.data, oldProps.data) || dataChanged;\n }\n\n return dataChanged;\n}\n\n// Checks if any update triggers have changed\n// also calls callback to invalidate attributes accordingly.\nfunction diffUpdateTriggers(props, oldProps) {\n if (oldProps === null) {\n return 'oldProps is null, initial diff';\n }\n\n // If the 'all' updateTrigger fires, ignore testing others\n if ('all' in props.updateTriggers) {\n const diffReason = diffUpdateTrigger(props, oldProps, 'all');\n if (diffReason) {\n return {all: true};\n }\n }\n\n const triggerChanged = {};\n let reason = false;\n // If the 'all' updateTrigger didn't fire, need to check all others\n for (const triggerName in props.updateTriggers) {\n if (triggerName !== 'all') {\n const diffReason = diffUpdateTrigger(props, oldProps, triggerName);\n if (diffReason) {\n triggerChanged[triggerName] = true;\n reason = triggerChanged;\n }\n }\n }\n\n return reason;\n}\n\n// Returns true if any extensions have changed\nfunction diffExtensions(props, oldProps) {\n if (oldProps === null) {\n return 'oldProps is null, initial diff';\n }\n\n const oldExtensions = oldProps.extensions;\n const {extensions} = props;\n\n if (extensions === oldExtensions) {\n return false;\n }\n if (extensions.length !== oldExtensions.length) {\n return true;\n }\n for (let i = 0; i < extensions.length; i++) {\n if (!extensions[i].equals(oldExtensions[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction diffUpdateTrigger(props, oldProps, triggerName) {\n let newTriggers = props.updateTriggers[triggerName];\n newTriggers = newTriggers === undefined || newTriggers === null ? {} : newTriggers;\n let oldTriggers = oldProps.updateTriggers[triggerName];\n oldTriggers = oldTriggers === undefined || oldTriggers === null ? {} : oldTriggers;\n const diffReason = compareProps({\n oldProps: oldTriggers,\n newProps: newTriggers,\n triggerName\n });\n return diffReason;\n}\n\nfunction getPropTypes(props) {\n const layer = props[COMPONENT];\n const LayerType = layer && layer.constructor;\n return LayerType ? LayerType._propTypes : {};\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nconst ERR_NOT_OBJECT = 'count(): argument not an object';\nconst ERR_NOT_CONTAINER = 'count(): argument not a container';\n\n/**\n * Deduces numer of elements in a JavaScript container.\n * - Auto-deduction for ES6 containers that define a count() method\n * - Auto-deduction for ES6 containers that define a size member\n * - Auto-deduction for Classic Arrays via the built-in length attribute\n * - Also handles objects, although note that this an O(N) operation\n */\nexport function count(container) {\n if (!isObject(container)) {\n throw new Error(ERR_NOT_OBJECT);\n }\n\n // Check if ES6 collection \"count\" function is available\n if (typeof container.count === 'function') {\n return container.count();\n }\n\n // Check if ES6 collection \"size\" attribute is set\n if (Number.isFinite(container.size)) {\n return container.size;\n }\n\n // Check if array length attribute is set\n // Note: checking this last since some ES6 collections (Immutable.js)\n // emit profuse warnings when trying to access `length` attribute\n if (Number.isFinite(container.length)) {\n return container.length;\n }\n\n // Note that getting the count of an object is O(N)\n if (isPlainObject(container)) {\n return Object.keys(container).length;\n }\n\n throw new Error(ERR_NOT_CONTAINER);\n}\n\n/**\n * Checks if argument is a plain object (not a class or array etc)\n * @param {*} value - JavaScript value to be tested\n * @return {Boolean} - true if argument is a plain JavaScript object\n */\nfunction isPlainObject(value) {\n return value !== null && typeof value === 'object' && value.constructor === Object;\n}\n\n/**\n * Checks if argument is an indexable object (not a primitive value, nor null)\n * @param {*} value - JavaScript value to be tested\n * @return {Boolean} - true if argument is a JavaScript object\n */\nfunction isObject(value) {\n return value !== null && typeof value === 'object';\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Merge two luma.gl shader descriptors\nexport function mergeShaders(target, source) {\n if (!source) {\n return target;\n }\n const result = Object.assign({}, target, source);\n\n if ('defines' in source) {\n result.defines = Object.assign({}, target.defines, source.defines);\n }\n if ('modules' in source) {\n result.modules = (target.modules || []).concat(source.modules);\n\n // Hack: prject32 and project64 cannot co-exist\n if (source.modules.some(module => module.name === 'project64')) {\n const index = result.modules.findIndex(module => module.name === 'project32');\n if (index >= 0) {\n result.modules.splice(index, 1);\n }\n }\n }\n if ('inject' in source) {\n if (!target.inject) {\n result.inject = source.inject;\n } else {\n const mergedInjection = {...target.inject};\n for (const key in source.inject) {\n mergedInjection[key] = (mergedInjection[key] || '') + source.inject[key];\n }\n result.inject = mergedInjection;\n }\n }\n return result;\n}\n","/**\n * Projection utils\n * TODO: move to Viewport class?\n */\nimport {COORDINATE_SYSTEM} from '../../lib/constants';\nimport {LNGLAT_AUTO_OFFSET_ZOOM_THRESHOLD} from './viewport-uniforms';\n\nimport * as vec4 from 'gl-matrix/vec4';\nimport * as vec3 from 'gl-matrix/vec3';\nimport {addMetersToLngLat} from '@math.gl/web-mercator';\n\n// In project.glsl, offset modes calculate z differently from LNG_LAT mode.\n// offset modes apply the y adjustment (unitsPerMeter2) when projecting z\n// LNG_LAT mode only use the linear scale.\nfunction lngLatZToWorldPosition(lngLatZ, viewport, offsetMode = false) {\n const [longitude, latitude, z = 0] = lngLatZ;\n const [X, Y] = viewport.projectFlat(lngLatZ);\n const distanceScales = viewport.getDistanceScales(offsetMode && [longitude, latitude]);\n const Z = z * distanceScales.unitsPerMeter[2];\n return [X, Y, Z];\n}\n\nfunction normalizeParameters(opts) {\n const normalizedParams = Object.assign({}, opts);\n\n let {coordinateSystem} = opts;\n const {viewport, coordinateOrigin, fromCoordinateSystem, fromCoordinateOrigin} = opts;\n\n if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = viewport.isGeospatial\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN;\n }\n\n if (fromCoordinateSystem === undefined) {\n normalizedParams.fromCoordinateSystem = coordinateSystem;\n }\n if (fromCoordinateOrigin === undefined) {\n normalizedParams.fromCoordinateOrigin = coordinateOrigin;\n }\n\n if (\n coordinateSystem === COORDINATE_SYSTEM.LNGLAT &&\n viewport.zoom >= LNGLAT_AUTO_OFFSET_ZOOM_THRESHOLD\n ) {\n coordinateSystem = COORDINATE_SYSTEM.LNGLAT_OFFSETS;\n normalizedParams.coordinateOrigin = [\n Math.fround(viewport.longitude),\n Math.fround(viewport.latitude)\n ];\n }\n normalizedParams.coordinateSystem = coordinateSystem;\n\n return normalizedParams;\n}\n\nexport function getWorldPosition(\n position,\n {viewport, modelMatrix, coordinateSystem, coordinateOrigin, offsetMode}\n) {\n let [x, y, z] = position;\n\n if (modelMatrix) {\n [x, y, z] = vec4.transformMat4([], [x, y, z, 1.0], modelMatrix);\n }\n\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.LNGLAT:\n return lngLatZToWorldPosition([x, y, z], viewport, offsetMode);\n\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n return lngLatZToWorldPosition(\n [x + coordinateOrigin[0], y + coordinateOrigin[1], z + (coordinateOrigin[2] || 0)],\n viewport,\n offsetMode\n );\n\n case COORDINATE_SYSTEM.METER_OFFSETS:\n return lngLatZToWorldPosition(\n addMetersToLngLat(coordinateOrigin, [x, y, z]),\n viewport,\n offsetMode\n );\n\n case COORDINATE_SYSTEM.CARTESIAN:\n default:\n return viewport.projectPosition([x, y, z]);\n }\n}\n\n/**\n * Equivalent to project_position in project.glsl\n * projects a user supplied position to world position directly with or without\n * a reference coordinate system\n * @param {array} position - [x, y, z]\n * @param {object} params\n * @param {Viewport} params.viewport - the current viewport\n * @param {number} params.coordinateSystem - the reference coordinate system used\n * align world position\n * @param {array} params.coordinateOrigin - the reference coordinate origin used\n * to align world position\n * @param {Matrix4} [params.modelMatrix] - the model matrix of the supplied position\n * @param {number} [params.fromCoordinateSystem] - the coordinate system that the\n * supplied position is in. Default to the same as `coordinateSystem`.\n * @param {array} [params.fromCoordinateOrigin] - the coordinate origin that the\n * supplied position is in. Default to the same as `coordinateOrigin`.\n */\nexport function projectPosition(position, params) {\n const {\n viewport,\n coordinateSystem,\n coordinateOrigin,\n // optional\n modelMatrix,\n fromCoordinateSystem,\n fromCoordinateOrigin\n } = normalizeParameters(params);\n\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n case COORDINATE_SYSTEM.METER_OFFSETS: {\n const worldPosition = getWorldPosition(position, {\n viewport,\n modelMatrix,\n coordinateSystem: fromCoordinateSystem,\n coordinateOrigin: fromCoordinateOrigin,\n offsetMode: true\n });\n const originWorld = lngLatZToWorldPosition(coordinateOrigin, viewport, true);\n vec3.sub(worldPosition, worldPosition, originWorld);\n\n return worldPosition;\n }\n\n case COORDINATE_SYSTEM.LNGLAT:\n case COORDINATE_SYSTEM.CARTESIAN:\n default:\n return getWorldPosition(position, {\n viewport,\n modelMatrix,\n coordinateSystem: fromCoordinateSystem,\n coordinateOrigin: fromCoordinateOrigin,\n offsetMode: false\n });\n }\n}\n","const TYPE_DEFINITIONS = {\n boolean: {\n validate(value, propType) {\n return true;\n },\n equal(value1, value2, propType) {\n return Boolean(value1) === Boolean(value2);\n }\n },\n number: {\n validate(value, propType) {\n return (\n Number.isFinite(value) &&\n (!('max' in propType) || value <= propType.max) &&\n (!('min' in propType) || value >= propType.min)\n );\n }\n },\n color: {\n validate(value, propType) {\n return (\n (propType.optional && !value) ||\n (isArray(value) && (value.length === 3 || value.length === 4))\n );\n },\n equal(value1, value2, propType) {\n return arrayEqual(value1, value2);\n }\n },\n accessor: {\n validate(value, propType) {\n const valueType = getTypeOf(value);\n return valueType === 'function' || valueType === getTypeOf(propType.value);\n },\n equal(value1, value2, propType) {\n if (typeof value2 === 'function') {\n return true;\n }\n return arrayEqual(value1, value2);\n }\n },\n array: {\n validate(value, propType) {\n return (propType.optional && !value) || isArray(value);\n },\n equal(value1, value2, propType) {\n return propType.compare ? arrayEqual(value1, value2) : value1 === value2;\n }\n },\n function: {\n validate(value, propType) {\n return (propType.optional && !value) || typeof value === 'function';\n },\n equal(value1, value2, propType) {\n return !propType.compare || value1 === value2;\n }\n }\n};\n\nfunction arrayEqual(array1, array2) {\n if (array1 === array2) {\n return true;\n }\n if (!isArray(array1) || !isArray(array2)) {\n return false;\n }\n const len = array1.length;\n if (len !== array2.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n\nexport function parsePropTypes(propDefs) {\n const propTypes = {};\n const defaultProps = {};\n const deprecatedProps = {};\n\n for (const [propName, propDef] of Object.entries(propDefs)) {\n if (propDef && propDef.deprecatedFor) {\n deprecatedProps[propName] = Array.isArray(propDef.deprecatedFor)\n ? propDef.deprecatedFor\n : [propDef.deprecatedFor];\n } else {\n const propType = parsePropType(propName, propDef);\n propTypes[propName] = propType;\n defaultProps[propName] = propType.value;\n }\n }\n return {propTypes, defaultProps, deprecatedProps};\n}\n\n// Parses one property definition entry. Either contains:\n// * a valid prop type object ({type, ...})\n// * or just a default value, in which case type and name inference is used\nfunction parsePropType(name, propDef) {\n switch (getTypeOf(propDef)) {\n case 'object':\n return normalizePropDefinition(name, propDef);\n\n case 'array':\n return normalizePropDefinition(name, {type: 'array', value: propDef, compare: false});\n\n case 'boolean':\n return normalizePropDefinition(name, {type: 'boolean', value: propDef});\n\n case 'number':\n return normalizePropDefinition(name, {type: 'number', value: propDef});\n\n case 'function':\n return normalizePropDefinition(name, {type: 'function', value: propDef, compare: true});\n // return guessFunctionType(name, propDef);\n\n default:\n return {name, type: 'unknown', value: propDef};\n }\n}\n\nfunction normalizePropDefinition(name, propDef) {\n if (!('type' in propDef)) {\n if (!('value' in propDef)) {\n // If no type and value this object is likely the value\n return {name, type: 'object', value: propDef};\n }\n return Object.assign({name, type: getTypeOf(propDef.value)}, propDef);\n }\n return Object.assign({name}, TYPE_DEFINITIONS[propDef.type], propDef);\n}\n\nfunction isArray(value) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n}\n\n// improved version of javascript typeof that can distinguish arrays and null values\nfunction getTypeOf(value) {\n if (isArray(value)) {\n return 'array';\n }\n if (value === null) {\n return 'null';\n }\n return typeof value;\n}\n","import log from '../utils/log';\nimport {isAsyncIterable} from '../utils/iterable-utils';\nimport {parsePropTypes} from './prop-types';\nimport {PROP_SYMBOLS} from './constants';\n\nconst {COMPONENT, ASYNC_ORIGINAL, ASYNC_RESOLVED, ASYNC_DEFAULTS} = PROP_SYMBOLS;\n\n// Create a property object\nexport function createProps() {\n const component = this; // eslint-disable-line\n\n // Get default prop object (a prototype chain for now)\n const propsPrototype = getPropsPrototype(component.constructor);\n\n // Create a new prop object with default props object in prototype chain\n const propsInstance = Object.create(propsPrototype);\n\n // Props need a back pointer to the owning component\n propsInstance[COMPONENT] = component;\n // The supplied (original) values for those async props that are set to url strings or Promises.\n // In this case, the actual (i.e. resolved) values are looked up from component.internalState\n propsInstance[ASYNC_ORIGINAL] = {};\n // Note: the actual (resolved) values for props that are NOT set to urls or Promises.\n // in this case the values are served directly from this map\n propsInstance[ASYNC_RESOLVED] = {};\n\n // \"Copy\" all sync props\n for (let i = 0; i < arguments.length; ++i) {\n const props = arguments[i];\n // Do not use Object.assign here to avoid Symbols in props overwriting our private fields\n // This might happen if one of the arguments is another props instance\n for (const key in props) {\n propsInstance[key] = props[key];\n }\n }\n\n // Props must be immutable\n Object.freeze(propsInstance);\n\n return propsInstance;\n}\n\n// Return precalculated defaultProps and propType objects if available\n// build them if needed\nfunction getPropsPrototype(componentClass) {\n const defaultProps = getOwnProperty(componentClass, '_mergedDefaultProps');\n if (!defaultProps) {\n createPropsPrototypeAndTypes(componentClass);\n return componentClass._mergedDefaultProps;\n }\n return defaultProps;\n}\n\n// Build defaultProps and propType objects by walking component prototype chain\nfunction createPropsPrototypeAndTypes(componentClass) {\n const parent = componentClass.prototype;\n if (!parent) {\n return;\n }\n\n const parentClass = Object.getPrototypeOf(componentClass);\n const parentDefaultProps = getPropsPrototype(parentClass);\n\n // Parse propTypes from Component.defaultProps\n const componentDefaultProps = getOwnProperty(componentClass, 'defaultProps') || {};\n const componentPropDefs = parsePropTypes(componentDefaultProps);\n\n // Create any necessary property descriptors and create the default prop object\n // Assign merged default props\n const defaultProps = createPropsPrototype(\n componentPropDefs.defaultProps,\n parentDefaultProps,\n componentClass\n );\n\n // Create a merged type object\n const propTypes = Object.assign({}, parentClass._propTypes, componentPropDefs.propTypes);\n // Add getters/setters for async props\n addAsyncPropsToPropPrototype(defaultProps, propTypes);\n\n // Create a map for prop whose default value is a callback\n const deprecatedProps = Object.assign(\n {},\n parentClass._deprecatedProps,\n componentPropDefs.deprecatedProps\n );\n // Add setters for deprecated props\n addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps);\n\n // Store the precalculated props\n componentClass._mergedDefaultProps = defaultProps;\n componentClass._propTypes = propTypes;\n componentClass._deprecatedProps = deprecatedProps;\n}\n\n// Builds a pre-merged default props object that component props can inherit from\nfunction createPropsPrototype(props, parentProps, componentClass) {\n const defaultProps = Object.create(null);\n\n Object.assign(defaultProps, parentProps, props);\n\n // Avoid freezing `id` prop\n const id = getComponentName(componentClass);\n delete props.id;\n\n Object.defineProperties(defaultProps, {\n // `id` is treated specially because layer might need to override it\n id: {\n writable: true,\n value: id\n }\n });\n\n return defaultProps;\n}\n\nfunction addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps) {\n for (const propName in deprecatedProps) {\n /* eslint-disable accessor-pairs */\n Object.defineProperty(defaultProps, propName, {\n enumerable: false,\n set(newValue) {\n const nameStr = `${this.id}: ${propName}`;\n\n for (const newPropName of deprecatedProps[propName]) {\n if (!hasOwnProperty(this, newPropName)) {\n this[newPropName] = newValue;\n }\n }\n\n log.deprecated(nameStr, deprecatedProps[propName].join('/'))();\n }\n });\n /* eslint-enable accessor-pairs */\n }\n}\n\n// Create descriptors for overridable props\nfunction addAsyncPropsToPropPrototype(defaultProps, propTypes) {\n const defaultValues = {};\n\n const descriptors = {};\n\n // Move async props into shadow values\n for (const propName in propTypes) {\n const propType = propTypes[propName];\n const {name, value} = propType;\n\n // Note: async is ES7 keyword, can't destructure\n if (propType.async) {\n defaultValues[name] = value;\n descriptors[name] = getDescriptorForAsyncProp(name, value);\n }\n }\n\n // Default \"resolved\" values for async props, returned if value not yet resolved/set.\n defaultProps[ASYNC_DEFAULTS] = defaultValues;\n // Shadowed object, just to make sure \"early indexing\" into the instance does not fail\n defaultProps[ASYNC_ORIGINAL] = {};\n\n Object.defineProperties(defaultProps, descriptors);\n}\n\n// Helper: Configures getter and setter for one async prop\nfunction getDescriptorForAsyncProp(name) {\n return {\n enumerable: true,\n // Save the provided value for async props in a special map\n set(newValue) {\n if (\n typeof newValue === 'string' ||\n newValue instanceof Promise ||\n isAsyncIterable(newValue)\n ) {\n this[ASYNC_ORIGINAL][name] = newValue;\n } else {\n this[ASYNC_RESOLVED][name] = newValue;\n }\n },\n // Only the component's state knows the true value of async prop\n get() {\n if (this[ASYNC_RESOLVED]) {\n // Prop value isn't async, so just return it\n if (name in this[ASYNC_RESOLVED]) {\n const value = this[ASYNC_RESOLVED][name];\n\n // Special handling - components expect null `data` prop expects to be replaced with `[]`\n if (name === 'data') {\n return value || this[ASYNC_DEFAULTS][name];\n }\n\n return value;\n }\n\n if (name in this[ASYNC_ORIGINAL]) {\n // It's an async prop value: look into component state\n const state = this[COMPONENT] && this[COMPONENT].internalState;\n if (state && state.hasAsyncProp(name)) {\n return state.getAsyncProp(name);\n }\n }\n }\n\n // the prop is not supplied, or\n // component not yet initialized/matched, return the component's default value for the prop\n return this[ASYNC_DEFAULTS][name];\n }\n };\n}\n\n// HELPER METHODS\n\nfunction hasOwnProperty(object, prop) {\n return Object.prototype.hasOwnProperty.call(object, prop);\n}\n\n// Constructors have their super class constructors as prototypes\nfunction getOwnProperty(object, prop) {\n return hasOwnProperty(object, prop) && object[prop];\n}\n\nfunction getComponentName(componentClass) {\n const componentName =\n getOwnProperty(componentClass, 'layerName') || getOwnProperty(componentClass, 'componentName');\n if (!componentName) {\n log.once(0, `${componentClass.name}.componentName not specified`)();\n }\n return componentName || componentClass.name;\n}\n","export default function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol !== \"undefined\") {\n if (Symbol.asyncIterator) {\n method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n\n if (Symbol.iterator) {\n method = iterable[Symbol.iterator];\n if (method != null) return method.call(iterable);\n }\n }\n\n throw new TypeError(\"Object is not async iterable\");\n}","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport log from '../utils/log';\nimport assert from '../utils/assert';\nimport {isAsyncIterable} from '../utils/iterable-utils';\nimport {PROP_SYMBOLS} from './constants';\nconst {ASYNC_ORIGINAL, ASYNC_RESOLVED, ASYNC_DEFAULTS} = PROP_SYMBOLS;\n\nconst EMPTY_PROPS = Object.freeze({});\n\nexport default class ComponentState {\n constructor(component = null) {\n this.component = component;\n this.asyncProps = {}; // Prop values that the layer sees\n this.onAsyncPropUpdated = () => {};\n this.oldProps = EMPTY_PROPS; // Last props before update\n this.oldAsyncProps = null; // Last props before update, with async values copied.\n }\n\n getOldProps() {\n return this.oldAsyncProps || this.oldProps;\n }\n\n resetOldProps() {\n this.oldAsyncProps = null;\n this.oldProps = this.component.props;\n }\n\n // Whenever async props are changing, we need to make a copy of oldProps\n // otherwise the prop rewriting will affect the value both in props and oldProps.\n // While the copy is relatively expensive, this only happens on load completion.\n freezeAsyncOldProps() {\n if (!this.oldAsyncProps) {\n // Make sure oldProps is set\n this.oldProps = this.oldProps || this.component.props;\n\n // 1. inherit all synchronous props from oldProps\n // 2. reconfigure the async prop descriptors to fixed values\n this.oldAsyncProps = Object.create(this.oldProps);\n for (const propName in this.asyncProps) {\n Object.defineProperty(this.oldAsyncProps, propName, {\n enumerable: true,\n value: this.oldProps[propName]\n });\n }\n }\n }\n\n // ASYNC PROP HANDLING\n //\n\n // Checks if a prop is overridden\n hasAsyncProp(propName) {\n return propName in this.asyncProps;\n }\n\n // Returns value of an overriden prop\n getAsyncProp(propName) {\n const asyncProp = this.asyncProps[propName];\n return asyncProp && asyncProp.resolvedValue;\n }\n\n isAsyncPropLoading(propName) {\n const asyncProp = this.asyncProps[propName];\n return Boolean(\n asyncProp &&\n asyncProp.pendingLoadCount > 0 &&\n asyncProp.pendingLoadCount !== asyncProp.resolvedLoadCount\n );\n }\n\n // Updates all async/overridden props (when new props come in)\n // Checks if urls have changed, starts loading, or removes override\n setAsyncProps(props) {\n // NOTE: prop param and default values are only support for testing\n const resolvedValues = props[ASYNC_RESOLVED] || {};\n const originalValues = props[ASYNC_ORIGINAL] || props;\n const defaultValues = props[ASYNC_DEFAULTS] || {};\n\n // TODO - use async props from the layer's prop types\n for (const propName in resolvedValues) {\n const value = resolvedValues[propName];\n this._createAsyncPropData(propName, value, defaultValues[propName]);\n this._updateAsyncProp(propName, value);\n }\n\n for (const propName in originalValues) {\n const value = originalValues[propName];\n // Makes sure a record exists for this prop\n this._createAsyncPropData(propName, value, defaultValues[propName]);\n this._updateAsyncProp(propName, value);\n }\n }\n\n // Intercept strings (URLs) and Promises and activates loading and prop rewriting\n _updateAsyncProp(propName, value) {\n if (!this._didAsyncInputValueChange(propName, value)) {\n return;\n }\n\n // interpret value string as url and start a new load tracked by a promise\n if (typeof value === 'string') {\n const fetch = this.layer && this.layer.props.fetch;\n const url = value;\n if (fetch) {\n value = fetch(url, {propName, layer: this.layer});\n }\n }\n\n // interprets promise and track the \"loading\"\n if (value instanceof Promise) {\n this._watchPromise(propName, value);\n return;\n }\n\n if (isAsyncIterable(value)) {\n this._resolveAsyncIterable(propName, value);\n return;\n }\n\n // else, normal, non-async value. Just store value for now\n this._setPropValue(propName, value);\n }\n\n // Checks if an input value actually changed (to avoid reloading/rewatching promises/urls)\n _didAsyncInputValueChange(propName, value) {\n const asyncProp = this.asyncProps[propName];\n if (value === asyncProp.lastValue) {\n return false;\n }\n asyncProp.lastValue = value;\n return true;\n }\n\n // Set normal, non-async value\n _setPropValue(propName, value) {\n const asyncProp = this.asyncProps[propName];\n asyncProp.value = value;\n asyncProp.resolvedValue = value;\n asyncProp.pendingLoadCount++;\n asyncProp.resolvedLoadCount = asyncProp.pendingLoadCount;\n }\n\n // Set a just resolved async value, calling onAsyncPropUpdates if value changes asynchronously\n _setAsyncPropValue(propName, value, loadCount) {\n // Only update if loadCount is larger or equal to resolvedLoadCount\n // otherwise a more recent load has already completed\n const asyncProp = this.asyncProps[propName];\n if (asyncProp && loadCount >= asyncProp.resolvedLoadCount) {\n assert(value !== undefined);\n\n // A chance to copy old props before updating\n this.freezeAsyncOldProps();\n\n asyncProp.resolvedValue = value;\n asyncProp.resolvedLoadCount = loadCount;\n\n // Call callback to inform listener\n this.onAsyncPropUpdated(propName, value);\n }\n }\n\n // Tracks a promise, sets the prop when loaded, handles load count\n _watchPromise(propName, promise) {\n const asyncProp = this.asyncProps[propName];\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n promise\n .then(data => {\n data = this._postProcessValue(propName, data);\n this._setAsyncPropValue(propName, data, loadCount);\n\n const onDataLoad = this.layer && this.layer.props.onDataLoad;\n if (propName === 'data' && onDataLoad) {\n onDataLoad(data, {propName, layer: this.layer});\n }\n })\n .catch(error => log.error(error)());\n }\n\n async _resolveAsyncIterable(propName, iterable) {\n if (propName !== 'data') {\n // we only support data as async iterable\n this._setPropValue(propName, iterable);\n }\n\n const asyncProp = this.asyncProps[propName];\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n let data = [];\n let count = 0;\n\n for await (const chunk of iterable) {\n data = this._postProcessValue(propName, chunk, data);\n\n // Used by the default _dataDiff function\n Object.defineProperty(data, '__diff', {\n enumerable: false,\n value: [{startRow: count, endRow: data.length}]\n });\n\n count = data.length;\n this._setAsyncPropValue(propName, data, loadCount);\n }\n\n const onDataLoad = this.layer && this.layer.props.onDataLoad;\n if (onDataLoad) {\n onDataLoad(data, {propName, layer: this.layer});\n }\n }\n\n // Give the app a chance to post process the loaded data\n _postProcessValue(propName, value, previousValue) {\n const {dataTransform} = this.component ? this.component.props : {};\n if (propName !== 'data') {\n return value;\n }\n if (dataTransform) {\n return dataTransform(value, previousValue);\n }\n // previousValue is assigned if loaded with async iterator\n return previousValue ? previousValue.concat(value) : value;\n }\n\n // Creating an asyncProp record if needed\n _createAsyncPropData(propName, value, defaultValue) {\n const asyncProp = this.asyncProps[propName];\n if (!asyncProp) {\n // assert(defaultValue !== undefined);\n this.asyncProps[propName] = {\n lastValue: null, // Supplied prop value (can be url/promise, not visible to layer)\n resolvedValue: defaultValue, // Resolved prop value (valid data, can be \"shown\" to layer)\n pendingLoadCount: 0, // How many loads have been issued\n resolvedLoadCount: 0 // Latest resolved load, (earlier loads will be ignored)\n };\n }\n }\n}\n","import {LIFECYCLE} from '../lifecycle/constants';\nimport {createProps} from './create-props';\nimport {PROP_SYMBOLS} from './constants';\nconst {ASYNC_ORIGINAL, ASYNC_RESOLVED, ASYNC_DEFAULTS} = PROP_SYMBOLS;\nimport ComponentState from './component-state';\n\nconst defaultProps = {};\n\nlet counter = 0;\n\nexport default class Component {\n constructor(/* ...propObjects */) {\n // Merge supplied props with default props and freeze them.\n /* eslint-disable prefer-spread */\n this.props = createProps.apply(this, arguments);\n /* eslint-enable prefer-spread */\n\n // Define all members before layer is sealed\n this.id = this.props.id; // The layer's id, used for matching with layers from last render cycle\n this.count = counter++; // Keep track of how many layer instances you are generating\n this.lifecycle = LIFECYCLE.NO_STATE; // Helps track and debug the life cycle of the layers\n this.parent = null; // reference to the composite layer parent that rendered this layer\n this.context = null; // Will reference layer manager's context, contains state shared by layers\n this.state = null; // Will be set to the shared layer state object during layer matching\n this.internalState = null;\n\n // Seal the layer\n Object.seal(this);\n }\n\n // clone this layer with modified props\n clone(newProps) {\n const {props} = this;\n\n // Async props cannot be copied with Object.assign, copy them separately\n const asyncProps = {};\n\n // See async props definition in create-props.js\n for (const key in props[ASYNC_DEFAULTS]) {\n if (key in props[ASYNC_RESOLVED]) {\n asyncProps[key] = props[ASYNC_RESOLVED][key];\n } else if (key in props[ASYNC_ORIGINAL]) {\n asyncProps[key] = props[ASYNC_ORIGINAL][key];\n }\n }\n\n // Some custom layer implementation may not support multiple arguments in the constructor\n return new this.constructor(Object.assign({}, props, asyncProps, newProps));\n }\n\n get stats() {\n return this.internalState.stats;\n }\n\n // PROTECTED METHODS, override in subclass\n\n _initState() {\n this.internalState = new ComponentState({});\n }\n}\n\nComponent.componentName = 'Component';\nComponent.defaultProps = defaultProps;\n","import ComponentState from '../lifecycle/component-state';\n\nexport default class LayerState extends ComponentState {\n constructor({attributeManager, layer}) {\n super(layer);\n this.attributeManager = attributeManager;\n this.model = null;\n this.needsRedraw = true;\n this.subLayers = null; // reference to sublayers rendered in a previous cycle\n }\n\n get layer() {\n return this.component;\n }\n\n set layer(layer) {\n this.component = layer;\n }\n}\n","/* global File, Blob, Response */\n\nconst isBoolean = x => typeof x === 'boolean';\nconst isFunction = x => typeof x === 'function';\nconst isObject = x => x !== null && typeof x === 'object';\n\nexport const isPromise = x => isObject(x) && isFunction(x.then);\n\nexport const isIterable = x => x && typeof x[Symbol.iterator] === 'function';\n\nexport const isAsyncIterable = x => x && typeof x[Symbol.asyncIterator] === 'function';\n\nexport const isIterator = x => x && isFunction(x.next);\n\nexport const isFetchResponse = x =>\n (typeof Response !== 'undefined' && x instanceof Response) || (x.arrayBuffer && x.text && x.json);\n\nexport const isFile = x => typeof File !== 'undefined' && x instanceof File;\nexport const isBlob = x => typeof Blob !== 'undefined' && x instanceof Blob;\nexport const isFileReadable = x => isFile(x) || isBlob(x); // Blob & File are FileReader compatible\n\nexport const isWritableDOMStream = x => {\n return isObject(x) && isFunction(x.abort) && isFunction(x.getWriter);\n};\n\nexport const isReadableDOMStream = x => {\n return (\n isObject(x) &&\n isFunction(x.tee) &&\n isFunction(x.cancel) &&\n isFunction(x.pipeTo) &&\n isFunction(x.getReader)\n );\n};\n\nexport const isWritableNodeStream = x => {\n return isObject(x) && isFunction(x.end) && isFunction(x.write) && isBoolean(x.writable);\n};\n\nexport const isReadableNodeStream = x => {\n return isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\n};\n\nexport const isReadableStream = x => isReadableDOMStream(x) || isReadableNodeStream(x);\n\nexport const isWritableStream = x => isWritableDOMStream(x) || isWritableNodeStream(x);\n","// Simple file alias mechanisms for tests.\n\nlet pathPrefix = '';\nconst fileAliases = {};\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\n\nexport function getPathPrefix() {\n return pathPrefix;\n}\n\n// Note: addAliases are an experimental export,\n// they are only for testing of loaders.gl loaders\n// not inteded as a generic aliasing mechanism\nexport function addAliases(aliases) {\n Object.assign(fileAliases, aliases);\n}\n\nexport function resolvePath(filename) {\n for (const alias in fileAliases) {\n if (filename.startsWith(alias)) {\n const replacement = fileAliases[alias];\n return filename.replace(alias, replacement);\n }\n }\n filename += pathPrefix;\n return filename;\n}\n","/* global FileReader, Headers */\nimport {assert} from '@loaders.gl/loader-utils';\n\n// File reader fetch \"polyfill\" for the browser\nclass FileReadableResponse {\n constructor(fileOrBlob) {\n this._fileOrBlob = fileOrBlob;\n this.bodyUsed = false;\n }\n\n get headers() {\n return new Headers({\n 'Content-Length': this._fileOrBlob.size,\n 'Content-Type': this._fileOrBlob.type\n });\n }\n\n get ok() {\n return true; // Blob & File objects are already in memory\n }\n\n get status() {\n return 200; // Blob & File objects are already in memory\n }\n\n get url() {\n // Note: This is just the file name without path information\n // Note: File has `name` field but the Blob baseclass does not\n return this._fileOrBlob.name || '';\n }\n\n async arrayBuffer() {\n const {reader, promise} = this._getFileReader();\n reader.readAsArrayBuffer(this._fileOrBlob);\n return promise;\n }\n\n async text() {\n const {reader, promise} = this._getFileReader();\n reader.readAsText(this._fileOrBlob);\n return promise;\n }\n\n async json() {\n const text = await this.text();\n return JSON.parse(text);\n }\n\n // TODO - body, how to support stream?\n // Can this be portable?\n // eslint-disable-next-line\n // https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams#Creating_your_own_custom_readable_stream\n // get body() {\n // assert(false);\n // }\n\n // PRIVATE\n\n _getFileReader() {\n assert(!this.bodyUsed);\n this.bodyUsed = true;\n\n let reader;\n const promise = new Promise((resolve, reject) => {\n try {\n reader = new FileReader();\n reader.onerror = error => reject(new Error(error));\n reader.onabort = () => reject(new Error('Read aborted.'));\n reader.onload = () => resolve(reader.result);\n } catch (error) {\n reject(error);\n }\n });\n return {reader, promise};\n }\n}\n\n// @param {File|Blob} file HTML File or Blob object to read as string\n// @returns {Promise.string} Resolves to a string containing file contents\nexport default function fetchFileReadable(fileOrBlob, options) {\n return Promise.resolve(new FileReadableResponse(fileOrBlob, options));\n}\n","/* global fetch */\nimport {resolvePath} from '@loaders.gl/loader-utils';\nimport {isFileReadable} from '../../javascript-utils/is-type';\nimport fetchFileReadable from './fetch-file.browser';\n\n// As fetch but respects pathPrefix and file aliases\n// Reads file data from:\n// * data urls\n// * http/http urls\n// * File/Blob objects\nexport async function fetchFile(url, options) {\n if (isFileReadable(url)) {\n return fetchFileReadable(url, options);\n }\n url = resolvePath(url);\n // TODO - SUPPORT reading from `File` objects\n return fetch(url, options);\n}\n","// __VERSION__ is injected by babel-plugin-version-inline\n/* global __VERSION__ */\nimport assert from './env-utils/assert';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '';\n\n// Returns `true` if the two versions are compatible\nexport function validateLoaderVersion(loader, coreVersion = VERSION) {\n assert(loader, 'no loader provided');\n\n let loaderVersion = loader.version;\n if (!coreVersion || !loaderVersion) {\n return;\n }\n\n coreVersion = parseVersion(coreVersion);\n loaderVersion = parseVersion(loaderVersion);\n\n // TODO enable when fix the __version__ injection\n // assert(\n // coreVersion.major === loaderVersion.major && coreVersion.minor <= loaderVersion.minor,\n // `loader: ${loader.name} is not compatible. ${coreVersion.major}.${\n // coreVersion.minor\n // }+ is required.`\n // );\n}\n\nfunction parseVersion(version) {\n const parts = version.split('.').map(Number);\n return {major: parts[0], minor: parts[1]};\n}\n","// probe.gl Log compatible loggers\n\n// Logs nothing\nexport class NullLog {\n log() {\n return _ => {};\n }\n info() {\n return _ => {};\n }\n warn() {\n return _ => {};\n }\n error() {\n return _ => {};\n }\n}\n\n// Logs to console\nexport class ConsoleLog {\n constructor() {\n this.console = console; // eslint-disable-line\n }\n log(...args) {\n return this.console.log.bind(this.console, ...args);\n }\n info(...args) {\n return this.console.info.bind(this.console, ...args);\n }\n warn(...args) {\n return this.console.warn.bind(this.console, ...args);\n }\n error(...args) {\n return this.console.error.bind(this.console, ...args);\n }\n}\n","import {DEFAULT_LOADER_OPTIONS} from '../constants';\nimport {NullLog} from './loggers';\n\nconst isPureObject = value =>\n value && typeof value === 'object' && value.constructor === {}.constructor;\n\nlet globalOptions = {...DEFAULT_LOADER_OPTIONS};\n\n// Set global loader options\nexport function setGlobalOptions(options) {\n globalOptions = mergeOptions(globalOptions, options);\n}\n\n// Merges options with global opts and loader defaults, also injects baseUri\nexport function mergeOptions(loader, options, url) {\n const loaderDefaultOptions =\n loader && (loader.DEFAULT_LOADER_OPTIONS || loader.defaultOptions || loader.options || {});\n\n const mergedOptions = {...loaderDefaultOptions};\n\n addUrlOptions(mergedOptions, url);\n\n // LOGGING: options.log can be set to `null` to defeat logging\n if (mergedOptions.log === null) {\n mergedOptions.log = new NullLog();\n }\n\n mergeNestedFields(mergedOptions, globalOptions);\n mergeNestedFields(mergedOptions, options);\n\n return mergedOptions;\n}\n\n// Merge nested options objects\nfunction mergeNestedFields(mergedOptions, options) {\n for (const key in options) {\n // Check for nested options\n // object in options => either no key in defaultOptions or object in defaultOptions\n if (key in options) {\n const value = options[key];\n if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n mergedOptions[key] = {\n ...mergedOptions[key],\n ...options[key]\n };\n } else {\n mergedOptions[key] = options[key];\n }\n }\n // else: No need to merge nested opts, and the initial merge already copied over the nested options\n }\n}\n\n// Harvest information from the url\n// TODO - baseUri should be a directory, i.e. remove file component from baseUri\n// TODO - extract extension?\n// TODO - extract query parameters?\n// TODO - should these be injected on context instead of options?\nfunction addUrlOptions(options, url) {\n if (url && !('baseUri' in options)) {\n options.baseUri = url;\n }\n}\n","export default function _AwaitValue(value) {\n this.wrapped = value;\n}","import AwaitValue from \"./AwaitValue\";\nexport default function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {\n if (wrappedAwait) {\n resume(key === \"return\" ? \"return\" : \"next\", arg);\n return;\n }\n\n settle(result.done ? \"return\" : \"normal\", arg);\n }, function (err) {\n resume(\"throw\", err);\n });\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen[\"return\"] !== \"function\") {\n this[\"return\"] = undefined;\n }\n}\n\nif (typeof Symbol === \"function\" && Symbol.asyncIterator) {\n AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n return this;\n };\n}\n\nAsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n};\n\nAsyncGenerator.prototype[\"throw\"] = function (arg) {\n return this._invoke(\"throw\", arg);\n};\n\nAsyncGenerator.prototype[\"return\"] = function (arg) {\n return this._invoke(\"return\", arg);\n};","export async function checkFetchResponseStatus(response) {\n if (!response.ok) {\n let errorMessage = `fetch failed ${response.status} `;\n try {\n const text = await response.text();\n errorMessage += text;\n } catch (error) {\n // ignore error\n }\n throw new Error(errorMessage);\n }\n}\n\nexport function checkFetchResponseStatusSync(response) {\n if (!response.ok) {\n throw new Error(`fetch failed ${response.status}`);\n }\n}\n","/* global TextDecoder */\nimport {\n isFetchResponse,\n isReadableStream,\n isAsyncIterable,\n isIterable,\n isIterator,\n isFileReadable\n} from '../../javascript-utils/is-type';\nimport {getStreamIterator} from '../../javascript-utils/stream-utils';\nimport fetchFileReadable from '../fetch/fetch-file.browser';\nimport {checkFetchResponseStatus, checkFetchResponseStatusSync} from './check-errors';\n\nconst ERR_DATA = 'Cannot convert supplied data type';\n\n// Extract a URL from `parse` arguments if possible\n// If a fetch Response object or File/Blob were passed in get URL from those objects\nexport function getUrlFromData(data, url) {\n if (isFetchResponse(data)) {\n url = url || data.url;\n } else if (isFileReadable(url)) {\n // File or Blob\n url = url.name;\n }\n // Strip any query string\n return typeof url === 'string' ? url.replace(/\\?.*/, '') : url;\n}\n\nexport function getArrayBufferOrStringFromDataSync(data, loader) {\n if (loader.text && typeof data === 'string') {\n return data;\n }\n\n if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n const arrayBuffer = data.buffer || data;\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(arrayBuffer);\n }\n return arrayBuffer;\n }\n\n throw new Error(ERR_DATA);\n}\n\n// Convert async iterator to a promise\nexport async function getArrayBufferOrStringFromData(data, loader) {\n // Resolve any promise\n data = await data;\n\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n if (typeof data === 'string' || isArrayBuffer) {\n return getArrayBufferOrStringFromDataSync(data, loader);\n }\n\n // Blobs and files are FileReader compatible\n if (isFileReadable(data)) {\n data = await fetchFileReadable(data);\n }\n\n if (isFetchResponse(data)) {\n const response = data;\n await checkFetchResponseStatus(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n\n // if (isIterable(data) || isAsyncIterable(data)) {\n // }\n\n // Assume arrayBuffer iterator - attempt to concatenate\n // return concatenateAsyncIterator(data);\n\n throw new Error(ERR_DATA);\n}\n\nexport function getAsyncIteratorFromData(data) {\n if (isIterator(data)) {\n return data;\n }\n\n // TODO: Our fetchFileReaderObject response does not yet support a body stream\n if (isFetchResponse(data) && data.body) {\n // Note Since this function is not async, we currently can't load error message, just status\n checkFetchResponseStatusSync(data);\n return getStreamIterator(data.body);\n }\n\n if (isReadableStream(data)) {\n return getStreamIterator(data);\n }\n\n if (isAsyncIterable(data)) {\n return data[Symbol.asyncIterator]();\n }\n\n return getIteratorFromData(data);\n}\n\nexport function getIteratorFromData(data) {\n // generate an iterator that emits a single chunk\n if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n return (function* oneChunk() {\n yield data.buffer || data;\n })();\n }\n\n if (isIterator(data)) {\n return data;\n }\n\n if (isIterable(data)) {\n return data[Symbol.iterator]();\n }\n\n throw new Error(ERR_DATA);\n}\n","// \"sub\" loaders invoked by other loaders get a \"context\" injected on `this`\n// The context will inject core methods like `parse` and contain information\n// about loaders and options passed in to the top-level `parse` call.\nimport {fetchFile} from '../fetch/fetch-file';\n\nexport function getLoaderContext(context, options, previousContext) {\n // For recursive calls, we already have a context\n // TODO - add any additional loaders to context?\n if (previousContext) {\n return previousContext;\n }\n context = {\n // TODO - determine how to inject fetch, fetch in options etc\n fetch: context.fetch || fetchFile,\n ...context\n };\n\n // Recursive loading does not use single loader\n if (!Array.isArray(context.loaders)) {\n context.loaders = null;\n }\n\n return context;\n}\n\nexport function getLoaders(loaders, context) {\n // A single non-array loader is force selected, but only on top-level (context === null)\n if (!context && !Array.isArray(loaders)) {\n return loaders;\n }\n\n // Create a merged list\n let candidateLoaders;\n if (loaders) {\n candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n }\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n }\n // If no loaders, return null to look in globally registered loaders\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n","/* global TextEncoder */\nimport {assert} from '@loaders.gl/loader-utils';\nimport {toArrayBuffer as bufferToArrayBuffer} from '../node/utils/to-array-buffer.node';\n\nexport function toArrayBuffer(data) {\n if (bufferToArrayBuffer) {\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n data = bufferToArrayBuffer(data);\n }\n\n if (data instanceof ArrayBuffer) {\n return data;\n }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n return data.buffer;\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n return assert(false);\n}\n\n// export function blobToArrayBuffer(blob) {\n// return new Promise((resolve, reject) => {\n// let arrayBuffer;\n// const fileReader = new FileReader();\n// fileReader.onload = event => {\n// arrayBuffer = event.target.result;\n// };\n// fileReader.onloadend = event => resolve(arrayBuffer);\n// fileReader.onerror = reject;\n// fileReader.readAsArrayBuffer(blob);\n// });\n// }\n","/* global URL, Blob */\nimport {assert} from '@loaders.gl/loader-utils';\n\nconst workerURLCache = new Map();\n\n// Creates a URL from worker source that can be used to create `Worker` instances\n// Packages (and then caches) the result of `webworkify` as an \"Object URL\"\nexport function getWorkerURL(workerSource, workerName = 'Worker') {\n assert(typeof workerSource === 'string', 'worker source');\n\n // CASE: url(./worker.js)\n // This pattern is used to differentiate worker urls from worker source code\n // Load from url is needed for testing, when using Webpack & webworker target\n if (workerSource.startsWith('url(') && workerSource.endsWith(')')) {\n const workerUrl = workerSource.match(/^url\\((.*)\\)$/)[1];\n\n // A local script url, we can use it to initialize a Worker directly\n if (workerUrl && !workerUrl.startsWith('http')) {\n return workerUrl;\n }\n\n // Per spec, worker cannot be initialized with a script from a different origin\n // However a local worker script can still import scripts from other origins,\n // so we simply build a wrapper script\n workerSource = buildScript(workerUrl);\n }\n\n let workerURL = workerURLCache.get(workerSource);\n\n if (!workerURL) {\n // NOTE: webworkify was previously used\n // const blob = webworkify(workerSource, {bare: true});\n const blob = new Blob([workerSource], {type: 'application/javascript'});\n workerURL = URL.createObjectURL(blob);\n workerURLCache.set(workerSource, workerURL);\n }\n\n return workerURL;\n}\n\n// Only use trusted sources!\nfunction buildScript(workerUrl) {\n return `\\\ntry {\n importScripts('${workerUrl}');\n} catch (error) {\n console.error(error);\n}`;\n}\n","// NOTE - there is a copy of this function is both in core and loader-utils\n// core does not need all the utils in loader-utils\n// https://developer.mozilla.org/en-US/docs/Web/API/Transferable\n\n/* global MessagePort, ImageBitmap, OffscreenCanvas */\n\nfunction isTransferable(object) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer || object.buffer instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== `undefined` && object instanceof ImageBitmap) {\n return true;\n }\n if (typeof OffscreenCanvas !== `undefined` && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\n\nexport function getTransferList(object, recursive = true, transfers = []) {\n if (!object) {\n // ignore\n } else if (isTransferable(object)) {\n transfers.push(object);\n } else if (isTransferable(object.buffer)) {\n // Typed array\n transfers.push(object.buffer);\n } else if (recursive && typeof object === 'object') {\n for (const key in object) {\n // Avoid perf hit - only go one level deep\n getTransferList(object[key], recursive, transfers);\n }\n }\n return transfers;\n}\n","/* global Worker */\nimport {getWorkerURL} from './get-worker-url';\nimport {getTransferList} from './get-transfer-list';\n\nlet count = 0;\n\n// By default resolves to the first message the worker sends back\nfunction defaultOnMessage({data, resolve}) {\n resolve(data);\n}\n\nexport default class WorkerThread {\n constructor({source, name = `web-worker-${count++}`, onMessage}) {\n const url = getWorkerURL(source, name);\n this.worker = new Worker(url, {name});\n this.name = name;\n this.onMessage = onMessage || defaultOnMessage;\n }\n\n /**\n * Process binary data in a worker\n * @param data {data containing binary typed arrays} - data to be transferred to worker\n * @returns a Promise with data containing typed arrays transferred back from work\n */\n async process(data) {\n return new Promise((resolve, reject) => {\n this.worker.onmessage = event =>\n this.onMessage({worker: this.worker, data: event.data, resolve, reject});\n this.worker.onerror = error => {\n // Note Error object does not have the expected fields if loading failed completely\n // https://developer.mozilla.org/en-US/docs/Web/API/Worker#Event_handlers\n // https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n let message = `${this.name}: WorkerThread.process() failed`;\n if (error.message) {\n message += ` ${error.message} ${error.filename}:${error.lineno}:${error.colno}`;\n }\n const betterError = new Error(message);\n console.error(error); // eslint-disable-line\n reject(betterError);\n };\n const transferList = getTransferList(data);\n this.worker.postMessage(data, transferList);\n });\n }\n\n destroy() {\n this.worker.terminate();\n this.worker = null;\n }\n}\n","import WorkerThread from './worker-thread';\n\n/**\n * Process multiple data messages with small pool of identical workers\n */\nexport default class WorkerPool {\n /**\n * @param processor {function | string} - worker function\n * @param maxConcurrency {number} - max count of workers\n */\n constructor({source, name = 'unnamed', maxConcurrency = 1, onMessage, onDebug = () => {}}) {\n this.source = source;\n this.name = name;\n this.maxConcurrency = maxConcurrency;\n this.onMessage = onMessage;\n this.onDebug = onDebug;\n\n this.jobQueue = [];\n this.idleQueue = [];\n this.count = 0;\n this.isDestroyed = false;\n }\n\n destroy() {\n // Destroy idle workers, active Workers will be destroyed on completion\n this.idleQueue.forEach(worker => worker.destroy());\n this.isDestroyed = true;\n }\n\n /**\n * Process binary data in a worker\n * @param data {data containing binary typed arrays} - data to be transferred to worker\n * @returns a Promise with data containing typed arrays transferred back from work\n */\n async process(data, jobName) {\n return new Promise((resolve, reject) => {\n this.jobQueue.push({data, jobName, resolve, reject});\n this._startQueuedJob();\n });\n }\n\n // PRIVATE\n\n _startQueuedJob() {\n if (!this.jobQueue.length) {\n return;\n }\n const worker = this._getAvailableWorker();\n if (!worker) {\n return;\n }\n\n // We have a worker, dequeue and start the job\n const job = this.jobQueue.shift();\n\n this.onDebug({\n message: 'processing',\n worker: worker.name,\n job: job.jobName,\n backlog: this.jobQueue.length\n });\n\n worker\n .process(job.data)\n .then(result => job.resolve(result))\n .catch(error => job.reject(error))\n .then(() => this._onWorkerDone(worker));\n }\n\n _onWorkerDone(worker) {\n if (this.isDestroyed) {\n worker.destroy();\n } else {\n this.idleQueue.push(worker);\n this._startQueuedJob();\n }\n }\n\n _getAvailableWorker() {\n // If a worker has completed and returned to the queue, it can be used\n if (this.idleQueue.length > 0) {\n return this.idleQueue.shift();\n }\n\n // Create fresh worker if we haven't yet created the max amount of worker threads for this worker source\n if (this.count < this.maxConcurrency) {\n this.count++;\n const name = `${this.name.toLowerCase()}-worker (#${this.count} of ${this.maxConcurrency})`;\n return new WorkerThread({source: this.source, onMessage: this.onMessage, name});\n }\n\n // No worker available, have to wait\n return null;\n }\n}\n","import WorkerPool from './worker-pool';\n\nconst DEFAULT_MAX_CONCURRENCY = 5;\n\n/**\n * Process multiple data messages with a \"farm\" of different workers (in worker pools)\n */\nexport default class WorkerFarm {\n static isSupported() {\n return typeof Worker !== 'undefined';\n }\n\n /**\n * @param processor {function | string} - worker function\n * @param maxConcurrency {number} - max count of workers\n */\n constructor({maxConcurrency = DEFAULT_MAX_CONCURRENCY, onMessage, onDebug = () => {}}) {\n this.maxConcurrency = maxConcurrency;\n this.onMessage = onMessage;\n this.onDebug = onDebug;\n this.workerPools = new Map();\n }\n\n setProps(props) {\n if ('maxConcurrency' in props) {\n this.maxConcurrency = props.maxConcurrency;\n }\n\n if ('onDebug' in props) {\n this.onDebug = props.onDebug;\n }\n }\n\n destroy() {\n this.workerPools.forEach(workerPool => workerPool.destroy());\n }\n\n /**\n * Process binary data in a worker\n * @param data {data containing binary typed arrays} - data to be transferred to worker\n * @returns a Promise with data containing typed arrays transferred back from work\n */\n async process(workerSource, workerName, data) {\n const workerPool = this._getWorkerPool(workerSource, workerName);\n return workerPool.process(data);\n }\n\n // PRIVATE\n\n _getWorkerPool(workerSource, workerName) {\n let workerPool = this.workerPools.get(workerName);\n if (!workerPool) {\n workerPool = new WorkerPool({\n source: workerSource,\n name: workerName,\n onMessage: this.onMessage,\n maxConcurrency: this.maxConcurrency,\n onDebug: this.onDebug\n });\n this.workerPools.set(workerName, workerPool);\n }\n return workerPool;\n }\n}\n","/* global __VERSION__ */ // __VERSION__ is injected by babel-plugin-version-inline\nimport {toArrayBuffer} from '../../javascript-utils/binary-utils';\nimport WorkerFarm from '../../worker-utils/worker-farm';\nimport {getTransferList} from '../../worker-utils/get-transfer-list';\nimport {parse} from '../parse';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport function canParseWithWorker(loader, data, options, context) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n const loaderOptions = options && options[loader.id];\n if (\n (options.worker === 'local' && loaderOptions && loaderOptions.localWorkerUrl) ||\n (options.worker && loaderOptions && loaderOptions.workerUrl)\n ) {\n return loader.useWorker ? loader.useWorker(options) : true;\n }\n return false;\n}\n\n/**\n * this function expects that the worker function sends certain messages,\n * this can be automated if the worker is wrapper by a call to createWorker in @loaders.gl/loader-utils.\n */\nexport default function parseWithWorker(loader, data, options, context) {\n const {worker} = options || {};\n const loaderOptions = (options && options[loader.id]) || {};\n const workerUrl = worker === 'local' ? loaderOptions.localWorkerUrl : loaderOptions.workerUrl;\n\n // Mark as URL\n const workerSource = `url(${workerUrl})`;\n const workerName = loader.name;\n\n const workerFarm = getWorkerFarm(options);\n\n // options.log object contains functions which cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n\n const warning = loader.version !== VERSION ? `(core version ${VERSION})` : '';\n\n return workerFarm.process(workerSource, `loaders.gl@${loader.version}${warning}:${workerName}`, {\n arraybuffer: toArrayBuffer(data),\n options,\n source: `loaders.gl@${VERSION}`, // Lets worker ignore unrelated messages\n type: 'parse' // For future extension\n });\n}\n\nlet _workerFarm = null;\n\n// Create a single instance of a worker farm\nfunction getWorkerFarm(options = {}) {\n const props = {};\n if (options.maxConcurrency) {\n props.maxConcurrency = options.maxConcurrency;\n }\n if (options.onDebug) {\n props.onDebug = options.onDebug;\n }\n\n if (!_workerFarm) {\n _workerFarm = new WorkerFarm({onMessage: onWorkerMessage});\n }\n _workerFarm.setProps(props);\n\n return _workerFarm;\n}\n\nasync function onWorkerMessage({worker, data, resolve, reject}) {\n switch (data.type) {\n case 'done':\n resolve(data.result);\n break;\n\n case 'parse':\n try {\n const result = await parse(data.arraybuffer, data.options, data.url);\n worker.postMessage({type: 'parse-done', id: data.id, result}, getTransferList(result));\n } catch (error) {\n worker.postMessage({type: 'parse-error', id: data.id, message: error.message});\n }\n break;\n\n case 'error':\n reject(data.message);\n break;\n\n default:\n // TODO - is this not an error case? Log a warning?\n }\n}\n","import {getRegisteredLoaders} from './register-loaders';\nimport {normalizeLoader} from './loader-utils/normalize-loader';\nimport {isFetchResponse} from '../javascript-utils/is-type';\n\nconst EXT_PATTERN = /\\.([^.]+)$/;\nconst DATA_URL_PATTERN = /^data:(.*?)(;|,)/;\n\n// Find a loader that matches file extension and/or initial file content\n// Search the loaders array argument for a loader that matches url extension or initial data\n// Returns: a normalized loader\n\n// TODO - Need a variant that peeks at streams for parseInBatches\n// TODO - Detect multiple matching loaders? Use heuristics to grade matches?\n// TODO - Allow apps to pass context to disambiguate between multiple matches (e.g. multiple .json formats)?\n\n// eslint-disable-next-line complexity\nexport function selectLoader(loaders, url = '', data = null, {nothrow = false} = {}) {\n url = url || '';\n\n // if only a single loader was provided (not as array), force its use\n // TODO - Should this behaviour be kept and documented?\n if (loaders && !Array.isArray(loaders)) {\n const loader = loaders;\n normalizeLoader(loader);\n return loader;\n }\n\n // If no loaders provided, get the registered loaders\n loaders = [...(loaders || []), ...getRegisteredLoaders()];\n normalizeLoaders(loaders);\n\n url = url.replace(/\\?.*/, '');\n let loader = findLoaderByUrl(loaders, url);\n loader = loader || findLoaderByContentType(loaders, data);\n loader = loader || findLoaderByExamingInitialData(loaders, data);\n\n // no loader available\n if (!loader) {\n if (nothrow) {\n return null;\n }\n let message = 'No valid loader found';\n if (data) {\n message += ` for data starting with \"${getFirstCharacters(data)}\"`;\n }\n if (url) {\n message += ` for ${url}`;\n }\n throw new Error(message);\n }\n\n return loader;\n}\n\nfunction normalizeLoaders(loaders) {\n for (const loader of loaders) {\n normalizeLoader(loader);\n }\n}\n\n// TODO - Would be nice to support http://example.com/file.glb?parameter=1\n// E.g: x = new URL('http://example.com/file.glb?load=1'; x.pathname\nfunction findLoaderByUrl(loaders, url) {\n // Check for data url\n let match = url.match(DATA_URL_PATTERN);\n const mimeType = match && match[1];\n if (mimeType) {\n return findLoaderByMimeType(loaders, mimeType);\n }\n // Get extension\n match = url.match(EXT_PATTERN);\n const extension = match && match[1];\n return extension && findLoaderByExtension(loaders, extension);\n}\n\nfunction findLoaderByMimeType(loaders, mimeType) {\n for (const loader of loaders) {\n if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {\n return loader;\n }\n }\n return null;\n}\n\nfunction findLoaderByExtension(loaders, extension) {\n extension = extension.toLowerCase();\n\n for (const loader of loaders) {\n for (const loaderExtension of loader.extensions) {\n if (loaderExtension.toLowerCase() === extension) {\n return loader;\n }\n }\n }\n return null;\n}\n\n// data should be a Response object\nfunction findLoaderByContentType(loaders, data) {\n if (!data || !isFetchResponse(data) || !data.headers) {\n return null;\n }\n\n const contentType = data.headers.get('content-type');\n return findLoaderByMimeType(loaders, contentType);\n}\n\nfunction findLoaderByExamingInitialData(loaders, data) {\n if (!data) {\n return null;\n }\n\n for (const loader of loaders) {\n if (typeof data === 'string') {\n if (testText(data, loader)) {\n return loader;\n }\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n if (testBinary(data.buffer, data.byteOffset, loader)) {\n return loader;\n }\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n if (testBinary(data, byteOffset, loader)) {\n return loader;\n }\n }\n // TODO Handle streaming case (requires creating a new AsyncIterator)\n }\n return null;\n}\n\nfunction testText(data, loader) {\n return loader.testText && loader.testText(data);\n}\n\nfunction testBinary(data, byteOffset, loader) {\n const type = Array.isArray(loader.test) ? 'array' : typeof loader.test;\n switch (type) {\n case 'function':\n return loader.test(data, loader);\n\n case 'string':\n case 'array':\n // Magic bytes check: If `loader.test` is a string or array of strings,\n // check if binary data starts with one of those strings\n const tests = Array.isArray(loader.test) ? loader.test : [loader.test];\n return tests.some(test => {\n const magic = getMagicString(data, byteOffset, test.length);\n return test === magic;\n });\n\n default:\n return false;\n }\n}\n\nfunction getFirstCharacters(data, length = 5) {\n if (typeof data === 'string') {\n return data.slice(0, length);\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n return getMagicString(data.buffer, data.byteOffset, length);\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n return getMagicString(data, byteOffset, length);\n }\n return '';\n}\n\nfunction getMagicString(arrayBuffer, byteOffset, length) {\n if (arrayBuffer.byteLength <= byteOffset + length) {\n return '';\n }\n const dataView = new DataView(arrayBuffer);\n let magic = '';\n for (let i = 0; i < length; i++) {\n magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n }\n return magic;\n}\n","import {assert, validateLoaderVersion} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from './loader-utils/normalize-loader';\nimport {mergeOptions} from './loader-utils/merge-options';\nimport {getUrlFromData} from './loader-utils/get-data';\nimport {getArrayBufferOrStringFromData} from './loader-utils/get-data';\nimport {getLoaders, getLoaderContext} from './loader-utils/get-loader-context';\nimport parseWithWorker, {canParseWithWorker} from './loader-utils/parse-with-worker';\nimport {selectLoader} from './select-loader';\n\nexport async function parse(data, loaders, options, context) {\n // Signature: parse(data, options, context | url)\n // Uses registered loaders\n if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = options;\n options = loaders;\n loaders = null;\n }\n\n // DEPRECATED - backwards compatibility, last param can be URL...\n let url = '';\n if (typeof context === 'string') {\n url = context;\n context = null;\n }\n\n options = options || {};\n\n // Extract a url for auto detection\n const autoUrl = getUrlFromData(data, url);\n\n // Chooses a loader (and normalizes it)\n // Also use any loaders in the context, new loaders take priority\n const candidateLoaders = getLoaders(loaders, context);\n const loader = selectLoader(candidateLoaders, autoUrl, data);\n // Note: if nothrow option was set, it is possible that no loader was found, if so just return null\n if (!loader) {\n return null;\n }\n\n // Normalize options\n options = mergeOptions(loader, options, autoUrl);\n\n // Get a context (if already present, will be unchanged)\n context = getLoaderContext({url: autoUrl, parse, loaders: candidateLoaders}, options, context);\n\n return await parseWithLoader(loader, data, options, context);\n}\n\n// TODO: support progress and abort\n// TODO - should accept loader.parseAsyncIterator and concatenate.\nasync function parseWithLoader(loader, data, options, context) {\n validateLoaderVersion(loader);\n\n data = await getArrayBufferOrStringFromData(data, loader);\n\n // First check for synchronous text parser, wrap results in promises\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n\n // If we have a workerUrl and the loader can parse the given options efficiently in a worker\n if (canParseWithWorker(loader, data, options, context)) {\n return await parseWithWorker(loader, data, options, context);\n }\n\n // Check for asynchronous parser\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n\n // This should not happen, all sync loaders should also offer `parse` function\n assert(!loader.parseSync);\n\n // TBD - If asynchronous parser not available, return null\n return assert(false);\n}\n","import {isFileReadable} from '../javascript-utils/is-type';\nimport {fetchFile} from './fetch/fetch-file';\nimport {isLoaderObject} from './loader-utils/normalize-loader';\n\nimport {parse} from './parse';\n\n// Note: Load does duplicate a lot of parse.\n// it can also call fetchFile on string urls, which `parse` won't do.\nexport async function load(url, loaders, options) {\n // Signature: load(url, options)\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n options = loaders;\n loaders = null;\n }\n\n // at this point, `url` could be already loaded binary data\n let data = url;\n\n // url is a string, fetch the url\n if (typeof url === 'string') {\n data = await fetchFile(url, options);\n }\n\n // URL is Blob or File, fetchFile handles it (alt: we could generate ObjectURL here)\n if (isFileReadable(url)) {\n // The fetch response object will contain blob.name\n data = await fetchFile(url, options);\n url = null;\n }\n\n // Data is loaded (at least we have a `Response` object) so time to hand over to `parse`\n return await parse(data, loaders, options, url);\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable react/no-direct-mutation-state */\nimport {COORDINATE_SYSTEM} from './constants';\nimport AttributeManager from './attribute/attribute-manager';\nimport UniformTransitionManager from './uniform-transition-manager';\nimport {diffProps, validateProps} from '../lifecycle/props';\nimport {count} from '../utils/count';\nimport log from '../utils/log';\nimport debug from '../debug';\nimport GL from '@luma.gl/constants';\nimport {withParameters, setParameters} from '@luma.gl/core';\nimport assert from '../utils/assert';\nimport {mergeShaders} from '../utils/shader';\nimport {projectPosition, getWorldPosition} from '../shaderlib/project/project-functions';\nimport typedArrayManager from '../utils/typed-array-manager';\n\nimport Component from '../lifecycle/component';\nimport LayerState from './layer-state';\n\nimport {worldToPixels} from '@math.gl/web-mercator';\n\nimport {load} from '@loaders.gl/core';\n\nconst TRACE_CHANGE_FLAG = 'layer.changeFlag';\nconst TRACE_INITIALIZE = 'layer.initialize';\nconst TRACE_UPDATE = 'layer.update';\nconst TRACE_FINALIZE = 'layer.finalize';\nconst TRACE_MATCHED = 'layer.matched';\n\nconst EMPTY_ARRAY = Object.freeze([]);\n\nlet pickingColorCache = new Uint8ClampedArray(0);\n\nconst defaultProps = {\n // data: Special handling for null, see below\n data: {type: 'data', value: EMPTY_ARRAY, async: true},\n dataComparator: null,\n _dataDiff: {type: 'function', value: data => data && data.__diff, compare: false, optional: true},\n dataTransform: {type: 'function', value: null, compare: false, optional: true},\n onDataLoad: {type: 'function', value: null, compare: false, optional: true},\n fetch: {\n type: 'function',\n value: (url, {layer}) => load(url, layer.getLoadOptions()),\n compare: false\n },\n updateTriggers: {}, // Update triggers: a core change detection mechanism in deck.gl\n\n visible: true,\n pickable: false,\n opacity: {type: 'number', min: 0, max: 1, value: 1},\n\n onHover: {type: 'function', value: null, compare: false, optional: true},\n onClick: {type: 'function', value: null, compare: false, optional: true},\n onDragStart: {type: 'function', value: null, compare: false, optional: true},\n onDrag: {type: 'function', value: null, compare: false, optional: true},\n onDragEnd: {type: 'function', value: null, compare: false, optional: true},\n\n coordinateSystem: COORDINATE_SYSTEM.DEFAULT,\n coordinateOrigin: {type: 'array', value: [0, 0, 0], compare: true},\n modelMatrix: {type: 'array', value: null, compare: true, optional: true},\n wrapLongitude: false,\n positionFormat: 'XYZ',\n colorFormat: 'RGBA',\n\n parameters: {},\n uniforms: {},\n extensions: [],\n\n // Offset depth based on layer index to avoid z-fighting.\n // Negative values pull layer towards the camera\n // https://www.opengl.org/archives/resources/faq/technical/polygonoffset.htm\n getPolygonOffset: {\n type: 'function',\n value: ({layerIndex}) => [0, -layerIndex * 100],\n compare: false\n },\n\n // Selection/Highlighting\n highlightedObjectIndex: null,\n autoHighlight: false,\n highlightColor: {type: 'color', value: [0, 0, 128, 128]}\n};\n\nexport default class Layer extends Component {\n toString() {\n const className = this.constructor.layerName || this.constructor.name;\n return `${className}({id: '${this.props.id}'})`;\n }\n\n // Public API\n\n // Updates selected state members and marks the object for redraw\n setState(updateObject) {\n this.setChangeFlags({stateChanged: true});\n Object.assign(this.state, updateObject);\n this.setNeedsRedraw();\n }\n\n // Sets the redraw flag for this layer, will trigger a redraw next animation frame\n setNeedsRedraw(redraw = true) {\n if (this.internalState) {\n this.internalState.needsRedraw = redraw;\n }\n }\n\n // This layer needs a deep update\n setNeedsUpdate() {\n this.context.layerManager.setNeedsUpdate(String(this));\n this.internalState.needsUpdate = true;\n }\n\n // Checks state of attributes and model\n getNeedsRedraw(opts = {clearRedrawFlags: false}) {\n return this._getNeedsRedraw(opts);\n }\n\n // Checks if layer attributes needs updating\n needsUpdate() {\n // Call subclass lifecycle method\n return (\n this.internalState.needsUpdate ||\n this.hasUniformTransition() ||\n this.shouldUpdateState(this._getUpdateParams())\n );\n // End lifecycle method\n }\n\n hasUniformTransition() {\n return this.internalState.uniformTransitions.active;\n }\n\n // Returns true if the layer is pickable and visible.\n isPickable() {\n return this.props.pickable && this.props.visible;\n }\n\n // Return an array of models used by this layer, can be overriden by layer subclass\n getModels() {\n return this.state && (this.state.models || (this.state.model ? [this.state.model] : []));\n }\n\n getAttributeManager() {\n return this.internalState && this.internalState.attributeManager;\n }\n\n // Returns the most recent layer that matched to this state\n // (When reacting to an async event, this layer may no longer be the latest)\n getCurrentLayer() {\n return this.internalState && this.internalState.layer;\n }\n\n // Returns the default parse options for async props\n getLoadOptions() {\n return this.props.loadOptions;\n }\n\n // PROJECTION METHODS\n\n // Projects a point with current map state (lat, lon, zoom, pitch, bearing)\n // From the current layer's coordinate system to screen\n project(xyz) {\n const {viewport} = this.context;\n const worldPosition = getWorldPosition(xyz, {\n viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem\n });\n const [x, y, z] = worldToPixels(worldPosition, viewport.pixelProjectionMatrix);\n return xyz.length === 2 ? [x, y] : [x, y, z];\n }\n\n // Note: this does not reverse `project`.\n // Always unprojects to the viewport's coordinate system\n unproject(xy) {\n const {viewport} = this.context;\n return viewport.unproject(xy);\n }\n\n projectPosition(xyz) {\n return projectPosition(xyz, {\n viewport: this.context.viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem\n });\n }\n\n use64bitPositions() {\n const {coordinateSystem} = this.props;\n return (\n coordinateSystem === COORDINATE_SYSTEM.DEFAULT ||\n coordinateSystem === COORDINATE_SYSTEM.LNGLAT ||\n coordinateSystem === COORDINATE_SYSTEM.CARTESIAN\n );\n }\n\n // Event handling\n onHover(info, pickingEvent) {\n if (this.props.onHover) {\n return this.props.onHover(info, pickingEvent);\n }\n return false;\n }\n\n onClick(info, pickingEvent) {\n if (this.props.onClick) {\n return this.props.onClick(info, pickingEvent);\n }\n return false;\n }\n\n // Returns the picking color that doesn't match any subfeature\n // Use if some graphics do not belong to any pickable subfeature\n // @return {Array} - a black color\n nullPickingColor() {\n return [0, 0, 0];\n }\n\n // Returns the picking color that doesn't match any subfeature\n // Use if some graphics do not belong to any pickable subfeature\n encodePickingColor(i, target = []) {\n target[0] = (i + 1) & 255;\n target[1] = ((i + 1) >> 8) & 255;\n target[2] = (((i + 1) >> 8) >> 8) & 255;\n return target;\n }\n\n // Returns the index corresponding to a picking color that doesn't match any subfeature\n // @param {Uint8Array} color - color array to be decoded\n // @return {Array} - the decoded picking color\n decodePickingColor(color) {\n assert(color instanceof Uint8Array);\n const [i1, i2, i3] = color;\n // 1 was added to seperate from no selection\n const index = i1 + i2 * 256 + i3 * 65536 - 1;\n return index;\n }\n\n // //////////////////////////////////////////////////\n // LIFECYCLE METHODS, overridden by the layer subclasses\n\n // Called once to set up the initial state\n // App can create WebGL resources\n initializeState() {\n throw new Error(`Layer ${this} has not defined initializeState`);\n }\n\n getShaders(shaders) {\n for (const extension of this.props.extensions) {\n shaders = mergeShaders(shaders, extension.getShaders.call(this, extension));\n }\n return shaders;\n }\n\n // Let's layer control if updateState should be called\n shouldUpdateState({oldProps, props, context, changeFlags}) {\n return changeFlags.propsOrDataChanged;\n }\n\n // Default implementation, all attributes will be invalidated and updated\n // when data changes\n /* eslint-disable-next-line complexity */\n updateState({oldProps, props, context, changeFlags}) {\n const attributeManager = this.getAttributeManager();\n if (changeFlags.dataChanged && attributeManager) {\n const {dataChanged} = changeFlags;\n if (Array.isArray(dataChanged)) {\n // is partial update\n for (const dataRange of dataChanged) {\n attributeManager.invalidateAll(dataRange);\n }\n } else {\n attributeManager.invalidateAll();\n }\n }\n }\n\n // Called once when layer is no longer matched and state will be discarded\n // App can destroy WebGL resources here\n finalizeState() {\n for (const model of this.getModels()) {\n model.delete();\n }\n const attributeManager = this.getAttributeManager();\n if (attributeManager) {\n attributeManager.finalize();\n }\n this.internalState.uniformTransitions.clear();\n }\n\n // If state has a model, draw it with supplied uniforms\n draw(opts) {\n for (const model of this.getModels()) {\n model.draw(opts);\n }\n }\n\n // called to populate the info object that is passed to the event handler\n // @return null to cancel event\n getPickingInfo({info, mode}) {\n const {index} = info;\n\n if (index >= 0) {\n // If props.data is an indexable array, get the object\n if (Array.isArray(this.props.data)) {\n info.object = this.props.data[index];\n }\n }\n\n return info;\n }\n\n // END LIFECYCLE METHODS\n // //////////////////////////////////////////////////\n\n // INTERNAL METHODS\n\n // Default implementation of attribute invalidation, can be redefined\n invalidateAttribute(name = 'all', diffReason = '') {\n const attributeManager = this.getAttributeManager();\n if (!attributeManager) {\n return;\n }\n\n if (name === 'all') {\n attributeManager.invalidateAll();\n } else {\n attributeManager.invalidate(name);\n }\n }\n\n updateAttributes(changedAttributes) {\n for (const model of this.getModels()) {\n this._setModelAttributes(model, changedAttributes);\n }\n }\n\n // Calls attribute manager to update any WebGL attributes\n _updateAttributes(props) {\n const attributeManager = this.getAttributeManager();\n if (!attributeManager) {\n return;\n }\n\n // Figure out data length\n const numInstances = this.getNumInstances(props);\n const startIndices = this.getStartIndices(props);\n\n attributeManager.update({\n data: props.data,\n numInstances,\n startIndices,\n props,\n transitions: props.transitions,\n buffers: props.data.attributes,\n context: this,\n // Don't worry about non-attribute props\n ignoreUnknownAttributes: true\n });\n\n const changedAttributes = attributeManager.getChangedAttributes({clearChangedFlags: true});\n this.updateAttributes(changedAttributes);\n }\n\n // Update attribute transitions. This is called in drawLayer, no model updates required.\n _updateAttributeTransition() {\n const attributeManager = this.getAttributeManager();\n if (attributeManager) {\n attributeManager.updateTransition();\n }\n }\n\n // Update uniform (prop) transitions. This is called in updateState, may result in model updates.\n _updateUniformTransition() {\n const {uniformTransitions} = this.internalState;\n if (uniformTransitions.active) {\n // clone props\n const propsInTransition = uniformTransitions.update();\n const props = Object.create(this.props);\n for (const key in propsInTransition) {\n Object.defineProperty(props, key, {value: propsInTransition[key]});\n }\n return props;\n }\n return this.props;\n }\n\n calculateInstancePickingColors(attribute, {numInstances}) {\n // calculateInstancePickingColors always generates the same sequence.\n // pickingColorCache saves the largest generated sequence for reuse\n const cacheSize = pickingColorCache.length / 3;\n\n if (cacheSize < numInstances) {\n pickingColorCache = typedArrayManager.allocate(pickingColorCache, numInstances, {\n size: 3,\n copy: true\n });\n // If the attribute is larger than the cache, resize the cache and populate the missing chunk\n const newCacheSize = pickingColorCache.length / 3;\n const pickingColor = [];\n assert(newCacheSize < 16777215, 'index out of picking color range');\n\n for (let i = cacheSize; i < newCacheSize; i++) {\n this.encodePickingColor(i, pickingColor);\n pickingColorCache[i * 3 + 0] = pickingColor[0];\n pickingColorCache[i * 3 + 1] = pickingColor[1];\n pickingColorCache[i * 3 + 2] = pickingColor[2];\n }\n }\n\n attribute.value = pickingColorCache.subarray(0, numInstances * 3);\n }\n\n _setModelAttributes(model, changedAttributes) {\n const attributeManager = this.getAttributeManager();\n const excludeAttributes = model.userData.excludeAttributes || {};\n const shaderAttributes = attributeManager.getShaderAttributes(\n changedAttributes,\n excludeAttributes\n );\n\n model.setAttributes(shaderAttributes);\n }\n\n // Sets the specified instanced picking color to null picking color. Used for multi picking.\n clearPickingColor(color) {\n const {pickingColors, instancePickingColors} = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n\n const i = this.decodePickingColor(color);\n const start = colors.getVertexOffset(i);\n const end = colors.getVertexOffset(i + 1);\n\n // Fill the sub buffer with 0s\n colors.buffer.subData({\n data: new Uint8Array(end - start),\n offset: start // 1 byte per element\n });\n }\n\n restorePickingColors() {\n const {pickingColors, instancePickingColors} = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n colors.updateSubBuffer({startOffset: 0});\n }\n\n // Deduces numer of instances. Intention is to support:\n // - Explicit setting of numInstances\n // - Auto-deduction for ES6 containers that define a size member\n // - Auto-deduction for Classic Arrays via the built-in length attribute\n // - Auto-deduction via arrays\n getNumInstances(props) {\n props = props || this.props;\n\n // First Check if app has provided an explicit value\n if (props.numInstances !== undefined) {\n return props.numInstances;\n }\n\n // Second check if the layer has set its own value\n if (this.state && this.state.numInstances !== undefined) {\n return this.state.numInstances;\n }\n\n // Use container library to get a count for any ES6 container or object\n return count(props.data);\n }\n\n // Buffer layout describes how many attribute values are packed for each data object\n // The default (null) is one value each object.\n // Some data formats (e.g. paths, polygons) have various length. Their buffer layout\n // is in the form of [L0, L1, L2, ...]\n getStartIndices(props) {\n props = props || this.props;\n\n // First Check if startIndices is provided as an explicit value\n if (props.startIndices !== undefined) {\n return props.startIndices;\n }\n\n // Second check if the layer has set its own value\n if (this.state && this.state.startIndices) {\n return this.state.startIndices;\n }\n\n return null;\n }\n\n // LAYER MANAGER API\n // Should only be called by the deck.gl LayerManager class\n\n // Called by layer manager when a new layer is found\n /* eslint-disable max-statements */\n _initialize() {\n debug(TRACE_INITIALIZE, this);\n\n this._initState();\n\n // Call subclass lifecycle methods\n this.initializeState(this.context);\n // Initialize extensions\n for (const extension of this.props.extensions) {\n extension.initializeState.call(this, this.context, extension);\n }\n // End subclass lifecycle methods\n\n // initializeState callback tends to clear state\n this.setChangeFlags({\n dataChanged: true,\n propsChanged: true,\n viewportChanged: true,\n extensionsChanged: true\n });\n\n this._updateState();\n }\n\n // Called by layer manager\n // if this layer is new (not matched with an existing layer) oldProps will be empty object\n _update() {\n // Call subclass lifecycle method\n const stateNeedsUpdate = this.needsUpdate();\n // End lifecycle method\n debug(TRACE_UPDATE, this, stateNeedsUpdate);\n\n if (stateNeedsUpdate) {\n this._updateState();\n }\n }\n /* eslint-enable max-statements */\n\n // Common code for _initialize and _update\n _updateState() {\n const currentProps = this.props;\n const propsInTransition = this._updateUniformTransition();\n this.internalState.propsInTransition = propsInTransition;\n // Overwrite this.props during update to use in-transition prop values\n this.props = propsInTransition;\n\n const updateParams = this._getUpdateParams();\n\n // Safely call subclass lifecycle methods\n if (this.context.gl) {\n this.updateState(updateParams);\n } else {\n try {\n this.updateState(updateParams);\n } catch (error) {\n // ignore error if gl context is missing\n }\n }\n // Execute extension updates\n for (const extension of this.props.extensions) {\n extension.updateState.call(this, updateParams, extension);\n }\n this._updateModules(updateParams);\n // End subclass lifecycle methods\n\n if (this.isComposite) {\n // Render or update previously rendered sublayers\n this._renderLayers(updateParams);\n } else {\n this.setNeedsRedraw();\n // Add any subclass attributes\n this._updateAttributes(this.props);\n\n // Note: Automatic instance count update only works for single layers\n if (this.state.model) {\n this.state.model.setInstanceCount(this.getNumInstances());\n }\n }\n\n this.props = currentProps;\n this.clearChangeFlags();\n this.internalState.needsUpdate = false;\n this.internalState.resetOldProps();\n }\n\n // Called by manager when layer is about to be disposed\n // Note: not guaranteed to be called on application shutdown\n _finalize() {\n debug(TRACE_FINALIZE, this);\n assert(this.internalState && this.state);\n\n // Call subclass lifecycle method\n this.finalizeState(this.context);\n // Finalize extensions\n for (const extension of this.props.extensions) {\n extension.finalizeState.call(this, extension);\n }\n }\n\n // Calculates uniforms\n drawLayer({moduleParameters = null, uniforms = {}, parameters = {}}) {\n this._updateAttributeTransition();\n\n const currentProps = this.props;\n // Overwrite this.props during redraw to use in-transition prop values\n this.props = this.internalState.propsInTransition;\n\n const {opacity} = this.props;\n // apply gamma to opacity to make it visually \"linear\"\n uniforms.opacity = Math.pow(opacity, 1 / 2.2);\n\n // TODO/ib - hack move to luma Model.draw\n if (moduleParameters) {\n this.setModuleParameters(moduleParameters);\n }\n\n // Apply polygon offset to avoid z-fighting\n // TODO - move to draw-layers\n const {getPolygonOffset} = this.props;\n const offsets = (getPolygonOffset && getPolygonOffset(uniforms)) || [0, 0];\n\n setParameters(this.context.gl, {polygonOffset: offsets});\n\n // Call subclass lifecycle method\n withParameters(this.context.gl, parameters, () => {\n this.draw({moduleParameters, uniforms, parameters, context: this.context});\n });\n\n // End lifecycle method\n\n this.props = currentProps;\n }\n\n // Helper methods\n getChangeFlags() {\n return this.internalState.changeFlags;\n }\n\n // Dirty some change flags, will be handled by updateLayer\n /* eslint-disable complexity */\n setChangeFlags(flags) {\n const {changeFlags} = this.internalState;\n\n for (const key in changeFlags) {\n if (flags[key] && !changeFlags[key]) {\n changeFlags[key] = flags[key];\n debug(TRACE_CHANGE_FLAG, this, key, flags);\n }\n }\n\n // Update composite flags\n const propsOrDataChanged =\n changeFlags.dataChanged ||\n changeFlags.updateTriggersChanged ||\n changeFlags.propsChanged ||\n changeFlags.extensionsChanged;\n changeFlags.propsOrDataChanged = propsOrDataChanged;\n changeFlags.somethingChanged =\n propsOrDataChanged || flags.viewportChanged || flags.stateChanged;\n }\n /* eslint-enable complexity */\n\n // Clear all changeFlags, typically after an update\n clearChangeFlags() {\n this.internalState.changeFlags = {\n // Primary changeFlags, can be strings stating reason for change\n dataChanged: false,\n propsChanged: false,\n updateTriggersChanged: false,\n viewportChanged: false,\n stateChanged: false,\n extensionsChanged: false,\n\n // Derived changeFlags\n propsOrDataChanged: false,\n somethingChanged: false\n };\n }\n\n // Compares the layers props with old props from a matched older layer\n // and extracts change flags that describe what has change so that state\n // can be update correctly with minimal effort\n diffProps(newProps, oldProps) {\n const changeFlags = diffProps(newProps, oldProps);\n\n // iterate over changedTriggers\n if (changeFlags.updateTriggersChanged) {\n for (const key in changeFlags.updateTriggersChanged) {\n if (changeFlags.updateTriggersChanged[key]) {\n this.invalidateAttribute(key);\n }\n }\n }\n\n // trigger uniform transitions\n if (changeFlags.transitionsChanged) {\n for (const key in changeFlags.transitionsChanged) {\n // prop changed and transition is enabled\n this.internalState.uniformTransitions.add(\n key,\n oldProps[key],\n newProps[key],\n newProps.transitions[key]\n );\n }\n }\n\n return this.setChangeFlags(changeFlags);\n }\n\n // Called by layer manager to validate props (in development)\n validateProps() {\n validateProps(this.props);\n }\n\n setModuleParameters(moduleParameters) {\n for (const model of this.getModels()) {\n model.updateModuleSettings(moduleParameters);\n }\n }\n\n // PRIVATE METHODS\n _updateModules({props, oldProps}) {\n // Picking module parameters\n const {autoHighlight, highlightedObjectIndex, highlightColor} = props;\n if (\n oldProps.autoHighlight !== autoHighlight ||\n oldProps.highlightedObjectIndex !== highlightedObjectIndex ||\n oldProps.highlightColor !== highlightColor\n ) {\n const parameters = {};\n if (!autoHighlight) {\n parameters.pickingSelectedColor = null;\n }\n // TODO - fix in luma?\n highlightColor[3] = highlightColor[3] || 255;\n parameters.pickingHighlightColor = highlightColor;\n\n // highlightedObjectIndex will overwrite any settings from auto highlighting.\n if (Number.isInteger(highlightedObjectIndex)) {\n parameters.pickingSelectedColor =\n highlightedObjectIndex >= 0 ? this.encodePickingColor(highlightedObjectIndex) : null;\n }\n\n this.setModuleParameters(parameters);\n }\n }\n\n _getUpdateParams() {\n return {\n props: this.props,\n oldProps: this.internalState.getOldProps(),\n context: this.context,\n changeFlags: this.internalState.changeFlags\n };\n }\n\n // Checks state of attributes and model\n _getNeedsRedraw(opts) {\n // this method may be called by the render loop as soon a the layer\n // has been created, so guard against uninitialized state\n if (!this.internalState) {\n return false;\n }\n\n let redraw = false;\n redraw = redraw || (this.internalState.needsRedraw && this.id);\n this.internalState.needsRedraw = this.internalState.needsRedraw && !opts.clearRedrawFlags;\n\n // TODO - is attribute manager needed? - Model should be enough.\n const attributeManager = this.getAttributeManager();\n const attributeManagerNeedsRedraw = attributeManager && attributeManager.getNeedsRedraw(opts);\n redraw = redraw || attributeManagerNeedsRedraw;\n\n return redraw;\n }\n\n // Create new attribute manager\n _getAttributeManager() {\n return new AttributeManager(this.context.gl, {\n id: this.props.id,\n stats: this.context.stats,\n timeline: this.context.timeline\n });\n }\n\n _initState() {\n assert(!this.internalState && !this.state);\n assert(isFinite(this.props.coordinateSystem), `${this.id}: invalid coordinateSystem`);\n\n const attributeManager = this._getAttributeManager();\n\n if (attributeManager) {\n // All instanced layers get instancePickingColors attribute by default\n // Their shaders can use it to render a picking scene\n // TODO - this slightly slows down non instanced layers\n attributeManager.addInstanced({\n instancePickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n update: this.calculateInstancePickingColors\n }\n });\n }\n\n this.internalState = new LayerState({\n attributeManager,\n layer: this\n });\n this.clearChangeFlags(); // populate this.internalState.changeFlags\n\n this.state = {};\n // for backwards compatibility with older layers\n // TODO - remove in next release\n /* eslint-disable accessor-pairs */\n Object.defineProperty(this.state, 'attributeManager', {\n get: () => {\n log.deprecated('layer.state.attributeManager', 'layer.getAttributeManager()');\n return attributeManager;\n }\n });\n /* eslint-enable accessor-pairs */\n\n this.internalState.layer = this;\n this.internalState.uniformTransitions = new UniformTransitionManager(this.context.timeline);\n this.internalState.onAsyncPropUpdated = this._onAsyncPropUpdated.bind(this);\n\n // Ensure any async props are updated\n this.internalState.setAsyncProps(this.props);\n }\n\n // Called by layer manager to transfer state from an old layer\n _transferState(oldLayer) {\n debug(TRACE_MATCHED, this, this === oldLayer);\n\n const {state, internalState} = oldLayer;\n assert(state && internalState);\n\n if (this === oldLayer) {\n return;\n }\n\n // Move internalState\n this.internalState = internalState;\n this.internalState.layer = this;\n\n // Move state\n this.state = state;\n // We keep the state ref on old layers to support async actions\n // oldLayer.state = null;\n\n // Ensure any async props are updated\n this.internalState.setAsyncProps(this.props);\n\n this.diffProps(this.props, this.internalState.getOldProps());\n }\n\n _onAsyncPropUpdated() {\n this.diffProps(this.props, this.internalState.getOldProps());\n this.setNeedsUpdate();\n }\n}\n\nLayer.layerName = 'Layer';\nLayer.defaultProps = defaultProps;\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/**\n * This file contains overrides the default\n * hammer.js functions to add our own utility\n */\n\n/* Hammer.js constants */\nconst INPUT_START = 1;\nconst INPUT_MOVE = 2;\nconst INPUT_END = 4;\nconst MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\n/**\n * Helper function that returns true if any element in an array meets given criteria.\n * Because older browsers do not support `Array.prototype.some`\n * @params array {Array}\n * @params predict {Function}\n */\nfunction some(array, predict) {\n for (let i = 0; i < array.length; i++) {\n if (predict(array[i])) {\n return true;\n }\n }\n return false;\n}\n\n/* eslint-disable no-invalid-this */\nexport function enhancePointerEventInput(PointerEventInput) {\n const oldHandler = PointerEventInput.prototype.handler;\n\n // overrides PointerEventInput.handler to accept right mouse button\n PointerEventInput.prototype.handler = function handler(ev) {\n const store = this.store;\n\n // Allow non-left mouse buttons through\n if (ev.button > 0) {\n if (!some(store, e => e.pointerId === ev.pointerId)) {\n store.push(ev);\n }\n }\n\n oldHandler.call(this, ev);\n };\n}\n\n// overrides MouseInput.handler to accept right mouse button\nexport function enhanceMouseInput(MouseInput) {\n MouseInput.prototype.handler = function handler(ev) {\n let eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the mouse button down\n if (eventType & INPUT_START && ev.button >= 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which === 0) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: 'mouse',\n srcEvent: ev\n });\n };\n}\n","import hammerjs from 'hammerjs';\nimport {enhancePointerEventInput, enhanceMouseInput} from './hammer-overrides';\n\nenhancePointerEventInput(hammerjs.PointerEventInput);\nenhanceMouseInput(hammerjs.MouseInput);\n\nexport const Manager = hammerjs.Manager;\n\nexport default hammerjs;\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Hammer from './utils/hammer';\n\n// This module contains constants that must be conditionally required\n// due to `window`/`document` references downstream.\nexport const RECOGNIZERS = Hammer\n ? [\n [Hammer.Rotate, {enable: false}],\n [Hammer.Pinch, {enable: false}],\n [Hammer.Swipe, {enable: false}],\n [Hammer.Pan, {threshold: 0, enable: false}],\n [Hammer.Press, {enable: false}],\n [Hammer.Tap, {event: 'doubletap', taps: 2, enable: false}],\n // TODO - rename to 'tap' and 'singletap' in the next major release\n [Hammer.Tap, {event: 'anytap', enable: false}],\n [Hammer.Tap, {enable: false}]\n ]\n : null;\n\n// Recognize the following gestures even if a given recognizer succeeds\nexport const RECOGNIZER_COMPATIBLE_MAP = {\n rotate: ['pinch'],\n pan: ['press', 'doubletap', 'anytap', 'tap'],\n doubletap: ['anytap'],\n anytap: ['tap']\n};\n\n// Recognize the folling gestures only if a given recognizer fails\nexport const RECOGNIZER_FALLBACK_MAP = {\n doubletap: ['tap']\n};\n\n/**\n * Only one set of basic input events will be fired by Hammer.js:\n * either pointer, touch, or mouse, depending on system support.\n * In order to enable an application to be agnostic of system support,\n * alias basic input events into \"classes\" of events: down, move, and up.\n * See `_onBasicInput()` for usage of these aliases.\n */\nexport const BASIC_EVENT_ALIASES = {\n pointerdown: 'pointerdown',\n pointermove: 'pointermove',\n pointerup: 'pointerup',\n touchstart: 'pointerdown',\n touchmove: 'pointermove',\n touchend: 'pointerup',\n mousedown: 'pointerdown',\n mousemove: 'pointermove',\n mouseup: 'pointerup'\n};\n\nexport const INPUT_EVENT_TYPES = {\n KEY_EVENTS: ['keydown', 'keyup'],\n MOUSE_EVENTS: ['mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout', 'mouseleave'],\n WHEEL_EVENTS: [\n // Chrome, Safari\n 'wheel',\n // IE\n 'mousewheel',\n // legacy Firefox\n 'DOMMouseScroll'\n ]\n};\n\n/**\n * \"Gestural\" events are those that have semantic meaning beyond the basic input event,\n * e.g. a click or tap is a sequence of `down` and `up` events with no `move` event in between.\n * Hammer.js handles these with its Recognizer system;\n * this block maps event names to the Recognizers required to detect the events.\n */\nexport const EVENT_RECOGNIZER_MAP = {\n tap: 'tap',\n anytap: 'anytap',\n doubletap: 'doubletap',\n press: 'press',\n pinch: 'pinch',\n pinchin: 'pinch',\n pinchout: 'pinch',\n pinchstart: 'pinch',\n pinchmove: 'pinch',\n pinchend: 'pinch',\n pinchcancel: 'pinch',\n rotate: 'rotate',\n rotatestart: 'rotate',\n rotatemove: 'rotate',\n rotateend: 'rotate',\n rotatecancel: 'rotate',\n pan: 'pan',\n panstart: 'pan',\n panmove: 'pan',\n panup: 'pan',\n pandown: 'pan',\n panleft: 'pan',\n panright: 'pan',\n panend: 'pan',\n pancancel: 'pan',\n swipe: 'swipe',\n swipeleft: 'swipe',\n swiperight: 'swipe',\n swipeup: 'swipe',\n swipedown: 'swipe'\n};\n\n/**\n * Map gestural events typically provided by browsers\n * that are not reported in 'hammer.input' events\n * to corresponding Hammer.js gestures.\n */\nexport const GESTURE_EVENT_ALIASES = {\n click: 'tap',\n anyclick: 'anytap',\n dblclick: 'doubletap',\n mousedown: 'pointerdown',\n mousemove: 'pointermove',\n mouseup: 'pointerup',\n mouseover: 'pointerover',\n mouseout: 'pointerout',\n mouseleave: 'pointerleave'\n};\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {INPUT_EVENT_TYPES} from '../constants';\nimport {window, userAgent, passiveSupported} from '../utils/globals';\n\nconst firefox = userAgent.indexOf('firefox') !== -1;\n\nconst {WHEEL_EVENTS} = INPUT_EVENT_TYPES;\nconst EVENT_TYPE = 'wheel';\n\n// Constants for normalizing input delta\nconst WHEEL_DELTA_MAGIC_SCALER = 4.000244140625;\nconst WHEEL_DELTA_PER_LINE = 40;\n// Slow down zoom if shift key is held for more precise zooming\nconst SHIFT_MULTIPLIER = 0.25;\n\nexport default class WheelInput {\n constructor(element, callback, options = {}) {\n this.element = element;\n this.callback = callback;\n\n this.options = Object.assign({enable: true}, options);\n\n this.events = WHEEL_EVENTS.concat(options.events || []);\n\n this.handleEvent = this.handleEvent.bind(this);\n this.events.forEach(event =>\n element.addEventListener(event, this.handleEvent, passiveSupported ? {passive: false} : false)\n );\n }\n\n destroy() {\n this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType, enabled) {\n if (eventType === EVENT_TYPE) {\n this.options.enable = enabled;\n }\n }\n\n /* eslint-disable complexity, max-statements */\n handleEvent(event) {\n if (!this.options.enable) {\n return;\n }\n\n let value = event.deltaY;\n if (window.WheelEvent) {\n // Firefox doubles the values on retina screens...\n if (firefox && event.deltaMode === window.WheelEvent.DOM_DELTA_PIXEL) {\n value /= window.devicePixelRatio;\n }\n if (event.deltaMode === window.WheelEvent.DOM_DELTA_LINE) {\n value *= WHEEL_DELTA_PER_LINE;\n }\n }\n\n const wheelPosition = {\n x: event.clientX,\n y: event.clientY\n };\n\n if (value !== 0 && value % WHEEL_DELTA_MAGIC_SCALER === 0) {\n // This one is definitely a mouse wheel event.\n // Normalize this value to match trackpad.\n value = Math.floor(value / WHEEL_DELTA_MAGIC_SCALER);\n }\n\n if (event.shiftKey && value) {\n value = value * SHIFT_MULTIPLIER;\n }\n\n this._onWheel(event, -value, wheelPosition);\n }\n\n _onWheel(srcEvent, delta, position) {\n this.callback({\n type: EVENT_TYPE,\n center: position,\n delta,\n srcEvent,\n pointerType: 'mouse',\n target: srcEvent.target\n });\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {INPUT_EVENT_TYPES} from '../constants';\n\nconst {MOUSE_EVENTS} = INPUT_EVENT_TYPES;\nconst MOVE_EVENT_TYPE = 'pointermove';\nconst OVER_EVENT_TYPE = 'pointerover';\nconst OUT_EVENT_TYPE = 'pointerout';\nconst LEAVE_EVENT_TYPE = 'pointerleave';\n\n/**\n * Hammer.js swallows 'move' events (for pointer/touch/mouse)\n * when the pointer is not down. This class sets up a handler\n * specifically for these events to work around this limitation.\n * Note that this could be extended to more intelligently handle\n * move events across input types, e.g. storing multiple simultaneous\n * pointer/touch events, calculating speed/direction, etc.\n */\nexport default class MoveInput {\n constructor(element, callback, options = {}) {\n this.element = element;\n this.callback = callback;\n this.pressed = false;\n\n this.options = Object.assign({enable: true}, options);\n this.enableMoveEvent = this.options.enable;\n this.enableLeaveEvent = this.options.enable;\n this.enableOutEvent = this.options.enable;\n this.enableOverEvent = this.options.enable;\n\n this.events = MOUSE_EVENTS.concat(options.events || []);\n\n this.handleEvent = this.handleEvent.bind(this);\n this.events.forEach(event => element.addEventListener(event, this.handleEvent));\n }\n\n destroy() {\n this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType, enabled) {\n if (eventType === MOVE_EVENT_TYPE) {\n this.enableMoveEvent = enabled;\n }\n if (eventType === OVER_EVENT_TYPE) {\n this.enableOverEvent = enabled;\n }\n if (eventType === OUT_EVENT_TYPE) {\n this.enableOutEvent = enabled;\n }\n if (eventType === LEAVE_EVENT_TYPE) {\n this.enableLeaveEvent = enabled;\n }\n }\n\n handleEvent(event) {\n this.handleOverEvent(event);\n this.handleOutEvent(event);\n this.handleLeaveEvent(event);\n this.handleMoveEvent(event);\n }\n\n handleOverEvent(event) {\n if (this.enableOverEvent) {\n if (event.type === 'mouseover') {\n this.callback({\n type: OVER_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n }\n }\n\n handleOutEvent(event) {\n if (this.enableOutEvent) {\n if (event.type === 'mouseout') {\n this.callback({\n type: OUT_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n }\n }\n\n handleLeaveEvent(event) {\n if (this.enableLeaveEvent) {\n if (event.type === 'mouseleave') {\n this.callback({\n type: LEAVE_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n }\n }\n\n handleMoveEvent(event) {\n if (this.enableMoveEvent) {\n switch (event.type) {\n case 'mousedown':\n if (event.button >= 0) {\n // Button is down\n this.pressed = true;\n }\n break;\n case 'mousemove':\n // Move events use `which` to track the button being pressed\n if (event.which === 0) {\n // Button is not down\n this.pressed = false;\n }\n if (!this.pressed) {\n // Drag events are emitted by hammer already\n // we just need to emit the move event on hover\n this.callback({\n type: MOVE_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n break;\n case 'mouseup':\n this.pressed = false;\n break;\n default:\n }\n }\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {INPUT_EVENT_TYPES} from '../constants';\n\nconst {KEY_EVENTS} = INPUT_EVENT_TYPES;\nconst DOWN_EVENT_TYPE = 'keydown';\nconst UP_EVENT_TYPE = 'keyup';\n\nexport default class KeyInput {\n constructor(element, callback, options = {}) {\n this.element = element;\n this.callback = callback;\n\n this.options = Object.assign({enable: true}, options);\n this.enableDownEvent = this.options.enable;\n this.enableUpEvent = this.options.enable;\n\n this.events = KEY_EVENTS.concat(options.events || []);\n\n this.handleEvent = this.handleEvent.bind(this);\n\n element.tabIndex = 1;\n element.style.outline = 'none';\n this.events.forEach(event => element.addEventListener(event, this.handleEvent));\n }\n\n destroy() {\n this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType, enabled) {\n if (eventType === DOWN_EVENT_TYPE) {\n this.enableDownEvent = enabled;\n }\n if (eventType === UP_EVENT_TYPE) {\n this.enableUpEvent = enabled;\n }\n }\n\n handleEvent(event) {\n // Ignore if focused on text input\n const targetElement = event.target || event.srcElement;\n if (\n (targetElement.tagName === 'INPUT' && targetElement.type === 'text') ||\n targetElement.tagName === 'TEXTAREA'\n ) {\n return;\n }\n\n if (this.enableDownEvent && event.type === 'keydown') {\n this.callback({\n type: DOWN_EVENT_TYPE,\n srcEvent: event,\n key: event.key,\n target: event.target\n });\n }\n\n if (this.enableUpEvent && event.type === 'keyup') {\n this.callback({\n type: UP_EVENT_TYPE,\n srcEvent: event,\n key: event.key,\n target: event.target\n });\n }\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nconst EVENT_TYPE = 'contextmenu';\n\nexport default class ContextmenuInput {\n constructor(element, callback, options = {}) {\n this.element = element;\n this.callback = callback;\n\n this.options = Object.assign({enable: true}, options);\n\n this.handleEvent = this.handleEvent.bind(this);\n element.addEventListener('contextmenu', this.handleEvent);\n }\n\n destroy() {\n this.element.removeEventListener('contextmenu', this.handleEvent);\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType, enabled) {\n if (eventType === EVENT_TYPE) {\n this.options.enable = enabled;\n }\n }\n\n handleEvent(event) {\n if (!this.options.enable) {\n return;\n }\n\n this.callback({\n type: EVENT_TYPE,\n center: {\n x: event.clientX,\n y: event.clientY\n },\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n}\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","/* Constants */\nconst DOWN_EVENT = 1;\nconst MOVE_EVENT = 2;\nconst UP_EVENT = 4;\nconst MOUSE_EVENTS = {\n pointerdown: DOWN_EVENT,\n pointermove: MOVE_EVENT,\n pointerup: UP_EVENT,\n mousedown: DOWN_EVENT,\n mousemove: MOVE_EVENT,\n mouseup: UP_EVENT\n};\n\n// MouseEvent.which https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\nconst MOUSE_EVENT_WHICH_LEFT = 1;\nconst MOUSE_EVENT_WHICH_MIDDLE = 2;\nconst MOUSE_EVENT_WHICH_RIGHT = 3;\n// MouseEvent.button https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\nconst MOUSE_EVENT_BUTTON_LEFT = 0;\nconst MOUSE_EVENT_BUTTON_MIDDLE = 1;\nconst MOUSE_EVENT_BUTTON_RIGHT = 2;\n// MouseEvent.buttons https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\nconst MOUSE_EVENT_BUTTONS_LEFT_MASK = 1;\nconst MOUSE_EVENT_BUTTONS_RIGHT_MASK = 2;\nconst MOUSE_EVENT_BUTTONS_MIDDLE_MASK = 4;\n\n/**\n * Extract the involved mouse button\n */\nexport function whichButtons(event) {\n const eventType = MOUSE_EVENTS[event.srcEvent.type];\n if (!eventType) {\n // Not a mouse evet\n return null;\n }\n\n const {buttons, button, which} = event.srcEvent;\n let leftButton = false;\n let middleButton = false;\n let rightButton = false;\n\n if (\n // button is up, need to find out which one was pressed before\n eventType === UP_EVENT ||\n // moving but does not support `buttons` API\n (eventType === MOVE_EVENT && !Number.isFinite(buttons))\n ) {\n leftButton = which === MOUSE_EVENT_WHICH_LEFT;\n middleButton = which === MOUSE_EVENT_WHICH_MIDDLE;\n rightButton = which === MOUSE_EVENT_WHICH_RIGHT;\n } else if (eventType === MOVE_EVENT) {\n leftButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_LEFT_MASK);\n middleButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_MIDDLE_MASK);\n rightButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_RIGHT_MASK);\n } else if (eventType === DOWN_EVENT) {\n leftButton = button === MOUSE_EVENT_BUTTON_LEFT;\n middleButton = button === MOUSE_EVENT_BUTTON_MIDDLE;\n rightButton = button === MOUSE_EVENT_BUTTON_RIGHT;\n }\n\n return {leftButton, middleButton, rightButton};\n}\n\n/**\n * Calculate event position relative to the root element\n */\nexport function getOffsetPosition(event, rootElement) {\n const {srcEvent} = event;\n\n // `center` is a hammer.js event property\n if (!event.center && !Number.isFinite(srcEvent.clientX)) {\n // Not a gestural event\n return null;\n }\n\n const center = event.center || {\n x: srcEvent.clientX,\n y: srcEvent.clientY\n };\n\n const rect = rootElement.getBoundingClientRect();\n\n // Fix scale for map affected by a CSS transform.\n // See https://stackoverflow.com/a/26893663/3528533\n const scaleX = rect.width / rootElement.offsetWidth;\n const scaleY = rect.height / rootElement.offsetHeight;\n\n // Calculate center relative to the root element\n const offsetCenter = {\n x: (center.x - rect.left - rootElement.clientLeft) / scaleX,\n y: (center.y - rect.top - rootElement.clientTop) / scaleY\n };\n\n return {center, offsetCenter};\n}\n","import {whichButtons, getOffsetPosition} from './event-utils';\n\nconst DEFAULT_OPTIONS = {\n srcElement: 'root',\n priority: 0\n};\n\nexport default class EventRegistrar {\n constructor(eventManager) {\n this.eventManager = eventManager;\n this.handlers = [];\n // Element -> handler map\n this.handlersByElement = new Map();\n\n this.handleEvent = this.handleEvent.bind(this);\n }\n\n isEmpty() {\n return this.handlers.length === 0;\n }\n\n add(type, handler, opts, once = false) {\n const {handlers, handlersByElement} = this;\n\n if (opts && (typeof opts !== 'object' || opts.addEventListener)) {\n // is DOM element, backward compatibility\n opts = {srcElement: opts};\n }\n opts = opts ? Object.assign({}, DEFAULT_OPTIONS, opts) : DEFAULT_OPTIONS;\n\n let entries = handlersByElement.get(opts.srcElement);\n if (!entries) {\n entries = [];\n handlersByElement.set(opts.srcElement, entries);\n }\n const entry = {type, handler, srcElement: opts.srcElement, priority: opts.priority, once};\n handlers.push(entry);\n\n // Sort handlers by descending priority\n // Handlers with the same priority are excuted in the order of registration\n let insertPosition = entries.length - 1;\n while (insertPosition >= 0) {\n if (entries[insertPosition].priority >= entry.priority) {\n break;\n }\n insertPosition--;\n }\n entries.splice(insertPosition + 1, 0, entry);\n }\n\n remove(type, handler) {\n const {handlers, handlersByElement} = this;\n\n for (let i = handlers.length - 1; i >= 0; i--) {\n const entry = handlers[i];\n\n if (entry.type === type && entry.handler === handler) {\n handlers.splice(i, 1);\n const entries = handlersByElement.get(entry.srcElement);\n entries.splice(entries.indexOf(entry), 1);\n if (entries.length === 0) {\n handlersByElement.delete(entry.srcElement);\n }\n }\n }\n }\n\n /**\n * Handles hammerjs event\n */\n handleEvent(event) {\n if (this.isEmpty()) {\n return;\n }\n\n const mjolnirEvent = this._normalizeEvent(event);\n let target = event.srcEvent.target;\n\n while (target && target !== mjolnirEvent.rootElement) {\n this._emit(mjolnirEvent, target);\n if (mjolnirEvent.handled) {\n return;\n }\n target = target.parentNode;\n }\n this._emit(mjolnirEvent, 'root');\n }\n\n /**\n * Invoke handlers on a particular element\n */\n _emit(event, srcElement) {\n const entries = this.handlersByElement.get(srcElement);\n\n if (entries) {\n let immediatePropagationStopped = false;\n\n // Prevents the current event from bubbling up\n const stopPropagation = () => {\n event.handled = true;\n };\n // Prevent any remaining listeners from being called\n const stopImmediatePropagation = () => {\n event.handled = true;\n immediatePropagationStopped = true;\n };\n const entriesToRemove = [];\n\n for (let i = 0; i < entries.length; i++) {\n const {type, handler, once} = entries[i];\n handler(\n Object.assign({}, event, {\n type,\n stopPropagation,\n stopImmediatePropagation\n })\n );\n if (once) {\n entriesToRemove.push(entries[i]);\n }\n if (immediatePropagationStopped) {\n break;\n }\n }\n\n for (let i = 0; i < entriesToRemove.length; i++) {\n const {type, handler} = entriesToRemove[i];\n this.remove(type, handler);\n }\n }\n }\n\n /**\n * Normalizes hammerjs and custom events to have predictable fields.\n */\n _normalizeEvent(event) {\n const rootElement = this.eventManager.element;\n\n return Object.assign({}, event, whichButtons(event), getOffsetPosition(event, rootElement), {\n handled: false,\n rootElement\n });\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Manager} from './utils/hammer';\n\nimport WheelInput from './inputs/wheel-input';\nimport MoveInput from './inputs/move-input';\nimport KeyInput from './inputs/key-input';\nimport ContextmenuInput from './inputs/contextmenu-input';\n\nimport EventRegistrar from './utils/event-registrar';\n\nimport {\n BASIC_EVENT_ALIASES,\n EVENT_RECOGNIZER_MAP,\n GESTURE_EVENT_ALIASES,\n RECOGNIZERS,\n RECOGNIZER_COMPATIBLE_MAP,\n RECOGNIZER_FALLBACK_MAP\n} from './constants';\n\nconst DEFAULT_OPTIONS = {\n // event handlers\n events: null,\n // custom recognizers\n recognizers: null,\n recognizerOptions: {},\n // Manager class\n Manager,\n // allow browser default touch action\n // https://github.com/uber/react-map-gl/issues/506\n touchAction: 'none'\n};\n\n// Unified API for subscribing to events about both\n// basic input events (e.g. 'mousemove', 'touchstart', 'wheel')\n// and gestural input (e.g. 'click', 'tap', 'panstart').\n// Delegates gesture related event registration and handling to Hammer.js.\nexport default class EventManager {\n constructor(element = null, options = {}) {\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n this.events = new Map();\n\n this._onBasicInput = this._onBasicInput.bind(this);\n this._onOtherEvent = this._onOtherEvent.bind(this);\n\n this.setElement(element);\n\n // Register all passed events.\n const {events} = options;\n if (events) {\n this.on(events);\n }\n }\n\n setElement(element) {\n if (this.element) {\n // unregister all events\n this.destroy();\n }\n this.element = element;\n if (!element) {\n return;\n }\n\n const {options} = this;\n const ManagerClass = options.Manager;\n\n this.manager = new ManagerClass(element, {\n touchAction: options.touchAction,\n recognizers: options.recognizers || RECOGNIZERS\n }).on('hammer.input', this._onBasicInput);\n\n if (!options.recognizers) {\n // Set default recognize withs\n // http://hammerjs.github.io/recognize-with/\n Object.keys(RECOGNIZER_COMPATIBLE_MAP).forEach(name => {\n const recognizer = this.manager.get(name);\n if (recognizer) {\n RECOGNIZER_COMPATIBLE_MAP[name].forEach(otherName => {\n recognizer.recognizeWith(otherName);\n });\n }\n });\n }\n\n // Set recognizer options\n for (const recognizerName in options.recognizerOptions) {\n const recognizer = this.manager.get(recognizerName);\n if (recognizer) {\n const recognizerOption = options.recognizerOptions[recognizerName];\n // `enable` is managed by the event registrations\n delete recognizerOption.enable;\n recognizer.set(recognizerOption);\n }\n }\n\n // Handle events not handled by Hammer.js:\n // - mouse wheel\n // - pointer/touch/mouse move\n this.wheelInput = new WheelInput(element, this._onOtherEvent, {\n enable: false\n });\n this.moveInput = new MoveInput(element, this._onOtherEvent, {\n enable: false\n });\n this.keyInput = new KeyInput(element, this._onOtherEvent, {\n enable: false\n });\n this.contextmenuInput = new ContextmenuInput(element, this._onOtherEvent, {\n enable: false\n });\n\n // Register all existing events\n for (const [eventAlias, eventRegistrar] of this.events) {\n if (!eventRegistrar.isEmpty()) {\n // Enable recognizer for this event.\n this._toggleRecognizer(eventRegistrar.recognizerName, true);\n this.manager.on(eventAlias, eventRegistrar.handleEvent);\n }\n }\n }\n\n // Tear down internal event management implementations.\n destroy() {\n if (this.element) {\n // wheelInput etc. are created in setElement() and therefore\n // cannot exist if there is no element\n this.wheelInput.destroy();\n this.moveInput.destroy();\n this.keyInput.destroy();\n this.contextmenuInput.destroy();\n this.manager.destroy();\n\n this.wheelInput = null;\n this.moveInput = null;\n this.keyInput = null;\n this.contextmenuInput = null;\n this.manager = null;\n this.element = null;\n }\n }\n\n // Register an event handler function to be called on `event`.\n on(event, handler, opts) {\n this._addEventHandler(event, handler, opts, false);\n }\n\n // Register an event handler function to be called on `event`, then remove it\n once(event, handler, opts) {\n this._addEventHandler(event, handler, opts, true);\n }\n\n /**\n * Deregister a previously-registered event handler.\n * @param {string|Object} event An event name (String) or map of event names to handlers\n * @param {Function} [handler] The function to be called on `event`.\n */\n off(event, handler) {\n this._removeEventHandler(event, handler);\n }\n\n /*\n * Enable/disable recognizer for the given event\n */\n _toggleRecognizer(name, enabled) {\n const {manager} = this;\n if (!manager) {\n return;\n }\n const recognizer = manager.get(name);\n if (recognizer && recognizer.options.enable !== enabled) {\n recognizer.set({enable: enabled});\n\n const fallbackRecognizers = RECOGNIZER_FALLBACK_MAP[name];\n if (fallbackRecognizers && !this.options.recognizers) {\n // Set default require failures\n // http://hammerjs.github.io/require-failure/\n fallbackRecognizers.forEach(otherName => {\n const otherRecognizer = manager.get(otherName);\n if (enabled) {\n // Wait for this recognizer to fail\n otherRecognizer.requireFailure(name);\n /**\n * This seems to be a bug in hammerjs:\n * requireFailure() adds both ways\n * dropRequireFailure() only drops one way\n * https://github.com/hammerjs/hammer.js/blob/master/src/recognizerjs/\n recognizer-constructor.js#L136\n */\n recognizer.dropRequireFailure(otherName);\n } else {\n // Do not wait for this recognizer to fail\n otherRecognizer.dropRequireFailure(name);\n }\n });\n }\n }\n this.wheelInput.enableEventType(name, enabled);\n this.moveInput.enableEventType(name, enabled);\n this.keyInput.enableEventType(name, enabled);\n this.contextmenuInput.enableEventType(name, enabled);\n }\n\n /**\n * Process the event registration for a single event + handler.\n */\n _addEventHandler(event, handler, opts, once) {\n if (typeof event !== 'string') {\n opts = handler;\n // If `event` is a map, call `on()` for each entry.\n for (const eventName in event) {\n this._addEventHandler(eventName, event[eventName], opts, once);\n }\n return;\n }\n\n const {manager, events} = this;\n // Alias to a recognized gesture as necessary.\n const eventAlias = GESTURE_EVENT_ALIASES[event] || event;\n\n let eventRegistrar = events.get(eventAlias);\n if (!eventRegistrar) {\n eventRegistrar = new EventRegistrar(this);\n events.set(eventAlias, eventRegistrar);\n // Enable recognizer for this event.\n eventRegistrar.recognizerName = EVENT_RECOGNIZER_MAP[eventAlias] || eventAlias;\n // Listen to the event\n if (manager) {\n manager.on(eventAlias, eventRegistrar.handleEvent);\n }\n }\n this._toggleRecognizer(eventRegistrar.recognizerName, true);\n eventRegistrar.add(event, handler, opts, once);\n }\n\n /**\n * Process the event deregistration for a single event + handler.\n */\n _removeEventHandler(event, handler) {\n if (typeof event !== 'string') {\n // If `event` is a map, call `off()` for each entry.\n for (const eventName in event) {\n this._removeEventHandler(eventName, event[eventName]);\n }\n return;\n }\n\n const {events} = this;\n // Alias to a recognized gesture as necessary.\n const eventAlias = GESTURE_EVENT_ALIASES[event] || event;\n\n const eventRegistrar = events.get(eventAlias);\n\n if (!eventRegistrar) {\n return;\n }\n\n eventRegistrar.remove(event, handler);\n\n if (eventRegistrar.isEmpty()) {\n const {recognizerName} = eventRegistrar;\n // Disable recognizer if no more handlers are attached to its events\n let isRecognizerUsed = false;\n for (const eh of events.values()) {\n if (eh.recognizerName === recognizerName && !eh.isEmpty()) {\n isRecognizerUsed = true;\n break;\n }\n }\n if (!isRecognizerUsed) {\n this._toggleRecognizer(recognizerName, false);\n }\n }\n }\n\n /**\n * Handle basic events using the 'hammer.input' Hammer.js API:\n * Before running Recognizers, Hammer emits a 'hammer.input' event\n * with the basic event info. This function emits all basic events\n * aliased to the \"class\" of event received.\n * See constants.BASIC_EVENT_CLASSES basic event class definitions.\n */\n _onBasicInput(event) {\n const {srcEvent} = event;\n const alias = BASIC_EVENT_ALIASES[srcEvent.type];\n if (alias) {\n // fire all events aliased to srcEvent.type\n this.manager.emit(alias, event);\n }\n }\n\n /**\n * Handle events not supported by Hammer.js,\n * and pipe back out through same (Hammer) channel used by other events.\n */\n _onOtherEvent(event) {\n // console.log('onotherevent', event.type, event)\n this.manager.emit(event.type, event);\n }\n}\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nexport default function formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n}","export default function buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js';\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = findIndex(parsePatterns, function (pattern) {\n return pattern.test(string);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n}","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js';\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js';\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}","import formatDistance from './_lib/formatDistance/index.js';\nimport formatLong from './_lib/formatLong/index.js';\nimport formatRelative from './_lib/formatRelative/index.js';\nimport localize from './_lib/localize/index.js';\nimport match from './_lib/match/index.js';\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js';\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeFunction from \"./isNativeFunction\";\nimport construct from \"./construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {config, formatValue, equals, isArray} from '../../lib/common';\n\nexport default class MathArray extends Array {\n clone() {\n return new this.constructor().copy(this);\n }\n\n from(arrayOrObject) {\n return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n }\n\n fromArray(array, offset = 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = array[i + offset];\n }\n return this.check();\n }\n\n to(arrayOrObject) {\n if (arrayOrObject === this) {\n return this;\n }\n return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n }\n\n toTarget(target) {\n return target ? this.to(target) : this;\n }\n\n toArray(array = [], offset = 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n array[offset + i] = this[i];\n }\n return array;\n }\n\n toFloat32Array() {\n return new Float32Array(this);\n }\n\n toString() {\n return this.formatString(config);\n }\n\n formatString(opts) {\n let string = '';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);\n }\n return `${opts.printTypes ? this.constructor.name : ''}[${string}]`;\n }\n\n equals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (!equals(this[i], array[i])) {\n return false;\n }\n }\n return true;\n }\n\n exactEquals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (this[i] !== array[i]) {\n return false;\n }\n }\n return true;\n }\n\n // Modifiers\n\n negate() {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = -this[i];\n }\n return this.check();\n }\n\n lerp(a, b, t) {\n if (t === undefined) {\n t = b;\n b = a;\n a = this; // eslint-disable-line\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const ai = a[i];\n this[i] = ai + t * (b[i] - ai);\n }\n return this.check();\n }\n\n min(vector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(vector[i], this[i]);\n }\n return this.check();\n }\n\n max(vector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.max(vector[i], this[i]);\n }\n return this.check();\n }\n\n clamp(minVector, maxVector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n }\n return this.check();\n }\n\n add(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += vector[i];\n }\n }\n return this.check();\n }\n\n subtract(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] -= vector[i];\n }\n }\n return this.check();\n }\n\n scale(scale) {\n if (Array.isArray(scale)) {\n return this.multiply(scale);\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scale;\n }\n return this.check();\n }\n\n // three.js compatibility\n\n sub(a) {\n return this.subtract(a);\n }\n\n setScalar(a) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = a;\n }\n return this.check();\n }\n\n addScalar(a) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += a;\n }\n return this.check();\n }\n\n subScalar(a) {\n return this.addScalar(-a);\n }\n\n multiplyScalar(scalar) {\n // Multiplies all elements\n // `Matrix4.scale` only scales its 3x3 \"minor\"\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n divideScalar(a) {\n return this.scale(1 / a);\n }\n\n clampScalar(min, max) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], min), max);\n }\n return this.check();\n }\n\n // Cesium compatibility\n\n multiplyByScalar(scalar) {\n return this.scale(scalar);\n }\n\n // THREE.js compatibility\n get elements() {\n return this;\n }\n\n // Debug checks\n\n check() {\n if (config.debug && !this.validate(this)) {\n throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);\n }\n return this;\n }\n\n validate() {\n let valid = this.length === this.ELEMENTS;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n valid = valid && Number.isFinite(this[i]);\n }\n return valid;\n }\n}\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from '../toInteger/index.js';\nimport getUTCWeekYear from '../getUTCWeekYear/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","// @flow\n// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* global window, process, HTMLCanvasElement */\nimport PropTypes from 'prop-types';\nimport {document} from '../utils/globals';\n\nfunction noop() {}\n\nfunction defaultOnError(event?: {error: any}) {\n if (event) {\n console.error(event.error); // eslint-disable-line\n }\n}\n\nconst propTypes = {\n // Creation parameters\n container: PropTypes.object /** The container to have the map. */,\n gl: PropTypes.object /** External WebGLContext to use */,\n\n mapboxApiAccessToken: PropTypes.string /** Mapbox API access token for Mapbox tiles/styles. */,\n mapboxApiUrl: PropTypes.string,\n attributionControl: PropTypes.bool /** Show attribution control or not. */,\n preserveDrawingBuffer: PropTypes.bool /** Useful when you want to export the canvas as a PNG. */,\n reuseMaps: PropTypes.bool,\n transformRequest: PropTypes.func /** The transformRequest callback for the map */,\n mapOptions: PropTypes.object /** Extra options to pass to Mapbox constructor. See #545. **/,\n mapStyle: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object\n ]) /** The Mapbox style. A string url to a MapboxGL style */,\n\n visible: PropTypes.bool /** Whether the map is visible */,\n asyncRender: PropTypes.bool /** Whether mapbox should manage its own render cycle */,\n\n onLoad: PropTypes.func /** The onLoad callback for the map */,\n onError: PropTypes.func /** The onError callback for the map */,\n\n // Map view state\n width: PropTypes.number /** The width of the map. */,\n height: PropTypes.number /** The height of the map. */,\n\n viewState: PropTypes.object /** object containing lng/lat/zoom/bearing/pitch */,\n\n longitude: PropTypes.number /** The longitude of the center of the map. */,\n latitude: PropTypes.number /** The latitude of the center of the map. */,\n zoom: PropTypes.number /** The tile zoom level of the map. */,\n bearing: PropTypes.number /** Specify the bearing of the viewport */,\n pitch: PropTypes.number /** Specify the pitch of the viewport */,\n // Note: Non-public API, see https://github.com/mapbox/mapbox-gl-js/issues/1137\n altitude: PropTypes.number /** Altitude of the viewport camera. Default 1.5 \"screen heights\" */\n};\n\nconst defaultProps = {\n container: document.body,\n mapboxApiAccessToken: getAccessToken(),\n mapboxApiUrl: 'https://api.mapbox.com',\n preserveDrawingBuffer: false,\n attributionControl: true,\n reuseMaps: false,\n mapOptions: {},\n mapStyle: 'mapbox://styles/mapbox/light-v8',\n\n visible: true,\n asyncRender: false,\n\n onLoad: noop,\n onError: defaultOnError,\n\n width: 0,\n height: 0,\n longitude: 0,\n latitude: 0,\n zoom: 0,\n bearing: 0,\n pitch: 0,\n altitude: 1.5\n};\n\ntype MapboxGL = {\n version: string,\n accessToken: string,\n baseApiUrl: string,\n Map: Function\n};\n\nexport type ViewState = {\n longitude: number,\n latitude: number,\n zoom: number,\n bearing: number,\n pitch: number,\n altitude?: number\n};\n\ntype Props = {\n mapboxgl?: MapboxGL,\n container: any,\n gl?: any,\n mapboxApiAccessToken: string,\n mapboxApiUrl: string,\n attributionControl: boolean,\n preserveDrawingBuffer: boolean,\n onLoad: Function,\n onError: Function,\n reuseMaps: boolean,\n transformRequest?: Function,\n mapStyle: any,\n visible: boolean,\n asyncRender: boolean,\n width: number,\n height: number,\n viewState?: ViewState,\n longitude: number,\n latitude: number,\n zoom: number,\n bearing: number,\n pitch: number,\n altitude?: number,\n mapOptions: any\n};\n\n// Try to get access token from URL, env, local storage or config\nexport function getAccessToken(): string {\n let accessToken = null;\n\n if (typeof window !== 'undefined' && window.location) {\n const match = window.location.search.match(/access_token=([^&\\/]*)/);\n accessToken = match && match[1];\n }\n\n if (!accessToken && typeof process !== 'undefined') {\n // Note: This depends on bundler plugins (e.g. webpack) importing environment correctly\n accessToken =\n accessToken || process.env.MapboxAccessToken || process.env.REACT_APP_MAPBOX_ACCESS_TOKEN; // eslint-disable-line\n }\n\n // Prevents mapbox from throwing\n return accessToken || 'no-token';\n}\n\n// Helper function to merge defaultProps and check prop types\nfunction checkPropTypes(props, component = 'component') {\n // TODO - check for production (unless done by prop types package?)\n if (props.debug) {\n PropTypes.checkPropTypes(propTypes, props, 'prop', component);\n }\n}\n\n// A small wrapper class for mapbox-gl\n// - Provides a prop style interface (that can be trivially used by a React wrapper)\n// - Makes sure mapbox doesn't crash under Node\n// - Handles map reuse (to work around Mapbox resource leak issues)\n// - Provides support for specifying tokens during development\n\nexport default class Mapbox {\n static initialized: boolean = false;\n static propTypes: any = propTypes;\n static defaultProps: any = defaultProps;\n static savedMap: any = null;\n\n constructor(props: Props) {\n if (!props.mapboxgl) {\n throw new Error('Mapbox not available');\n }\n\n this.mapboxgl = props.mapboxgl;\n\n if (!Mapbox.initialized) {\n Mapbox.initialized = true;\n\n // Version detection using babel plugin\n // $FlowFixMe\n // const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n // TODO - expose version for debug\n\n this._checkStyleSheet(this.mapboxgl.version);\n }\n\n this._initialize(props);\n }\n\n mapboxgl: MapboxGL;\n props: Props = defaultProps;\n _map: any = null;\n width: number = 0;\n height: number = 0;\n\n finalize() {\n this._destroy();\n return this;\n }\n\n setProps(props: Props) {\n this._update(this.props, props);\n return this;\n }\n\n // Mapbox's map.resize() reads size from DOM, so DOM element must already be resized\n // In a system like React we must wait to read size until after render\n // (e.g. until \"componentDidUpdate\")\n resize() {\n this._map.resize();\n return this;\n }\n\n // Force redraw the map now. Typically resize() and jumpTo() is reflected in the next\n // render cycle, which is managed by Mapbox's animation loop.\n // This removes the synchronization issue caused by requestAnimationFrame.\n redraw() {\n const map = this._map;\n // map._render will throw error if style does not exist\n // https://github.com/mapbox/mapbox-gl-js/blob/fb9fc316da14e99ff4368f3e4faa3888fb43c513\n // /src/ui/map.js#L1834\n if (map.style) {\n // cancel the scheduled update\n if (map._frame) {\n map._frame.cancel();\n map._frame = null;\n }\n // the order is important - render() may schedule another update\n map._render();\n }\n }\n\n // External apps can access map this way\n getMap() {\n return this._map;\n }\n\n // PRIVATE API\n _fireLoadEvent = () => {\n this.props.onLoad({\n type: 'load',\n target: this._map\n });\n };\n\n _reuse(props: Props) {\n this._map = Mapbox.savedMap;\n // When reusing the saved map, we need to reparent the map(canvas) and other child nodes\n // intoto the new container from the props.\n // Step1: reparenting child nodes from old container to new container\n const oldContainer = this._map.getContainer();\n const newContainer = props.container;\n newContainer.classList.add('mapboxgl-map');\n while (oldContainer.childNodes.length > 0) {\n newContainer.appendChild(oldContainer.childNodes[0]);\n }\n // Step2: replace the internal container with new container from the react component\n this._map._container = newContainer;\n Mapbox.savedMap = null;\n\n // Step3: update style and call onload again\n if (props.mapStyle) {\n this._map.setStyle(props.mapStyle, {\n // From the user's perspective, there's no \"diffing\" on initialization\n // We always rebuild the style from scratch when creating a new Mapbox instance\n diff: false\n });\n }\n\n // call onload event handler after style fully loaded when style needs update\n if (this._map.isStyleLoaded()) {\n this._fireLoadEvent();\n } else {\n this._map.once('styledata', this._fireLoadEvent);\n }\n }\n\n _create(props: Props) {\n // Reuse a saved map, if available\n if (props.reuseMaps && Mapbox.savedMap) {\n this._reuse(props);\n } else {\n if (props.gl) {\n const getContext = HTMLCanvasElement.prototype.getContext;\n // Hijack canvas.getContext to return our own WebGLContext\n // This will be called inside the mapboxgl.Map constructor\n // $FlowFixMe\n HTMLCanvasElement.prototype.getContext = () => {\n // Unhijack immediately\n // $FlowFixMe\n HTMLCanvasElement.prototype.getContext = getContext;\n return props.gl;\n };\n }\n\n const mapOptions: any = {\n container: props.container,\n center: [0, 0],\n zoom: 8,\n pitch: 0,\n bearing: 0,\n maxZoom: 24,\n style: props.mapStyle,\n interactive: false,\n trackResize: false,\n attributionControl: props.attributionControl,\n preserveDrawingBuffer: props.preserveDrawingBuffer\n };\n // We don't want to pass a null or no-op transformRequest function.\n if (props.transformRequest) {\n mapOptions.transformRequest = props.transformRequest;\n }\n this._map = new this.mapboxgl.Map(Object.assign({}, mapOptions, props.mapOptions));\n\n // Attach optional onLoad function\n this._map.once('load', props.onLoad);\n this._map.on('error', props.onError);\n }\n\n return this;\n }\n\n _destroy() {\n if (!this._map) {\n return;\n }\n\n if (!Mapbox.savedMap) {\n Mapbox.savedMap = this._map;\n\n // deregister the mapbox event listeners\n this._map.off('load', this.props.onLoad);\n this._map.off('error', this.props.onError);\n this._map.off('styledata', this._fireLoadEvent);\n } else {\n this._map.remove();\n }\n\n this._map = null;\n }\n\n _initialize(props: Props) {\n props = Object.assign({}, defaultProps, props);\n checkPropTypes(props, 'Mapbox');\n\n // Creation only props\n this.mapboxgl.accessToken = props.mapboxApiAccessToken || defaultProps.mapboxApiAccessToken;\n this.mapboxgl.baseApiUrl = props.mapboxApiUrl;\n\n this._create(props);\n\n // Hijack dimension properties\n // This eliminates the timing issue between calling resize() and DOM update\n /* eslint-disable accessor-pairs */\n const {container} = props;\n // $FlowFixMe\n Object.defineProperty(container, 'offsetWidth', {get: () => this.width});\n // $FlowFixMe\n Object.defineProperty(container, 'clientWidth', {get: () => this.width});\n // $FlowFixMe\n Object.defineProperty(container, 'offsetHeight', {\n get: () => this.height\n });\n // $FlowFixMe\n Object.defineProperty(container, 'clientHeight', {\n get: () => this.height\n });\n\n // Disable outline style\n const canvas = this._map.getCanvas();\n if (canvas) {\n canvas.style.outline = 'none';\n }\n\n this._updateMapViewport({}, props);\n this._updateMapSize({}, props);\n\n this.props = props;\n }\n\n _update(oldProps: Props, newProps: Props) {\n if (!this._map) {\n return;\n }\n\n newProps = Object.assign({}, this.props, newProps);\n checkPropTypes(newProps, 'Mapbox');\n\n const viewportChanged = this._updateMapViewport(oldProps, newProps);\n const sizeChanged = this._updateMapSize(oldProps, newProps);\n\n if (!newProps.asyncRender && (viewportChanged || sizeChanged)) {\n this.redraw();\n }\n\n this.props = newProps;\n }\n\n // Note: needs to be called after render (e.g. in componentDidUpdate)\n _updateMapSize(oldProps: any, newProps: Props) {\n const sizeChanged = oldProps.width !== newProps.width || oldProps.height !== newProps.height;\n if (sizeChanged) {\n this.width = newProps.width;\n this.height = newProps.height;\n this.resize();\n }\n return sizeChanged;\n }\n\n _updateMapViewport(oldProps: any, newProps: Props) {\n const oldViewState = this._getViewState(oldProps);\n const newViewState = this._getViewState(newProps);\n\n const viewportChanged =\n newViewState.latitude !== oldViewState.latitude ||\n newViewState.longitude !== oldViewState.longitude ||\n newViewState.zoom !== oldViewState.zoom ||\n newViewState.pitch !== oldViewState.pitch ||\n newViewState.bearing !== oldViewState.bearing ||\n newViewState.altitude !== oldViewState.altitude;\n\n if (viewportChanged) {\n this._map.jumpTo(this._viewStateToMapboxProps(newViewState));\n\n // TODO - jumpTo doesn't handle altitude\n if (newViewState.altitude !== oldViewState.altitude) {\n this._map.transform.altitude = newViewState.altitude;\n }\n }\n return viewportChanged;\n }\n\n _getViewState(props: Props): ViewState {\n const {longitude, latitude, zoom, pitch = 0, bearing = 0, altitude = 1.5} =\n props.viewState || props;\n return {longitude, latitude, zoom, pitch, bearing, altitude};\n }\n\n _checkStyleSheet(mapboxVersion: string = '0.47.0') {\n if (typeof document === 'undefined') {\n return;\n }\n\n // check mapbox styles\n try {\n const testElement = document.createElement('div');\n testElement.className = 'mapboxgl-map';\n testElement.style.display = 'none';\n document.body.append(testElement);\n const isCssLoaded = window.getComputedStyle(testElement).position !== 'static';\n\n if (!isCssLoaded) {\n // attempt to insert mapbox stylesheet\n const link = document.createElement('link');\n link.setAttribute('rel', 'stylesheet');\n link.setAttribute('type', 'text/css');\n link.setAttribute(\n 'href',\n `https://api.tiles.mapbox.com/mapbox-gl-js/v${mapboxVersion}/mapbox-gl.css`\n );\n document.head.append(link);\n }\n } catch (error) {\n // do nothing\n }\n }\n\n _viewStateToMapboxProps(viewState: ViewState) {\n return {\n center: [viewState.longitude, viewState.latitude],\n zoom: viewState.zoom,\n bearing: viewState.bearing,\n pitch: viewState.pitch\n };\n }\n}\n","/**\n * Module dependencies\n */\nvar balanced = require(\"balanced-match\")\nvar reduceFunctionCall = require(\"reduce-function-call\")\nvar mexp = require(\"math-expression-evaluator\")\n\n/**\n * Constantes\n */\nvar MAX_STACK = 100 // should be enough for a single calc()...\nvar NESTED_CALC_RE = /(\\+|\\-|\\*|\\\\|[^a-z]|)(\\s*)(\\()/g\n\n/**\n * Global variables\n */\nvar stack\n\n/**\n * Expose reduceCSSCalc plugin\n *\n * @type {Function}\n */\nmodule.exports = reduceCSSCalc\n\n/**\n * Reduce CSS calc() in a string, whenever it's possible\n *\n * @param {String} value css input\n */\nfunction reduceCSSCalc(value, decimalPrecision) {\n stack = 0\n decimalPrecision = Math.pow(10, decimalPrecision === undefined ? 5 : decimalPrecision)\n\n // Allow calc() on multiple lines\n value = value.replace(/\\n+/g, \" \")\n\n /**\n * Evaluates an expression\n *\n * @param {String} expression\n * @returns {String}\n */\n function evaluateExpression (expression, functionIdentifier, call) {\n if (stack++ > MAX_STACK) {\n stack = 0\n throw new Error(\"Call stack overflow for \" + call)\n }\n\n if (expression === \"\") {\n throw new Error(functionIdentifier + \"(): '\" + call + \"' must contain a non-whitespace string\")\n }\n\n expression = evaluateNestedExpression(expression, call)\n\n var units = getUnitsInExpression(expression)\n\n // If the expression contains multiple units or CSS variables,\n // then let the expression be (i.e. browser calc())\n if (units.length > 1 || expression.indexOf(\"var(\") > -1) {\n return functionIdentifier + \"(\" + expression + \")\"\n }\n\n var unit = units[0] || \"\"\n\n if (unit === \"%\") {\n // Convert percentages to numbers, to handle expressions like: 50% * 50% (will become: 25%):\n // console.log(expression)\n expression = expression.replace(/\\b[0-9\\.]+%/g, function(percent) {\n return parseFloat(percent.slice(0, -1)) * 0.01\n })\n }\n\n // Remove units in expression:\n var toEvaluate = expression.replace(new RegExp(unit, \"gi\"), \"\")\n var result\n\n try {\n result = mexp.eval(toEvaluate)\n }\n catch (e) {\n return functionIdentifier + \"(\" + expression + \")\"\n }\n\n // Transform back to a percentage result:\n if (unit === \"%\") {\n result *= 100\n }\n\n // adjust rounding shit\n // (0.1 * 0.2 === 0.020000000000000004)\n if (functionIdentifier.length || unit === \"%\") {\n result = Math.round(result * decimalPrecision) / decimalPrecision\n }\n\n // Add unit\n result += unit\n\n return result\n }\n\n /**\n * Evaluates nested expressions\n *\n * @param {String} expression\n * @returns {String}\n */\n function evaluateNestedExpression(expression, call) {\n // Remove the calc part from nested expressions to ensure\n // better browser compatibility\n expression = expression.replace(/((?:\\-[a-z]+\\-)?calc)/g, \"\")\n var evaluatedPart = \"\"\n var nonEvaluatedPart = expression\n var matches\n while ((matches = NESTED_CALC_RE.exec(nonEvaluatedPart))) {\n if (matches[0].index > 0) {\n evaluatedPart += nonEvaluatedPart.substring(0, matches[0].index)\n }\n\n var balancedExpr = balanced(\"(\", \")\", nonEvaluatedPart.substring([0].index))\n if (balancedExpr.body === \"\") {\n throw new Error(\"'\" + expression + \"' must contain a non-whitespace string\")\n }\n\n var evaluated = evaluateExpression(balancedExpr.body, \"\", call)\n\n evaluatedPart += balancedExpr.pre + evaluated\n nonEvaluatedPart = balancedExpr.post\n }\n\n return evaluatedPart + nonEvaluatedPart\n }\n\n return reduceFunctionCall(value, /((?:\\-[a-z]+\\-)?calc)\\(/, evaluateExpression)\n}\n\n/**\n * Checks what units are used in an expression\n *\n * @param {String} expression\n * @returns {Array}\n */\n\nfunction getUnitsInExpression(expression) {\n var uniqueUnits = []\n var uniqueLowerCaseUnits = []\n var unitRegEx = /[\\.0-9]([%a-z]+)/gi\n var matches = unitRegEx.exec(expression)\n\n while (matches) {\n if (!matches || !matches[1]) {\n continue\n }\n\n if (uniqueLowerCaseUnits.indexOf(matches[1].toLowerCase()) === -1) {\n uniqueUnits.push(matches[1])\n uniqueLowerCaseUnits.push(matches[1].toLowerCase())\n }\n\n matches = unitRegEx.exec(expression)\n }\n\n return uniqueUnits\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext();","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","module.exports = {};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","// `Math.sign` method implementation\n// https://tc39.github.io/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar createChangeEmitter = exports.createChangeEmitter = function createChangeEmitter() {\n var currentListeners = [];\n var nextListeners = currentListeners;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n function listen(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function () {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n function emit() {\n currentListeners = nextListeners;\n var listeners = currentListeners;\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].apply(listeners, arguments);\n }\n }\n\n return {\n listen: listen,\n emit: emit\n };\n};","import {withParameters} from '@luma.gl/gltools';\nimport {assertWebGL2Context} from '../webgl-utils';\nimport {assert} from '../utils';\n\n// Should collapse during minification\nconst GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst GL_COLOR_BUFFER_BIT = 0x00004000;\n\nconst GL_COLOR = 0x1800;\nconst GL_DEPTH = 0x1801;\nconst GL_STENCIL = 0x1802;\nconst GL_DEPTH_STENCIL = 0x84f9;\n\n// Should disappear if asserts are removed\nconst ERR_ARGUMENTS = 'clear: bad arguments';\n\n// Optionally clears depth, color and stencil buffers\nexport function clear(gl, {framebuffer = null, color = null, depth = null, stencil = null} = {}) {\n const parameters = {};\n\n if (framebuffer) {\n parameters.framebuffer = framebuffer;\n }\n\n let clearFlags = 0;\n\n if (color) {\n clearFlags |= GL_COLOR_BUFFER_BIT;\n if (color !== true) {\n parameters.clearColor = color;\n }\n }\n\n if (depth) {\n clearFlags |= GL_DEPTH_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearDepth = depth;\n }\n }\n\n if (stencil) {\n clearFlags |= GL_STENCIL_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearStencil = depth;\n }\n }\n\n assert(clearFlags !== 0, ERR_ARGUMENTS);\n\n // Temporarily set any clear \"colors\" and call clear\n withParameters(gl, parameters, () => {\n gl.clear(clearFlags);\n });\n}\n\n// WebGL2 - clear a specific drawing buffer\nexport function clearBuffer(\n gl,\n {framebuffer = null, buffer = GL_COLOR, drawBuffer = 0, value = [0, 0, 0, 0]} = {}\n) {\n assertWebGL2Context(gl);\n\n withParameters(gl, {framebuffer}, () => {\n // Method selection per OpenGL ES 3 docs\n switch (buffer) {\n case GL_COLOR:\n switch (value.constructor) {\n case Int32Array:\n gl.clearBufferiv(buffer, drawBuffer, value);\n break;\n case Uint32Array:\n gl.clearBufferuiv(buffer, drawBuffer, value);\n break;\n case Float32Array:\n default:\n gl.clearBufferfv(buffer, drawBuffer, value);\n }\n break;\n\n case GL_DEPTH:\n gl.clearBufferfv(GL_DEPTH, 0, [value]);\n break;\n\n case GL_STENCIL:\n gl.clearBufferiv(GL_STENCIL, 0, [value]);\n break;\n\n case GL_DEPTH_STENCIL:\n const [depth, stencil] = value;\n gl.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);\n break;\n\n default:\n assert(false, ERR_ARGUMENTS);\n }\n });\n}\n","module.exports = require(\"regenerator-runtime\");\n","import Framebuffer from '../classes/framebuffer';\nimport Texture2D from '../classes/texture-2d';\n// TODO - this should be the default export, test cases need updating\nexport const FEATURES = {\n WEBGL2: 'WEBGL2',\n\n // API SUPPORT\n VERTEX_ARRAY_OBJECT: 'VERTEX_ARRAY_OBJECT',\n TIMER_QUERY: 'TIMER_QUERY',\n INSTANCED_RENDERING: 'INSTANCED_RENDERING',\n MULTIPLE_RENDER_TARGETS: 'MULTIPLE_RENDER_TARGETS',\n\n // FEATURES\n ELEMENT_INDEX_UINT32: 'ELEMENT_INDEX_UINT32',\n\n // BLENDING\n BLEND_EQUATION_MINMAX: 'BLEND_EQUATION_MINMAX',\n FLOAT_BLEND: 'FLOAT_BLEND',\n\n // TEXTURES: '// TEXTURES', RENDERBUFFERS\n COLOR_ENCODING_SRGB: 'COLOR_ENCODING_SRGB',\n\n // TEXTURES\n TEXTURE_DEPTH: 'TEXTURE_DEPTH',\n TEXTURE_FLOAT: 'TEXTURE_FLOAT',\n TEXTURE_HALF_FLOAT: 'TEXTURE_HALF_FLOAT',\n\n TEXTURE_FILTER_LINEAR_FLOAT: 'TEXTURE_FILTER_LINEAR_FLOAT',\n TEXTURE_FILTER_LINEAR_HALF_FLOAT: 'TEXTURE_FILTER_LINEAR_HALF_FLOAT',\n TEXTURE_FILTER_ANISOTROPIC: 'TEXTURE_FILTER_ANISOTROPIC',\n\n // FRAMEBUFFERS: '// FRAMEBUFFERS', TEXTURES AND RENDERBUFFERS\n COLOR_ATTACHMENT_RGBA32F: 'COLOR_ATTACHMENT_RGBA32F',\n COLOR_ATTACHMENT_FLOAT: 'COLOR_ATTACHMENT_FLOAT',\n COLOR_ATTACHMENT_HALF_FLOAT: 'COLOR_ATTACHMENT_HALF_FLOAT',\n\n // GLSL extensions\n GLSL_FRAG_DATA: 'GLSL_FRAG_DATA',\n GLSL_FRAG_DEPTH: 'GLSL_FRAG_DEPTH',\n GLSL_DERIVATIVES: 'GLSL_DERIVATIVES',\n GLSL_TEXTURE_LOD: 'GLSL_TEXTURE_LOD'\n};\n\n// function to test if Float 32 bit format texture can be bound as color attachment\nfunction checkFloat32ColorAttachment(gl) {\n const testTexture = new Texture2D(gl, {\n format: gl.RGBA,\n type: gl.FLOAT,\n dataFormat: gl.RGBA\n });\n const testFb = new Framebuffer(gl, {\n id: `test-framebuffer`,\n check: false,\n attachments: {\n [gl.COLOR_ATTACHMENT0]: testTexture\n }\n });\n const status = testFb.getStatus();\n testTexture.delete();\n testFb.delete();\n return status === gl.FRAMEBUFFER_COMPLETE;\n}\n\n// Defines luma.gl \"feature\" names and semantics\n// Format: 'feature-name: [WebGL1 support, WebGL2 support] / [WebGL1 and WebGL2 support]', when support is 'string' it is the name of the extension\nexport default {\n [FEATURES.WEBGL2]: [false, true],\n\n // API SUPPORT\n [FEATURES.VERTEX_ARRAY_OBJECT]: ['OES_vertex_array_object', true],\n [FEATURES.TIMER_QUERY]: ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n [FEATURES.INSTANCED_RENDERING]: ['ANGLE_instanced_arrays', true],\n [FEATURES.MULTIPLE_RENDER_TARGETS]: ['WEBGL_draw_buffers', true],\n\n // FEATURES\n [FEATURES.ELEMENT_INDEX_UINT32]: ['OES_element_index_uint', true],\n\n // BLENDING\n [FEATURES.BLEND_EQUATION_MINMAX]: ['EXT_blend_minmax', true],\n [FEATURES.FLOAT_BLEND]: ['EXT_float_blend'],\n\n // TEXTURES, RENDERBUFFERS\n [FEATURES.COLOR_ENCODING_SRGB]: ['EXT_sRGB', true],\n\n // TEXTURES\n [FEATURES.TEXTURE_DEPTH]: ['WEBGL_depth_texture', true],\n [FEATURES.TEXTURE_FLOAT]: ['OES_texture_float', true],\n [FEATURES.TEXTURE_HALF_FLOAT]: ['OES_texture_half_float', true],\n\n [FEATURES.TEXTURE_FILTER_LINEAR_FLOAT]: ['OES_texture_float_linear'],\n [FEATURES.TEXTURE_FILTER_LINEAR_HALF_FLOAT]: ['OES_texture_half_float_linear'],\n [FEATURES.TEXTURE_FILTER_ANISOTROPIC]: ['EXT_texture_filter_anisotropic'],\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n [FEATURES.COLOR_ATTACHMENT_RGBA32F]: [checkFloat32ColorAttachment, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_FLOAT]: [false, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_HALF_FLOAT]: ['EXT_color_buffer_half_float'],\n\n // GLSL extensions\n [FEATURES.GLSL_FRAG_DATA]: ['WEBGL_draw_buffers', true],\n [FEATURES.GLSL_FRAG_DEPTH]: ['EXT_frag_depth', true],\n [FEATURES.GLSL_DERIVATIVES]: ['OES_standard_derivatives', true],\n [FEATURES.GLSL_TEXTURE_LOD]: ['EXT_shader_texture_lod', true]\n};\n","module.exports = require(\"regenerator-runtime\");\n","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getTickValues\", {\n enumerable: true,\n get: function get() {\n return _getNiceTickValues.getTickValues;\n }\n});\nObject.defineProperty(exports, \"getNiceTickValues\", {\n enumerable: true,\n get: function get() {\n return _getNiceTickValues.getNiceTickValues;\n }\n});\nObject.defineProperty(exports, \"getTickValuesFixedDomain\", {\n enumerable: true,\n get: function get() {\n return _getNiceTickValues.getTickValuesFixedDomain;\n }\n});\n\nvar _getNiceTickValues = require(\"./getNiceTickValues\");","module.exports = require('./lib/axios');","import {MODULE_INJECTORS_VS, MODULE_INJECTORS_FS} from '../modules/module-injectors';\nimport {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {assert} from '../utils';\n\n// TODO - experimental\nconst MODULE_INJECTORS = {\n [VERTEX_SHADER]: MODULE_INJECTORS_VS,\n [FRAGMENT_SHADER]: MODULE_INJECTORS_FS\n};\n\nexport const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__'; // Uniform/attribute declarations\n\nconst REGEX_START_OF_MAIN = /void main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/; // End of main, assumes main is last function\nconst fragments = [];\n\n// A minimal shader injection/templating system.\n// RFC: https://github.com/uber/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/shader-injection-rfc.md\n/* eslint-disable complexity */\nexport default function injectShader(source, type, inject, injectStandardStubs) {\n const isVertex = type === VERTEX_SHADER;\n\n for (const key in inject) {\n const fragmentData = inject[key];\n fragmentData.sort((a, b) => a.order - b.order);\n fragments.length = fragmentData.length;\n for (let i = 0, len = fragmentData.length; i < len; ++i) {\n fragments[i] = fragmentData[i].injection;\n }\n const fragmentString = `${fragments.join('\\n')}\\n`;\n switch (key) {\n // declarations are injected before the main function\n case 'vs:#decl':\n if (isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // main code is injected at the end of main function\n case 'vs:#main-start':\n if (isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n case 'vs:#main-end':\n if (isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n case 'fs:#decl':\n if (!isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n case 'fs:#main-start':\n if (!isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n case 'fs:#main-end':\n if (!isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n\n default:\n // TODO(Tarek): I think this usage should be deprecated.\n\n // inject code after key, leaving key in place\n source = source.replace(key, match => match + fragmentString);\n }\n }\n\n // Remove if it hasn't already been replaced\n source = source.replace(DECLARATION_INJECT_MARKER, '');\n\n // Finally, if requested, insert an automatic module injector chunk\n if (injectStandardStubs) {\n source = source.replace(/\\}\\s*$/, match => match + MODULE_INJECTORS[type]);\n }\n\n return source;\n}\n\n/* eslint-enable complexity */\n\n// Takes an array of inject objects and combines them into one\nexport function combineInjects(injects) {\n const result = {};\n assert(Array.isArray(injects) && injects.length > 1);\n injects.forEach(inject => {\n for (const key in inject) {\n result[key] = result[key] ? `${result[key]}\\n${inject[key]}` : inject[key];\n }\n });\n return result;\n}\n","export const MODULE_INJECTORS_VS = `\\\n#ifdef MODULE_LOGDEPTH\n logdepth_adjustPosition(gl_Position);\n#endif\n`;\n\nexport const MODULE_INJECTORS_FS = `\\\n#ifdef MODULE_MATERIAL\n gl_FragColor = material_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LIGHTING\n gl_FragColor = lighting_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_FOG\n gl_FragColor = fog_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_PICKING\n gl_FragColor = picking_filterHighlightColor(gl_FragColor);\n gl_FragColor = picking_filterPickingColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LOGDEPTH\n logdepth_setFragDepth();\n#endif\n`;\n","import GL from '@luma.gl/constants';\nimport {assert} from '../utils';\n\n// Returns number of components in a specific readPixels WebGL format\nexport function glFormatToComponents(format) {\n switch (format) {\n case GL.ALPHA:\n case GL.R32F:\n case GL.RED:\n return 1;\n case GL.RG32F:\n case GL.RG:\n return 2;\n case GL.RGB:\n case GL.RGB32F:\n return 3;\n case GL.RGBA:\n case GL.RGBA32F:\n return 4;\n // TODO: Add support for additional WebGL2 formats\n default:\n assert(false);\n return 0;\n }\n}\n\n// Return byte count for given readPixels WebGL type\nexport function glTypeToBytes(type) {\n switch (type) {\n case GL.UNSIGNED_BYTE:\n return 1;\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return 2;\n case GL.FLOAT:\n return 4;\n // TODO: Add support for additional WebGL2 types\n default:\n assert(false);\n return 0;\n }\n}\n","import GL from '@luma.gl/constants';\nimport Buffer from './buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {withParameters, log} from '@luma.gl/gltools';\nimport {assertWebGL2Context, flipRows, scalePixels} from '../webgl-utils';\nimport {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';\nimport {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';\nimport {toFramebuffer} from '../webgl-utils/texture-utils';\nimport {assert} from '../utils';\n\n// NOTE: Slow requires roundtrip to GPU\n// Copies data from a Framebuffer or a Texture object into ArrayBuffer object.\n// App can provide targetPixelArray or have it auto allocated by this method\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n// newly allocated by this method unless provided by app.\nexport function readPixelsToArray(\n source,\n {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = GL.RGBA,\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n target = null,\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n } = {}\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle, attachments} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // TODO - Set and unset gl.readBuffer\n if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {\n sourceAttachment = GL.FRONT;\n }\n\n assert(attachments[sourceAttachment]);\n\n // Deduce the type from color attachment if not provided.\n sourceType = sourceType || attachments[sourceAttachment].type;\n\n // Deduce type and allocated pixelArray if needed\n target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n\n // Pixel array available, if necessary, deduce type from it.\n sourceType = sourceType || getGLTypeFromTypedArray(target);\n\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return target;\n}\n\n// NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n// Copies data from a Framebuffer or a Texture object into a Buffer object.\nexport function readPixelsToBuffer(\n source,\n {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = GL.RGBA,\n target = null, // A new Buffer object is created when not provided.\n targetByteOffset = 0, // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n }\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // Asynchronus read (PIXEL_PACK_BUFFER) is WebGL2 only feature\n assertWebGL2Context(gl);\n\n // deduce type if not available.\n sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);\n\n if (!target) {\n // Create new buffer with enough size\n const components = glFormatToComponents(sourceFormat);\n const byteCount = glTypeToBytes(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n target = new Buffer(gl, {byteLength, accessor: {type: sourceType, size: components}});\n }\n\n target.bind({target: GL.PIXEL_PACK_BUFFER});\n withParameters(gl, {framebuffer}, () => {\n gl.readPixels(\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n sourceFormat,\n sourceType,\n targetByteOffset\n );\n });\n target.unbind({target: GL.PIXEL_PACK_BUFFER});\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMaxHeight = Number.MAX_SAFE_INTEGER\n } = {}\n) {\n let data = readPixelsToArray(source, {sourceAttachment});\n\n // Scale down\n let {width, height} = source;\n while (height > targetMaxHeight) {\n ({data, width, height} = scalePixels({data, width, height}));\n }\n\n // Flip to top down coordinate system\n flipRows({data, width, height});\n\n /* global document */\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n\n // Copy the pixels to a 2D canvas\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n}\n\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetImage = null\n } = {}\n) {\n /* global Image */\n const dataUrl = copyToDataUrl(source, {sourceAttachment});\n targetImage = targetImage || new Image();\n targetImage.src = dataUrl;\n return targetImage;\n}\n\n// Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(\n source,\n target,\n {\n sourceX = 0,\n sourceY = 0,\n // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n\n targetX,\n targetY,\n targetZ,\n targetMipmaplevel = 0,\n targetInternalFormat = GL.RGBA,\n\n width, // defaults to target width\n height // defaults to target height\n } = {}\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle} = framebuffer;\n const isSubCopy =\n typeof targetX !== 'undefined' ||\n typeof targetY !== 'undefined' ||\n typeof targetZ !== 'undefined';\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n // TODO - support gl.readBuffer (WebGL2 only)\n // const prevBuffer = gl.readBuffer(attachment);\n assert(target);\n let texture = null;\n if (target instanceof Texture) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n target = texture.target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(\n target,\n targetMipmaplevel,\n targetInternalFormat,\n sourceX,\n sourceY,\n width,\n height,\n 0 /* border must be 0 */\n );\n } else {\n switch (target) {\n case GL.TEXTURE_2D:\n case GL.TEXTURE_CUBE_MAP:\n gl.copyTexSubImage2D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n gl.copyTexSubImage3D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n targetZ,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n default:\n }\n }\n if (texture) {\n texture.unbind();\n }\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return texture;\n}\n\n// NOTE: WEBLG2 only\n// Copies a rectangle of pixels between Framebuffer or Texture objects\n// eslint-disable-next-line max-statements, complexity\nexport function blit(\n source,\n target,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0,\n sourceX0 = 0,\n sourceY0 = 0,\n sourceX1,\n sourceY1,\n targetX0 = 0,\n targetY0 = 0,\n targetX1,\n targetY1,\n color = true,\n depth = false,\n stencil = false,\n mask = 0,\n filter = GL.NEAREST\n } = {}\n) {\n const {framebuffer: srcFramebuffer, deleteFramebuffer: deleteSrcFramebuffer} = getFramebuffer(\n source\n );\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} = getFramebuffer(\n target\n );\n\n assert(srcFramebuffer);\n assert(dstFramebuffer);\n const {gl, handle, width, height, readBuffer} = dstFramebuffer;\n assertWebGL2Context(gl);\n\n if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {\n sourceAttachment = GL.FRONT;\n }\n\n if (color) {\n mask |= GL.COLOR_BUFFER_BIT;\n }\n if (depth) {\n mask |= GL.DEPTH_BUFFER_BIT;\n }\n if (stencil) {\n mask |= GL.STENCIL_BUFFER_BIT;\n }\n\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n // Either source or destiantion was a texture object, which is wrapped in a Framebuffer objecgt as color attachment.\n // Overwrite the mask to `COLOR_BUFFER_BIT`\n if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {\n mask = GL.COLOR_BUFFER_BIT;\n log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n }\n }\n assert(mask);\n\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n\n const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);\n const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);\n gl.readBuffer(sourceAttachment);\n gl.blitFramebuffer(\n sourceX0,\n sourceY0,\n sourceX1,\n sourceY1,\n targetX0,\n targetY0,\n targetX1,\n targetY1,\n mask,\n filter\n );\n gl.readBuffer(readBuffer);\n gl.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);\n gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);\n if (deleteSrcFramebuffer) {\n srcFramebuffer.delete();\n }\n if (deleteDstFramebuffer) {\n dstFramebuffer.delete();\n }\n\n return dstFramebuffer;\n}\n\n// Helper methods\n\nfunction getFramebuffer(source) {\n if (!(source instanceof Framebuffer)) {\n return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};\n }\n return {framebuffer: source, deleteFramebuffer: false};\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) {\n return pixelArray;\n }\n // Allocate pixel array if not already available, using supplied type\n type = type || GL.UNSIGNED_BYTE;\n const ArrayType = getTypedArrayFromGLType(type, {clamped: false});\n const components = glFormatToComponents(format);\n // TODO - check for composite type (components = 1).\n return new ArrayType(width * height * components);\n}\n","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var elevations = {};\n theme.shadows.forEach(function (shadow, index) {\n elevations[\"elevation\".concat(index)] = {\n boxShadow: shadow\n };\n });\n return _extends({\n /* Styles applied to the root element. */\n root: {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n transition: theme.transitions.create('box-shadow')\n },\n\n /* Styles applied to the root element if `square={false}`. */\n rounded: {\n borderRadius: theme.shape.borderRadius\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` */\n outlined: {\n border: \"1px solid \".concat(theme.palette.divider)\n }\n }, elevations);\n};\nvar Paper = React.forwardRef(function Paper(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$square = props.square,\n square = _props$square === void 0 ? false : _props$square,\n _props$elevation = props.elevation,\n elevation = _props$elevation === void 0 ? 1 : _props$elevation,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'elevation' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"square\", \"elevation\", \"variant\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (classes[\"elevation\".concat(elevation)] === undefined) {\n console.error(\"Material-UI: this elevation `\".concat(elevation, \"` is not implemented.\"));\n }\n }\n\n return React.createElement(Component, _extends({\n className: clsx(classes.root, className, variant === 'outlined' ? classes.outlined : classes[\"elevation\".concat(elevation)], !square && classes.rounded),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * Shadow depth, corresponds to `dp` in the spec.\n * It accepts values between 0 and 24 inclusive.\n */\n elevation: PropTypes.number,\n\n /**\n * If `true`, rounded corners are disabled.\n */\n square: PropTypes.bool,\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['elevation', 'outlined'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiPaper'\n})(Paper);","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nvar useEnhancedEffect = typeof window !== 'undefined' && process.env.NODE_ENV !== 'test' ? React.useLayoutEffect : React.useEffect;\n/**\n * NoSsr purposely removes components from the subject of Server Side Rendering (SSR).\n *\n * This component can be useful in a variety of situations:\n * - Escape hatch for broken dependencies not supporting SSR.\n * - Improve the time-to-first paint on the client by only rendering above the fold.\n * - Reduce the rendering time on the server.\n * - Under too heavy server load, you can turn on service degradation.\n */\n\nfunction NoSsr(props) {\n var children = props.children,\n _props$defer = props.defer,\n defer = _props$defer === void 0 ? false : _props$defer,\n _props$fallback = props.fallback,\n fallback = _props$fallback === void 0 ? null : _props$fallback;\n\n var _React$useState = React.useState(false),\n mountedState = _React$useState[0],\n setMountedState = _React$useState[1];\n\n useEnhancedEffect(function () {\n if (!defer) {\n setMountedState(true);\n }\n }, [defer]);\n React.useEffect(function () {\n if (defer) {\n setMountedState(true);\n }\n }, [defer]); // We need the Fragment here to force react-docgen to recognise NoSsr as a component.\n\n return React.createElement(React.Fragment, null, mountedState ? children : fallback);\n}\n\nprocess.env.NODE_ENV !== \"production\" ? NoSsr.propTypes = {\n /**\n * You can wrap a node.\n */\n children: PropTypes.node,\n\n /**\n * If `true`, the component will not only prevent server-side rendering.\n * It will also defer the rendering of the children into a different screen frame.\n */\n defer: PropTypes.bool,\n\n /**\n * The fallback content to display.\n */\n fallback: PropTypes.node\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n NoSsr['propTypes' + ''] = exactProp(NoSsr.propTypes);\n}\n\nexport default NoSsr;","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useEventCallback from '../utils/useEventCallback';\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * @ignore - internal component.\n */\n\nfunction Ripple(props) {\n var classes = props.classes,\n _props$pulsate = props.pulsate,\n pulsate = _props$pulsate === void 0 ? false : _props$pulsate,\n rippleX = props.rippleX,\n rippleY = props.rippleY,\n rippleSize = props.rippleSize,\n inProp = props.in,\n _props$onExited = props.onExited,\n onExited = _props$onExited === void 0 ? function () {} : _props$onExited,\n timeout = props.timeout;\n\n var _React$useState = React.useState(false),\n leaving = _React$useState[0],\n setLeaving = _React$useState[1];\n\n var rippleClassName = clsx(classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n var rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n var childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n var handleExited = useEventCallback(onExited); // Ripple is used for user feedback (e.g. click or press) so we want to apply styles with the highest priority\n\n useEnhancedEffect(function () {\n if (!inProp) {\n // react-transition-group#onExit\n setLeaving(true); // react-transition-group#onExited\n\n var timeoutId = setTimeout(handleExited, timeout);\n return function () {\n clearTimeout(timeoutId);\n };\n }\n\n return undefined;\n }, [handleExited, inProp, timeout]);\n return React.createElement(\"span\", {\n className: rippleClassName,\n style: rippleStyles\n }, React.createElement(\"span\", {\n className: childClassName\n }));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Ripple from './Ripple';\nvar DURATION = 550;\nexport var DELAY_RIPPLE = 80;\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n },\n\n /* Styles applied to the internal `Ripple` components `ripple` class. */\n ripple: {\n opacity: 0,\n position: 'absolute'\n },\n\n /* Styles applied to the internal `Ripple` components `rippleVisible` class. */\n rippleVisible: {\n opacity: 0.3,\n transform: 'scale(1)',\n animation: \"$enter \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `ripplePulsate` class. */\n ripplePulsate: {\n animationDuration: \"\".concat(theme.transitions.duration.shorter, \"ms\")\n },\n\n /* Styles applied to the internal `Ripple` components `child` class. */\n child: {\n opacity: 1,\n display: 'block',\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n backgroundColor: 'currentColor'\n },\n\n /* Styles applied to the internal `Ripple` components `childLeaving` class. */\n childLeaving: {\n opacity: 0,\n animation: \"$exit \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `childPulsate` class. */\n childPulsate: {\n position: 'absolute',\n left: 0,\n top: 0,\n animation: \"$pulsate 2500ms \".concat(theme.transitions.easing.easeInOut, \" 200ms infinite\")\n },\n '@keyframes enter': {\n '0%': {\n transform: 'scale(0)',\n opacity: 0.1\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 0.3\n }\n },\n '@keyframes exit': {\n '0%': {\n opacity: 1\n },\n '100%': {\n opacity: 0\n }\n },\n '@keyframes pulsate': {\n '0%': {\n transform: 'scale(1)'\n },\n '50%': {\n transform: 'scale(0.92)'\n },\n '100%': {\n transform: 'scale(1)'\n }\n }\n };\n};\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\n\nvar TouchRipple = React.forwardRef(function TouchRipple(props, ref) {\n var _props$center = props.center,\n centerProp = _props$center === void 0 ? false : _props$center,\n classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"center\", \"classes\", \"className\"]);\n\n var _React$useState = React.useState([]),\n ripples = _React$useState[0],\n setRipples = _React$useState[1];\n\n var nextKey = React.useRef(0);\n var rippleCallback = React.useRef(null);\n React.useEffect(function () {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]); // Used to filter out mouse emulated events on mobile.\n\n var ignoringMouseDown = React.useRef(false); // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n\n var startTimer = React.useRef(null); // This is the hook called once the previous timeout is ready.\n\n var startTimerCommit = React.useRef(null);\n var container = React.useRef(null);\n React.useEffect(function () {\n return function () {\n clearTimeout(startTimer.current);\n };\n }, []);\n var startCommit = React.useCallback(function (params) {\n var pulsate = params.pulsate,\n rippleX = params.rippleX,\n rippleY = params.rippleY,\n rippleSize = params.rippleSize,\n cb = params.cb;\n setRipples(function (oldRipples) {\n return [].concat(_toConsumableArray(oldRipples), [React.createElement(Ripple, {\n key: nextKey.current,\n classes: classes,\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n })]);\n });\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n var start = React.useCallback(function () {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var cb = arguments.length > 2 ? arguments[2] : undefined;\n var _options$pulsate = options.pulsate,\n pulsate = _options$pulsate === void 0 ? false : _options$pulsate,\n _options$center = options.center,\n center = _options$center === void 0 ? centerProp || options.pulsate : _options$center,\n _options$fakeElement = options.fakeElement,\n fakeElement = _options$fakeElement === void 0 ? false : _options$fakeElement;\n\n if (event.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n\n if (event.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n\n var element = fakeElement ? null : container.current;\n var rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n }; // Get the size of the ripple\n\n var rippleX;\n var rippleY;\n var rippleSize;\n\n if (center || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n var clientX = event.clientX ? event.clientX : event.touches[0].clientX;\n var clientY = event.clientY ? event.clientY : event.touches[0].clientY;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n\n if (center) {\n rippleSize = Math.sqrt((2 * Math.pow(rect.width, 2) + Math.pow(rect.height, 2)) / 3); // For some reason the animation is broken on Mobile Chrome if the size if even.\n\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n var sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n var sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(Math.pow(sizeX, 2) + Math.pow(sizeY, 2));\n } // Touche devices\n\n\n if (event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = function () {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }; // Delay the execution of the ripple effect.\n\n\n startTimer.current = setTimeout(function () {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n } else {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }\n }, [centerProp, startCommit]);\n var pulsate = React.useCallback(function () {\n start({}, {\n pulsate: true\n });\n }, [start]);\n var stop = React.useCallback(function (event, cb) {\n clearTimeout(startTimer.current); // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n\n if (event.type === 'touchend' && startTimerCommit.current) {\n event.persist();\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.current = setTimeout(function () {\n stop(event, cb);\n });\n return;\n }\n\n startTimerCommit.current = null;\n setRipples(function (oldRipples) {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, []);\n React.useImperativeHandle(ref, function () {\n return {\n pulsate: pulsate,\n start: start,\n stop: stop\n };\n }, [pulsate, start, stop]);\n return React.createElement(\"span\", _extends({\n className: clsx(classes.root, className),\n ref: container\n }, other), React.createElement(TransitionGroup, {\n component: null,\n exit: true\n }, ripples));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n flip: false,\n name: 'MuiTouchRipple'\n})(React.memo(TouchRipple));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@material-ui/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport withStyles from '../styles/withStyles';\nimport NoSsr from '../NoSsr';\nimport { useIsFocusVisible } from '../utils/focusVisible';\nimport TouchRipple from './TouchRipple';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n '-moz-appearance': 'none',\n // Reset\n '-webkit-appearance': 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native <a /> element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n '&$disabled': {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n }\n },\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Pseudo-class applied to the root element if keyboard focused. */\n focusVisible: {}\n};\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\n\nvar ButtonBase = React.forwardRef(function ButtonBase(props, ref) {\n var action = props.action,\n buttonRefProp = props.buttonRef,\n _props$centerRipple = props.centerRipple,\n centerRipple = _props$centerRipple === void 0 ? false : _props$centerRipple,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n component = _props$component === void 0 ? 'button' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableRipple = props.disableRipple,\n disableRipple = _props$disableRipple === void 0 ? false : _props$disableRipple,\n _props$disableTouchRi = props.disableTouchRipple,\n disableTouchRipple = _props$disableTouchRi === void 0 ? false : _props$disableTouchRi,\n _props$focusRipple = props.focusRipple,\n focusRipple = _props$focusRipple === void 0 ? false : _props$focusRipple,\n focusVisibleClassName = props.focusVisibleClassName,\n onBlur = props.onBlur,\n onClick = props.onClick,\n onFocus = props.onFocus,\n onFocusVisible = props.onFocusVisible,\n onKeyDown = props.onKeyDown,\n onKeyUp = props.onKeyUp,\n onMouseDown = props.onMouseDown,\n onMouseLeave = props.onMouseLeave,\n onMouseUp = props.onMouseUp,\n onTouchEnd = props.onTouchEnd,\n onTouchMove = props.onTouchMove,\n onTouchStart = props.onTouchStart,\n onDragLeave = props.onDragLeave,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n TouchRippleProps = props.TouchRippleProps,\n _props$type = props.type,\n type = _props$type === void 0 ? 'button' : _props$type,\n other = _objectWithoutProperties(props, [\"action\", \"buttonRef\", \"centerRipple\", \"children\", \"classes\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"onBlur\", \"onClick\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"onDragLeave\", \"tabIndex\", \"TouchRippleProps\", \"type\"]);\n\n var buttonRef = React.useRef(null);\n\n function getButtonNode() {\n // #StrictMode ready\n return ReactDOM.findDOMNode(buttonRef.current);\n }\n\n var rippleRef = React.useRef(null);\n\n var _React$useState = React.useState(false),\n focusVisible = _React$useState[0],\n setFocusVisible = _React$useState[1];\n\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n\n var _useIsFocusVisible = useIsFocusVisible(),\n isFocusVisible = _useIsFocusVisible.isFocusVisible,\n onBlurVisible = _useIsFocusVisible.onBlurVisible,\n focusVisibleRef = _useIsFocusVisible.ref;\n\n React.useImperativeHandle(action, function () {\n return {\n focusVisible: function focusVisible() {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n };\n }, []);\n React.useEffect(function () {\n if (focusVisible && focusRipple && !disableRipple) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible]);\n\n function useRippleHandler(rippleAction, eventCallback) {\n var skipRippleAction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : disableTouchRipple;\n return useEventCallback(function (event) {\n if (eventCallback) {\n eventCallback(event);\n }\n\n var ignore = skipRippleAction;\n\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n\n return true;\n });\n }\n\n var handleMouseDown = useRippleHandler('start', onMouseDown);\n var handleDragLeave = useRippleHandler('stop', onDragLeave);\n var handleMouseUp = useRippleHandler('stop', onMouseUp);\n var handleMouseLeave = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n event.preventDefault();\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n var handleTouchStart = useRippleHandler('start', onTouchStart);\n var handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n var handleTouchMove = useRippleHandler('stop', onTouchMove);\n var handleBlur = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n onBlurVisible(event);\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n var handleFocus = useEventCallback(function (event) {\n if (disabled) {\n return;\n } // Fix for https://github.com/facebook/react/issues/7769\n\n\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n\n if (isFocusVisible(event)) {\n setFocusVisible(true);\n\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n\n if (onFocus) {\n onFocus(event);\n }\n });\n\n var isNonNativeButton = function isNonNativeButton() {\n var button = getButtonNode();\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n /**\n * IE 11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n\n\n var keydownRef = React.useRef(false);\n var handleKeyDown = useEventCallback(function (event) {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n event.persist();\n rippleRef.current.stop(event, function () {\n rippleRef.current.start(event);\n });\n }\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter') {\n event.preventDefault();\n\n if (onClick) {\n onClick(event);\n }\n }\n });\n var handleKeyUp = useEventCallback(function (event) {\n // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n // https://codesandbox.io/s/button-keyup-preventdefault-dn7f0\n if (focusRipple && event.key === ' ' && rippleRef.current && focusVisible && !event.defaultPrevented) {\n keydownRef.current = false;\n event.persist();\n rippleRef.current.stop(event, function () {\n rippleRef.current.pulsate(event);\n });\n }\n\n if (onKeyUp) {\n onKeyUp(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n onClick(event);\n }\n });\n var ComponentProp = component;\n\n if (ComponentProp === 'button' && other.href) {\n ComponentProp = 'a';\n }\n\n var buttonProps = {};\n\n if (ComponentProp === 'button') {\n buttonProps.type = type;\n buttonProps.disabled = disabled;\n } else {\n if (ComponentProp !== 'a' || !other.href) {\n buttonProps.role = 'button';\n }\n\n buttonProps['aria-disabled'] = disabled;\n }\n\n var handleUserRef = useForkRef(buttonRefProp, ref);\n var handleOwnRef = useForkRef(focusVisibleRef, buttonRef);\n var handleRef = useForkRef(handleUserRef, handleOwnRef);\n return React.createElement(ComponentProp, _extends({\n className: clsx(classes.root, className, focusVisible && [classes.focusVisible, focusVisibleClassName], disabled && classes.disabled),\n onBlur: handleBlur,\n onClick: onClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n onMouseUp: handleMouseUp,\n onDragLeave: handleDragLeave,\n onTouchEnd: handleTouchEnd,\n onTouchMove: handleTouchMove,\n onTouchStart: handleTouchStart,\n ref: handleRef,\n tabIndex: disabled ? -1 : tabIndex\n }, buttonProps, other), children, React.createElement(NoSsr, null, !disableRipple && !disabled ?\n /* TouchRipple is only needed client-side, x2 boost on the server. */\n React.createElement(TouchRipple, _extends({\n ref: rippleRef,\n center: centerRipple\n }, TouchRippleProps)) : null));\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonBase.propTypes = {\n /**\n * A ref for imperative actions.\n * It currently only supports `focusVisible()` action.\n */\n action: refType,\n\n /**\n * @ignore\n *\n * Use that prop to pass a ref to the native button component.\n * @deprecated Use `ref` instead.\n */\n buttonRef: refType,\n\n /**\n * If `true`, the ripples will be centered.\n * They won't start at the cursor interaction position.\n */\n centerRipple: PropTypes.bool,\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: elementTypeAcceptingRef,\n\n /**\n * If `true`, the base button will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect will be disabled.\n *\n * âš ï¸ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `focusVisibleClassName`.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * If `true`, the touch ripple effect will be disabled.\n */\n disableTouchRipple: PropTypes.bool,\n\n /**\n * If `true`, the base button will have a keyboard focus ripple.\n * `disableRipple` must also be `false`.\n */\n focusRipple: PropTypes.bool,\n\n /**\n * This prop can help a person know which element has the keyboard focus.\n * The class name will be applied when the element gain the focus through a keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/master/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * @ignore\n */\n onDragLeave: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseLeave: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseUp: PropTypes.func,\n\n /**\n * @ignore\n */\n onTouchEnd: PropTypes.func,\n\n /**\n * @ignore\n */\n onTouchMove: PropTypes.func,\n\n /**\n * @ignore\n */\n onTouchStart: PropTypes.func,\n\n /**\n * @ignore\n */\n role: PropTypes.string,\n\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Props applied to the `TouchRipple` element.\n */\n TouchRippleProps: PropTypes.object,\n\n /**\n * Used to control the button's purpose.\n * This prop passes the value to the `type` attribute of the native button component.\n */\n type: PropTypes.oneOf(['submit', 'reset', 'button'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiButtonBase'\n})(ButtonBase);","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { makeStyles as makeStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nfunction makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return makeStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\n\nexport default makeStyles;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Paper from '../Paper';\nimport { emphasize } from '../styles/colorManipulator';\nexport var styles = function styles(theme) {\n var emphasis = theme.palette.type === 'light' ? 0.8 : 0.98;\n var backgroundColor = emphasize(theme.palette.background.default, emphasis);\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.body2, _defineProperty({\n color: theme.palette.getContrastText(backgroundColor),\n backgroundColor: backgroundColor,\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n padding: '6px 16px',\n borderRadius: theme.shape.borderRadius,\n flexGrow: 1\n }, theme.breakpoints.up('sm'), {\n flexGrow: 'initial',\n minWidth: 288\n })),\n\n /* Styles applied to the message wrapper element. */\n message: {\n padding: '8px 0'\n },\n\n /* Styles applied to the action wrapper element if `action` is provided. */\n action: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n paddingLeft: 16,\n marginRight: -8\n }\n };\n};\nvar SnackbarContent = React.forwardRef(function SnackbarContent(props, ref) {\n var action = props.action,\n classes = props.classes,\n className = props.className,\n message = props.message,\n _props$role = props.role,\n role = _props$role === void 0 ? 'alert' : _props$role,\n other = _objectWithoutProperties(props, [\"action\", \"classes\", \"className\", \"message\", \"role\"]);\n\n return React.createElement(Paper, _extends({\n role: role,\n square: true,\n elevation: 6,\n className: clsx(classes.root, className),\n ref: ref\n }, other), React.createElement(\"div\", {\n className: classes.message\n }, message), action ? React.createElement(\"div\", {\n className: classes.action\n }, action) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? SnackbarContent.propTypes = {\n /**\n * The action to display. It renders after the message, at the end of the snackbar.\n */\n action: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The message to display.\n */\n message: PropTypes.node,\n\n /**\n * The ARIA role attribute of the element.\n */\n role: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiSnackbarContent'\n})(SnackbarContent);","export { default } from './Collapse';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport withStyles from '../styles/withStyles';\nimport { duration } from '../styles/transitions';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the container element. */\n container: {\n height: 0,\n overflow: 'hidden',\n transition: theme.transitions.create('height')\n },\n\n /* Styles applied to the container element when the transition has entered. */\n entered: {\n height: 'auto',\n overflow: 'visible'\n },\n\n /* Styles applied to the container element when the transition has exited and `collapsedHeight` != 0px. */\n hidden: {\n visibility: 'hidden'\n },\n\n /* Styles applied to the outer wrapper element. */\n wrapper: {\n // Hack to get children with a negative margin to not falsify the height computation.\n display: 'flex'\n },\n\n /* Styles applied to the inner wrapper element. */\n wrapperInner: {\n width: '100%'\n }\n };\n};\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/components/steppers/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Collapse = React.forwardRef(function Collapse(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$collapsedHeigh = props.collapsedHeight,\n collapsedHeightProp = _props$collapsedHeigh === void 0 ? '0px' : _props$collapsedHeigh,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n inProp = props.in,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExiting = props.onExiting,\n style = props.style,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? duration.standard : _props$timeout,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"collapsedHeight\", \"component\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExiting\", \"style\", \"timeout\"]);\n\n var theme = useTheme();\n var timer = React.useRef();\n var wrapperRef = React.useRef(null);\n var autoTransitionDuration = React.useRef();\n var collapsedHeight = typeof collapsedHeightProp === 'number' ? \"\".concat(collapsedHeightProp, \"px\") : collapsedHeightProp;\n React.useEffect(function () {\n return function () {\n clearTimeout(timer.current);\n };\n }, []);\n\n var handleEnter = function handleEnter(node, isAppearing) {\n node.style.height = collapsedHeight;\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n };\n\n var handleEntering = function handleEntering(node, isAppearing) {\n var wrapperHeight = wrapperRef.current ? wrapperRef.current.clientHeight : 0;\n\n var _getTransitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'enter'\n }),\n transitionDuration = _getTransitionProps.duration;\n\n if (timeout === 'auto') {\n var duration2 = theme.transitions.getAutoHeightDuration(wrapperHeight);\n node.style.transitionDuration = \"\".concat(duration2, \"ms\");\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : \"\".concat(transitionDuration, \"ms\");\n }\n\n node.style.height = \"\".concat(wrapperHeight, \"px\");\n\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n };\n\n var handleEntered = function handleEntered(node, isAppearing) {\n node.style.height = 'auto';\n\n if (onEntered) {\n onEntered(node, isAppearing);\n }\n };\n\n var handleExit = function handleExit(node) {\n var wrapperHeight = wrapperRef.current ? wrapperRef.current.clientHeight : 0;\n node.style.height = \"\".concat(wrapperHeight, \"px\");\n\n if (onExit) {\n onExit(node);\n }\n };\n\n var handleExiting = function handleExiting(node) {\n var wrapperHeight = wrapperRef.current ? wrapperRef.current.clientHeight : 0;\n\n var _getTransitionProps2 = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'exit'\n }),\n transitionDuration = _getTransitionProps2.duration;\n\n if (timeout === 'auto') {\n var duration2 = theme.transitions.getAutoHeightDuration(wrapperHeight);\n node.style.transitionDuration = \"\".concat(duration2, \"ms\");\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : \"\".concat(transitionDuration, \"ms\");\n }\n\n node.style.height = collapsedHeight;\n\n if (onExiting) {\n onExiting(node);\n }\n };\n\n var addEndListener = function addEndListener(_, next) {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n };\n\n return React.createElement(Transition, _extends({\n in: inProp,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExiting: handleExiting,\n addEndListener: addEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other), function (state, childProps) {\n return React.createElement(Component, _extends({\n className: clsx(classes.container, className, {\n 'entered': classes.entered,\n 'exited': !inProp && collapsedHeight === '0px' && classes.hidden\n }[state]),\n style: _extends({\n minHeight: collapsedHeight\n }, style),\n ref: ref\n }, childProps), React.createElement(\"div\", {\n className: classes.wrapper,\n ref: wrapperRef\n }, React.createElement(\"div\", {\n className: classes.wrapperInner\n }, children)));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.propTypes = {\n /**\n * The content node to be collapsed.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The height of the container when collapsed.\n */\n collapsedHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n */\n timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n enter: PropTypes.number,\n exit: PropTypes.number\n }), PropTypes.oneOf(['auto'])])\n} : void 0;\nCollapse.muiSupportAuto = true;\nexport default withStyles(styles, {\n name: 'MuiCollapse'\n})(Collapse);","export { default } from './SnackbarContent';","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable */\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nexports.default = function (message) {\n if (!__DEV__) return;\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (x) {};\n};","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","/* Mapbox GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/mapbox/mapbox-gl-js/blob/v1.6.1/LICENSE.txt */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = global || self, global.mapboxgl = factory());\n}(this, (function () { 'use strict';\n\n/* eslint-disable */\n\nvar shared, worker, mapboxgl;\n// define gets called three times: one for each chunk. we rely on the order\n// they're imported to know which is which\nfunction define(_, chunk) {\nif (!shared) {\n shared = chunk;\n} else if (!worker) {\n worker = chunk;\n} else {\n var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);'\n\n var sharedChunk = {};\n shared(sharedChunk);\n mapboxgl = chunk(sharedChunk);\n mapboxgl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }));\n}\n}\n\n\ndefine([\"exports\"],(function(t){\"use strict\";function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n;}n.prototype.sampleCurveX=function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return ((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)<e)return i;var s=this.sampleCurveDerivativeX(i);if(Math.abs(s)<1e-6)break;i-=a/s;}if((i=t)<(r=0))return r;if(i>(n=1))return n;for(;r<n;){if(a=this.sampleCurveX(i),Math.abs(a-t)<e)return i;t>a?r=i:n=i,i=.5*(n-r)+r;}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=a;function a(t,e){this.x=t,this.y=e;}function o(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return !1;for(var r=0;r<t.length;r++)if(!o(t[r],e[r]))return !1;return !0}if(\"object\"==typeof t&&null!==t&&null!==e){if(\"object\"!=typeof e)return !1;if(Object.keys(t).length!==Object.keys(e).length)return !1;for(var n in t)if(!o(t[n],e[n]))return !1;return !0}return t===e}function s(t,e,n,i){var a=new r(t,e,n,i);return function(t){return a.solve(t)}}a.prototype={clone:function(){return new a(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,r=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=r,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=e*this.x-r*this.y,i=r*this.x+e*this.y;return this.x=n,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.x+r*(this.x-e.x)-n*(this.y-e.y),a=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=i,this.y=a,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},a.convert=function(t){return t instanceof a?t:Array.isArray(t)?new a(t[0],t[1]):t};var u=s(.25,.1,.25,1);function l(t,e,r){return Math.min(r,Math.max(e,t))}function p(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function c(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n<i.length;n+=1){var a=i[n];for(var o in a)t[o]=a[o];}return t}var h=1;function f(){return h++}function y(){return function t(e){return e?(e^16*Math.random()>>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function d(t){return !!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function m(t,e){t.forEach((function(t){e[t]&&(e[t]=e[t].bind(e));}));}function v(t,e){return -1!==t.indexOf(e,t.length-e.length)}function g(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function x(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function b(t){return Array.isArray(t)?t.map(b):\"object\"==typeof t&&t?g(t,b):t}var _={};function w(t){_[t]||(\"undefined\"!=typeof console&&console.warn(t),_[t]=!0);}function A(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function S(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r<n;i=r++)a=t[r],e+=((o=t[i]).x-a.x)*(a.y+o.y);return e}function k(){return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope}function I(t){var e={};if(t.replace(/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,(function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),\"\"})),e[\"max-age\"]){var r=parseInt(e[\"max-age\"],10);isNaN(r)?delete e[\"max-age\"]:e[\"max-age\"]=r;}return e}var z=null;function C(t){if(null==z){var e=t.navigator?t.navigator.userAgent:null;z=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")));}return z}function B(t){try{var e=self[t];return e.setItem(\"_mapbox_test_\",1),e.removeItem(\"_mapbox_test_\"),!0}catch(t){return !1}}var T,P,E,M,V=self.performance&&self.performance.now?self.performance.now.bind(self.performance):Date.now.bind(Date),F=self.requestAnimationFrame||self.mozRequestAnimationFrame||self.webkitRequestAnimationFrame||self.msRequestAnimationFrame,L=self.cancelAnimationFrame||self.mozCancelAnimationFrame||self.webkitCancelAnimationFrame||self.msCancelAnimationFrame,O={now:V,frame:function(t){var e=F(t);return {cancel:function(){return L(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=self.document.createElement(\"canvas\"),n=r.getContext(\"2d\");if(!n)throw new Error(\"failed to create canvas 2d context\");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return T||(T=self.document.createElement(\"a\")),T.href=t,T.href},hardwareConcurrency:self.navigator.hardwareConcurrency||4,get devicePixelRatio(){return self.devicePixelRatio},get prefersReducedMotion(){return !!self.matchMedia&&(null==P&&(P=self.matchMedia(\"(prefers-reduced-motion: reduce)\")),P.matches)}},D={API_URL:\"https://api.mapbox.com\",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf(\"https://api.mapbox.cn\")?\"https://events.mapbox.cn/events/v2\":0===this.API_URL.indexOf(\"https://api.mapbox.com\")?\"https://events.mapbox.com/events/v2\":null:null},FEEDBACK_URL:\"https://apps.mapbox.com/feedback\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},R={supported:!1,testSupport:function(t){if(U||!M)return;j?q(t):E=t;}},U=!1,j=!1;function q(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,M),t.isContextLost())return;R.supported=!0;}catch(t){}t.deleteTexture(e),U=!0;}self.document&&((M=self.document.createElement(\"img\")).onload=function(){E&&q(E),E=null,j=!0;},M.onerror=function(){U=!0,E=null;},M.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");var N=\"01\";var K=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken();};function X(t){return 0===t.indexOf(\"mapbox:\")}K.prototype._createSkuToken=function(){var t=function(){for(var t=\"\",e=0;e<10;e++)t+=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(62*Math.random())];return {token:[\"1\",N,t].join(\"\"),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt;},K.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},K.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},K.prototype.normalizeStyleURL=function(t,e){if(!X(t))return t;var r=H(t);return r.path=\"/styles/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},K.prototype.normalizeGlyphsURL=function(t,e){if(!X(t))return t;var r=H(t);return r.path=\"/fonts/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},K.prototype.normalizeSourceURL=function(t,e){if(!X(t))return t;var r=H(t);return r.path=\"/v4/\"+r.authority+\".json\",r.params.push(\"secure\"),this._makeAPIURL(r,this._customAccessToken||e)},K.prototype.normalizeSpriteURL=function(t,e,r,n){var i=H(t);return X(t)?(i.path=\"/styles/v1\"+i.path+\"/sprite\"+e+r,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=\"\"+e+r,Y(i))},K.prototype.normalizeTileURL=function(t,e,r){if(this._isSkuTokenExpired()&&this._createSkuToken(),!e||!X(e))return t;var n=H(t),i=O.devicePixelRatio>=2||512===r?\"@2x\":\"\",a=R.supported?\".webp\":\"$1\";return n.path=n.path.replace(/(\\.(png|jpg)\\d*)(?=$)/,\"\"+i+a),n.path=n.path.replace(/^.+\\/v4\\//,\"/\"),n.path=\"/v4\"+n.path,D.REQUIRE_ACCESS_TOKEN&&(D.ACCESS_TOKEN||this._customAccessToken)&&this._skuToken&&n.params.push(\"sku=\"+this._skuToken),this._makeAPIURL(n,this._customAccessToken)},K.prototype.canonicalizeTileURL=function(t){var e=H(t);if(!e.path.match(/(^\\/v4\\/)/)||!e.path.match(/\\.[\\w]+$/))return t;var r=\"mapbox://tiles/\";r+=e.path.replace(\"/v4/\",\"\");var n=e.params.filter((function(t){return !t.match(/^access_token=/)}));return n.length&&(r+=\"?\"+n.join(\"&\")),r},K.prototype.canonicalizeTileset=function(t,e){if(!X(e))return t.tiles||[];for(var r=[],n=0,i=t.tiles;n<i.length;n+=1){var a=i[n],o=this.canonicalizeTileURL(a);r.push(o);}return r},K.prototype._makeAPIURL=function(t,e){var r=\"See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\",n=H(D.API_URL);if(t.protocol=n.protocol,t.authority=n.authority,\"/\"!==n.path&&(t.path=\"\"+n.path+t.path),!D.REQUIRE_ACCESS_TOKEN)return Y(t);if(!(e=e||D.ACCESS_TOKEN))throw new Error(\"An API access token is required to use Mapbox GL. \"+r);if(\"s\"===e[0])throw new Error(\"Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). \"+r);return t.params=t.params.filter((function(t){return -1===t.indexOf(\"access_token\")})),t.params.push(\"access_token=\"+e),Y(t)};var Z=/^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/|\\?|$)/i;function G(t){return Z.test(t)}var J=/^(\\w+):\\/\\/([^/?]*)(\\/[^?]+)?\\??(.+)?/;function H(t){var e=t.match(J);if(!e)throw new Error(\"Unable to parse URL object\");return {protocol:e[1],authority:e[2],path:e[3]||\"/\",params:e[4]?e[4].split(\"&\"):[]}}function Y(t){var e=t.params.length?\"?\"+t.params.join(\"&\"):\"\";return t.protocol+\"://\"+t.authority+t.path+e}function $(t){if(!t)return null;var e,r=t.split(\".\");if(!r||3!==r.length)return null;try{return JSON.parse((e=r[1],decodeURIComponent(self.atob(e).split(\"\").map((function(t){return \"%\"+(\"00\"+t.charCodeAt(0).toString(16)).slice(-2)})).join(\"\"))))}catch(t){return null}}var W=function(t){this.type=t,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null;};W.prototype.getStorageKey=function(t){var e,r=$(D.ACCESS_TOKEN),n=\"\";return r&&r.u?(e=r.u,n=self.btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(function(t,e){return String.fromCharCode(Number(\"0x\"+e))})))):n=D.ACCESS_TOKEN||\"\",t?\"mapbox.eventData.\"+t+\":\"+n:\"mapbox.eventData:\"+n},W.prototype.fetchEventData=function(){var t=B(\"localStorage\"),e=this.getStorageKey(),r=this.getStorageKey(\"uuid\");if(t)try{var n=self.localStorage.getItem(e);n&&(this.eventData=JSON.parse(n));var i=self.localStorage.getItem(r);i&&(this.anonId=i);}catch(t){w(\"Unable to read from LocalStorage\");}},W.prototype.saveEventData=function(){var t=B(\"localStorage\"),e=this.getStorageKey(),r=this.getStorageKey(\"uuid\");if(t)try{self.localStorage.setItem(r,this.anonId),Object.keys(this.eventData).length>=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData));}catch(t){w(\"Unable to write to LocalStorage\");}},W.prototype.processRequests=function(t){},W.prototype.postEvent=function(t,e,r,n){var i=this;if(D.EVENTS_URL){var a=H(D.EVENTS_URL);a.params.push(\"access_token=\"+(n||D.ACCESS_TOKEN||\"\"));var o={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:\"1.6.1\",skuId:N,userId:this.anonId},s=e?c(o,e):o,u={url:Y(a),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([s])};this.pendingRequest=_t(u,(function(t){i.pendingRequest=null,r(t),i.saveEventData(),i.processRequests(n);}));}},W.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e);};var Q,tt,et=function(t){function e(){t.call(this,\"map.load\"),this.success={},this.skuToken=\"\";}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,n){this.skuToken=r,(D.EVENTS_URL&&n||D.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return X(t)||G(t)})))&&this.queueRequest({id:e,timestamp:Date.now()},n);},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),n=r.id,i=r.timestamp;n&&this.success[n]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=y()),this.postEvent(i,{skuToken:this.skuToken},(function(t){t||n&&(e.success[n]=!0);}),t));}},e}(W),rt=new(function(t){function e(e){t.call(this,\"appUserTurnstile\"),this._customAccessToken=e;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postTurnstileEvent=function(t,e){D.EVENTS_URL&&D.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return X(t)||G(t)}))&&this.queueRequest(Date.now(),e);},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var r=$(D.ACCESS_TOKEN),n=r?r.u:D.ACCESS_TOKEN,i=n!==this.eventData.tokenU;d(this.anonId)||(this.anonId=y(),i=!0);var a=this.queue.shift();if(this.eventData.lastSuccess){var o=new Date(this.eventData.lastSuccess),s=new Date(a),u=(a-this.eventData.lastSuccess)/864e5;i=i||u>=1||u<-1||o.getDate()!==s.getDate();}else i=!0;if(!i)return this.processRequests();this.postEvent(a,{\"enabled.telemetry\":!1},(function(t){t||(e.eventData.lastSuccess=a,e.eventData.tokenU=n);}),t);}},e}(W)),nt=rt.postTurnstileEvent.bind(rt),it=new et,at=it.postMapLoadEvent.bind(it),ot=\"mapbox-tiles\",st=500,ut=50,lt=42e4;function pt(){self.caches&&!Q&&(Q=self.caches.open(ot));}function ct(t,e,r){if(pt(),Q){var n={status:e.status,statusText:e.statusText,headers:new self.Headers};e.headers.forEach((function(t,e){return n.headers.set(e,t)}));var i=I(e.headers.get(\"Cache-Control\")||\"\");if(!i[\"no-store\"])i[\"max-age\"]&&n.headers.set(\"Expires\",new Date(r+1e3*i[\"max-age\"]).toUTCString()),new Date(n.headers.get(\"Expires\")).getTime()-r<lt||function(t,e){if(void 0===tt)try{new Response(new ReadableStream),tt=!0;}catch(t){tt=!1;}tt?e(t.body):t.blob().then(e);}(e,(function(e){var r=new self.Response(e,n);pt(),Q&&Q.then((function(e){return e.put(ht(t.url),r)})).catch((function(t){return w(t.message)}));}));}}function ht(t){var e=t.indexOf(\"?\");return e<0?t:t.slice(0,e)}function ft(t,e){if(pt(),!Q)return e(null);var r=ht(t.url);Q.then((function(t){t.match(r).then((function(n){var i=function(t){if(!t)return !1;var e=new Date(t.headers.get(\"Expires\")||0),r=I(t.headers.get(\"Cache-Control\")||\"\");return e>Date.now()&&!r[\"no-cache\"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i);})).catch(e);})).catch(e);}var yt=1/0;var dt={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(dt);var mt=function(t){function e(e,r,n){401===r&&G(n)&&(e+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+\": \"+this.message+\" (\"+this.status+\"): \"+this.url},e}(Error),vt=k()?function(){return self.worker&&self.worker.referrer}:function(){return (\"blob:\"===self.location.protocol?self.parent:self).location.href};function gt(t,e){var r,n=new self.AbortController,i=new self.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:vt(),signal:n.signal}),a=!1,o=!1,s=(r=i.url).indexOf(\"sku=\")>0&&G(r);\"json\"===t.type&&i.headers.set(\"Accept\",\"application/json\");var u=function(r,n,a){if(!o){if(r&&\"SecurityError\"!==r.message&&w(r),n&&a)return l(n);var u=Date.now();self.fetch(i).then((function(r){if(r.ok){var n=s?r.clone():null;return l(r,n,u)}return e(new mt(r.statusText,r.status,t.url))})).catch((function(t){20!==t.code&&e(new Error(t.message));}));}},l=function(r,n,s){(\"arrayBuffer\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((function(t){o||(n&&s&&ct(i,n,s),a=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")));})).catch((function(t){o||e(new Error(t.message));}));};return s?ft(i,u):u(null,null),{cancel:function(){o=!0,a||n.abort();}}}var xt=function(t,e){if(r=t.url,!(/^file:/.test(r)||/^file:/.test(vt())&&!/^\\w+:/.test(r))){if(self.fetch&&self.Request&&self.AbortController&&self.Request.prototype.hasOwnProperty(\"signal\"))return gt(t,e);if(k()&&self.worker&&self.worker.actor){return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}}var r;return function(t,e){var r=new self.XMLHttpRequest;for(var n in r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\"),t.headers)r.setRequestHeader(n,t.headers[n]);return \"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=function(){e(new Error(r.statusText));},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response);}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"));}else e(new mt(r.statusText,r.status,t.url));},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},bt=function(t,e){return xt(c(t,{type:\"arrayBuffer\"}),e)},_t=function(t,e){return xt(c(t,{method:\"POST\"}),e)};var wt,At;wt=[],At=0;var St=function(t,e){if(R.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),At>=D.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0;}};return wt.push(r),r}At++;var n=!1,i=function(){if(!n)for(n=!0,At--;wt.length&&At<D.MAX_PARALLEL_IMAGE_REQUESTS;){var t=wt.shift(),e=t.requestParameters,r=t.callback;t.cancelled||(t.cancel=St(e,r).cancel);}},a=bt(t,(function(t,r,n,a){if(i(),t)e(t);else if(r){var o=new self.Image;o.onload=function(){e(null,o),self.URL.revokeObjectURL(o.src);},o.onerror=function(){return e(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\"))};var s=new self.Blob([new Uint8Array(r)],{type:\"image/png\"});o.cacheControl=n,o.expires=a,o.src=r.byteLength?self.URL.createObjectURL(s):\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\";}}));return {cancel:function(){a.cancel(),i();}}};function kt(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e));}function It(t,e,r){if(r&&r[t]){var n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1);}}var zt=function(t,e){void 0===e&&(e={}),c(this,e),this.type=t;},Ct=function(t){function e(e,r){void 0===r&&(r={}),t.call(this,\"error\",c({error:e},r));}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(zt),Bt=function(){};Bt.prototype.on=function(t,e){return this._listeners=this._listeners||{},kt(t,e,this._listeners),this},Bt.prototype.off=function(t,e){return It(t,e,this._listeners),It(t,e,this._oneTimeListeners),this},Bt.prototype.once=function(t,e){return this._oneTimeListeners=this._oneTimeListeners||{},kt(t,e,this._oneTimeListeners),this},Bt.prototype.fire=function(t,e){\"string\"==typeof t&&(t=new zt(t,e||{}));var r=t.type;if(this.listens(r)){t.target=this;for(var n=0,i=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];n<i.length;n+=1){i[n].call(this,t);}for(var a=0,o=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];a<o.length;a+=1){var s=o[a];It(r,s,this._oneTimeListeners),s.call(this,t);}var u=this._eventedParent;u&&(c(t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),u.fire(t));}else t instanceof Ct&&console.error(t.error);return this},Bt.prototype.listens=function(t){return this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},Bt.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Tt={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{}},default:\"mapbox\"},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},expression_name:{type:\"enum\",values:{let:{group:\"Variable binding\"},var:{group:\"Variable binding\"},literal:{group:\"Types\"},array:{group:\"Types\"},at:{group:\"Lookup\"},in:{group:\"Lookup\"},case:{group:\"Decision\"},match:{group:\"Decision\"},coalesce:{group:\"Decision\"},step:{group:\"Ramps, scales, curves\"},interpolate:{group:\"Ramps, scales, curves\"},\"interpolate-hcl\":{group:\"Ramps, scales, curves\"},\"interpolate-lab\":{group:\"Ramps, scales, curves\"},ln2:{group:\"Math\"},pi:{group:\"Math\"},e:{group:\"Math\"},typeof:{group:\"Types\"},string:{group:\"Types\"},number:{group:\"Types\"},boolean:{group:\"Types\"},object:{group:\"Types\"},collator:{group:\"Types\"},format:{group:\"Types\"},image:{group:\"Types\"},\"number-format\":{group:\"Types\"},\"to-string\":{group:\"Types\"},\"to-number\":{group:\"Types\"},\"to-boolean\":{group:\"Types\"},\"to-rgba\":{group:\"Color\"},\"to-color\":{group:\"Types\"},rgb:{group:\"Color\"},rgba:{group:\"Color\"},get:{group:\"Lookup\"},has:{group:\"Lookup\"},length:{group:\"Lookup\"},properties:{group:\"Feature data\"},\"feature-state\":{group:\"Feature data\"},\"geometry-type\":{group:\"Feature data\"},id:{group:\"Feature data\"},zoom:{group:\"Zoom\"},\"heatmap-density\":{group:\"Heatmap\"},\"line-progress\":{group:\"Feature data\"},accumulated:{group:\"Feature data\"},\"+\":{group:\"Math\"},\"*\":{group:\"Math\"},\"-\":{group:\"Math\"},\"/\":{group:\"Math\"},\"%\":{group:\"Math\"},\"^\":{group:\"Math\"},sqrt:{group:\"Math\"},log10:{group:\"Math\"},ln:{group:\"Math\"},log2:{group:\"Math\"},sin:{group:\"Math\"},cos:{group:\"Math\"},tan:{group:\"Math\"},asin:{group:\"Math\"},acos:{group:\"Math\"},atan:{group:\"Math\"},min:{group:\"Math\"},max:{group:\"Math\"},round:{group:\"Math\"},abs:{group:\"Math\"},ceil:{group:\"Math\"},floor:{group:\"Math\"},\"==\":{group:\"Decision\"},\"!=\":{group:\"Decision\"},\">\":{group:\"Decision\"},\"<\":{group:\"Decision\"},\">=\":{group:\"Decision\"},\"<=\":{group:\"Decision\"},all:{group:\"Decision\"},any:{group:\"Decision\"},\"!\":{group:\"Decision\"},\"is-supported-script\":{group:\"String\"},upcase:{group:\"String\"},downcase:{group:\"String\"},concat:{group:\"String\"},\"resolved-locale\":{group:\"String\"}}},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}}},Pt=function(t,e,r,n){this.message=(t?t+\": \":\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);};function Et(t){var e=t.key,r=t.value;return r?[new Pt(e,r,\"constants have been deprecated as of v8\")]:[]}function Mt(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n<i.length;n+=1){var a=i[n];for(var o in a)t[o]=a[o];}return t}function Vt(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function Ft(t){if(Array.isArray(t))return t.map(Ft);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){var e={};for(var r in t)e[r]=Ft(t[r]);return e}return Vt(t)}var Lt=function(t){function e(e,r){t.call(this,r),this.message=r,this.key=e;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error),Ot=function(t,e){void 0===e&&(e=[]),this.parent=t,this.bindings={};for(var r=0,n=e;r<n.length;r+=1){var i=n[r],a=i[0],o=i[1];this.bindings[a]=o;}};Ot.prototype.concat=function(t){return new Ot(this,t)},Ot.prototype.get=function(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(t+\" not found in scope.\")},Ot.prototype.has=function(t){return !!this.bindings[t]||!!this.parent&&this.parent.has(t)};var Dt={kind:\"null\"},Rt={kind:\"number\"},Ut={kind:\"string\"},jt={kind:\"boolean\"},qt={kind:\"color\"},Nt={kind:\"object\"},Kt={kind:\"value\"},Xt={kind:\"collator\"},Zt={kind:\"formatted\"},Gt={kind:\"resolvedImage\"};function Jt(t,e){return {kind:\"array\",itemType:t,N:e}}function Ht(t){if(\"array\"===t.kind){var e=Ht(t.itemType);return \"number\"==typeof t.N?\"array<\"+e+\", \"+t.N+\">\":\"value\"===t.itemType.kind?\"array\":\"array<\"+e+\">\"}return t.kind}var Yt=[Dt,Rt,Ut,jt,qt,Zt,Nt,Jt(Kt),Gt];function $t(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!$t(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(var r=0,n=Yt;r<n.length;r+=1){if(!$t(n[r],e))return null}}return \"Expected \"+Ht(t)+\" but found \"+Ht(e)+\" instead.\"}var Wt=e((function(t,e){var r={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function n(t){return (t=Math.round(t))<0?0:t>255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return \"%\"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return \"%\"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,\"\").toLowerCase();if(i in r)return r[i].slice();if(\"#\"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var u=i.indexOf(\"(\"),l=i.indexOf(\")\");if(-1!==u&&l+1===i.length){var p=i.substr(0,u),c=i.substr(u+1,l-(u+1)).split(\",\"),h=1;switch(p){case\"rgba\":if(4!==c.length)return null;h=o(c.pop());case\"rgb\":return 3!==c.length?null:[a(c[0]),a(c[1]),a(c[2]),h];case\"hsla\":if(4!==c.length)return null;h=o(c.pop());case\"hsl\":if(3!==c.length)return null;var f=(parseFloat(c[0])%360+360)%360/360,y=o(c[1]),d=o(c[2]),m=d<=.5?d*(y+1):d+y-d*y,v=2*d-m;return [n(255*s(v,m,f+1/3)),n(255*s(v,m,f)),n(255*s(v,m,f-1/3)),h];default:return null}}return null};}catch(t){}})).parseCSSColor,Qt=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n;};Qt.parse=function(t){if(t){if(t instanceof Qt)return t;if(\"string\"==typeof t){var e=Wt(t);if(e)return new Qt(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},Qt.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return \"rgba(\"+Math.round(e)+\",\"+Math.round(r)+\",\"+Math.round(n)+\",\"+i+\")\"},Qt.prototype.toArray=function(){var t=this.r,e=this.g,r=this.b,n=this.a;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]},Qt.black=new Qt(0,0,0,1),Qt.white=new Qt(1,1,1,1),Qt.transparent=new Qt(0,0,0,0),Qt.red=new Qt(1,0,0,1);var te=function(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"});};te.prototype.compare=function(t,e){return this.collator.compare(t,e)},te.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var ee=function(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i;},re=function(t){this.sections=t;};re.fromString=function(t){return new re([new ee(t,null,null,null,null)])},re.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some((function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length}))},re.factory=function(t){return t instanceof re?t:re.fromString(t)},re.prototype.toString=function(){return 0===this.sections.length?\"\":this.sections.map((function(t){return t.text})).join(\"\")},re.prototype.serialize=function(){for(var t=[\"format\"],e=0,r=this.sections;e<r.length;e+=1){var n=r[e];if(n.image)t.push([\"image\",n.image.name]);else{t.push(n.text);var i={};n.fontStack&&(i[\"text-font\"]=[\"literal\",n.fontStack.split(\",\")]),n.scale&&(i[\"font-scale\"]=n.scale),n.textColor&&(i[\"text-color\"]=[\"rgba\"].concat(n.textColor.toArray())),t.push(i);}}return t};var ne=function(t){this.name=t.name,this.available=t.available;};function ie(t,e,r,n){return \"number\"==typeof t&&t>=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:\"Invalid rgba value [\"+[t,e,r,n].join(\", \")+\"]: 'a' must be between 0 and 1.\":\"Invalid rgba value [\"+(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")+\"]: 'r', 'g', and 'b' must be between 0 and 255.\"}function ae(t){if(null===t)return Dt;if(\"string\"==typeof t)return Ut;if(\"boolean\"==typeof t)return jt;if(\"number\"==typeof t)return Rt;if(t instanceof Qt)return qt;if(t instanceof te)return Xt;if(t instanceof re)return Zt;if(t instanceof ne)return Gt;if(Array.isArray(t)){for(var e,r=t.length,n=0,i=t;n<i.length;n+=1){var a=ae(i[n]);if(e){if(e===a)continue;e=Kt;break}e=a;}return Jt(e||Kt,r)}return Nt}function oe(t){var e=typeof t;return null===t?\"\":\"string\"===e||\"number\"===e||\"boolean\"===e?String(t):t instanceof Qt||t instanceof re||t instanceof ne?t.toString():JSON.stringify(t)}ne.prototype.toString=function(){return this.name},ne.fromString=function(t){return new ne({name:t,available:!1})},ne.prototype.serialize=function(){return [\"image\",this.name]};var se=function(t,e){this.type=t,this.value=e;};se.parse=function(t,e){if(2!==t.length)return e.error(\"'literal' expression requires exactly one argument, but found \"+(t.length-1)+\" instead.\");if(!function t(e){if(null===e)return !0;if(\"string\"==typeof e)return !0;if(\"boolean\"==typeof e)return !0;if(\"number\"==typeof e)return !0;if(e instanceof Qt)return !0;if(e instanceof te)return !0;if(e instanceof re)return !0;if(e instanceof ne)return !0;if(Array.isArray(e)){for(var r=0,n=e;r<n.length;r+=1){if(!t(n[r]))return !1}return !0}if(\"object\"==typeof e){for(var i in e)if(!t(e[i]))return !1;return !0}return !1}(t[1]))return e.error(\"invalid value\");var r=t[1],n=ae(r),i=e.expectedType;return \"array\"!==n.kind||0!==n.N||!i||\"array\"!==i.kind||\"number\"==typeof i.N&&0!==i.N||(n=i),new se(n,r)},se.prototype.evaluate=function(){return this.value},se.prototype.eachChild=function(){},se.prototype.possibleOutputs=function(){return [this.value]},se.prototype.serialize=function(){return \"array\"===this.type.kind||\"object\"===this.type.kind?[\"literal\",this.value]:this.value instanceof Qt?[\"rgba\"].concat(this.value.toArray()):this.value instanceof re?this.value.serialize():this.value};var ue=function(t){this.name=\"ExpressionEvaluationError\",this.message=t;};ue.prototype.toJSON=function(){return this.message};var le={string:Ut,number:Rt,boolean:jt,object:Nt},pe=function(t,e){this.type=t,this.args=e;};pe.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r,n=1,i=t[0];if(\"array\"===i){var a,o;if(t.length>2){var s=t[1];if(\"string\"!=typeof s||!(s in le)||\"object\"===s)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);a=le[s],n++;}else a=Kt;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);o=t[2],n++;}r=Jt(a,o);}else r=le[i];for(var u=[];n<t.length;n++){var l=e.parse(t[n],n,Kt);if(!l)return null;u.push(l);}return new pe(r,u)},pe.prototype.evaluate=function(t){for(var e=0;e<this.args.length;e++){var r=this.args[e].evaluate(t);if(!$t(this.type,ae(r)))return r;if(e===this.args.length-1)throw new ue(\"Expected value to be of type \"+Ht(this.type)+\", but found \"+Ht(ae(r))+\" instead.\")}return null},pe.prototype.eachChild=function(t){this.args.forEach(t);},pe.prototype.possibleOutputs=function(){var t;return (t=[]).concat.apply(t,this.args.map((function(t){return t.possibleOutputs()})))},pe.prototype.serialize=function(){var t=this.type,e=[t.kind];if(\"array\"===t.kind){var r=t.itemType;if(\"string\"===r.kind||\"number\"===r.kind||\"boolean\"===r.kind){e.push(r.kind);var n=t.N;(\"number\"==typeof n||this.args.length>1)&&e.push(n);}}return e.concat(this.args.map((function(t){return t.serialize()})))};var ce=function(t){this.type=Zt,this.sections=t;};ce.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");for(var n=[],i=!1,a=1;a<=t.length-1;++a){var o=t[a];if(i&&\"object\"==typeof o&&!Array.isArray(o)){i=!1;var s=null;if(o[\"font-scale\"]&&!(s=e.parse(o[\"font-scale\"],1,Rt)))return null;var u=null;if(o[\"text-font\"]&&!(u=e.parse(o[\"text-font\"],1,Jt(Ut))))return null;var l=null;if(o[\"text-color\"]&&!(l=e.parse(o[\"text-color\"],1,qt)))return null;var p=n[n.length-1];p.scale=s,p.font=u,p.textColor=l;}else{var c=e.parse(t[a],1,Kt);if(!c)return null;var h=c.type.kind;if(\"string\"!==h&&\"value\"!==h&&\"null\"!==h&&\"resolvedImage\"!==h)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:c,scale:null,font:null,textColor:null});}}return new ce(n)},ce.prototype.evaluate=function(t){return new re(this.sections.map((function(e){var r=e.content.evaluate(t);return ae(r)===Gt?new ee(\"\",r,null,null,null):new ee(oe(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))},ce.prototype.eachChild=function(t){for(var e=0,r=this.sections;e<r.length;e+=1){var n=r[e];t(n.content),n.scale&&t(n.scale),n.font&&t(n.font),n.textColor&&t(n.textColor);}},ce.prototype.possibleOutputs=function(){return [void 0]},ce.prototype.serialize=function(){for(var t=[\"format\"],e=0,r=this.sections;e<r.length;e+=1){var n=r[e];t.push(n.content.serialize());var i={};n.scale&&(i[\"font-scale\"]=n.scale.serialize()),n.font&&(i[\"text-font\"]=n.font.serialize()),n.textColor&&(i[\"text-color\"]=n.textColor.serialize()),t.push(i);}return t};var he=function(t){this.type=Gt,this.input=t;};he.parse=function(t,e){if(2!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,Ut);return r?new he(r):e.error(\"No image name provided.\")},he.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=!1;return t.availableImages&&t.availableImages.indexOf(e)>-1&&(r=!0),new ne({name:e,available:r})},he.prototype.eachChild=function(t){t(this.input);},he.prototype.possibleOutputs=function(){return [void 0]},he.prototype.serialize=function(){return [\"image\",this.input.serialize()]};var fe={\"to-boolean\":jt,\"to-color\":qt,\"to-number\":Rt,\"to-string\":Ut},ye=function(t,e){this.type=t,this.args=e;};ye.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");for(var n=fe[r],i=[],a=1;a<t.length;a++){var o=e.parse(t[a],a,Kt);if(!o)return null;i.push(o);}return new ye(n,i)},ye.prototype.evaluate=function(t){if(\"boolean\"===this.type.kind)return Boolean(this.args[0].evaluate(t));if(\"color\"===this.type.kind){for(var e,r,n=0,i=this.args;n<i.length;n+=1){if(r=null,(e=i[n].evaluate(t))instanceof Qt)return e;if(\"string\"==typeof e){var a=t.parseColor(e);if(a)return a}else if(Array.isArray(e)&&!(r=e.length<3||e.length>4?\"Invalid rbga value \"+JSON.stringify(e)+\": expected an array containing either three or four numeric values.\":ie(e[0],e[1],e[2],e[3])))return new Qt(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ue(r||\"Could not parse color from value '\"+(\"string\"==typeof e?e:String(JSON.stringify(e)))+\"'\")}if(\"number\"===this.type.kind){for(var o=null,s=0,u=this.args;s<u.length;s+=1){if(null===(o=u[s].evaluate(t)))return 0;var l=Number(o);if(!isNaN(l))return l}throw new ue(\"Could not convert \"+JSON.stringify(o)+\" to number.\")}return \"formatted\"===this.type.kind?re.fromString(oe(this.args[0].evaluate(t))):\"resolvedImage\"===this.type.kind?ne.fromString(oe(this.args[0].evaluate(t))):oe(this.args[0].evaluate(t))},ye.prototype.eachChild=function(t){this.args.forEach(t);},ye.prototype.possibleOutputs=function(){var t;return (t=[]).concat.apply(t,this.args.map((function(t){return t.possibleOutputs()})))},ye.prototype.serialize=function(){if(\"formatted\"===this.type.kind)return new ce([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if(\"resolvedImage\"===this.type.kind)return new he(this.args[0]).serialize();var t=[\"to-\"+this.type.kind];return this.eachChild((function(e){t.push(e.serialize());})),t};var de=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],me=function(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null;};me.prototype.id=function(){return this.feature&&\"id\"in this.feature?this.feature.id:null},me.prototype.geometryType=function(){return this.feature?\"number\"==typeof this.feature.type?de[this.feature.type]:this.feature.type:null},me.prototype.properties=function(){return this.feature&&this.feature.properties||{}},me.prototype.parseColor=function(t){var e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=Qt.parse(t)),e};var ve=function(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n;};ve.prototype.evaluate=function(t){return this._evaluate(t,this.args)},ve.prototype.eachChild=function(t){this.args.forEach(t);},ve.prototype.possibleOutputs=function(){return [void 0]},ve.prototype.serialize=function(){return [this.name].concat(this.args.map((function(t){return t.serialize()})))},ve.parse=function(t,e){var r,n=t[0],i=ve.definitions[n];if(!i)return e.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0);for(var a=Array.isArray(i)?i[0]:i.type,o=Array.isArray(i)?[[i[1],i[2]]]:i.overloads,s=o.filter((function(e){var r=e[0];return !Array.isArray(r)||r.length===t.length-1})),u=null,l=0,p=s;l<p.length;l+=1){var c=p[l],h=c[0],f=c[1];u=new Ae(e.registry,e.path,null,e.scope);for(var y=[],d=!1,m=1;m<t.length;m++){var v=t[m],g=Array.isArray(h)?h[m-1]:h.type,x=u.parse(v,1+y.length,g);if(!x){d=!0;break}y.push(x);}if(!d)if(Array.isArray(h)&&h.length!==y.length)u.error(\"Expected \"+h.length+\" arguments, but found \"+y.length+\" instead.\");else{for(var b=0;b<y.length;b++){var _=Array.isArray(h)?h[b]:h.type,w=y[b];u.concat(b+1).checkSubtype(_,w.type);}if(0===u.errors.length)return new ve(n,a,f,y)}}if(1===s.length)(r=e.errors).push.apply(r,u.errors);else{for(var A=(s.length?s:o).map((function(t){var e,r=t[0];return e=r,Array.isArray(e)?\"(\"+e.map(Ht).join(\", \")+\")\":\"(\"+Ht(e.type)+\"...)\"})).join(\" | \"),S=[],k=1;k<t.length;k++){var I=e.parse(t[k],1+S.length);if(!I)return null;S.push(Ht(I.type));}e.error(\"Expected arguments of type \"+A+\", but found (\"+S.join(\", \")+\") instead.\");}return null},ve.register=function(t,e){for(var r in ve.definitions=e,e)t[r]=ve;};var ge=function(t,e,r){this.type=Xt,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e;};function xe(t){if(t instanceof ve){if(\"get\"===t.name&&1===t.args.length)return !1;if(\"feature-state\"===t.name)return !1;if(\"has\"===t.name&&1===t.args.length)return !1;if(\"properties\"===t.name||\"geometry-type\"===t.name||\"id\"===t.name)return !1;if(/^filter-/.test(t.name))return !1}var e=!0;return t.eachChild((function(t){e&&!xe(t)&&(e=!1);})),e}function be(t){if(t instanceof ve&&\"feature-state\"===t.name)return !1;var e=!0;return t.eachChild((function(t){e&&!be(t)&&(e=!1);})),e}function _e(t,e){if(t instanceof ve&&e.indexOf(t.name)>=0)return !1;var r=!0;return t.eachChild((function(t){r&&!_e(t,e)&&(r=!1);})),r}ge.parse=function(t,e){if(2!==t.length)return e.error(\"Expected one argument.\");var r=t[1];if(\"object\"!=typeof r||Array.isArray(r))return e.error(\"Collator options argument must be an object.\");var n=e.parse(void 0!==r[\"case-sensitive\"]&&r[\"case-sensitive\"],1,jt);if(!n)return null;var i=e.parse(void 0!==r[\"diacritic-sensitive\"]&&r[\"diacritic-sensitive\"],1,jt);if(!i)return null;var a=null;return r.locale&&!(a=e.parse(r.locale,1,Ut))?null:new ge(n,i,a)},ge.prototype.evaluate=function(t){return new te(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)},ge.prototype.eachChild=function(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);},ge.prototype.possibleOutputs=function(){return [void 0]},ge.prototype.serialize=function(){var t={};return t[\"case-sensitive\"]=this.caseSensitive.serialize(),t[\"diacritic-sensitive\"]=this.diacriticSensitive.serialize(),this.locale&&(t.locale=this.locale.serialize()),[\"collator\",t]};var we=function(t,e){this.type=e.type,this.name=t,this.boundExpression=e;};we.parse=function(t,e){if(2!==t.length||\"string\"!=typeof t[1])return e.error(\"'var' expression requires exactly one string literal argument.\");var r=t[1];return e.scope.has(r)?new we(r,e.scope.get(r)):e.error('Unknown variable \"'+r+'\". Make sure \"'+r+'\" has been bound in an enclosing \"let\" expression before using it.',1)},we.prototype.evaluate=function(t){return this.boundExpression.evaluate(t)},we.prototype.eachChild=function(){},we.prototype.possibleOutputs=function(){return [void 0]},we.prototype.serialize=function(){return [\"var\",this.name]};var Ae=function(t,e,r,n,i){void 0===e&&(e=[]),void 0===n&&(n=new Ot),void 0===i&&(i=[]),this.registry=t,this.path=e,this.key=e.map((function(t){return \"[\"+t+\"]\"})).join(\"\"),this.scope=n,this.errors=i,this.expectedType=r;};function Se(t,e){for(var r,n,i=t.length-1,a=0,o=i,s=0;a<=o;)if(r=t[s=Math.floor((a+o)/2)],n=t[s+1],r<=e){if(s===i||e<n)return s;a=s+1;}else{if(!(r>e))throw new ue(\"Input is not a number.\");o=s-1;}return 0}Ae.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},Ae.prototype._parse=function(t,e){function r(t,e,r){return \"assert\"===r?new pe(e,[t]):\"coerce\"===r?new ye(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');var n=t[0];if(\"string\"!=typeof n)return this.error(\"Expression name must be a string, but found \"+typeof n+' instead. If you wanted a literal array, use [\"literal\", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if(\"string\"!==o.kind&&\"number\"!==o.kind&&\"boolean\"!==o.kind&&\"object\"!==o.kind&&\"array\"!==o.kind||\"value\"!==s.kind)if(\"color\"!==o.kind&&\"formatted\"!==o.kind&&\"resolvedImage\"!==o.kind||\"value\"!==s.kind&&\"string\"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||\"coerce\");else a=r(a,o,e.typeAnnotation||\"assert\");}if(!(a instanceof se)&&\"resolvedImage\"!==a.type.kind&&function t(e){if(e instanceof we)return t(e.boundExpression);if(e instanceof ve&&\"error\"===e.name)return !1;if(e instanceof ge)return !1;var r=e instanceof ye||e instanceof pe;var n=!0;e.eachChild((function(e){n=r?n&&t(e):n&&e instanceof se;}));if(!n)return !1;return xe(e)&&_e(e,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}(a)){var u=new me;try{a=new se(a.type,a.evaluate(u));}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0)}return void 0===t?this.error(\"'undefined' value invalid. Use null instead.\"):\"object\"==typeof t?this.error('Bare objects invalid. Use [\"literal\", {...}] instead.'):this.error(\"Expected an array, but found \"+typeof t+\" instead.\")},Ae.prototype.concat=function(t,e,r){var n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Ae(this.registry,n,e||null,i,this.errors)},Ae.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=\"\"+this.key+e.map((function(t){return \"[\"+t+\"]\"})).join(\"\");this.errors.push(new Lt(n,t));},Ae.prototype.checkSubtype=function(t,e){var r=$t(t,e);return r&&this.error(r),r};var ke=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n<i.length;n+=1){var a=i[n],o=a[0],s=a[1];this.labels.push(o),this.outputs.push(s);}};function Ie(t,e,r){return t*(1-r)+e*r}ke.parse=function(t,e){if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");var r=e.parse(t[1],1,Rt);if(!r)return null;var n=[],i=null;e.expectedType&&\"value\"!==e.expectedType.kind&&(i=e.expectedType);for(var a=1;a<t.length;a+=2){var o=1===a?-1/0:t[a],s=t[a+1],u=a,l=a+1;if(\"number\"!=typeof o)return e.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',u);if(n.length&&n[n.length-1][0]>=o)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',u);var p=e.parse(s,l,i);if(!p)return null;i=i||p.type,n.push([o,p]);}return new ke(i,r,n)},ke.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Se(e,n)].evaluate(t)},ke.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e<r.length;e+=1){t(r[e]);}},ke.prototype.possibleOutputs=function(){var t;return (t=[]).concat.apply(t,this.outputs.map((function(t){return t.possibleOutputs()})))},ke.prototype.serialize=function(){for(var t=[\"step\",this.input.serialize()],e=0;e<this.labels.length;e++)e>0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var ze=Object.freeze({__proto__:null,number:Ie,color:function(t,e,r){return new Qt(Ie(t.r,e.r,r),Ie(t.g,e.g,r),Ie(t.b,e.b,r),Ie(t.a,e.a,r))},array:function(t,e,r){return t.map((function(t,n){return Ie(t,e[n],r)}))}}),Ce=.95047,Be=1,Te=1.08883,Pe=4/29,Ee=6/29,Me=3*Ee*Ee,Ve=Ee*Ee*Ee,Fe=Math.PI/180,Le=180/Math.PI;function Oe(t){return t>Ve?Math.pow(t,1/3):t/Me+Pe}function De(t){return t>Ee?t*t*t:Me*(t-Pe)}function Re(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ue(t){return (t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function je(t){var e=Ue(t.r),r=Ue(t.g),n=Ue(t.b),i=Oe((.4124564*e+.3575761*r+.1804375*n)/Ce),a=Oe((.2126729*e+.7151522*r+.072175*n)/Be);return {l:116*a-16,a:500*(i-a),b:200*(a-Oe((.0193339*e+.119192*r+.9503041*n)/Te)),alpha:t.a}}function qe(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=Be*De(e),r=Ce*De(r),n=Te*De(n),new Qt(Re(3.2404542*r-1.5371385*e-.4985314*n),Re(-.969266*r+1.8760108*e+.041556*n),Re(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function Ne(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var Ke={forward:je,reverse:qe,interpolate:function(t,e,r){return {l:Ie(t.l,e.l,r),a:Ie(t.a,e.a,r),b:Ie(t.b,e.b,r),alpha:Ie(t.alpha,e.alpha,r)}}},Xe={forward:function(t){var e=je(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*Le;return {h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*Fe,r=t.c;return qe({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return {h:Ne(t.h,e.h,r),c:Ie(t.c,e.c,r),l:Ie(t.l,e.l,r),alpha:Ie(t.alpha,e.alpha,r)}}},Ze=Object.freeze({__proto__:null,lab:Ke,hcl:Xe}),Ge=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a<o.length;a+=1){var s=o[a],u=s[0],l=s[1];this.labels.push(u),this.outputs.push(l);}};function Je(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}Ge.interpolationFactor=function(t,e,n,i){var a=0;if(\"exponential\"===t.name)a=Je(e,t.base,n,i);else if(\"linear\"===t.name)a=Je(e,1,n,i);else if(\"cubic-bezier\"===t.name){var o=t.controlPoints;a=new r(o[0],o[1],o[2],o[3]).solve(Je(e,1,n,i));}return a},Ge.parse=function(t,e){var r=t[0],n=t[1],i=t[2],a=t.slice(3);if(!Array.isArray(n)||0===n.length)return e.error(\"Expected an interpolation type expression.\",1);if(\"linear\"===n[0])n={name:\"linear\"};else if(\"exponential\"===n[0]){var o=n[1];if(\"number\"!=typeof o)return e.error(\"Exponential interpolation requires a numeric base.\",1,1);n={name:\"exponential\",base:o};}else{if(\"cubic-bezier\"!==n[0])return e.error(\"Unknown interpolation type \"+String(n[0]),1,0);var s=n.slice(1);if(4!==s.length||s.some((function(t){return \"number\"!=typeof t||t<0||t>1})))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:s};}if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(i=e.parse(i,2,Rt)))return null;var u=[],l=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?l=qt:e.expectedType&&\"value\"!==e.expectedType.kind&&(l=e.expectedType);for(var p=0;p<a.length;p+=2){var c=a[p],h=a[p+1],f=p+3,y=p+4;if(\"number\"!=typeof c)return e.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',f);if(u.length&&u[u.length-1][0]>=c)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',f);var d=e.parse(h,y,l);if(!d)return null;l=l||d.type,u.push([c,d]);}return \"number\"===l.kind||\"color\"===l.kind||\"array\"===l.kind&&\"number\"===l.itemType.kind&&\"number\"==typeof l.N?new Ge(l,r,n,i,u):e.error(\"Type \"+Ht(l)+\" is not interpolatable.\")},Ge.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=Se(e,n),o=e[a],s=e[a+1],u=Ge.interpolationFactor(this.interpolation,n,o,s),l=r[a].evaluate(t),p=r[a+1].evaluate(t);return \"interpolate\"===this.operator?ze[this.type.kind.toLowerCase()](l,p,u):\"interpolate-hcl\"===this.operator?Xe.reverse(Xe.interpolate(Xe.forward(l),Xe.forward(p),u)):Ke.reverse(Ke.interpolate(Ke.forward(l),Ke.forward(p),u))},Ge.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e<r.length;e+=1){t(r[e]);}},Ge.prototype.possibleOutputs=function(){var t;return (t=[]).concat.apply(t,this.outputs.map((function(t){return t.possibleOutputs()})))},Ge.prototype.serialize=function(){var t;t=\"linear\"===this.interpolation.name?[\"linear\"]:\"exponential\"===this.interpolation.name?1===this.interpolation.base?[\"linear\"]:[\"exponential\",this.interpolation.base]:[\"cubic-bezier\"].concat(this.interpolation.controlPoints);for(var e=[this.operator,t,this.input.serialize()],r=0;r<this.labels.length;r++)e.push(this.labels[r],this.outputs[r].serialize());return e};var He=function(t,e){this.type=t,this.args=e;};He.parse=function(t,e){if(t.length<2)return e.error(\"Expectected at least one argument.\");var r=null,n=e.expectedType;n&&\"value\"!==n.kind&&(r=n);for(var i=[],a=0,o=t.slice(1);a<o.length;a+=1){var s=o[a],u=e.parse(s,1+i.length,r,void 0,{typeAnnotation:\"omit\"});if(!u)return null;r=r||u.type,i.push(u);}var l=n&&i.some((function(t){return $t(n,t.type)}));return new He(l?Kt:r,i)},He.prototype.evaluate=function(t){for(var e,r=null,n=0,i=0,a=this.args;i<a.length;i+=1){if(n++,(r=a[i].evaluate(t))&&r instanceof ne&&!r.available&&(e||(e=r.name),r=null,n===this.args.length&&(r=e)),null!==r)break}return r},He.prototype.eachChild=function(t){this.args.forEach(t);},He.prototype.possibleOutputs=function(){var t;return (t=[]).concat.apply(t,this.args.map((function(t){return t.possibleOutputs()})))},He.prototype.serialize=function(){var t=[\"coalesce\"];return this.eachChild((function(e){t.push(e.serialize());})),t};var Ye=function(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;};Ye.prototype.evaluate=function(t){return this.result.evaluate(t)},Ye.prototype.eachChild=function(t){for(var e=0,r=this.bindings;e<r.length;e+=1){t(r[e][1]);}t(this.result);},Ye.parse=function(t,e){if(t.length<4)return e.error(\"Expected at least 3 arguments, but found \"+(t.length-1)+\" instead.\");for(var r=[],n=1;n<t.length-1;n+=2){var i=t[n];if(\"string\"!=typeof i)return e.error(\"Expected string, but found \"+typeof i+\" instead.\",n);if(/[^a-zA-Z0-9_]/.test(i))return e.error(\"Variable names must contain only alphanumeric characters or '_'.\",n);var a=e.parse(t[n+1],n+1);if(!a)return null;r.push([i,a]);}var o=e.parse(t[t.length-1],t.length-1,e.expectedType,r);return o?new Ye(r,o):null},Ye.prototype.possibleOutputs=function(){return this.result.possibleOutputs()},Ye.prototype.serialize=function(){for(var t=[\"let\"],e=0,r=this.bindings;e<r.length;e+=1){var n=r[e],i=n[0],a=n[1];t.push(i,a.serialize());}return t.push(this.result.serialize()),t};var $e=function(t,e,r){this.type=t,this.index=e,this.input=r;};$e.parse=function(t,e){if(3!==t.length)return e.error(\"Expected 2 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Rt),n=e.parse(t[2],2,Jt(e.expectedType||Kt));if(!r||!n)return null;var i=n.type;return new $e(i.itemType,r,n)},$e.prototype.evaluate=function(t){var e=this.index.evaluate(t),r=this.input.evaluate(t);if(e<0)throw new ue(\"Array index out of bounds: \"+e+\" < 0.\");if(e>=r.length)throw new ue(\"Array index out of bounds: \"+e+\" > \"+(r.length-1)+\".\");if(e!==Math.floor(e))throw new ue(\"Array index must be an integer, but found \"+e+\" instead.\");return r[e]},$e.prototype.eachChild=function(t){t(this.index),t(this.input);},$e.prototype.possibleOutputs=function(){return [void 0]},$e.prototype.serialize=function(){return [\"at\",this.index.serialize(),this.input.serialize()]};var We=function(t,e){this.type=jt,this.needle=t,this.haystack=e;};We.parse=function(t,e){if(3!==t.length)return e.error(\"Expected 2 arguments, but found \"+(t.length-1)+\" instead.\");var r,n=e.parse(t[1],1,Kt),i=e.parse(t[2],2,Kt);return n&&i?\"boolean\"!==(r=n.type).kind&&\"string\"!==r.kind&&\"number\"!==r.kind&&\"null\"!==r.kind&&\"value\"!==r.kind?e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Ht(n.type)+\" instead\"):new We(n,i):null},We.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!e||!r)return !1;if(!function(t){return \"boolean\"==typeof t||\"string\"==typeof t||\"number\"==typeof t}(e))throw new ue(\"Expected first argument to be of type boolean, string or number, but found \"+Ht(ae(e))+\" instead.\");if(!function(t){return Array.isArray(t)||\"string\"==typeof t}(r))throw new ue(\"Expected second argument to be of type array or string, but found \"+Ht(ae(r))+\" instead.\");return r.indexOf(e)>=0},We.prototype.eachChild=function(t){t(this.needle),t(this.haystack);},We.prototype.possibleOutputs=function(){return [!0,!1]},We.prototype.serialize=function(){return [\"in\",this.needle.serialize(),this.haystack.serialize()]};var Qe=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a;};Qe.parse=function(t,e){if(t.length<5)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");var r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;o<t.length-1;o+=2){var s=t[o],u=t[o+1];Array.isArray(s)||(s=[s]);var l=e.concat(o);if(0===s.length)return l.error(\"Expected at least one branch label.\");for(var p=0,c=s;p<c.length;p+=1){var h=c[p];if(\"number\"!=typeof h&&\"string\"!=typeof h)return l.error(\"Branch labels must be numbers or strings.\");if(\"number\"==typeof h&&Math.abs(h)>Number.MAX_SAFE_INTEGER)return l.error(\"Branch labels must be integers no larger than \"+Number.MAX_SAFE_INTEGER+\".\");if(\"number\"==typeof h&&Math.floor(h)!==h)return l.error(\"Numeric branch labels must be integer values.\");if(r){if(l.checkSubtype(r,ae(h)))return null}else r=ae(h);if(void 0!==i[String(h)])return l.error(\"Branch labels must be unique.\");i[String(h)]=a.length;}var f=e.parse(u,o,n);if(!f)return null;n=n||f.type,a.push(f);}var y=e.parse(t[1],1,Kt);if(!y)return null;var d=e.parse(t[t.length-1],t.length-1,n);return d?\"value\"!==y.type.kind&&e.concat(1).checkSubtype(r,y.type)?null:new Qe(r,n,y,i,a,d):null},Qe.prototype.evaluate=function(t){var e=this.input.evaluate(t);return (ae(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},Qe.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);},Qe.prototype.possibleOutputs=function(){var t;return (t=[]).concat.apply(t,this.outputs.map((function(t){return t.possibleOutputs()}))).concat(this.otherwise.possibleOutputs())},Qe.prototype.serialize=function(){for(var t=this,e=[\"match\",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i<a.length;i+=1){var o=a[i];void 0===(c=n[this.cases[o]])?(n[this.cases[o]]=r.length,r.push([this.cases[o],[o]])):r[c][1].push(o);}for(var s=function(e){return \"number\"===t.inputType.kind?Number(e):e},u=0,l=r;u<l.length;u+=1){var p=l[u],c=p[0],h=p[1];1===h.length?e.push(s(h[0])):e.push(h.map(s)),e.push(this.outputs[outputIndex$1].serialize());}return e.push(this.otherwise.serialize()),e};var tr=function(t,e,r){this.type=t,this.branches=e,this.otherwise=r;};function er(t,e){return \"==\"===t||\"!=\"===t?\"boolean\"===e.kind||\"string\"===e.kind||\"number\"===e.kind||\"null\"===e.kind||\"value\"===e.kind:\"string\"===e.kind||\"number\"===e.kind||\"value\"===e.kind}function rr(t,e,r,n){return 0===n.compare(e,r)}function nr(t,e,r){var n=\"==\"!==t&&\"!=\"!==t;return function(){function i(t,e,r){this.type=jt,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument=\"value\"===t.type.kind||\"value\"===e.type.kind;}return i.parse=function(t,e){if(3!==t.length&&4!==t.length)return e.error(\"Expected two or three arguments.\");var r=t[0],a=e.parse(t[1],1,Kt);if(!a)return null;if(!er(r,a.type))return e.concat(1).error('\"'+r+\"\\\" comparisons are not supported for type '\"+Ht(a.type)+\"'.\");var o=e.parse(t[2],2,Kt);if(!o)return null;if(!er(r,o.type))return e.concat(2).error('\"'+r+\"\\\" comparisons are not supported for type '\"+Ht(o.type)+\"'.\");if(a.type.kind!==o.type.kind&&\"value\"!==a.type.kind&&\"value\"!==o.type.kind)return e.error(\"Cannot compare types '\"+Ht(a.type)+\"' and '\"+Ht(o.type)+\"'.\");n&&(\"value\"===a.type.kind&&\"value\"!==o.type.kind?a=new pe(o.type,[a]):\"value\"!==a.type.kind&&\"value\"===o.type.kind&&(o=new pe(a.type,[o])));var s=null;if(4===t.length){if(\"string\"!==a.type.kind&&\"string\"!==o.type.kind&&\"value\"!==a.type.kind&&\"value\"!==o.type.kind)return e.error(\"Cannot use collator to compare non-string types.\");if(!(s=e.parse(t[3],3,Xt)))return null}return new i(a,o,s)},i.prototype.evaluate=function(i){var a=this.lhs.evaluate(i),o=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){var s=ae(a),u=ae(o);if(s.kind!==u.kind||\"string\"!==s.kind&&\"number\"!==s.kind)throw new ue('Expected arguments for \"'+t+'\" to be (string, string) or (number, number), but found ('+s.kind+\", \"+u.kind+\") instead.\")}if(this.collator&&!n&&this.hasUntypedArgument){var l=ae(a),p=ae(o);if(\"string\"!==l.kind||\"string\"!==p.kind)return e(i,a,o)}return this.collator?r(i,a,o,this.collator.evaluate(i)):e(i,a,o)},i.prototype.eachChild=function(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);},i.prototype.possibleOutputs=function(){return [!0,!1]},i.prototype.serialize=function(){var e=[t];return this.eachChild((function(t){e.push(t.serialize());})),e},i}()}tr.parse=function(t,e){if(t.length<4)return e.error(\"Expected at least 3 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=0)return e.error(\"Expected an odd number of arguments.\");var r;e.expectedType&&\"value\"!==e.expectedType.kind&&(r=e.expectedType);for(var n=[],i=1;i<t.length-1;i+=2){var a=e.parse(t[i],i,jt);if(!a)return null;var o=e.parse(t[i+1],i+1,r);if(!o)return null;n.push([a,o]),r=r||o.type;}var s=e.parse(t[t.length-1],t.length-1,r);return s?new tr(r,n,s):null},tr.prototype.evaluate=function(t){for(var e=0,r=this.branches;e<r.length;e+=1){var n=r[e],i=n[0],a=n[1];if(i.evaluate(t))return a.evaluate(t)}return this.otherwise.evaluate(t)},tr.prototype.eachChild=function(t){for(var e=0,r=this.branches;e<r.length;e+=1){var n=r[e],i=n[0],a=n[1];t(i),t(a);}t(this.otherwise);},tr.prototype.possibleOutputs=function(){var t;return (t=[]).concat.apply(t,this.branches.map((function(t){t[0];return t[1].possibleOutputs()}))).concat(this.otherwise.possibleOutputs())},tr.prototype.serialize=function(){var t=[\"case\"];return this.eachChild((function(e){t.push(e.serialize());})),t};var ir=nr(\"==\",(function(t,e,r){return e===r}),rr),ar=nr(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return !rr(0,e,r,n)})),or=nr(\"<\",(function(t,e,r){return e<r}),(function(t,e,r,n){return n.compare(e,r)<0})),sr=nr(\">\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),ur=nr(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),lr=nr(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0})),pr=function(t,e,r,n,i){this.type=Ut,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i;};pr.parse=function(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,Rt);if(!r)return null;var n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,Ut)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,Ut)))return null;var o=null;if(n[\"min-fraction-digits\"]&&!(o=e.parse(n[\"min-fraction-digits\"],1,Rt)))return null;var s=null;return n[\"max-fraction-digits\"]&&!(s=e.parse(n[\"max-fraction-digits\"],1,Rt))?null:new pr(r,i,a,o,s)},pr.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},pr.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);},pr.prototype.possibleOutputs=function(){return [void 0]},pr.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]};var cr=function(t){this.type=Rt,this.input=t;};cr.parse=function(t,e){if(2!==t.length)return e.error(\"Expected 1 argument, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(\"Expected argument of type string or array, but found \"+Ht(r.type)+\" instead.\"):new cr(r):null},cr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ue(\"Expected value to be of type string or array, but found \"+Ht(ae(e))+\" instead.\")},cr.prototype.eachChild=function(t){t(this.input);},cr.prototype.possibleOutputs=function(){return [void 0]},cr.prototype.serialize=function(){var t=[\"length\"];return this.eachChild((function(e){t.push(e.serialize());})),t};var hr={\"==\":ir,\"!=\":ar,\">\":sr,\"<\":or,\">=\":lr,\"<=\":ur,array:pe,at:$e,boolean:pe,case:tr,coalesce:He,collator:ge,format:ce,image:he,in:We,interpolate:Ge,\"interpolate-hcl\":Ge,\"interpolate-lab\":Ge,length:cr,let:Ye,literal:se,match:Qe,number:pe,\"number-format\":pr,object:pe,step:ke,string:pe,\"to-boolean\":ye,\"to-color\":ye,\"to-number\":ye,\"to-string\":ye,var:we};function fr(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=ie(r,n,i,o);if(s)throw new ue(s);return new Qt(r/255*o,n/255*o,i/255*o,o)}function yr(t,e){return t in e}function dr(t,e){var r=e[t];return void 0===r?null:r}function mr(t){return {type:t}}function vr(t){return {result:\"success\",value:t}}function gr(t){return {result:\"error\",value:t}}function xr(t){return \"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function br(t){return !!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function _r(t){return !!t.expression&&t.expression.interpolated}function wr(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Ar(t){return \"object\"==typeof t&&null!==t&&!Array.isArray(t)}function Sr(t){return t}function kr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Ir(t,e,r,n,i){return kr(typeof r===i?n[r]:void 0,t.default,e.default)}function zr(t,e,r){if(\"number\"!==wr(r))return kr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var i=Se(t.stops.map((function(t){return t[0]})),r);return t.stops[i][1]}function Cr(t,e,r){var n=void 0!==t.base?t.base:1;if(\"number\"!==wr(r))return kr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=Se(t.stops.map((function(t){return t[0]})),r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],u=t.stops[a+1][1],l=ze[e.type]||Sr;if(t.colorSpace&&\"rgb\"!==t.colorSpace){var p=Ze[t.colorSpace];l=function(t,e){return p.reverse(p.interpolate(p.forward(t),p.forward(e),o))};}return \"function\"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=u.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return l(r,n,o)}}:l(s,u,o)}function Br(t,e,r){return \"color\"===e.type?r=Qt.parse(r):\"formatted\"===e.type?r=re.fromString(r.toString()):\"resolvedImage\"===e.type?r=ne.fromString(r.toString()):wr(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),kr(r,t.default,e.default)}ve.register(hr,{error:[{kind:\"error\"},[Ut],function(t,e){var r=e[0];throw new ue(r.evaluate(t))}],typeof:[Ut,[Kt],function(t,e){return Ht(ae(e[0].evaluate(t)))}],\"to-rgba\":[Jt(Rt,4),[qt],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[qt,[Rt,Rt,Rt],fr],rgba:[qt,[Rt,Rt,Rt,Rt],fr],has:{type:jt,overloads:[[[Ut],function(t,e){return yr(e[0].evaluate(t),t.properties())}],[[Ut,Nt],function(t,e){var r=e[0],n=e[1];return yr(r.evaluate(t),n.evaluate(t))}]]},get:{type:Kt,overloads:[[[Ut],function(t,e){return dr(e[0].evaluate(t),t.properties())}],[[Ut,Nt],function(t,e){var r=e[0],n=e[1];return dr(r.evaluate(t),n.evaluate(t))}]]},\"feature-state\":[Kt,[Ut],function(t,e){return dr(e[0].evaluate(t),t.featureState||{})}],properties:[Nt,[],function(t){return t.properties()}],\"geometry-type\":[Ut,[],function(t){return t.geometryType()}],id:[Kt,[],function(t){return t.id()}],zoom:[Rt,[],function(t){return t.globals.zoom}],\"heatmap-density\":[Rt,[],function(t){return t.globals.heatmapDensity||0}],\"line-progress\":[Rt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Kt,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],\"+\":[Rt,mr(Rt),function(t,e){for(var r=0,n=0,i=e;n<i.length;n+=1){r+=i[n].evaluate(t);}return r}],\"*\":[Rt,mr(Rt),function(t,e){for(var r=1,n=0,i=e;n<i.length;n+=1){r*=i[n].evaluate(t);}return r}],\"-\":{type:Rt,overloads:[[[Rt,Rt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)-n.evaluate(t)}],[[Rt],function(t,e){return -e[0].evaluate(t)}]]},\"/\":[Rt,[Rt,Rt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)/n.evaluate(t)}],\"%\":[Rt,[Rt,Rt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)%n.evaluate(t)}],ln2:[Rt,[],function(){return Math.LN2}],pi:[Rt,[],function(){return Math.PI}],e:[Rt,[],function(){return Math.E}],\"^\":[Rt,[Rt,Rt],function(t,e){var r=e[0],n=e[1];return Math.pow(r.evaluate(t),n.evaluate(t))}],sqrt:[Rt,[Rt],function(t,e){var r=e[0];return Math.sqrt(r.evaluate(t))}],log10:[Rt,[Rt],function(t,e){var r=e[0];return Math.log(r.evaluate(t))/Math.LN10}],ln:[Rt,[Rt],function(t,e){var r=e[0];return Math.log(r.evaluate(t))}],log2:[Rt,[Rt],function(t,e){var r=e[0];return Math.log(r.evaluate(t))/Math.LN2}],sin:[Rt,[Rt],function(t,e){var r=e[0];return Math.sin(r.evaluate(t))}],cos:[Rt,[Rt],function(t,e){var r=e[0];return Math.cos(r.evaluate(t))}],tan:[Rt,[Rt],function(t,e){var r=e[0];return Math.tan(r.evaluate(t))}],asin:[Rt,[Rt],function(t,e){var r=e[0];return Math.asin(r.evaluate(t))}],acos:[Rt,[Rt],function(t,e){var r=e[0];return Math.acos(r.evaluate(t))}],atan:[Rt,[Rt],function(t,e){var r=e[0];return Math.atan(r.evaluate(t))}],min:[Rt,mr(Rt),function(t,e){return Math.min.apply(Math,e.map((function(e){return e.evaluate(t)})))}],max:[Rt,mr(Rt),function(t,e){return Math.max.apply(Math,e.map((function(e){return e.evaluate(t)})))}],abs:[Rt,[Rt],function(t,e){var r=e[0];return Math.abs(r.evaluate(t))}],round:[Rt,[Rt],function(t,e){var r=e[0].evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[Rt,[Rt],function(t,e){var r=e[0];return Math.floor(r.evaluate(t))}],ceil:[Rt,[Rt],function(t,e){var r=e[0];return Math.ceil(r.evaluate(t))}],\"filter-==\":[jt,[Ut,Kt],function(t,e){var r=e[0],n=e[1];return t.properties()[r.value]===n.value}],\"filter-id-==\":[jt,[Kt],function(t,e){var r=e[0];return t.id()===r.value}],\"filter-type-==\":[jt,[Ut],function(t,e){var r=e[0];return t.geometryType()===r.value}],\"filter-<\":[jt,[Ut,Kt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<a}],\"filter-id-<\":[jt,[Kt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<i}],\"filter->\":[jt,[Ut,Kt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],\"filter-id->\":[jt,[Kt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],\"filter-<=\":[jt,[Ut,Kt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],\"filter-id-<=\":[jt,[Kt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],\"filter->=\":[jt,[Ut,Kt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],\"filter-id->=\":[jt,[Kt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],\"filter-has\":[jt,[Kt],function(t,e){return e[0].value in t.properties()}],\"filter-has-id\":[jt,[],function(t){return null!==t.id()}],\"filter-type-in\":[jt,[Jt(Ut)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],\"filter-id-in\":[jt,[Jt(Kt)],function(t,e){return e[0].value.indexOf(t.id())>=0}],\"filter-in-small\":[jt,[Ut,Jt(Kt)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],\"filter-in-large\":[jt,[Ut,Jt(Kt)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:jt,overloads:[[[jt,jt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[mr(jt),function(t,e){for(var r=0,n=e;r<n.length;r+=1){if(!n[r].evaluate(t))return !1}return !0}]]},any:{type:jt,overloads:[[[jt,jt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)||n.evaluate(t)}],[mr(jt),function(t,e){for(var r=0,n=e;r<n.length;r+=1){if(n[r].evaluate(t))return !0}return !1}]]},\"!\":[jt,[jt],function(t,e){return !e[0].evaluate(t)}],\"is-supported-script\":[jt,[Ut],function(t,e){var r=e[0],n=t.globals&&t.globals.isSupportedScript;return !n||n(r.evaluate(t))}],upcase:[Ut,[Ut],function(t,e){return e[0].evaluate(t).toUpperCase()}],downcase:[Ut,[Ut],function(t,e){return e[0].evaluate(t).toLowerCase()}],concat:[Ut,mr(Kt),function(t,e){return e.map((function(e){return oe(e.evaluate(t))})).join(\"\")}],\"resolved-locale\":[Ut,[Xt],function(t,e){return e[0].evaluate(t).resolvedLocale()}]});var Tr=function(t,e){this.expression=t,this._warningHistory={},this._evaluator=new me,this._defaultValue=e?function(t){return \"color\"===t.type&&Ar(t.default)?new Qt(0,0,0,0):\"color\"===t.type?Qt.parse(t.default)||null:void 0===t.default?null:t.default}(e):null,this._enumValues=e&&\"enum\"===e.type?e.values:null;};function Pr(t){return Array.isArray(t)&&t.length>0&&\"string\"==typeof t[0]&&t[0]in hr}function Er(t,e){var r=new Ae(hr,[],e?function(t){var e={color:qt,string:Ut,number:Rt,enum:Ut,boolean:jt,formatted:Zt,resolvedImage:Gt};if(\"array\"===t.type)return Jt(e[t.value]||Kt,t.length);return e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?vr(new Tr(n,e)):gr(r.errors)}Tr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=i,this.expression.evaluate(this._evaluator)},Tr.prototype.evaluate=function(t,e,r,n,i){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=i||null;try{var a=this.expression.evaluate(this._evaluator);if(null==a||\"number\"==typeof a&&a!=a)return this._defaultValue;if(this._enumValues&&!(a in this._enumValues))throw new ue(\"Expected value to be one of \"+Object.keys(this._enumValues).map((function(t){return JSON.stringify(t)})).join(\", \")+\", but found \"+JSON.stringify(a)+\" instead.\");return a}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}};var Mr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!be(e.expression);};Mr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i)},Mr.prototype.evaluate=function(t,e,r,n,i){return this._styleExpression.evaluate(t,e,r,n,i)};var Vr=function(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!be(e.expression),this.interpolationType=n;};function Fr(t,e){if(\"error\"===(t=Er(t,e)).result)return t;var r=t.value.expression,n=xe(r);if(!n&&!xr(e))return gr([new Lt(\"\",\"data expressions not supported\")]);var i=_e(r,[\"zoom\"]);if(!i&&!br(e))return gr([new Lt(\"\",\"zoom expressions not supported\")]);var a=function t(e){var r=null;if(e instanceof Ye)r=t(e.result);else if(e instanceof He)for(var n=0,i=e.args;n<i.length;n+=1){var a=i[n];if(r=t(a))break}else(e instanceof ke||e instanceof Ge)&&e.input instanceof ve&&\"zoom\"===e.input.name&&(r=e);if(r instanceof Lt)return r;e.eachChild((function(e){var n=t(e);n instanceof Lt?r=n:!r&&n?r=new Lt(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):r&&n&&r!==n&&(r=new Lt(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'));}));return r}(r);if(!a&&!i)return gr([new Lt(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);if(a instanceof Lt)return gr([a]);if(a instanceof Ge&&!_r(e))return gr([new Lt(\"\",'\"interpolate\" expressions cannot be used with this property')]);if(!a)return vr(new Mr(n?\"constant\":\"source\",t.value));var o=a instanceof Ge?a.interpolation:void 0;return vr(new Vr(n?\"camera\":\"composite\",t.value,a.labels,o))}Vr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i)},Vr.prototype.evaluate=function(t,e,r,n,i){return this._styleExpression.evaluate(t,e,r,n,i)},Vr.prototype.interpolationFactor=function(t,e,r){return this.interpolationType?Ge.interpolationFactor(this.interpolationType,t,e,r):0};var Lr=function(t,e){this._parameters=t,this._specification=e,Mt(this,function t(e,r){var n,i,a,o=\"color\"===r.type,s=e.stops&&\"object\"==typeof e.stops[0][0],u=s||void 0!==e.property,l=s||!u,p=e.type||(_r(r)?\"exponential\":\"interval\");if(o&&((e=Mt({},e)).stops&&(e.stops=e.stops.map((function(t){return [t[0],Qt.parse(t[1])]}))),e.default?e.default=Qt.parse(e.default):e.default=Qt.parse(r.default)),e.colorSpace&&\"rgb\"!==e.colorSpace&&!Ze[e.colorSpace])throw new Error(\"Unknown color space: \"+e.colorSpace);if(\"exponential\"===p)n=Cr;else if(\"interval\"===p)n=zr;else if(\"categorical\"===p){n=Ir,i=Object.create(null);for(var c=0,h=e.stops;c<h.length;c+=1){var f=h[c];i[f[0]]=f[1];}a=typeof e.stops[0][0];}else{if(\"identity\"!==p)throw new Error('Unknown function type \"'+p+'\"');n=Br;}if(s){for(var y={},d=[],m=0;m<e.stops.length;m++){var v=e.stops[m],g=v[0].zoom;void 0===y[g]&&(y[g]={zoom:g,type:e.type,property:e.property,default:e.default,stops:[]},d.push(g)),y[g].stops.push([v[0].value,v[1]]);}for(var x=[],b=0,_=d;b<_.length;b+=1){var w=_[b];x.push([y[w].zoom,t(y[w],r)]);}var A={name:\"linear\"};return {kind:\"composite\",interpolationType:A,interpolationFactor:Ge.interpolationFactor.bind(void 0,A),zoomStops:x.map((function(t){return t[0]})),evaluate:function(t,n){var i=t.zoom;return Cr({stops:x,base:e.base},r,i).evaluate(i,n)}}}if(l){var S=\"exponential\"===p?{name:\"exponential\",base:void 0!==e.base?e.base:1}:null;return {kind:\"camera\",interpolationType:S,interpolationFactor:Ge.interpolationFactor.bind(void 0,S),zoomStops:e.stops.map((function(t){return t[0]})),evaluate:function(t){var o=t.zoom;return n(e,r,o,i,a)}}}return {kind:\"source\",evaluate:function(t,o){var s=o&&o.properties?o.properties[e.property]:void 0;return void 0===s?kr(e.default,r.default):n(e,r,s,i,a)}}}(this._parameters,this._specification));};function Or(t){var e=t.key,r=t.value,n=t.valueSpec||{},i=t.objectElementValidators||{},a=t.style,o=t.styleSpec,s=[],u=wr(r);if(\"object\"!==u)return [new Pt(e,r,\"object expected, \"+u+\" found\")];for(var l in r){var p=l.split(\".\")[0],c=n[p]||n[\"*\"],h=void 0;if(i[p])h=i[p];else if(n[p])h=un;else if(i[\"*\"])h=i[\"*\"];else{if(!n[\"*\"]){s.push(new Pt(e,r[l],'unknown property \"'+l+'\"'));continue}h=un;}s=s.concat(h({key:(e?e+\".\":e)+l,value:r[l],valueSpec:c,style:a,styleSpec:o,object:r,objectKey:l},r));}for(var f in n)i[f]||n[f].required&&void 0===n[f].default&&void 0===r[f]&&s.push(new Pt(e,r,'missing required property \"'+f+'\"'));return s}function Dr(t){var e=t.value,r=t.valueSpec,n=t.style,i=t.styleSpec,a=t.key,o=t.arrayElementValidator||un;if(\"array\"!==wr(e))return [new Pt(a,e,\"array expected, \"+wr(e)+\" found\")];if(r.length&&e.length!==r.length)return [new Pt(a,e,\"array length \"+r.length+\" expected, length \"+e.length+\" found\")];if(r[\"min-length\"]&&e.length<r[\"min-length\"])return [new Pt(a,e,\"array length at least \"+r[\"min-length\"]+\" expected, length \"+e.length+\" found\")];var s={type:r.value,values:r.values};i.$version<7&&(s.function=r.function),\"object\"===wr(r.value)&&(s=r.value);for(var u=[],l=0;l<e.length;l++)u=u.concat(o({array:e,arrayIndex:l,value:e[l],valueSpec:s,style:n,styleSpec:i,key:a+\"[\"+l+\"]\"}));return u}function Rr(t){var e=t.key,r=t.value,n=t.valueSpec,i=wr(r);return \"number\"===i&&r!=r&&(i=\"NaN\"),\"number\"!==i?[new Pt(e,r,\"number expected, \"+i+\" found\")]:\"minimum\"in n&&r<n.minimum?[new Pt(e,r,r+\" is less than the minimum value \"+n.minimum)]:\"maximum\"in n&&r>n.maximum?[new Pt(e,r,r+\" is greater than the maximum value \"+n.maximum)]:[]}function Ur(t){var e,r,n,i=t.valueSpec,a=Vt(t.value.type),o={},s=\"categorical\"!==a&&void 0===t.value.property,u=!s,l=\"array\"===wr(t.value.stops)&&\"array\"===wr(t.value.stops[0])&&\"object\"===wr(t.value.stops[0][0]),p=Or({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===a)return [new Pt(t.key,t.value,'identity function may not have a \"stops\" property')];var e=[],r=t.value;e=e.concat(Dr({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:c})),\"array\"===wr(r)&&0===r.length&&e.push(new Pt(t.key,r,\"array must have at least one stop\"));return e},default:function(t){return un({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return \"identity\"===a&&s&&p.push(new Pt(t.key,t.value,'missing required property \"property\"')),\"identity\"===a||t.value.stops||p.push(new Pt(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===a&&t.valueSpec.expression&&!_r(t.valueSpec)&&p.push(new Pt(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(u&&!xr(t.valueSpec)?p.push(new Pt(t.key,t.value,\"property functions not supported\")):s&&!br(t.valueSpec)&&p.push(new Pt(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==a&&!l||void 0!==t.value.property||p.push(new Pt(t.key,t.value,'\"property\" property is required')),p;function c(t){var e=[],a=t.value,s=t.key;if(\"array\"!==wr(a))return [new Pt(s,a,\"array expected, \"+wr(a)+\" found\")];if(2!==a.length)return [new Pt(s,a,\"array length 2 expected, length \"+a.length+\" found\")];if(l){if(\"object\"!==wr(a[0]))return [new Pt(s,a,\"object expected, \"+wr(a[0])+\" found\")];if(void 0===a[0].zoom)return [new Pt(s,a,\"object stop key must have zoom\")];if(void 0===a[0].value)return [new Pt(s,a,\"object stop key must have value\")];if(n&&n>Vt(a[0].zoom))return [new Pt(s,a[0].zoom,\"stop zoom values must appear in ascending order\")];Vt(a[0].zoom)!==n&&(n=Vt(a[0].zoom),r=void 0,o={}),e=e.concat(Or({key:s+\"[0]\",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Rr,value:h}}));}else e=e.concat(h({key:s+\"[0]\",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return Pr(Ft(a[1]))?e.concat([new Pt(s+\"[1]\",a[1],\"expressions are not allowed in function stops.\")]):e.concat(un({key:s+\"[1]\",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=wr(t.value),u=Vt(t.value),l=null!==t.value?t.value:n;if(e){if(s!==e)return [new Pt(t.key,l,s+\" stop domain type must match previous stop domain type \"+e)]}else e=s;if(\"number\"!==s&&\"string\"!==s&&\"boolean\"!==s)return [new Pt(t.key,l,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==s&&\"categorical\"!==a){var p=\"number expected, \"+s+\" found\";return xr(i)&&void 0===a&&(p+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new Pt(t.key,l,p)]}return \"categorical\"!==a||\"number\"!==s||isFinite(u)&&Math.floor(u)===u?\"categorical\"!==a&&\"number\"===s&&void 0!==r&&u<r?[new Pt(t.key,l,\"stop domain values must appear in ascending order\")]:(r=u,\"categorical\"===a&&u in o?[new Pt(t.key,l,\"stop domain values must be unique\")]:(o[u]=!0,[])):[new Pt(t.key,l,\"integer expected, found \"+u)]}}function jr(t){var e=(\"property\"===t.expressionContext?Fr:Er)(Ft(t.value),t.valueSpec);if(\"error\"===e.result)return e.value.map((function(e){return new Pt(\"\"+t.key+e.key,t.value,e.message)}));var r=e.value.expression||e.value._styleExpression.expression;if(\"property\"===t.expressionContext&&\"text-font\"===t.propertyKey&&-1!==r.possibleOutputs().indexOf(void 0))return [new Pt(t.key,t.value,'Invalid data expression for \"'+t.propertyKey+'\". Output values must be contained as literals within the expression.')];if(\"property\"===t.expressionContext&&\"layout\"===t.propertyType&&!be(r))return [new Pt(t.key,t.value,'\"feature-state\" data expressions are not supported with layout properties.')];if(\"filter\"===t.expressionContext&&!be(r))return [new Pt(t.key,t.value,'\"feature-state\" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf(\"cluster\")){if(!_e(r,[\"zoom\",\"feature-state\"]))return [new Pt(t.key,t.value,'\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];if(\"cluster-initial\"===t.expressionContext&&!xe(r))return [new Pt(t.key,t.value,\"Feature data expressions are not supported with initial expression part of cluster properties.\")]}return []}function qr(t){var e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(Vt(r))&&i.push(new Pt(e,r,\"expected one of [\"+n.values.join(\", \")+\"], \"+JSON.stringify(r)+\" found\")):-1===Object.keys(n.values).indexOf(Vt(r))&&i.push(new Pt(e,r,\"expected one of [\"+Object.keys(n.values).join(\", \")+\"], \"+JSON.stringify(r)+\" found\")),i}function Nr(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case\"has\":return t.length>=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&Array.isArray(t[2]);case\"!in\":case\"!has\":case\"none\":return !1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(var e=0,r=t.slice(1);e<r.length;e+=1){var n=r[e];if(!Nr(n)&&\"boolean\"!=typeof n)return !1}return !0;default:return !0}}Lr.deserialize=function(t){return new Lr(t._parameters,t._specification)},Lr.serialize=function(t){return {_parameters:t._parameters,_specification:t._specification}};var Kr={type:\"boolean\",default:!1,transition:!1,\"property-type\":\"data-driven\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]}};function Xr(t){if(null==t)return function(){return !0};Nr(t)||(t=Gr(t));var e=Er(t,Kr);if(\"error\"===e.result)throw new Error(e.value.map((function(t){return t.key+\": \"+t.message})).join(\", \"));return function(t,r){return e.value.evaluate(t,r)}}function Zr(t,e){return t<e?-1:t>e?1:0}function Gr(t){if(!t)return !0;var e,r=t[0];return t.length<=1?\"any\"!==r:\"==\"===r?Jr(t[1],t[2],\"==\"):\"!=\"===r?$r(Jr(t[1],t[2],\"==\")):\"<\"===r||\">\"===r||\"<=\"===r||\">=\"===r?Jr(t[1],t[2],r):\"any\"===r?(e=t.slice(1),[\"any\"].concat(e.map(Gr))):\"all\"===r?[\"all\"].concat(t.slice(1).map(Gr)):\"none\"===r?[\"all\"].concat(t.slice(1).map(Gr).map($r)):\"in\"===r?Hr(t[1],t.slice(2)):\"!in\"===r?$r(Hr(t[1],t.slice(2))):\"has\"===r?Yr(t[1]):\"!has\"!==r||$r(Yr(t[1]))}function Jr(t,e,r){switch(t){case\"$type\":return [\"filter-type-\"+r,e];case\"$id\":return [\"filter-id-\"+r,e];default:return [\"filter-\"+r,t,e]}}function Hr(t,e){if(0===e.length)return !1;switch(t){case\"$type\":return [\"filter-type-in\",[\"literal\",e]];case\"$id\":return [\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((function(t){return typeof t!=typeof e[0]}))?[\"filter-in-large\",t,[\"literal\",e.sort(Zr)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function Yr(t){switch(t){case\"$type\":return !0;case\"$id\":return [\"filter-has-id\"];default:return [\"filter-has\",t]}}function $r(t){return [\"!\",t]}function Wr(t){return Nr(Ft(t.value))?jr(Mt({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):function t(e){var r=e.value;var n=e.key;if(\"array\"!==wr(r))return [new Pt(n,r,\"array expected, \"+wr(r)+\" found\")];var i=e.styleSpec;var a;var o=[];if(r.length<1)return [new Pt(n,r,\"filter array must have at least 1 element\")];o=o.concat(qr({key:n+\"[0]\",value:r[0],valueSpec:i.filter_operator,style:e.style,styleSpec:e.styleSpec}));switch(Vt(r[0])){case\"<\":case\"<=\":case\">\":case\">=\":r.length>=2&&\"$type\"===Vt(r[1])&&o.push(new Pt(n,r,'\"$type\" cannot be use with operator \"'+r[0]+'\"'));case\"==\":case\"!=\":3!==r.length&&o.push(new Pt(n,r,'filter array for operator \"'+r[0]+'\" must have 3 elements'));case\"in\":case\"!in\":r.length>=2&&\"string\"!==(a=wr(r[1]))&&o.push(new Pt(n+\"[1]\",r[1],\"string expected, \"+a+\" found\"));for(var s=2;s<r.length;s++)a=wr(r[s]),\"$type\"===Vt(r[1])?o=o.concat(qr({key:n+\"[\"+s+\"]\",value:r[s],valueSpec:i.geometry_type,style:e.style,styleSpec:e.styleSpec})):\"string\"!==a&&\"number\"!==a&&\"boolean\"!==a&&o.push(new Pt(n+\"[\"+s+\"]\",r[s],\"string, number, or boolean expected, \"+a+\" found\"));break;case\"any\":case\"all\":case\"none\":for(var u=1;u<r.length;u++)o=o.concat(t({key:n+\"[\"+u+\"]\",value:r[u],style:e.style,styleSpec:e.styleSpec}));break;case\"has\":case\"!has\":a=wr(r[1]),2!==r.length?o.push(new Pt(n,r,'filter array for \"'+r[0]+'\" operator must have 2 elements')):\"string\"!==a&&o.push(new Pt(n+\"[1]\",r[1],\"string expected, \"+a+\" found\"));}return o}(t)}function Qr(t,e){var r=t.key,n=t.style,i=t.styleSpec,a=t.value,o=t.objectKey,s=i[e+\"_\"+t.layerType];if(!s)return [];var u=o.match(/^(.*)-transition$/);if(\"paint\"===e&&u&&s[u[1]]&&s[u[1]].transition)return un({key:r,value:a,valueSpec:i.transition,style:n,styleSpec:i});var l,p=t.valueSpec||s[o];if(!p)return [new Pt(r,a,'unknown property \"'+o+'\"')];if(\"string\"===wr(a)&&xr(p)&&!p.tokens&&(l=/^{([^}]+)}$/.exec(a)))return [new Pt(r,a,'\"'+o+'\" does not support interpolation syntax\\nUse an identity property function instead: `{ \"type\": \"identity\", \"property\": '+JSON.stringify(l[1])+\" }`.\")];var c=[];return \"symbol\"===t.layerType&&(\"text-field\"===o&&n&&!n.glyphs&&c.push(new Pt(r,a,'use of \"text-field\" requires a style \"glyphs\" property')),\"text-font\"===o&&Ar(Ft(a))&&\"identity\"===Vt(a.type)&&c.push(new Pt(r,a,'\"text-font\" does not support identity functions'))),c.concat(un({key:t.key,value:a,valueSpec:p,style:n,styleSpec:i,expressionContext:\"property\",propertyType:e,propertyKey:o}))}function tn(t){return Qr(t,\"paint\")}function en(t){return Qr(t,\"layout\")}function rn(t){var e=[],r=t.value,n=t.key,i=t.style,a=t.styleSpec;r.type||r.ref||e.push(new Pt(n,r,'either \"type\" or \"ref\" is required'));var o,s=Vt(r.type),u=Vt(r.ref);if(r.id)for(var l=Vt(r.id),p=0;p<t.arrayIndex;p++){var c=i.layers[p];Vt(c.id)===l&&e.push(new Pt(n,r.id,'duplicate layer id \"'+r.id+'\", previously used at line '+c.id.__line__));}if(\"ref\"in r)[\"type\",\"source\",\"source-layer\",\"filter\",\"layout\"].forEach((function(t){t in r&&e.push(new Pt(n,r[t],'\"'+t+'\" is prohibited for ref layers'));})),i.layers.forEach((function(t){Vt(t.id)===u&&(o=t);})),o?o.ref?e.push(new Pt(n,r.ref,\"ref cannot reference another ref layer\")):s=Vt(o.type):e.push(new Pt(n,r.ref,'ref layer \"'+u+'\" not found'));else if(\"background\"!==s)if(r.source){var h=i.sources&&i.sources[r.source],f=h&&Vt(h.type);h?\"vector\"===f&&\"raster\"===s?e.push(new Pt(n,r.source,'layer \"'+r.id+'\" requires a raster source')):\"raster\"===f&&\"raster\"!==s?e.push(new Pt(n,r.source,'layer \"'+r.id+'\" requires a vector source')):\"vector\"!==f||r[\"source-layer\"]?\"raster-dem\"===f&&\"hillshade\"!==s?e.push(new Pt(n,r.source,\"raster-dem source can only be used with layer type 'hillshade'.\")):\"line\"!==s||!r.paint||!r.paint[\"line-gradient\"]||\"geojson\"===f&&h.lineMetrics||e.push(new Pt(n,r,'layer \"'+r.id+'\" specifies a line-gradient, which requires a GeoJSON source with `lineMetrics` enabled.')):e.push(new Pt(n,r,'layer \"'+r.id+'\" must specify a \"source-layer\"')):e.push(new Pt(n,r.source,'source \"'+r.source+'\" not found'));}else e.push(new Pt(n,r,'missing required property \"source\"'));return e=e.concat(Or({key:n,value:r,valueSpec:a.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":function(){return []},type:function(){return un({key:n+\".type\",value:r.type,valueSpec:a.layer.type,style:t.style,styleSpec:t.styleSpec,object:r,objectKey:\"type\"})},filter:Wr,layout:function(t){return Or({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":function(t){return en(Mt({layerType:s},t))}}})},paint:function(t){return Or({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":function(t){return tn(Mt({layerType:s},t))}}})}}}))}function nn(t){var e=t.value,r=t.key,n=t.styleSpec,i=t.style;if(!e.type)return [new Pt(r,e,'\"type\" is required')];var a,o=Vt(e.type);switch(o){case\"vector\":case\"raster\":case\"raster-dem\":return a=Or({key:r,value:e,valueSpec:n[\"source_\"+o.replace(\"-\",\"_\")],style:t.style,styleSpec:n});case\"geojson\":if(a=Or({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n}),e.cluster)for(var s in e.clusterProperties){var u=e.clusterProperties[s],l=u[0],p=u[1],c=\"string\"==typeof l?[l,[\"accumulated\"],[\"get\",s]]:l;a.push.apply(a,jr({key:r+\".\"+s+\".map\",value:p,expressionContext:\"cluster-map\"})),a.push.apply(a,jr({key:r+\".\"+s+\".reduce\",value:c,expressionContext:\"cluster-reduce\"}));}return a;case\"video\":return Or({key:r,value:e,valueSpec:n.source_video,style:i,styleSpec:n});case\"image\":return Or({key:r,value:e,valueSpec:n.source_image,style:i,styleSpec:n});case\"canvas\":return [new Pt(r,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")];default:return qr({key:r+\".type\",value:e.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]},style:i,styleSpec:n})}}function an(t){var e=t.value,r=t.styleSpec,n=r.light,i=t.style,a=[],o=wr(e);if(void 0===e)return a;if(\"object\"!==o)return a=a.concat([new Pt(\"light\",e,\"object expected, \"+o+\" found\")]);for(var s in e){var u=s.match(/^(.*)-transition$/);a=u&&n[u[1]]&&n[u[1]].transition?a.concat(un({key:s,value:e[s],valueSpec:r.transition,style:i,styleSpec:r})):n[s]?a.concat(un({key:s,value:e[s],valueSpec:n[s],style:i,styleSpec:r})):a.concat([new Pt(s,e[s],'unknown property \"'+s+'\"')]);}return a}function on(t){var e=t.value,r=t.key,n=wr(e);return \"string\"!==n?[new Pt(r,e,\"string expected, \"+n+\" found\")]:[]}var sn={\"*\":function(){return []},array:Dr,boolean:function(t){var e=t.value,r=t.key,n=wr(e);return \"boolean\"!==n?[new Pt(r,e,\"boolean expected, \"+n+\" found\")]:[]},number:Rr,color:function(t){var e=t.key,r=t.value,n=wr(r);return \"string\"!==n?[new Pt(e,r,\"color expected, \"+n+\" found\")]:null===Wt(r)?[new Pt(e,r,'color expected, \"'+r+'\" found')]:[]},constants:Et,enum:qr,filter:Wr,function:Ur,layer:rn,object:Or,source:nn,light:an,string:on,formatted:function(t){return 0===on(t).length?[]:jr(t)},resolvedImage:function(t){return 0===on(t).length?[]:jr(t)}};function un(t){var e=t.value,r=t.valueSpec,n=t.styleSpec;return r.expression&&Ar(Vt(e))?Ur(t):r.expression&&Pr(Ft(e))?jr(t):r.type&&sn[r.type]?sn[r.type](t):Or(Mt({},t,{valueSpec:r.type?n[r.type]:r}))}function ln(t){var e=t.value,r=t.key,n=on(t);return n.length?n:(-1===e.indexOf(\"{fontstack}\")&&n.push(new Pt(r,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&n.push(new Pt(r,e,'\"glyphs\" url must include a \"{range}\" token')),n)}function pn(t,e){void 0===e&&(e=Tt);var r=[];return r=r.concat(un({key:\"\",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:ln,\"*\":function(){return []}}})),t.constants&&(r=r.concat(Et({key:\"constants\",value:t.constants,style:t,styleSpec:e}))),cn(r)}function cn(t){return [].concat(t).sort((function(t,e){return t.line-e.line}))}function hn(t){return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return cn(t.apply(this,e))}}pn.source=hn(nn),pn.light=hn(an),pn.layer=hn(rn),pn.filter=hn(Wr),pn.paintProperty=hn(tn),pn.layoutProperty=hn(en);var fn=pn,yn=fn.light,dn=fn.paintProperty,mn=fn.layoutProperty;function vn(t,e){var r=!1;if(e&&e.length)for(var n=0,i=e;n<i.length;n+=1){var a=i[n];t.fire(new Ct(new Error(a.message))),r=!0;}return r}var gn=bn,xn=3;function bn(t,e,r){var n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var i=new Int32Array(this.arrayBuffer);t=i[0],e=i[1],r=i[2],this.d=e+2*r;for(var a=0;a<this.d*this.d;a++){var o=i[xn+a],s=i[xn+a+1];n.push(o===s?null:i.subarray(o,s));}var u=i[xn+n.length],l=i[xn+n.length+1];this.keys=i.subarray(u,l),this.bboxes=i.subarray(l),this.insert=this._insertReadonly;}else{this.d=e+2*r;for(var p=0;p<this.d*this.d;p++)n.push([]);this.keys=[],this.bboxes=[];}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;var c=r/e*t;this.min=-c,this.max=t+c;}bn.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i);},bn.prototype._insertReadonly=function(){throw \"Cannot insert into a GridIndex created from an ArrayBuffer.\"},bn.prototype._insertCell=function(t,e,r,n,i,a){this.cells[i].push(a);},bn.prototype.query=function(t,e,r,n,i){var a=this.min,o=this.max;if(t<=a&&e<=a&&o<=r&&o<=n&&!i)return Array.prototype.slice.call(this.keys);var s=[];return this._forEachCell(t,e,r,n,this._queryCell,s,{},i),s},bn.prototype._queryCell=function(t,e,r,n,i,a,o,s){var u=this.cells[i];if(null!==u)for(var l=this.keys,p=this.bboxes,c=0;c<u.length;c++){var h=u[c];if(void 0===o[h]){var f=4*h;(s?s(p[f+0],p[f+1],p[f+2],p[f+3]):t<=p[f+2]&&e<=p[f+3]&&r>=p[f+0]&&n>=p[f+1])?(o[h]=!0,a.push(l[h])):o[h]=!1;}}},bn.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var u=this._convertToCellCoord(t),l=this._convertToCellCoord(e),p=this._convertToCellCoord(r),c=this._convertToCellCoord(n),h=u;h<=p;h++)for(var f=l;f<=c;f++){var y=this.d*f+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(f),this._convertFromCellCoord(h+1),this._convertFromCellCoord(f+1)))&&i.call(this,t,e,r,n,y,a,o,s))return}},bn.prototype._convertFromCellCoord=function(t){return (t-this.padding)/this.scale},bn.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},bn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=xn+this.cells.length+1+1,r=0,n=0;n<this.cells.length;n++)r+=this.cells[n].length;var i=new Int32Array(e+r+this.keys.length+this.bboxes.length);i[0]=this.extent,i[1]=this.n,i[2]=this.padding;for(var a=e,o=0;o<t.length;o++){var s=t[o];i[xn+o]=a,i.set(s,a),a+=s.length;}return i[xn+t.length]=a,i.set(this.keys,a),a+=this.keys.length,i[xn+t.length+1]=a,i.set(this.bboxes,a),a+=this.bboxes.length,i.buffer};var _n=self.ImageData,wn={};function An(t,e,r){void 0===r&&(r={}),Object.defineProperty(e,\"_classRegistryKey\",{value:t,writeable:!1}),wn[t]={klass:e,omit:r.omit||[],shallow:r.shallow||[]};}for(var Sn in An(\"Object\",Object),gn.serialize=function(t,e){var r=t.toArrayBuffer();return e&&e.push(r),{buffer:r}},gn.deserialize=function(t){return new gn(t.buffer)},An(\"Grid\",gn),An(\"Color\",Qt),An(\"Error\",Error),An(\"ResolvedImage\",ne),An(\"StylePropertyFunction\",Lr),An(\"StyleExpression\",Tr,{omit:[\"_evaluator\"]}),An(\"ZoomDependentExpression\",Vr),An(\"ZoomConstantExpression\",Mr),An(\"CompoundExpression\",ve,{omit:[\"_evaluate\"]}),hr)hr[Sn]._classRegistryKey||An(\"Expression_\"+Sn,hr[Sn]);function kn(t){return t&&\"undefined\"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&\"ArrayBuffer\"===t.constructor.name)}function In(t,e){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp)return t;if(kn(t))return e&&e.push(t),t;if(ArrayBuffer.isView(t)){var r=t;return e&&e.push(r.buffer),r}if(t instanceof _n)return e&&e.push(t.data.buffer),t;if(Array.isArray(t)){for(var n=[],i=0,a=t;i<a.length;i+=1){var o=a[i];n.push(In(o,e));}return n}if(\"object\"==typeof t){var s=t.constructor,u=s._classRegistryKey;if(!u)throw new Error(\"can't serialize object of unregistered class\");var l=s.serialize?s.serialize(t,e):{};if(!s.serialize){for(var p in t)if(t.hasOwnProperty(p)&&!(wn[u].omit.indexOf(p)>=0)){var c=t[p];l[p]=wn[u].shallow.indexOf(p)>=0?c:In(c,e);}t instanceof Error&&(l.message=t.message);}if(l.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return \"Object\"!==u&&(l.$name=u),l}throw new Error(\"can't serialize object of type \"+typeof t)}function zn(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||kn(t)||ArrayBuffer.isView(t)||t instanceof _n)return t;if(Array.isArray(t))return t.map(zn);if(\"object\"==typeof t){var e=t.$name||\"Object\",r=wn[e].klass;if(!r)throw new Error(\"can't deserialize unregistered class \"+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i<a.length;i+=1){var o=a[i];if(\"$name\"!==o){var s=t[o];n[o]=wn[e].shallow.indexOf(o)>=0?s:zn(s);}}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}var Cn=function(){this.first=!0;};Cn.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom<r&&(this.lastIntegerZoom=r,this.lastIntegerZoomTime=e),t!==this.lastZoom&&(this.lastZoom=t,this.lastFloorZoom=r,!0))};var Bn={\"Latin-1 Supplement\":function(t){return t>=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},\"Arabic Supplement\":function(t){return t>=1872&&t<=1919},\"Arabic Extended-A\":function(t){return t>=2208&&t<=2303},\"Hangul Jamo\":function(t){return t>=4352&&t<=4607},\"Unified Canadian Aboriginal Syllabics\":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},\"Unified Canadian Aboriginal Syllabics Extended\":function(t){return t>=6320&&t<=6399},\"General Punctuation\":function(t){return t>=8192&&t<=8303},\"Letterlike Symbols\":function(t){return t>=8448&&t<=8527},\"Number Forms\":function(t){return t>=8528&&t<=8591},\"Miscellaneous Technical\":function(t){return t>=8960&&t<=9215},\"Control Pictures\":function(t){return t>=9216&&t<=9279},\"Optical Character Recognition\":function(t){return t>=9280&&t<=9311},\"Enclosed Alphanumerics\":function(t){return t>=9312&&t<=9471},\"Geometric Shapes\":function(t){return t>=9632&&t<=9727},\"Miscellaneous Symbols\":function(t){return t>=9728&&t<=9983},\"Miscellaneous Symbols and Arrows\":function(t){return t>=11008&&t<=11263},\"CJK Radicals Supplement\":function(t){return t>=11904&&t<=12031},\"Kangxi Radicals\":function(t){return t>=12032&&t<=12255},\"Ideographic Description Characters\":function(t){return t>=12272&&t<=12287},\"CJK Symbols and Punctuation\":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},\"Hangul Compatibility Jamo\":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},\"Bopomofo Extended\":function(t){return t>=12704&&t<=12735},\"CJK Strokes\":function(t){return t>=12736&&t<=12783},\"Katakana Phonetic Extensions\":function(t){return t>=12784&&t<=12799},\"Enclosed CJK Letters and Months\":function(t){return t>=12800&&t<=13055},\"CJK Compatibility\":function(t){return t>=13056&&t<=13311},\"CJK Unified Ideographs Extension A\":function(t){return t>=13312&&t<=19903},\"Yijing Hexagram Symbols\":function(t){return t>=19904&&t<=19967},\"CJK Unified Ideographs\":function(t){return t>=19968&&t<=40959},\"Yi Syllables\":function(t){return t>=40960&&t<=42127},\"Yi Radicals\":function(t){return t>=42128&&t<=42191},\"Hangul Jamo Extended-A\":function(t){return t>=43360&&t<=43391},\"Hangul Syllables\":function(t){return t>=44032&&t<=55215},\"Hangul Jamo Extended-B\":function(t){return t>=55216&&t<=55295},\"Private Use Area\":function(t){return t>=57344&&t<=63743},\"CJK Compatibility Ideographs\":function(t){return t>=63744&&t<=64255},\"Arabic Presentation Forms-A\":function(t){return t>=64336&&t<=65023},\"Vertical Forms\":function(t){return t>=65040&&t<=65055},\"CJK Compatibility Forms\":function(t){return t>=65072&&t<=65103},\"Small Form Variants\":function(t){return t>=65104&&t<=65135},\"Arabic Presentation Forms-B\":function(t){return t>=65136&&t<=65279},\"Halfwidth and Fullwidth Forms\":function(t){return t>=65280&&t<=65519}};function Tn(t){for(var e=0,r=t;e<r.length;e+=1){if(En(r[e].charCodeAt(0)))return !0}return !1}function Pn(t){return !Bn.Arabic(t)&&(!Bn[\"Arabic Supplement\"](t)&&(!Bn[\"Arabic Extended-A\"](t)&&(!Bn[\"Arabic Presentation Forms-A\"](t)&&!Bn[\"Arabic Presentation Forms-B\"](t))))}function En(t){return 746===t||747===t||!(t<4352)&&(!!Bn[\"Bopomofo Extended\"](t)||(!!Bn.Bopomofo(t)||(!(!Bn[\"CJK Compatibility Forms\"](t)||t>=65097&&t<=65103)||(!!Bn[\"CJK Compatibility Ideographs\"](t)||(!!Bn[\"CJK Compatibility\"](t)||(!!Bn[\"CJK Radicals Supplement\"](t)||(!!Bn[\"CJK Strokes\"](t)||(!(!Bn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||(!!Bn[\"CJK Unified Ideographs Extension A\"](t)||(!!Bn[\"CJK Unified Ideographs\"](t)||(!!Bn[\"Enclosed CJK Letters and Months\"](t)||(!!Bn[\"Hangul Compatibility Jamo\"](t)||(!!Bn[\"Hangul Jamo Extended-A\"](t)||(!!Bn[\"Hangul Jamo Extended-B\"](t)||(!!Bn[\"Hangul Jamo\"](t)||(!!Bn[\"Hangul Syllables\"](t)||(!!Bn.Hiragana(t)||(!!Bn[\"Ideographic Description Characters\"](t)||(!!Bn.Kanbun(t)||(!!Bn[\"Kangxi Radicals\"](t)||(!!Bn[\"Katakana Phonetic Extensions\"](t)||(!(!Bn.Katakana(t)||12540===t)||(!(!Bn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||(!(!Bn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(!!Bn[\"Unified Canadian Aboriginal Syllabics\"](t)||(!!Bn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||(!!Bn[\"Vertical Forms\"](t)||(!!Bn[\"Yijing Hexagram Symbols\"](t)||(!!Bn[\"Yi Syllables\"](t)||!!Bn[\"Yi Radicals\"](t))))))))))))))))))))))))))))))}function Mn(t){return !(En(t)||function(t){return !(!Bn[\"Latin-1 Supplement\"](t)||167!==t&&169!==t&&174!==t&&177!==t&&188!==t&&189!==t&&190!==t&&215!==t&&247!==t)||(!(!Bn[\"General Punctuation\"](t)||8214!==t&&8224!==t&&8225!==t&&8240!==t&&8241!==t&&8251!==t&&8252!==t&&8258!==t&&8263!==t&&8264!==t&&8265!==t&&8273!==t)||(!!Bn[\"Letterlike Symbols\"](t)||(!!Bn[\"Number Forms\"](t)||(!(!Bn[\"Miscellaneous Technical\"](t)||!(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215))||(!(!Bn[\"Control Pictures\"](t)||9251===t)||(!!Bn[\"Optical Character Recognition\"](t)||(!!Bn[\"Enclosed Alphanumerics\"](t)||(!!Bn[\"Geometric Shapes\"](t)||(!(!Bn[\"Miscellaneous Symbols\"](t)||t>=9754&&t<=9759)||(!(!Bn[\"Miscellaneous Symbols and Arrows\"](t)||!(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243))||(!!Bn[\"CJK Symbols and Punctuation\"](t)||(!!Bn.Katakana(t)||(!!Bn[\"Private Use Area\"](t)||(!!Bn[\"CJK Compatibility Forms\"](t)||(!!Bn[\"Small Form Variants\"](t)||(!!Bn[\"Halfwidth and Fullwidth Forms\"](t)||(8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)))))))))))))))))}(t))}function Vn(t){return t>=1424&&t<=2303||Bn[\"Arabic Presentation Forms-A\"](t)||Bn[\"Arabic Presentation Forms-B\"](t)}function Fn(t,e){return !(!e&&Vn(t))&&!(t>=2304&&t<=3583||t>=3840&&t<=4255||Bn.Khmer(t))}function Ln(t){for(var e=0,r=t;e<r.length;e+=1){if(Vn(r[e].charCodeAt(0)))return !0}return !1}var On=\"deferred\",Dn=\"loading\",Rn=\"loaded\",Un=null,jn=\"unavailable\",qn=null,Nn=function(t){Un&&Un(t);};function Kn(){Xn.fire(new zt(\"pluginStateChange\",{pluginStatus:jn,pluginURL:qn}));}var Xn=new Bt,Zn=function(){return jn},Gn=function(){if(jn!==On||!qn)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");jn=Dn,Kn(),qn&&bt({url:qn},(function(t){t?Nn(t):(jn=Rn,Kn());}));},Jn={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return jn===Rn||null!=Jn.applyArabicShaping},isLoading:function(){return jn===Dn},setState:function(t){jn=t.pluginStatus,qn=t.pluginURL;},isParsed:function(){return null!=Jn.applyArabicShaping&&null!=Jn.processBidirectionalText&&null!=Jn.processStyledBidirectionalText},getPluginURL:function(){return qn}},Hn=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Cn,this.transition={});};Hn.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;r<n.length;r+=1){if(!Fn(n[r].charCodeAt(0),e))return !1}return !0}(t,Jn.isLoaded())},Hn.prototype.crossFadingFactor=function(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)},Hn.prototype.getCrossfadeParameters=function(){var t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var Yn=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Ar(t))return new Lr(t,e);if(Pr(t)){var r=Fr(t,e);if(\"error\"===r.result)throw new Error(r.value.map((function(t){return t.key+\": \"+t.message})).join(\", \"));return r.value}var n=t;return \"string\"==typeof t&&\"color\"===e.type&&(n=Qt.parse(t)),{kind:\"constant\",evaluate:function(){return n}}}(void 0===e?t.specification.default:e,t.specification);};Yn.prototype.isDataDriven=function(){return \"source\"===this.expression.kind||\"composite\"===this.expression.kind},Yn.prototype.possiblyEvaluate=function(t,e){return this.property.possiblyEvaluate(this,t,e)};var $n=function(t){this.property=t,this.value=new Yn(t,void 0);};$n.prototype.transitioned=function(t,e){return new Qn(this.property,this.value,e,c({},t.transition,this.transition),t.now)},$n.prototype.untransitioned=function(){return new Qn(this.property,this.value,null,{},0)};var Wn=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues);};Wn.prototype.getValue=function(t){return b(this._values[t].value.value)},Wn.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new $n(this._values[t].property)),this._values[t].value=new Yn(this._values[t].property,null===e?void 0:b(e));},Wn.prototype.getTransition=function(t){return b(this._values[t].transition)},Wn.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new $n(this._values[t].property)),this._values[t].transition=b(e)||void 0;},Wn.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);e<r.length;e+=1){var n=r[e],i=this.getValue(n);void 0!==i&&(t[n]=i);var a=this.getTransition(n);void 0!==a&&(t[n+\"-transition\"]=a);}return t},Wn.prototype.transitioned=function(t,e){for(var r=new ti(this._properties),n=0,i=Object.keys(this._values);n<i.length;n+=1){var a=i[n];r._values[a]=this._values[a].transitioned(t,e._values[a]);}return r},Wn.prototype.untransitioned=function(){for(var t=new ti(this._properties),e=0,r=Object.keys(this._values);e<r.length;e+=1){var n=r[e];t._values[n]=this._values[n].untransitioned();}return t};var Qn=function(t,e,r,n,i){this.property=t,this.value=e,this.begin=i+n.delay||0,this.end=this.begin+n.duration||0,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r);};Qn.prototype.possiblyEvaluate=function(t,e){var r=t.now||0,n=this.value.possiblyEvaluate(t,e),i=this.prior;if(i){if(r>this.end)return this.prior=null,n;if(this.value.isDataDriven())return this.prior=null,n;if(r<this.begin)return i.possiblyEvaluate(t,e);var a=(r-this.begin)/(this.end-this.begin);return this.property.interpolate(i.possiblyEvaluate(t,e),n,function(t){if(t<=0)return 0;if(t>=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(a))}return n};var ti=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);};ti.prototype.possiblyEvaluate=function(t,e){for(var r=new ni(this._properties),n=0,i=Object.keys(this._values);n<i.length;n+=1){var a=i[n];r._values[a]=this._values[a].possiblyEvaluate(t,e);}return r},ti.prototype.hasTransition=function(){for(var t=0,e=Object.keys(this._values);t<e.length;t+=1){var r=e[t];if(this._values[r].prior)return !0}return !1};var ei=function(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues);};ei.prototype.getValue=function(t){return b(this._values[t].value)},ei.prototype.setValue=function(t,e){this._values[t]=new Yn(this._values[t].property,null===e?void 0:b(e));},ei.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);e<r.length;e+=1){var n=r[e],i=this.getValue(n);void 0!==i&&(t[n]=i);}return t},ei.prototype.possiblyEvaluate=function(t,e){for(var r=new ni(this._properties),n=0,i=Object.keys(this._values);n<i.length;n+=1){var a=i[n];r._values[a]=this._values[a].possiblyEvaluate(t,e);}return r};var ri=function(t,e,r){this.property=t,this.value=e,this.parameters=r;};ri.prototype.isConstant=function(){return \"constant\"===this.value.kind},ri.prototype.constantOr=function(t){return \"constant\"===this.value.kind?this.value.value:t},ri.prototype.evaluate=function(t,e,r){return this.property.evaluate(this.value,this.parameters,t,e,r)};var ni=function(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues);};ni.prototype.get=function(t){return this._values[t]};var ii=function(t){this.specification=t;};ii.prototype.possiblyEvaluate=function(t,e){return t.expression.evaluate(e)},ii.prototype.interpolate=function(t,e,r){var n=ze[this.specification.type];return n?n(t,e,r):t};var ai=function(t,e){this.specification=t,this.overrides=e;};ai.prototype.possiblyEvaluate=function(t,e,r){return \"constant\"===t.expression.kind||\"camera\"===t.expression.kind?new ri(this,{kind:\"constant\",value:t.expression.evaluate(e,null,{},r)},e):new ri(this,t.expression,e)},ai.prototype.interpolate=function(t,e,r){if(\"constant\"!==t.value.kind||\"constant\"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new ri(this,{kind:\"constant\",value:void 0},t.parameters);var n=ze[this.specification.type];return n?new ri(this,{kind:\"constant\",value:n(t.value.value,e.value.value,r)},t.parameters):t},ai.prototype.evaluate=function(t,e,r,n,i){return \"constant\"===t.kind?t.value:t.evaluate(e,r,n,i)};var oi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(t,e,r){if(void 0===t.value)return new ri(this,{kind:\"constant\",value:void 0},e);if(\"constant\"===t.expression.kind){var n=t.expression.evaluate(e,null,{},r),i=\"resolvedImage\"===t.property.specification.type&&\"string\"!=typeof n?n.name:n,a=this._calculate(i,i,i,e);return new ri(this,{kind:\"constant\",value:a},e)}if(\"camera\"===t.expression.kind){var o=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new ri(this,{kind:\"constant\",value:o},e)}return new ri(this,t.expression,e)},e.prototype.evaluate=function(t,e,r,n,i){if(\"source\"===t.kind){var a=t.evaluate(e,r,n,i);return this._calculate(a,a,a,e)}return \"composite\"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,n),t.evaluate({zoom:Math.floor(e.zoom)},r,n),t.evaluate({zoom:Math.floor(e.zoom)+1},r,n),e):t.value},e.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(ai),si=function(t){this.specification=t;};si.prototype.possiblyEvaluate=function(t,e,r){if(void 0!==t.value){if(\"constant\"===t.expression.kind){var n=t.expression.evaluate(e,null,{},r);return this._calculate(n,n,n,e)}return this._calculate(t.expression.evaluate(new Hn(Math.floor(e.zoom-1),e)),t.expression.evaluate(new Hn(Math.floor(e.zoom),e)),t.expression.evaluate(new Hn(Math.floor(e.zoom+1),e)),e)}},si.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},si.prototype.interpolate=function(t){return t};var ui=function(t){this.specification=t;};ui.prototype.possiblyEvaluate=function(t,e,r){return !!t.expression.evaluate(e,null,{},r)},ui.prototype.interpolate=function(){return !1};var li=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var n=this.defaultPropertyValues[e]=new Yn(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new $n(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({});}};An(\"DataDrivenProperty\",ai),An(\"DataConstantProperty\",ii),An(\"CrossFadedDataDrivenProperty\",oi),An(\"CrossFadedProperty\",si),An(\"ColorRampProperty\",ui);var pi=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter=function(){return !0},\"custom\"!==e.type&&(e=e,this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,\"background\"!==e.type&&(this.source=e.source,this.sourceLayer=e[\"source-layer\"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new ei(r.layout)),r.paint)){for(var n in this._transitionablePaint=new Wn(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned();}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return \"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(mn,n,t,e,r))return}\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e;},e.prototype.getPaintProperty=function(t){return v(t,\"-transition\")?this._transitionablePaint.getTransition(t.slice(0,-\"-transition\".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".paint.\"+t;if(this._validate(dn,n,t,e,r))return !1}if(v(t,\"-transition\"))return this._transitionablePaint.setTransition(t.slice(0,-\"-transition\".length),e||void 0),!1;var i=this._transitionablePaint._values[t],a=\"cross-faded-data-driven\"===i.property.specification[\"property-type\"],o=i.value.isDataDriven(),s=i.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var u=this._transitionablePaint._values[t].value;return u.isDataDriven()||o||a||this._handleOverridablePaintPropertyUpdate(t,s,u)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return !1},e.prototype.isHidden=function(t){return !!(this.minzoom&&t<this.minzoom)||(!!(this.maxzoom&&t>=this.maxzoom)||\"none\"===this.visibility)},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,e);},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),x(t,(function(t,e){return !(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)}))},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&vn(this,t.call(fn,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:Tt,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return !1},e.prototype.isTileClipped=function(){return !1},e.prototype.hasOffscreenPass=function(){return !1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof ri&&xr(e.property.specification)&&((\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent))return !0}return !1},e}(Bt),ci={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},hi=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;},fi=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0);};function yi(t,e){void 0===e&&(e=1);var r=0,n=0;return {members:t.map((function(t){var i,a=(i=t.type,ci[i].BYTES_PER_ELEMENT),o=r=di(r,Math.max(e,a)),s=t.components||1;return n=Math.max(n,a),r+=a*s,{name:t.name,type:t.type,components:s,offset:o}})),size:di(r,Math.max(n,e)),alignment:e}}function di(t,e){return Math.ceil(t/e)*e}fi.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},fi.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},fi.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());},fi.prototype.clear=function(){this.length=0;},fi.prototype.resize=function(t){this.reserve(t),this.length=t;},fi.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}},fi.prototype._refreshViews=function(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")};var mi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(fi);mi.prototype.bytesPerElement=4,An(\"StructArrayLayout2i4\",mi);var vi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(fi);vi.prototype.bytesPerElement=8,An(\"StructArrayLayout4i8\",vi);var gi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(fi);gi.prototype.bytesPerElement=12,An(\"StructArrayLayout2i4i12\",gi);var xi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=4*t,u=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[u+4]=n,this.uint8[u+5]=i,this.uint8[u+6]=a,this.uint8[u+7]=o,t},e}(fi);xi.prototype.bytesPerElement=8,An(\"StructArrayLayout2i4ub8\",xi);var bi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u){var l=8*t;return this.uint16[l+0]=e,this.uint16[l+1]=r,this.uint16[l+2]=n,this.uint16[l+3]=i,this.uint16[l+4]=a,this.uint16[l+5]=o,this.uint16[l+6]=s,this.uint16[l+7]=u,t},e}(fi);bi.prototype.bytesPerElement=16,An(\"StructArrayLayout8ui16\",bi);var _i=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p,c){var h=this.length;return this.resize(h+1),this.emplace(h,t,e,r,n,i,a,o,s,u,l,p,c)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c,h){var f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=n,this.int16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=o,this.uint16[f+6]=s,this.uint16[f+7]=u,this.int16[f+8]=l,this.int16[f+9]=p,this.int16[f+10]=c,this.int16[f+11]=h,t},e}(fi);_i.prototype.bytesPerElement=24,An(\"StructArrayLayout4i4ui4i24\",_i);var wi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(fi);wi.prototype.bytesPerElement=12,An(\"StructArrayLayout3f12\",wi);var Ai=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint32[r+0]=e,t},e}(fi);Ai.prototype.bytesPerElement=4,An(\"StructArrayLayout1ul4\",Ai);var Si=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,u,l,p)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c){var h=12*t,f=6*t;return this.int16[h+0]=e,this.int16[h+1]=r,this.int16[h+2]=n,this.int16[h+3]=i,this.int16[h+4]=a,this.int16[h+5]=o,this.uint32[f+3]=s,this.uint16[h+8]=u,this.uint16[h+9]=l,this.int16[h+10]=p,this.int16[h+11]=c,t},e}(fi);Si.prototype.bytesPerElement=24,An(\"StructArrayLayout6i1ul2ui2i24\",Si);var ki=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(fi);ki.prototype.bytesPerElement=12,An(\"StructArrayLayout2i2i2i12\",ki);var Ii=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=12*t,o=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[o+1]=n,this.float32[o+2]=i,t},e}(fi);Ii.prototype.bytesPerElement=12,An(\"StructArrayLayout2ub2f12\",Ii);var zi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m){var v=this.length;return this.resize(v+1),this.emplace(v,t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m,v){var g=24*t,x=12*t,b=48*t;return this.int16[g+0]=e,this.int16[g+1]=r,this.uint16[g+2]=n,this.uint16[g+3]=i,this.uint32[x+2]=a,this.uint32[x+3]=o,this.uint32[x+4]=s,this.uint16[g+10]=u,this.uint16[g+11]=l,this.uint16[g+12]=p,this.float32[x+7]=c,this.float32[x+8]=h,this.uint8[b+36]=f,this.uint8[b+37]=y,this.uint8[b+38]=d,this.uint32[x+10]=m,this.int16[g+22]=v,t},e}(fi);zi.prototype.bytesPerElement=48,An(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",zi);var Ci=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m,v,g,x,b,_,w,A,S,k){var I=this.length;return this.resize(I+1),this.emplace(I,t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m,v,g,x,b,_,w,A,S,k)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m,v,g,x,b,_,w,A,S,k,I){var z=30*t,C=15*t;return this.int16[z+0]=e,this.int16[z+1]=r,this.int16[z+2]=n,this.int16[z+3]=i,this.int16[z+4]=a,this.int16[z+5]=o,this.int16[z+6]=s,this.int16[z+7]=u,this.uint16[z+8]=l,this.uint16[z+9]=p,this.uint16[z+10]=c,this.uint16[z+11]=h,this.uint16[z+12]=f,this.uint16[z+13]=y,this.uint16[z+14]=d,this.uint16[z+15]=m,this.uint16[z+16]=v,this.uint16[z+17]=g,this.uint16[z+18]=x,this.uint16[z+19]=b,this.uint16[z+20]=_,this.uint16[z+21]=w,this.uint32[C+11]=A,this.float32[C+12]=S,this.float32[C+13]=k,this.float32[C+14]=I,t},e}(fi);Ci.prototype.bytesPerElement=60,An(\"StructArrayLayout8i14ui1ul3f60\",Ci);var Bi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.float32[r+0]=e,t},e}(fi);Bi.prototype.bytesPerElement=4,An(\"StructArrayLayout1f4\",Bi);var Ti=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(fi);Ti.prototype.bytesPerElement=6,An(\"StructArrayLayout3i6\",Ti);var Pi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=2*t,a=4*t;return this.uint32[i+0]=e,this.uint16[a+2]=r,this.uint16[a+3]=n,t},e}(fi);Pi.prototype.bytesPerElement=8,An(\"StructArrayLayout1ul2ui8\",Pi);var Ei=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(fi);Ei.prototype.bytesPerElement=6,An(\"StructArrayLayout3ui6\",Ei);var Mi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(fi);Mi.prototype.bytesPerElement=4,An(\"StructArrayLayout2ui4\",Mi);var Vi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint16[r+0]=e,t},e}(fi);Vi.prototype.bytesPerElement=2,An(\"StructArrayLayout1ui2\",Vi);var Fi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(fi);Fi.prototype.bytesPerElement=8,An(\"StructArrayLayout2f8\",Fi);var Li=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(fi);Li.prototype.bytesPerElement=16,An(\"StructArrayLayout4f16\",Li);var Oi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},radius:{configurable:!0},signedDistanceFromAnchor:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointX.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.anchorPointY.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.x1.set=function(t){this._structArray.int16[this._pos2+2]=t;},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.y1.set=function(t){this._structArray.int16[this._pos2+3]=t;},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.x2.set=function(t){this._structArray.int16[this._pos2+4]=t;},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.y2.set=function(t){this._structArray.int16[this._pos2+5]=t;},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.featureIndex.set=function(t){this._structArray.uint32[this._pos4+3]=t;},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.sourceLayerIndex.set=function(t){this._structArray.uint16[this._pos2+8]=t;},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.bucketIndex.set=function(t){this._structArray.uint16[this._pos2+9]=t;},r.radius.get=function(){return this._structArray.int16[this._pos2+10]},r.radius.set=function(t){this._structArray.int16[this._pos2+10]=t;},r.signedDistanceFromAnchor.get=function(){return this._structArray.int16[this._pos2+11]},r.signedDistanceFromAnchor.set=function(t){this._structArray.int16[this._pos2+11]=t;},r.anchorPoint.get=function(){return new i(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(hi);Oi.prototype.size=24;var Di=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new Oi(this,t)},e}(Si);An(\"CollisionBoxArray\",Di);var Ri=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorX.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.anchorY.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.glyphStartIndex.set=function(t){this._structArray.uint16[this._pos2+2]=t;},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.numGlyphs.set=function(t){this._structArray.uint16[this._pos2+3]=t;},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.vertexStartIndex.set=function(t){this._structArray.uint32[this._pos4+2]=t;},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineStartIndex.set=function(t){this._structArray.uint32[this._pos4+3]=t;},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.lineLength.set=function(t){this._structArray.uint32[this._pos4+4]=t;},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.segment.set=function(t){this._structArray.uint16[this._pos2+10]=t;},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.lowerSize.set=function(t){this._structArray.uint16[this._pos2+11]=t;},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.upperSize.set=function(t){this._structArray.uint16[this._pos2+12]=t;},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetX.set=function(t){this._structArray.float32[this._pos4+7]=t;},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.lineOffsetY.set=function(t){this._structArray.float32[this._pos4+8]=t;},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.writingMode.set=function(t){this._structArray.uint8[this._pos1+36]=t;},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t;},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t;},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t;},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},r.associatedIconIndex.set=function(t){this._structArray.int16[this._pos2+22]=t;},Object.defineProperties(e.prototype,r),e}(hi);Ri.prototype.size=48;var Ui=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new Ri(this,t)},e}(zi);An(\"PlacedSymbolArray\",Ui);var ji=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorX.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.anchorY.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.rightJustifiedTextSymbolIndex.set=function(t){this._structArray.int16[this._pos2+2]=t;},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.centerJustifiedTextSymbolIndex.set=function(t){this._structArray.int16[this._pos2+3]=t;},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.leftJustifiedTextSymbolIndex.set=function(t){this._structArray.int16[this._pos2+4]=t;},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.verticalPlacedTextSymbolIndex.set=function(t){this._structArray.int16[this._pos2+5]=t;},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.placedIconSymbolIndex.set=function(t){this._structArray.int16[this._pos2+6]=t;},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.verticalPlacedIconSymbolIndex.set=function(t){this._structArray.int16[this._pos2+7]=t;},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.key.set=function(t){this._structArray.uint16[this._pos2+8]=t;},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxStartIndex.set=function(t){this._structArray.uint16[this._pos2+9]=t;},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.textBoxEndIndex.set=function(t){this._structArray.uint16[this._pos2+10]=t;},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxStartIndex.set=function(t){this._structArray.uint16[this._pos2+11]=t;},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.verticalTextBoxEndIndex.set=function(t){this._structArray.uint16[this._pos2+12]=t;},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxStartIndex.set=function(t){this._structArray.uint16[this._pos2+13]=t;},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.iconBoxEndIndex.set=function(t){this._structArray.uint16[this._pos2+14]=t;},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxStartIndex.set=function(t){this._structArray.uint16[this._pos2+15]=t;},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.verticalIconBoxEndIndex.set=function(t){this._structArray.uint16[this._pos2+16]=t;},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.featureIndex.set=function(t){this._structArray.uint16[this._pos2+17]=t;},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numHorizontalGlyphVertices.set=function(t){this._structArray.uint16[this._pos2+18]=t;},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numVerticalGlyphVertices.set=function(t){this._structArray.uint16[this._pos2+19]=t;},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numIconVertices.set=function(t){this._structArray.uint16[this._pos2+20]=t;},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.numVerticalIconVertices.set=function(t){this._structArray.uint16[this._pos2+21]=t;},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+11]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+11]=t;},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+12]},r.textBoxScale.set=function(t){this._structArray.float32[this._pos4+12]=t;},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.set=function(t){this._structArray.float32[this._pos4+13]=t;},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.set=function(t){this._structArray.float32[this._pos4+14]=t;},Object.defineProperties(e.prototype,r),e}(hi);ji.prototype.size=60;var qi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ji(this,t)},e}(Ci);An(\"SymbolInstanceArray\",qi);var Ni=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={offsetX:{configurable:!0}};return r.offsetX.get=function(){return this._structArray.float32[this._pos4+0]},r.offsetX.set=function(t){this._structArray.float32[this._pos4+0]=t;},Object.defineProperties(e.prototype,r),e}(hi);Ni.prototype.size=4;var Ki=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e.prototype.get=function(t){return new Ni(this,t)},e}(Bi);An(\"GlyphOffsetArray\",Ki);var Xi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={x:{configurable:!0},y:{configurable:!0},tileUnitDistanceFromAnchor:{configurable:!0}};return r.x.get=function(){return this._structArray.int16[this._pos2+0]},r.x.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.y.get=function(){return this._structArray.int16[this._pos2+1]},r.y.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.tileUnitDistanceFromAnchor.get=function(){return this._structArray.int16[this._pos2+2]},r.tileUnitDistanceFromAnchor.set=function(t){this._structArray.int16[this._pos2+2]=t;},Object.defineProperties(e.prototype,r),e}(hi);Xi.prototype.size=6;var Zi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e.prototype.get=function(t){return new Xi(this,t)},e}(Ti);An(\"SymbolLineVertexArray\",Zi);var Gi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.featureIndex.set=function(t){this._structArray.uint32[this._pos4+0]=t;},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.sourceLayerIndex.set=function(t){this._structArray.uint16[this._pos2+2]=t;},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},r.bucketIndex.set=function(t){this._structArray.uint16[this._pos2+3]=t;},Object.defineProperties(e.prototype,r),e}(hi);Gi.prototype.size=8;var Ji=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new Gi(this,t)},e}(Pi);An(\"FeatureIndexArray\",Ji);var Hi=yi([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,Yi=function(t){void 0===t&&(t=[]),this.segments=t;};function $i(t,e){return 256*(t=l(Math.floor(t),0,255))+(e=l(Math.floor(e),0,255))}Yi.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>Yi.MAX_VERTEX_ARRAY_LENGTH&&w(\"Max vertices per segment is \"+Yi.MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+t),(!i||i.vertexLength+t>Yi.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},Yi.prototype.get=function(){return this.segments},Yi.prototype.destroy=function(){for(var t=0,e=this.segments;t<e.length;t+=1){var r=e[t];for(var n in r.vaos)r.vaos[n].destroy();}},Yi.simpleSegment=function(t,e,r,n){return new Yi([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:n,vaos:{},sortKey:0}])},Yi.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,An(\"SegmentVector\",Yi);var Wi=function(){this.ids=[],this.positions=[],this.indexed=!1;};function Qi(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}Wi.prototype.add=function(t,e,r,n){this.ids.push(t),this.positions.push(e,r,n);},Wi.prototype.getPositions=function(t){for(var e=0,r=this.ids.length-1;e<r;){var n=e+r>>1;this.ids[n]>=t?r=n:e=n+1;}for(var i=[];this.ids[e]===t;){var a=this.positions[3*e],o=this.positions[3*e+1],s=this.positions[3*e+2];i.push({index:a,start:o,end:s}),e++;}return i},Wi.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return function t(e,r,n,i){if(n>=i)return;var a=e[n+i>>1];var o=n-1;var s=i+1;for(;;){do{o++;}while(e[o]<a);do{s--;}while(e[s]>a);if(o>=s)break;Qi(e,o,s),Qi(r,3*o,3*s),Qi(r,3*o+1,3*s+1),Qi(r,3*o+2,3*s+2);}t(e,r,n,s);t(e,r,s+1,i);}(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}},Wi.deserialize=function(t){var e=new Wi;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e},An(\"FeaturePositionMap\",Wi);var ta=function(t,e){this.gl=t.gl,this.location=e;},ea=function(t){function e(e,r){t.call(this,e,r),this.current=0;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t));},e}(ta),ra=function(t){function e(e,r){t.call(this,e,r),this.current=0;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){this.current!==t&&(this.current=t,this.gl.uniform1f(this.location,t));},e}(ta),na=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0];}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));},e}(ta),ia=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0,0];}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));},e}(ta),aa=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0,0,0];}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]&&t[3]===this.current[3]||(this.current=t,this.gl.uniform4f(this.location,t[0],t[1],t[2],t[3]));},e}(ta),oa=function(t){function e(e,r){t.call(this,e,r),this.current=Qt.transparent;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t.r===this.current.r&&t.g===this.current.g&&t.b===this.current.b&&t.a===this.current.a||(this.current=t,this.gl.uniform4f(this.location,t.r,t.g,t.b,t.a));},e}(ta),sa=new Float32Array(16),ua=function(t){function e(e,r){t.call(this,e,r),this.current=sa;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(var e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}},e}(ta);function la(t){return [$i(255*t.r,255*t.g),$i(255*t.b,255*t.a)]}var pa=function(t,e,r){this.value=t,this.names=e,this.uniformNames=this.names.map((function(t){return \"u_\"+t})),this.type=r,this.maxValue=-1/0;};pa.prototype.defines=function(){return this.names.map((function(t){return \"#define HAS_UNIFORM_u_\"+t}))},pa.prototype.setConstantPatternPositions=function(){},pa.prototype.populatePaintArray=function(){},pa.prototype.updatePaintArray=function(){},pa.prototype.upload=function(){},pa.prototype.destroy=function(){},pa.prototype.setUniforms=function(t,e,r,n){e.set(n.constantOr(this.value));},pa.prototype.getBinding=function(t,e){return \"color\"===this.type?new oa(t,e):new ra(t,e)},pa.serialize=function(t){var e=t.value,r=t.names,n=t.type;return {value:In(e),names:r,type:n}},pa.deserialize=function(t){var e=t.value,r=t.names,n=t.type;return new pa(zn(e),r,n)};var ca=function(t,e,r){this.value=t,this.names=e,this.uniformNames=this.names.map((function(t){return \"u_\"+t})),this.type=r,this.maxValue=-1/0,this.patternPositions={patternTo:null,patternFrom:null};};ca.prototype.defines=function(){return this.names.map((function(t){return \"#define HAS_UNIFORM_u_\"+t}))},ca.prototype.populatePaintArray=function(){},ca.prototype.updatePaintArray=function(){},ca.prototype.upload=function(){},ca.prototype.destroy=function(){},ca.prototype.setConstantPatternPositions=function(t,e){this.patternPositions.patternTo=t.tlbr,this.patternPositions.patternFrom=e.tlbr;},ca.prototype.setUniforms=function(t,e,r,n,i){var a=this.patternPositions;\"u_pattern_to\"===i&&a.patternTo&&e.set(a.patternTo),\"u_pattern_from\"===i&&a.patternFrom&&e.set(a.patternFrom);},ca.prototype.getBinding=function(t,e){return new aa(t,e)};var ha=function(t,e,r,n){this.expression=t,this.names=e,this.type=r,this.uniformNames=this.names.map((function(t){return \"a_\"+t})),this.maxValue=-1/0,this.paintVertexAttributes=e.map((function(t){return {name:\"a_\"+t,type:\"Float32\",components:\"color\"===r?2:1,offset:0}})),this.paintVertexArray=new n;};ha.prototype.defines=function(){return []},ha.prototype.setConstantPatternPositions=function(){},ha.prototype.populatePaintArray=function(t,e,r,n){var i=this.paintVertexArray,a=i.length;i.reserve(t);var o=this.expression.evaluate(new Hn(0),e,{},[],n);if(\"color\"===this.type)for(var s=la(o),u=a;u<t;u++)i.emplaceBack(s[0],s[1]);else{for(var l=a;l<t;l++)i.emplaceBack(o);this.maxValue=Math.max(this.maxValue,o);}},ha.prototype.updatePaintArray=function(t,e,r,n){var i=this.paintVertexArray,a=this.expression.evaluate({zoom:0},r,n);if(\"color\"===this.type)for(var o=la(a),s=t;s<e;s++)i.emplace(s,o[0],o[1]);else{for(var u=t;u<e;u++)i.emplace(u,a);this.maxValue=Math.max(this.maxValue,a);}},ha.prototype.upload=function(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));},ha.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();},ha.prototype.setUniforms=function(t,e){e.set(0);},ha.prototype.getBinding=function(t,e){return new ra(t,e)};var fa=function(t,e,r,n,i,a){this.expression=t,this.names=e,this.uniformNames=this.names.map((function(t){return \"u_\"+t+\"_t\"})),this.type=r,this.useIntegerZoom=n,this.zoom=i,this.maxValue=-1/0;var o=a;this.paintVertexAttributes=e.map((function(t){return {name:\"a_\"+t,type:\"Float32\",components:\"color\"===r?4:2,offset:0}})),this.paintVertexArray=new o;};fa.prototype.defines=function(){return []},fa.prototype.setConstantPatternPositions=function(){},fa.prototype.populatePaintArray=function(t,e,r,n){var i=this.paintVertexArray,a=i.length;i.reserve(t);var o=this.expression.evaluate(new Hn(this.zoom),e,{},[],n),s=this.expression.evaluate(new Hn(this.zoom+1),e,{},[],n);if(\"color\"===this.type)for(var u=la(o),l=la(s),p=a;p<t;p++)i.emplaceBack(u[0],u[1],l[0],l[1]);else{for(var c=a;c<t;c++)i.emplaceBack(o,s);this.maxValue=Math.max(this.maxValue,o,s);}},fa.prototype.updatePaintArray=function(t,e,r,n){var i=this.paintVertexArray,a=this.expression.evaluate({zoom:this.zoom},r,n),o=this.expression.evaluate({zoom:this.zoom+1},r,n);if(\"color\"===this.type)for(var s=la(a),u=la(o),l=t;l<e;l++)i.emplace(l,s[0],s[1],u[0],u[1]);else{for(var p=t;p<e;p++)i.emplace(p,a,o);this.maxValue=Math.max(this.maxValue,a,o);}},fa.prototype.upload=function(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));},fa.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();},fa.prototype.interpolationFactor=function(t){return this.useIntegerZoom&&(t=Math.floor(t)),l(this.expression.interpolationFactor(t,this.zoom,this.zoom+1),0,1)},fa.prototype.setUniforms=function(t,e,r){e.set(this.interpolationFactor(r.zoom));},fa.prototype.getBinding=function(t,e){return new ra(t,e)};var ya=function(t,e,r,n,i,a,o){this.expression=t,this.names=e,this.type=r,this.uniformNames=this.names.map((function(t){return \"u_\"+t+\"_t\"})),this.useIntegerZoom=n,this.zoom=i,this.maxValue=-1/0,this.layerId=o,this.paintVertexAttributes=e.map((function(t){return {name:\"a_\"+t,type:\"Uint16\",components:4,offset:0}})),this.zoomInPaintVertexArray=new a,this.zoomOutPaintVertexArray=new a;};ya.prototype.defines=function(){return []},ya.prototype.setConstantPatternPositions=function(){},ya.prototype.populatePaintArray=function(t,e,r){var n=this.zoomInPaintVertexArray,i=this.zoomOutPaintVertexArray,a=this.layerId,o=n.length;if(n.reserve(t),i.reserve(t),r&&e.patterns&&e.patterns[a]){var s=e.patterns[a],u=s.min,l=s.mid,p=s.max,c=r[u],h=r[l],f=r[p];if(!c||!h||!f)return;for(var y=o;y<t;y++)n.emplaceBack(h.tl[0],h.tl[1],h.br[0],h.br[1],c.tl[0],c.tl[1],c.br[0],c.br[1]),i.emplaceBack(h.tl[0],h.tl[1],h.br[0],h.br[1],f.tl[0],f.tl[1],f.br[0],f.br[1]);}},ya.prototype.updatePaintArray=function(t,e,r,n,i){var a=this.zoomInPaintVertexArray,o=this.zoomOutPaintVertexArray,s=this.layerId;if(i&&r.patterns&&r.patterns[s]){var u=r.patterns[s],l=u.min,p=u.mid,c=u.max,h=i[l],f=i[p],y=i[c];if(!h||!f||!y)return;for(var d=t;d<e;d++)a.emplace(d,f.tl[0],f.tl[1],f.br[0],f.br[1],h.tl[0],h.tl[1],h.br[0],h.br[1]),o.emplace(d,f.tl[0],f.tl[1],f.br[0],f.br[1],y.tl[0],y.tl[1],y.br[0],y.br[1]);}},ya.prototype.upload=function(t){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=t.createVertexBuffer(this.zoomInPaintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=t.createVertexBuffer(this.zoomOutPaintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));},ya.prototype.destroy=function(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy();},ya.prototype.setUniforms=function(t,e){e.set(0);},ya.prototype.getBinding=function(t,e){return new ra(t,e)};var da=function(){this.binders={},this.cacheKey=\"\",this._buffers=[];};da.createDynamic=function(t,e,r){var n=new da,i=[];for(var a in t.paint._values)if(r(a)){var o=t.paint.get(a);if(o instanceof ri&&xr(o.property.specification)){var s=va(a,t.type),u=o.property.specification.type,l=o.property.useIntegerZoom;if(\"cross-faded\"===o.property.specification[\"property-type\"]||\"cross-faded-data-driven\"===o.property.specification[\"property-type\"])if(\"constant\"===o.value.kind)n.binders[a]=new ca(o.value.value,s,u),i.push(\"/u_\"+a);else{var p=ga(a,u,\"source\");n.binders[a]=new ya(o.value,s,u,l,e,p,t.id),i.push(\"/a_\"+a);}else if(\"constant\"===o.value.kind)n.binders[a]=new pa(o.value.value,s,u),i.push(\"/u_\"+a);else if(\"source\"===o.value.kind){var c=ga(a,u,\"source\");n.binders[a]=new ha(o.value,s,u,c),i.push(\"/a_\"+a);}else{var h=ga(a,u,\"composite\");n.binders[a]=new fa(o.value,s,u,l,e,h),i.push(\"/z_\"+a);}}}return n.cacheKey=i.sort().join(\"\"),n},da.prototype.populatePaintArrays=function(t,e,r,n,i){for(var a in this.binders){this.binders[a].populatePaintArray(t,e,n,i);}},da.prototype.setConstantPatternPositions=function(t,e){for(var r in this.binders){this.binders[r].setConstantPatternPositions(t,e);}},da.prototype.updatePaintArrays=function(t,e,r,n,i){var a=!1;for(var o in t)for(var s=0,u=e.getPositions(+o);s<u.length;s+=1){var l=u[s],p=r.feature(l.index);for(var c in this.binders){var h=this.binders[c];if(!(h instanceof pa||h instanceof ca)&&!0===h.expression.isStateDependent){var f=n.paint.get(c);h.expression=f.value,h.updatePaintArray(l.start,l.end,p,t[o],i),a=!0;}}}return a},da.prototype.defines=function(){var t=[];for(var e in this.binders)t.push.apply(t,this.binders[e].defines());return t},da.prototype.getPaintVertexBuffers=function(){return this._buffers},da.prototype.getUniforms=function(t,e){var r=[];for(var n in this.binders)for(var i=this.binders[n],a=0,o=i.uniformNames;a<o.length;a+=1){var s=o[a];if(e[s]){var u=i.getBinding(t,e[s]);r.push({name:s,property:n,binding:u});}}return r},da.prototype.setUniforms=function(t,e,r,n){for(var i=0,a=e;i<a.length;i+=1){var o=a[i],s=o.name,u=o.property,l=o.binding;this.binders[u].setUniforms(t,l,n,r.get(u),s);}},da.prototype.updatePatternPaintBuffers=function(t){var e=[];for(var r in this.binders){var n=this.binders[r];if(n instanceof ya){var i=2===t.fromScale?n.zoomInPaintVertexBuffer:n.zoomOutPaintVertexBuffer;i&&e.push(i);}else(n instanceof ha||n instanceof fa)&&n.paintVertexBuffer&&e.push(n.paintVertexBuffer);}this._buffers=e;},da.prototype.upload=function(t){for(var e in this.binders)this.binders[e].upload(t);var r=[];for(var n in this.binders){var i=this.binders[n];(i instanceof ha||i instanceof fa)&&i.paintVertexBuffer&&r.push(i.paintVertexBuffer);}this._buffers=r;},da.prototype.destroy=function(){for(var t in this.binders)this.binders[t].destroy();};var ma=function(t,e,r,n){void 0===n&&(n=function(){return !0}),this.programConfigurations={};for(var i=0,a=e;i<a.length;i+=1){var o=a[i];this.programConfigurations[o.id]=da.createDynamic(o,r,n),this.programConfigurations[o.id].layoutAttributes=t;}this.needsUpload=!1,this._featureMap=new Wi,this._bufferOffset=0;};function va(t,e){return {\"text-opacity\":[\"opacity\"],\"icon-opacity\":[\"opacity\"],\"text-color\":[\"fill_color\"],\"icon-color\":[\"fill_color\"],\"text-halo-color\":[\"halo_color\"],\"icon-halo-color\":[\"halo_color\"],\"text-halo-blur\":[\"halo_blur\"],\"icon-halo-blur\":[\"halo_blur\"],\"text-halo-width\":[\"halo_width\"],\"icon-halo-width\":[\"halo_width\"],\"line-gap-width\":[\"gapwidth\"],\"line-pattern\":[\"pattern_to\",\"pattern_from\"],\"fill-pattern\":[\"pattern_to\",\"pattern_from\"],\"fill-extrusion-pattern\":[\"pattern_to\",\"pattern_from\"]}[t]||[t.replace(e+\"-\",\"\").replace(/-/g,\"_\")]}function ga(t,e,r){var n={color:{source:Fi,composite:Li},number:{source:Bi,composite:Fi}},i=function(t){return {\"line-pattern\":{source:bi,composite:bi},\"fill-pattern\":{source:bi,composite:bi},\"fill-extrusion-pattern\":{source:bi,composite:bi}}[t]}(t);return i&&i[r]||n[e][r]}ma.prototype.populatePaintArrays=function(t,e,r,n,i){for(var a in this.programConfigurations)this.programConfigurations[a].populatePaintArrays(t,e,r,n,i);void 0!==e.id&&this._featureMap.add(+e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;},ma.prototype.updatePaintArrays=function(t,e,r,n){for(var i=0,a=r;i<a.length;i+=1){var o=a[i];this.needsUpload=this.programConfigurations[o.id].updatePaintArrays(t,this._featureMap,e,o,n)||this.needsUpload;}},ma.prototype.get=function(t){return this.programConfigurations[t]},ma.prototype.upload=function(t){if(this.needsUpload){for(var e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}},ma.prototype.destroy=function(){for(var t in this.programConfigurations)this.programConfigurations[t].destroy();},An(\"ConstantBinder\",pa),An(\"CrossFadedConstantBinder\",ca),An(\"SourceExpressionBinder\",ha),An(\"CrossFadedCompositeBinder\",ya),An(\"CompositeExpressionBinder\",fa),An(\"ProgramConfiguration\",da,{omit:[\"_buffers\"]}),An(\"ProgramConfigurationSet\",ma);var xa=8192;var ba,_a=(ba=15,{min:-1*Math.pow(2,ba-1),max:Math.pow(2,ba-1)-1});function wa(t){for(var e=xa/t.extent,r=t.loadGeometry(),n=0;n<r.length;n++)for(var i=r[n],a=0;a<i.length;a++){var o=i[a];o.x=Math.round(o.x*e),o.y=Math.round(o.y*e),(o.x<_a.min||o.x>_a.max||o.y<_a.min||o.y>_a.max)&&(w(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\"),o.x=l(o.x,_a.min,_a.max),o.y=l(o.y,_a.min,_a.max));}return r}function Aa(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}var Sa=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new mi,this.indexArray=new Ei,this.segments=new Yi,this.programConfigurations=new ma(Hi,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}));};function ka(t,e){for(var r=0;r<t.length;r++)if(Va(e,t[r]))return !0;for(var n=0;n<e.length;n++)if(Va(t,e[n]))return !0;return !!Ba(t,e)}function Ia(t,e,r){return !!Va(t,e)||!!Pa(e,t,r)}function za(t,e){if(1===t.length)return Ma(e,t[0]);for(var r=0;r<e.length;r++)for(var n=e[r],i=0;i<n.length;i++)if(Va(t,n[i]))return !0;for(var a=0;a<t.length;a++)if(Ma(e,t[a]))return !0;for(var o=0;o<e.length;o++)if(Ba(t,e[o]))return !0;return !1}function Ca(t,e,r){if(t.length>1){if(Ba(t,e))return !0;for(var n=0;n<e.length;n++)if(Pa(e[n],t,r))return !0}for(var i=0;i<t.length;i++)if(Pa(t[i],e,r))return !0;return !1}function Ba(t,e){if(0===t.length||0===e.length)return !1;for(var r=0;r<t.length-1;r++)for(var n=t[r],i=t[r+1],a=0;a<e.length-1;a++){if(Ta(n,i,e[a],e[a+1]))return !0}return !1}function Ta(t,e,r,n){return A(t,r,n)!==A(e,r,n)&&A(t,e,r)!==A(t,e,n)}function Pa(t,e,r){var n=r*r;if(1===e.length)return t.distSqr(e[0])<n;for(var i=1;i<e.length;i++){if(Ea(t,e[i-1],e[i])<n)return !0}return !1}function Ea(t,e,r){var n=e.distSqr(r);if(0===n)return t.distSqr(e);var i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return i<0?t.distSqr(e):i>1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function Ma(t,e){for(var r,n,i,a=!1,o=0;o<t.length;o++)for(var s=0,u=(r=t[o]).length-1;s<r.length;u=s++)n=r[s],i=r[u],n.y>e.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function Va(t,e){for(var r=!1,n=0,i=t.length-1;n<t.length;i=n++){var a=t[n],o=t[i];a.y>e.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r);}return r}function Fa(t,e,r){var n=r[0],i=r[2];if(t.x<n.x&&e.x<n.x||t.x>i.x&&e.x>i.x||t.y<n.y&&e.y<n.y||t.y>i.y&&e.y>i.y)return !1;var a=A(t,e,r[0]);return a!==A(t,e,r[1])||a!==A(t,e,r[2])||a!==A(t,e,r[3])}function La(t,e,r){var n=e.paint.get(t).value;return \"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).binders[t].maxValue}function Oa(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function Da(t,e,r,n,a){if(!e[0]&&!e[1])return t;var o=i.convert(e)._mult(a);\"viewport\"===r&&o._rotate(-n);for(var s=[],u=0;u<t.length;u++){var l=t[u];s.push(l.sub(o));}return s}Sa.prototype.populate=function(t,e){var r=this.layers[0],n=[],i=null;\"circle\"===r.type&&(i=r.layout.get(\"circle-sort-key\"));for(var a=0,o=t;a<o.length;a+=1){var s=o[a],u=s.feature,l=s.index,p=s.sourceLayerIndex;if(this.layers[0]._featureFilter(new Hn(this.zoom),u)){var c=wa(u),h=i?i.evaluate(u,{}):void 0,f={id:u.id,properties:u.properties,type:u.type,sourceLayerIndex:p,index:l,geometry:c,patterns:{},sortKey:h};n.push(f);}}i&&n.sort((function(t,e){return t.sortKey-e.sortKey}));for(var y=0,d=n;y<d.length;y+=1){var m=d[y],v=m,g=v.geometry,x=v.index,b=v.sourceLayerIndex,_=t[x].feature;this.addFeature(m,g,x),e.featureIndex.insert(_,g,x,b,this.index);}},Sa.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);},Sa.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},Sa.prototype.uploadPending=function(){return !this.uploaded||this.programConfigurations.needsUpload},Sa.prototype.upload=function(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Hi),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;},Sa.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());},Sa.prototype.addFeature=function(t,e,r){for(var n=0,i=e;n<i.length;n+=1)for(var a=0,o=i[n];a<o.length;a+=1){var s=o[a],u=s.x,l=s.y;if(!(u<0||u>=xa||l<0||l>=xa)){var p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),c=p.vertexLength;Aa(this.layoutVertexArray,u,l,-1,-1),Aa(this.layoutVertexArray,u,l,1,-1),Aa(this.layoutVertexArray,u,l,1,1),Aa(this.layoutVertexArray,u,l,-1,1),this.indexArray.emplaceBack(c,c+1,c+2),this.indexArray.emplaceBack(c,c+3,c+2),p.vertexLength+=4,p.primitiveLength+=2;}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{});},An(\"CircleBucket\",Sa,{omit:[\"layers\"]});var Ra=new li({\"circle-sort-key\":new ai(Tt.layout_circle[\"circle-sort-key\"])}),Ua={paint:new li({\"circle-radius\":new ai(Tt.paint_circle[\"circle-radius\"]),\"circle-color\":new ai(Tt.paint_circle[\"circle-color\"]),\"circle-blur\":new ai(Tt.paint_circle[\"circle-blur\"]),\"circle-opacity\":new ai(Tt.paint_circle[\"circle-opacity\"]),\"circle-translate\":new ii(Tt.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new ii(Tt.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new ii(Tt.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new ii(Tt.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new ai(Tt.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new ai(Tt.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new ai(Tt.paint_circle[\"circle-stroke-opacity\"])}),layout:Ra},ja=\"undefined\"!=typeof Float32Array?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var qa,Na;qa=new ja(3),ja!=Float32Array&&(qa[0]=0,qa[1]=0,qa[2]=0),Na=qa;function Ka(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}!function(){var t=function(){var t=new ja(4);return ja!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}();}();var Xa=function(t){function e(e){t.call(this,e,Ua);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new Sa(t)},e.prototype.queryRadius=function(t){var e=t;return La(\"circle-radius\",this,e)+La(\"circle-stroke-width\",this,e)+Oa(this.paint.get(\"circle-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var u=Da(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),a.angle,o),l=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),p=\"map\"===this.paint.get(\"circle-pitch-alignment\"),c=p?u:function(t,e){return t.map((function(t){return Za(t,e)}))}(u,s),h=p?l*o:l,f=0,y=n;f<y.length;f+=1)for(var d=0,m=y[f];d<m.length;d+=1){var v=m[d],g=p?v:Za(v,s),x=h,b=Ka([],[v.x,v.y,0,1],s);if(\"viewport\"===this.paint.get(\"circle-pitch-scale\")&&\"map\"===this.paint.get(\"circle-pitch-alignment\")?x*=b[3]/a.cameraToCenterDistance:\"map\"===this.paint.get(\"circle-pitch-scale\")&&\"viewport\"===this.paint.get(\"circle-pitch-alignment\")&&(x*=a.cameraToCenterDistance/b[3]),Ia(c,g,x))return !0}return !1},e}(pi);function Za(t,e){var r=Ka([],[t.x,t.y,0,1],e);return new i(r[0]/r[3],r[1]/r[3])}var Ga=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Sa);function Ja(t,e,r,n){var i=e.width,a=e.height;if(n){if(n instanceof Uint8ClampedArray)n=new Uint8Array(n.buffer);else if(n.length!==i*a*r)throw new RangeError(\"mismatched image size\")}else n=new Uint8Array(i*a*r);return t.width=i,t.height=a,t.data=n,t}function Ha(t,e,r){var n=e.width,i=e.height;if(n!==t.width||i!==t.height){var a=Ja({},{width:n,height:i},r);Ya(t,a,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,n),height:Math.min(t.height,i)},r),t.width=n,t.height=i,t.data=a.data;}}function Ya(t,e,r,n,i,a){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var o=t.data,s=e.data,u=0;u<i.height;u++)for(var l=((r.y+u)*t.width+r.x)*a,p=((n.y+u)*e.width+n.x)*a,c=0;c<i.width*a;c++)s[p+c]=o[l+c];return e}An(\"HeatmapBucket\",Ga,{omit:[\"layers\"]});var $a=function(t,e){Ja(this,t,1,e);};$a.prototype.resize=function(t){Ha(this,t,1);},$a.prototype.clone=function(){return new $a({width:this.width,height:this.height},new Uint8Array(this.data))},$a.copy=function(t,e,r,n,i){Ya(t,e,r,n,i,1);};var Wa=function(t,e){Ja(this,t,4,e);};Wa.prototype.resize=function(t){Ha(this,t,4);},Wa.prototype.replace=function(t,e){e?this.data.set(t):t instanceof Uint8ClampedArray?this.data=new Uint8Array(t.buffer):this.data=t;},Wa.prototype.clone=function(){return new Wa({width:this.width,height:this.height},new Uint8Array(this.data))},Wa.copy=function(t,e,r,n,i){Ya(t,e,r,n,i,4);},An(\"AlphaImage\",$a),An(\"RGBAImage\",Wa);var Qa={paint:new li({\"heatmap-radius\":new ai(Tt.paint_heatmap[\"heatmap-radius\"]),\"heatmap-weight\":new ai(Tt.paint_heatmap[\"heatmap-weight\"]),\"heatmap-intensity\":new ii(Tt.paint_heatmap[\"heatmap-intensity\"]),\"heatmap-color\":new ui(Tt.paint_heatmap[\"heatmap-color\"]),\"heatmap-opacity\":new ii(Tt.paint_heatmap[\"heatmap-opacity\"])})};function to(t,e){for(var r=new Uint8Array(1024),n={},i=0,a=0;i<256;i++,a+=4){n[e]=i/255;var o=t.evaluate(n);r[a+0]=Math.floor(255*o.r/o.a),r[a+1]=Math.floor(255*o.g/o.a),r[a+2]=Math.floor(255*o.b/o.a),r[a+3]=Math.floor(255*o.a);}return new Wa({width:256,height:1},r)}var eo=function(t){function e(e){t.call(this,e,Qa),this._updateColorRamp();}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new Ga(t)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"heatmap-color\"===t&&this._updateColorRamp();},e.prototype._updateColorRamp=function(){var t=this._transitionablePaint._values[\"heatmap-color\"].value.expression;this.colorRamp=to(t,\"heatmapDensity\"),this.colorRampTexture=null;},e.prototype.resize=function(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null);},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return !1},e.prototype.hasOffscreenPass=function(){return 0!==this.paint.get(\"heatmap-opacity\")&&\"none\"!==this.visibility},e}(pi),ro={paint:new li({\"hillshade-illumination-direction\":new ii(Tt.paint_hillshade[\"hillshade-illumination-direction\"]),\"hillshade-illumination-anchor\":new ii(Tt.paint_hillshade[\"hillshade-illumination-anchor\"]),\"hillshade-exaggeration\":new ii(Tt.paint_hillshade[\"hillshade-exaggeration\"]),\"hillshade-shadow-color\":new ii(Tt.paint_hillshade[\"hillshade-shadow-color\"]),\"hillshade-highlight-color\":new ii(Tt.paint_hillshade[\"hillshade-highlight-color\"]),\"hillshade-accent-color\":new ii(Tt.paint_hillshade[\"hillshade-accent-color\"])})},no=function(t){function e(e){t.call(this,e,ro);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.hasOffscreenPass=function(){return 0!==this.paint.get(\"hillshade-exaggeration\")&&\"none\"!==this.visibility},e}(pi),io=yi([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,ao=so,oo=so;function so(t,e,r){r=r||2;var n,i,a,o,s,u,l,p=e&&e.length,c=p?e[0]*r:t.length,h=uo(t,0,c,r,!0),f=[];if(!h||h.next===h.prev)return f;if(p&&(h=function(t,e,r,n){var i,a,o,s,u,l=[];for(i=0,a=e.length;i<a;i++)o=e[i]*n,s=i<a-1?e[i+1]*n:t.length,(u=uo(t,o,s,n,!1))===u.next&&(u.steiner=!0),l.push(bo(u));for(l.sort(mo),i=0;i<l.length;i++)vo(l[i],r),r=lo(r,r.next);return r}(t,e,h,r)),t.length>80*r){n=a=t[0],i=o=t[1];for(var y=r;y<c;y+=r)(s=t[y])<n&&(n=s),(u=t[y+1])<i&&(i=u),s>a&&(a=s),u>o&&(o=u);l=0!==(l=Math.max(a-n,o-i))?1/l:0;}return po(h,f,r,n,i,l),f}function uo(t,e,r,n,i){var a,o;if(i===Mo(t,e,r,n)>0)for(a=e;a<r;a+=n)o=To(a,t[a],t[a+1],o);else for(a=r-n;a>=e;a-=n)o=To(a,t[a],t[a+1],o);return o&&So(o,o.next)&&(Po(o),o=o.next),o}function lo(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!So(n,n.next)&&0!==Ao(n.prev,n,n.next))n=n.next;else{if(Po(n),(n=e=n.prev)===n.next)break;r=!0;}}while(r||n!==e);return e}function po(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=xo(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,u,l=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e<l&&(s++,n=n.nextZ);e++);for(u=l;s>0||u>0&&n;)0!==s&&(0===u||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,u--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n;}a.nextZ=null,l*=2;}while(o>1)}(i);}(t,n,i,a);for(var s,u,l=t;t.prev!==t.next;)if(s=t.prev,u=t.next,a?ho(t,n,i,a):co(t))e.push(s.i/r),e.push(t.i/r),e.push(u.i/r),Po(t),t=u.next,l=u.next;else if((t=u)===l){o?1===o?po(t=fo(lo(t),e,r),e,r,n,i,a,2):2===o&&yo(t,e,r,n,i,a):po(lo(t),e,r,n,i,a,1);break}}}function co(t){var e=t.prev,r=t,n=t.next;if(Ao(e,r,n)>=0)return !1;for(var i=t.next.next;i!==t.prev;){if(_o(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&Ao(i.prev,i,i.next)>=0)return !1;i=i.next;}return !0}function ho(t,e,r,n){var i=t.prev,a=t,o=t.next;if(Ao(i,a,o)>=0)return !1;for(var s=i.x<a.x?i.x<o.x?i.x:o.x:a.x<o.x?a.x:o.x,u=i.y<a.y?i.y<o.y?i.y:o.y:a.y<o.y?a.y:o.y,l=i.x>a.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,p=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,c=xo(s,u,e,r,n),h=xo(l,p,e,r,n),f=t.prevZ,y=t.nextZ;f&&f.z>=c&&y&&y.z<=h;){if(f!==t.prev&&f!==t.next&&_o(i.x,i.y,a.x,a.y,o.x,o.y,f.x,f.y)&&Ao(f.prev,f,f.next)>=0)return !1;if(f=f.prevZ,y!==t.prev&&y!==t.next&&_o(i.x,i.y,a.x,a.y,o.x,o.y,y.x,y.y)&&Ao(y.prev,y,y.next)>=0)return !1;y=y.nextZ;}for(;f&&f.z>=c;){if(f!==t.prev&&f!==t.next&&_o(i.x,i.y,a.x,a.y,o.x,o.y,f.x,f.y)&&Ao(f.prev,f,f.next)>=0)return !1;f=f.prevZ;}for(;y&&y.z<=h;){if(y!==t.prev&&y!==t.next&&_o(i.x,i.y,a.x,a.y,o.x,o.y,y.x,y.y)&&Ao(y.prev,y,y.next)>=0)return !1;y=y.nextZ;}return !0}function fo(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!So(i,a)&&ko(i,n,n.next,a)&&Co(i,a)&&Co(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),Po(n),Po(n.next),n=t=a),n=n.next;}while(n!==t);return lo(n)}function yo(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&wo(o,s)){var u=Bo(o,s);return o=lo(o,o.next),u=lo(u,u.next),po(o,e,r,n,i,a),void po(u,e,r,n,i,a)}s=s.next;}o=o.next;}while(o!==t)}function mo(t,e){return t.x-e.x}function vo(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x<n.next.x?n:n.next;}}n=n.next;}while(n!==e);if(!r)return null;if(i===o)return r;var u,l=r,p=r.x,c=r.y,h=1/0;n=r;do{i>=n.x&&n.x>=p&&i!==n.x&&_o(a<c?i:o,a,p,c,a<c?o:i,a,n.x,n.y)&&(u=Math.abs(a-n.y)/(i-n.x),Co(n,t)&&(u<h||u===h&&(n.x>r.x||n.x===r.x&&go(r,n)))&&(r=n,h=u)),n=n.next;}while(n!==l);return r}(t,e)){var r=Bo(e,t);lo(r,r.next);}}function go(t,e){return Ao(t.prev,t,e.prev)<0&&Ao(e.next,t,t.next)<0}function xo(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function bo(t){var e=t,r=t;do{(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next;}while(e!==t);return r}function _o(t,e,r,n,i,a,o,s){return (i-o)*(e-s)-(t-o)*(a-s)>=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function wo(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&ko(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&(Co(t,e)&&Co(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;}while(r!==t);return n}(t,e)&&(Ao(t.prev,t,e.prev)||Ao(t,e.prev,e))||So(t,e)&&Ao(t.prev,t,t.next)>0&&Ao(e.prev,e,e.next)>0)}function Ao(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function So(t,e){return t.x===e.x&&t.y===e.y}function ko(t,e,r,n){var i=zo(Ao(t,e,r)),a=zo(Ao(t,e,n)),o=zo(Ao(r,n,t)),s=zo(Ao(r,n,e));return i!==a&&o!==s||(!(0!==i||!Io(t,r,e))||(!(0!==a||!Io(t,n,e))||(!(0!==o||!Io(r,t,n))||!(0!==s||!Io(r,e,n)))))}function Io(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function zo(t){return t>0?1:t<0?-1:0}function Co(t,e){return Ao(t.prev,t,t.next)<0?Ao(t,e,t.next)>=0&&Ao(t,t.prev,e)>=0:Ao(t,e,t.prev)<0||Ao(t,t.next,e)<0}function Bo(t,e){var r=new Eo(t.i,t.x,t.y),n=new Eo(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function To(t,e,r,n){var i=new Eo(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function Po(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ);}function Eo(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1;}function Mo(t,e,r,n){for(var i=0,a=e,o=r-n;a<r;a+=n)i+=(t[o]-t[a])*(t[a+1]+t[o+1]),o=a;return i}function Vo(t,e,r,n,i){!function t(e,r,n,i,a){for(;i>n;){if(i-n>600){var o=i-n+1,s=r-n+1,u=Math.log(o),l=.5*Math.exp(2*u/3),p=.5*Math.sqrt(u*l*(o-l)/o)*(s-o/2<0?-1:1),c=Math.max(n,Math.floor(r-s*l/o+p)),h=Math.min(i,Math.floor(r+(o-s)*l/o+p));t(e,r,c,h,a);}var f=e[r],y=n,d=i;for(Fo(e,n,r),a(e[i],f)>0&&Fo(e,n,i);y<d;){for(Fo(e,y,d),y++,d--;a(e[y],f)<0;)y++;for(;a(e[d],f)>0;)d--;}0===a(e[n],f)?Fo(e,n,d):Fo(e,++d,i),d<=r&&(n=d+1),r<=d&&(i=d-1);}}(t,e,r||0,n||t.length-1,i||Lo);}function Fo(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function Lo(t,e){return t<e?-1:t>e?1:0}function Oo(t,e){var r=t.length;if(r<=1)return [t];for(var n,i,a=[],o=0;o<r;o++){var s=S(t[o]);0!==s&&(t[o].area=Math.abs(s),void 0===i&&(i=s<0),i===s<0?(n&&a.push(n),n=[t[o]]):n.push(t[o]));}if(n&&a.push(n),e>1)for(var u=0;u<a.length;u++)a[u].length<=e||(Vo(a[u],e,1,a[u].length-1,Do),a[u]=a[u].slice(0,e));return a}function Do(t,e){return e.area-t.area}function Ro(t,e,r){for(var n=r.patternDependencies,i=!1,a=0,o=e;a<o.length;a+=1){var s=o[a].paint.get(t+\"-pattern\");s.isConstant()||(i=!0);var u=s.constantOr(null);u&&(i=!0,n[u.to]=!0,n[u.from]=!0);}return i}function Uo(t,e,r,n,i){for(var a=i.patternDependencies,o=0,s=e;o<s.length;o+=1){var u=s[o],l=u.paint.get(t+\"-pattern\").value;if(\"constant\"!==l.kind){var p=l.evaluate({zoom:n-1},r,{},i.availableImages),c=l.evaluate({zoom:n},r,{},i.availableImages),h=l.evaluate({zoom:n+1},r,{},i.availableImages);p=p&&p.name?p.name:p,c=c&&c.name?c.name:c,h=h&&h.name?h.name:h,a[p]=!0,a[c]=!0,a[h]=!0,r.patterns[u.id]={min:p,mid:c,max:h};}}return r}so.deviation=function(t,e,r,n){var i=e&&e.length,a=i?e[0]*r:t.length,o=Math.abs(Mo(t,0,a,r));if(i)for(var s=0,u=e.length;s<u;s++){var l=e[s]*r,p=s<u-1?e[s+1]*r:t.length;o-=Math.abs(Mo(t,l,p,r));}var c=0;for(s=0;s<n.length;s+=3){var h=n[s]*r,f=n[s+1]*r,y=n[s+2]*r;c+=Math.abs((t[h]-t[y])*(t[f+1]-t[h+1])-(t[h]-t[f])*(t[y+1]-t[h+1]));}return 0===o&&0===c?0:Math.abs((c-o)/o)},so.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},n=0,i=0;i<t.length;i++){for(var a=0;a<t[i].length;a++)for(var o=0;o<e;o++)r.vertices.push(t[i][a][o]);i>0&&(n+=t[i-1].length,r.holes.push(n));}return r},ao.default=oo;var jo=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new mi,this.indexArray=new Ei,this.indexArray2=new Mi,this.programConfigurations=new ma(io,t.layers,t.zoom),this.segments=new Yi,this.segments2=new Yi,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}));};jo.prototype.populate=function(t,e){this.hasPattern=Ro(\"fill\",this.layers,e);for(var r=this.layers[0].layout.get(\"fill-sort-key\"),n=[],i=0,a=t;i<a.length;i+=1){var o=a[i],s=o.feature,u=o.index,l=o.sourceLayerIndex;if(this.layers[0]._featureFilter(new Hn(this.zoom),s)){var p=wa(s),c=r?r.evaluate(s,{},e.availableImages):void 0,h={id:s.id,properties:s.properties,type:s.type,sourceLayerIndex:l,index:u,geometry:p,patterns:{},sortKey:c};n.push(h);}}r&&n.sort((function(t,e){return t.sortKey-e.sortKey}));for(var f=0,y=n;f<y.length;f+=1){var d=y[f],m=d,v=m.geometry,g=m.index,x=m.sourceLayerIndex;if(this.hasPattern){var b=Uo(\"fill\",this.layers,d,this.zoom,e);this.patternFeatures.push(b);}else this.addFeature(d,v,g,{});var _=t[g].feature;e.featureIndex.insert(_,v,g,x,this.index);}},jo.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);},jo.prototype.addFeatures=function(t,e){for(var r=0,n=this.patternFeatures;r<n.length;r+=1){var i=n[r];this.addFeature(i,i.geometry,i.index,e);}},jo.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},jo.prototype.uploadPending=function(){return !this.uploaded||this.programConfigurations.needsUpload},jo.prototype.upload=function(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,io),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;},jo.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());},jo.prototype.addFeature=function(t,e,r,n){for(var i=0,a=Oo(e,500);i<a.length;i+=1){for(var o=a[i],s=0,u=0,l=o;u<l.length;u+=1){s+=l[u].length;}for(var p=this.segments.prepareSegment(s,this.layoutVertexArray,this.indexArray),c=p.vertexLength,h=[],f=[],y=0,d=o;y<d.length;y+=1){var m=d[y];if(0!==m.length){m!==o[0]&&f.push(h.length/2);var v=this.segments2.prepareSegment(m.length,this.layoutVertexArray,this.indexArray2),g=v.vertexLength;this.layoutVertexArray.emplaceBack(m[0].x,m[0].y),this.indexArray2.emplaceBack(g+m.length-1,g),h.push(m[0].x),h.push(m[0].y);for(var x=1;x<m.length;x++)this.layoutVertexArray.emplaceBack(m[x].x,m[x].y),this.indexArray2.emplaceBack(g+x-1,g+x),h.push(m[x].x),h.push(m[x].y);v.vertexLength+=m.length,v.primitiveLength+=m.length;}}for(var b=ao(h,f),_=0;_<b.length;_+=3)this.indexArray.emplaceBack(c+b[_],c+b[_+1],c+b[_+2]);p.vertexLength+=s,p.primitiveLength+=b.length/3;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,n);},An(\"FillBucket\",jo,{omit:[\"layers\",\"patternFeatures\"]});var qo=new li({\"fill-sort-key\":new ai(Tt.layout_fill[\"fill-sort-key\"])}),No={paint:new li({\"fill-antialias\":new ii(Tt.paint_fill[\"fill-antialias\"]),\"fill-opacity\":new ai(Tt.paint_fill[\"fill-opacity\"]),\"fill-color\":new ai(Tt.paint_fill[\"fill-color\"]),\"fill-outline-color\":new ai(Tt.paint_fill[\"fill-outline-color\"]),\"fill-translate\":new ii(Tt.paint_fill[\"fill-translate\"]),\"fill-translate-anchor\":new ii(Tt.paint_fill[\"fill-translate-anchor\"]),\"fill-pattern\":new oi(Tt.paint_fill[\"fill-pattern\"])}),layout:qo},Ko=function(t){function e(e){t.call(this,e,No);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r);var n=this.paint._values[\"fill-outline-color\"];\"constant\"===n.value.kind&&void 0===n.value.value&&(this.paint._values[\"fill-outline-color\"]=this.paint._values[\"fill-color\"]);},e.prototype.createBucket=function(t){return new jo(t)},e.prototype.queryRadius=function(){return Oa(this.paint.get(\"fill-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o){return za(Da(t,this.paint.get(\"fill-translate\"),this.paint.get(\"fill-translate-anchor\"),a.angle,o),n)},e.prototype.isTileClipped=function(){return !0},e}(pi),Xo=yi([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_normal_ed\",components:4,type:\"Int16\"}],4).members,Zo=Go;function Go(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=n,this._values=i,t.readFields(Jo,this,e);}function Jo(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){var r=t.readVarint()+t.pos;for(;t.pos<r;){var n=e._keys[t.readVarint()],i=e._values[t.readVarint()];e.properties[n]=i;}}(r,e):3==t?e.type=r.readVarint():4==t&&(e._geometry=r.pos);}function Ho(t){for(var e,r,n=0,i=0,a=t.length,o=a-1;i<a;o=i++)e=t[i],n+=((r=t[o]).x-e.x)*(e.y+r.y);return n}Go.types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],Go.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,r=t.readVarint()+t.pos,n=1,a=0,o=0,s=0,u=[];t.pos<r;){if(a<=0){var l=t.readVarint();n=7&l,a=l>>3;}if(a--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&u.push(e),e=[]),e.push(new i(o,s));else{if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone());}}return e&&u.push(e),u},Go.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,u=1/0,l=-1/0;t.pos<e;){if(n<=0){var p=t.readVarint();r=7&p,n=p>>3;}if(n--,1===r||2===r)(i+=t.readSVarint())<o&&(o=i),i>s&&(s=i),(a+=t.readSVarint())<u&&(u=a),a>l&&(l=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return [o,u,s,l]},Go.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,u=this.loadGeometry(),l=Go.types[this.type];function p(t){for(var e=0;e<t.length;e++){var r=t[e],n=180-360*(r.y+s)/a;t[e]=[360*(r.x+o)/a-180,360/Math.PI*Math.atan(Math.exp(n*Math.PI/180))-90];}}switch(this.type){case 1:var c=[];for(n=0;n<u.length;n++)c[n]=u[n][0];p(u=c);break;case 2:for(n=0;n<u.length;n++)p(u[n]);break;case 3:for(u=function(t){var e=t.length;if(e<=1)return [t];for(var r,n,i=[],a=0;a<e;a++){var o=Ho(t[a]);0!==o&&(void 0===n&&(n=o<0),n===o<0?(r&&i.push(r),r=[t[a]]):r.push(t[a]));}r&&i.push(r);return i}(u),n=0;n<u.length;n++)for(i=0;i<u[n].length;i++)p(u[n][i]);}1===u.length?u=u[0]:l=\"Multi\"+l;var h={type:\"Feature\",geometry:{type:l,coordinates:u},properties:this.properties};return \"id\"in this&&(h.id=this.id),h};var Yo=$o;function $o(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(Wo,this,e),this.length=this._features.length;}function Wo(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(function(t){var e=null,r=t.readVarint()+t.pos;for(;t.pos<r;){var n=t.readVarint()>>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}return e}(r));}function Qo(t,e,r){if(3===t){var n=new Yo(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n);}}$o.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new Zo(this._pbf,e,this.extent,this._keys,this._values)};var ts={VectorTile:function(t,e){this.layers=t.readFields(Qo,{},e);},VectorTileFeature:Zo,VectorTileLayer:Yo},es=ts.VectorTileFeature.types,rs=Math.pow(2,13);function ns(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*rs)+o,i*rs*2,a*rs*2,Math.round(s));}var is=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new gi,this.indexArray=new Ei,this.programConfigurations=new ma(Xo,t.layers,t.zoom),this.segments=new Yi,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}));};function as(t,e){return t.x===e.x&&(t.x<0||t.x>xa)||t.y===e.y&&(t.y<0||t.y>xa)}function os(t){return t.every((function(t){return t.x<0}))||t.every((function(t){return t.x>xa}))||t.every((function(t){return t.y<0}))||t.every((function(t){return t.y>xa}))}is.prototype.populate=function(t,e){this.features=[],this.hasPattern=Ro(\"fill-extrusion\",this.layers,e);for(var r=0,n=t;r<n.length;r+=1){var i=n[r],a=i.feature,o=i.index,s=i.sourceLayerIndex;if(this.layers[0]._featureFilter(new Hn(this.zoom),a)){var u=wa(a),l={sourceLayerIndex:s,index:o,geometry:u,properties:a.properties,type:a.type,patterns:{}};void 0!==a.id&&(l.id=a.id),this.hasPattern?this.features.push(Uo(\"fill-extrusion\",this.layers,l,this.zoom,e)):this.addFeature(l,u,o,{}),e.featureIndex.insert(a,u,o,s,this.index,!0);}}},is.prototype.addFeatures=function(t,e){for(var r=0,n=this.features;r<n.length;r+=1){var i=n[r],a=i.geometry;this.addFeature(i,a,i.index,e);}},is.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);},is.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},is.prototype.uploadPending=function(){return !this.uploaded||this.programConfigurations.needsUpload},is.prototype.upload=function(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Xo),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;},is.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());},is.prototype.addFeature=function(t,e,r,n){for(var i=0,a=Oo(e,500);i<a.length;i+=1){for(var o=a[i],s=0,u=0,l=o;u<l.length;u+=1){s+=l[u].length;}for(var p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray),c=0,h=o;c<h.length;c+=1){var f=h[c];if(0!==f.length&&!os(f))for(var y=0,d=0;d<f.length;d++){var m=f[d];if(d>=1){var v=f[d-1];if(!as(m,v)){p.vertexLength+4>Yi.MAX_VERTEX_ARRAY_LENGTH&&(p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var g=m.sub(v)._perp()._unit(),x=v.dist(m);y+x>32768&&(y=0),ns(this.layoutVertexArray,m.x,m.y,g.x,g.y,0,0,y),ns(this.layoutVertexArray,m.x,m.y,g.x,g.y,0,1,y),y+=x,ns(this.layoutVertexArray,v.x,v.y,g.x,g.y,0,0,y),ns(this.layoutVertexArray,v.x,v.y,g.x,g.y,0,1,y);var b=p.vertexLength;this.indexArray.emplaceBack(b,b+2,b+1),this.indexArray.emplaceBack(b+1,b+2,b+3),p.vertexLength+=4,p.primitiveLength+=2;}}}}if(p.vertexLength+s>Yi.MAX_VERTEX_ARRAY_LENGTH&&(p=this.segments.prepareSegment(s,this.layoutVertexArray,this.indexArray)),\"Polygon\"===es[t.type]){for(var _=[],w=[],A=p.vertexLength,S=0,k=o;S<k.length;S+=1){var I=k[S];if(0!==I.length){I!==o[0]&&w.push(_.length/2);for(var z=0;z<I.length;z++){var C=I[z];ns(this.layoutVertexArray,C.x,C.y,0,0,1,1,0),_.push(C.x),_.push(C.y);}}}for(var B=ao(_,w),T=0;T<B.length;T+=3)this.indexArray.emplaceBack(A+B[T],A+B[T+2],A+B[T+1]);p.primitiveLength+=B.length/3,p.vertexLength+=s;}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,n);},An(\"FillExtrusionBucket\",is,{omit:[\"layers\",\"features\"]});var ss={paint:new li({\"fill-extrusion-opacity\":new ii(Tt[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new ai(Tt[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new ii(Tt[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new ii(Tt[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new oi(Tt[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new ai(Tt[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new ai(Tt[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\"fill-extrusion-vertical-gradient\":new ii(Tt[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"])})},us=function(t){function e(e){t.call(this,e,ss);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new is(t)},e.prototype.queryRadius=function(){return Oa(this.paint.get(\"fill-extrusion-translate\"))},e.prototype.is3D=function(){return !0},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s,u){var l=Da(t,this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),o.angle,s),p=this.paint.get(\"fill-extrusion-height\").evaluate(e,r),c=this.paint.get(\"fill-extrusion-base\").evaluate(e,r),h=function(t,e,r,n){for(var a=[],o=0,s=t;o<s.length;o+=1){var u=s[o],l=[u.x,u.y,n,1];Ka(l,l,e),a.push(new i(l[0]/l[3],l[1]/l[3]));}return a}(l,u,0,0),f=function(t,e,r,n){for(var a=[],o=[],s=n[8]*e,u=n[9]*e,l=n[10]*e,p=n[11]*e,c=n[8]*r,h=n[9]*r,f=n[10]*r,y=n[11]*r,d=0,m=t;d<m.length;d+=1){for(var v=m[d],g=[],x=[],b=0,_=v;b<_.length;b+=1){var w=_[b],A=w.x,S=w.y,k=n[0]*A+n[4]*S+n[12],I=n[1]*A+n[5]*S+n[13],z=n[2]*A+n[6]*S+n[14],C=n[3]*A+n[7]*S+n[15],B=z+l,T=C+p,P=k+c,E=I+h,M=z+f,V=C+y,F=new i((k+s)/T,(I+u)/T);F.z=B/T,g.push(F);var L=new i(P/V,E/V);L.z=M/V,x.push(L);}a.push(g),o.push(x);}return [a,o]}(n,c,p,u);return function(t,e,r){var n=1/0;za(r,e)&&(n=ps(r,e[0]));for(var i=0;i<e.length;i++)for(var a=e[i],o=t[i],s=0;s<a.length-1;s++){var u=a[s],l=a[s+1],p=o[s],c=o[s+1],h=[u,l,c,p,u];ka(r,h)&&(n=Math.min(n,ps(r,h)));}return n!==1/0&&n}(f[0],f[1],h)},e}(pi);function ls(t,e){return t.x*e.x+t.y*e.y}function ps(t,e){if(1===t.length){var r=e[0],n=e[1],i=e[3],a=t[0],o=n.sub(r),s=i.sub(r),u=a.sub(r),l=ls(o,o),p=ls(o,s),c=ls(s,s),h=ls(u,o),f=ls(u,s),y=l*c-p*p,d=(c*h-p*f)/y,m=(l*f-p*h)/y,v=1-d-m;return r.z*v+n.z*d+i.z*m}for(var g=1/0,x=0,b=e;x<b.length;x+=1){var _=b[x];g=Math.min(g,_.z);}return g}var cs=yi([{name:\"a_pos_normal\",components:2,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint8\"}],4).members,hs=ts.VectorTileFeature.types,fs=Math.cos(Math.PI/180*37.5),ys=Math.pow(2,14)/.5,ds=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new xi,this.indexArray=new Ei,this.programConfigurations=new ma(cs,t.layers,t.zoom),this.segments=new Yi,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}));};ds.prototype.populate=function(t,e){this.hasPattern=Ro(\"line\",this.layers,e);for(var r=this.layers[0].layout.get(\"line-sort-key\"),n=[],i=0,a=t;i<a.length;i+=1){var o=a[i],s=o.feature,u=o.index,l=o.sourceLayerIndex;if(this.layers[0]._featureFilter(new Hn(this.zoom),s)){var p=wa(s),c=r?r.evaluate(s,{}):void 0,h={id:s.id,properties:s.properties,type:s.type,sourceLayerIndex:l,index:u,geometry:p,patterns:{},sortKey:c};n.push(h);}}r&&n.sort((function(t,e){return t.sortKey-e.sortKey}));for(var f=0,y=n;f<y.length;f+=1){var d=y[f],m=d,v=m.geometry,g=m.index,x=m.sourceLayerIndex;if(this.hasPattern){var b=Uo(\"line\",this.layers,d,this.zoom,e);this.patternFeatures.push(b);}else this.addFeature(d,v,g,{});var _=t[g].feature;e.featureIndex.insert(_,v,g,x,this.index);}},ds.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);},ds.prototype.addFeatures=function(t,e){for(var r=0,n=this.patternFeatures;r<n.length;r+=1){var i=n[r];this.addFeature(i,i.geometry,i.index,e);}},ds.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},ds.prototype.uploadPending=function(){return !this.uploaded||this.programConfigurations.needsUpload},ds.prototype.upload=function(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,cs),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;},ds.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());},ds.prototype.addFeature=function(t,e,r,n){for(var i=this.layers[0].layout,a=i.get(\"line-join\").evaluate(t,{}),o=i.get(\"line-cap\"),s=i.get(\"line-miter-limit\"),u=i.get(\"line-round-limit\"),l=0,p=e;l<p.length;l+=1){var c=p[l];this.addLine(c,t,a,o,s,u,r,n);}},ds.prototype.addLine=function(t,e,r,n,i,a,o,s){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,e.properties&&e.properties.hasOwnProperty(\"mapbox_clip_start\")&&e.properties.hasOwnProperty(\"mapbox_clip_end\")){this.clipStart=+e.properties.mapbox_clip_start,this.clipEnd=+e.properties.mapbox_clip_end;for(var u=0;u<t.length-1;u++)this.totalDistance+=t[u].dist(t[u+1]);}for(var l=\"Polygon\"===hs[e.type],p=t.length;p>=2&&t[p-1].equals(t[p-2]);)p--;for(var c=0;c<p-1&&t[c].equals(t[c+1]);)c++;if(!(p<(l?3:2))){\"bevel\"===r&&(i=1.05);var h,f=this.overscaling<=16?15*xa/(512*this.overscaling):0,y=this.segments.prepareSegment(10*p,this.layoutVertexArray,this.indexArray),d=void 0,m=void 0,v=void 0,g=void 0;this.e1=this.e2=-1,l&&(h=t[p-2],g=t[c].sub(h)._unit()._perp());for(var x=c;x<p;x++)if(!(m=l&&x===p-1?t[c+1]:t[x+1])||!t[x].equals(m)){g&&(v=g),h&&(d=h),h=t[x],g=m?m.sub(h)._unit()._perp():v;var b=(v=v||g).add(g);0===b.x&&0===b.y||b._unit();var _=v.x*g.x+v.y*g.y,w=b.x*g.x+b.y*g.y,A=0!==w?1/w:1/0,S=2*Math.sqrt(2-2*w),k=w<fs&&d&&m,I=v.x*g.y-v.y*g.x>0;if(k&&x>c){var z=h.dist(d);if(z>2*f){var C=h.sub(h.sub(d)._mult(f/z)._round());this.updateDistance(d,C),this.addCurrentVertex(C,v,0,0,y),d=C;}}var B=d&&m,T=B?r:l?\"butt\":n;if(B&&\"round\"===T&&(A<a?T=\"miter\":A<=2&&(T=\"fakeround\")),\"miter\"===T&&A>i&&(T=\"bevel\"),\"bevel\"===T&&(A>2&&(T=\"flipbevel\"),A<i&&(T=\"miter\")),d&&this.updateDistance(d,h),\"miter\"===T)b._mult(A),this.addCurrentVertex(h,b,0,0,y);else if(\"flipbevel\"===T){if(A>100)b=g.mult(-1);else{var P=A*v.add(g).mag()/v.sub(g).mag();b._perp()._mult(P*(I?-1:1));}this.addCurrentVertex(h,b,0,0,y),this.addCurrentVertex(h,b.mult(-1),0,0,y);}else if(\"bevel\"===T||\"fakeround\"===T){var E=-Math.sqrt(A*A-1),M=I?E:0,V=I?0:E;if(d&&this.addCurrentVertex(h,v,M,V,y),\"fakeround\"===T)for(var F=Math.round(180*S/Math.PI/20),L=1;L<F;L++){var O=L/F;if(.5!==O){var D=O-.5;O+=O*D*(O-1)*((1.0904+_*(_*(3.55645-1.43519*_)-3.2452))*D*D+(.848013+_*(.215638*_-1.06021)));}var R=g.sub(v)._mult(O)._add(v)._unit()._mult(I?-1:1);this.addHalfVertex(h,R.x,R.y,!1,I,0,y);}m&&this.addCurrentVertex(h,g,-M,-V,y);}else if(\"butt\"===T)this.addCurrentVertex(h,b,0,0,y);else if(\"square\"===T){var U=d?1:-1;this.addCurrentVertex(h,b,U,U,y);}else\"round\"===T&&(d&&(this.addCurrentVertex(h,v,0,0,y),this.addCurrentVertex(h,v,1,1,y,!0)),m&&(this.addCurrentVertex(h,g,-1,-1,y,!0),this.addCurrentVertex(h,g,0,0,y)));if(k&&x<p-1){var j=h.dist(m);if(j>2*f){var q=h.add(m.sub(h)._mult(f/j)._round());this.updateDistance(h,q),this.addCurrentVertex(q,g,0,0,y),h=q;}}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,o,s);}},ds.prototype.addCurrentVertex=function(t,e,r,n,i,a){void 0===a&&(a=!1);var o=e.x+e.y*r,s=e.y-e.x*r,u=-e.x+e.y*n,l=-e.y-e.x*n;this.addHalfVertex(t,o,s,a,!1,r,i),this.addHalfVertex(t,u,l,a,!0,-n,i),this.distance>ys/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,a));},ds.prototype.addHalfVertex=function(t,e,r,n,i,a,o){var s=t.x,u=t.y,l=.5*this.scaledDistance;this.layoutVertexArray.emplaceBack((s<<1)+(n?1:0),(u<<1)+(i?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===a?0:a<0?-1:1)|(63&l)<<2,l>>6);var p=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,p),o.primitiveLength++),i?this.e2=p:this.e1=p;},ds.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(ys-1):this.distance;},An(\"LineBucket\",ds,{omit:[\"layers\",\"patternFeatures\"]});var ms=new li({\"line-cap\":new ii(Tt.layout_line[\"line-cap\"]),\"line-join\":new ai(Tt.layout_line[\"line-join\"]),\"line-miter-limit\":new ii(Tt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new ii(Tt.layout_line[\"line-round-limit\"]),\"line-sort-key\":new ai(Tt.layout_line[\"line-sort-key\"])}),vs={paint:new li({\"line-opacity\":new ai(Tt.paint_line[\"line-opacity\"]),\"line-color\":new ai(Tt.paint_line[\"line-color\"]),\"line-translate\":new ii(Tt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new ii(Tt.paint_line[\"line-translate-anchor\"]),\"line-width\":new ai(Tt.paint_line[\"line-width\"]),\"line-gap-width\":new ai(Tt.paint_line[\"line-gap-width\"]),\"line-offset\":new ai(Tt.paint_line[\"line-offset\"]),\"line-blur\":new ai(Tt.paint_line[\"line-blur\"]),\"line-dasharray\":new si(Tt.paint_line[\"line-dasharray\"]),\"line-pattern\":new oi(Tt.paint_line[\"line-pattern\"]),\"line-gradient\":new ui(Tt.paint_line[\"line-gradient\"])}),layout:ms},gs=new(function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new Hn(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=c({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(ai))(vs.paint.properties[\"line-width\"].specification);gs.useIntegerZoom=!0;var xs=function(t){function e(e){t.call(this,e,vs);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"line-gradient\"===t&&this._updateGradient();},e.prototype._updateGradient=function(){var t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.gradient=to(t,\"lineProgress\"),this.gradientTexture=null;},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values[\"line-floorwidth\"]=gs.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,e);},e.prototype.createBucket=function(t){return new ds(t)},e.prototype.queryRadius=function(t){var e=t,r=bs(La(\"line-width\",this,e),La(\"line-gap-width\",this,e)),n=La(\"line-offset\",this,e);return r/2+Math.abs(n)+Oa(this.paint.get(\"line-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s){var u=Da(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),o.angle,s),l=s/2*bs(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),p=this.paint.get(\"line-offset\").evaluate(e,r);return p&&(n=function(t,e){for(var r=[],n=new i(0,0),a=0;a<t.length;a++){for(var o=t[a],s=[],u=0;u<o.length;u++){var l=o[u-1],p=o[u],c=o[u+1],h=0===u?n:p.sub(l)._unit()._perp(),f=u===o.length-1?n:c.sub(p)._unit()._perp(),y=h._add(f)._unit(),d=y.x*f.x+y.y*f.y;y._mult(1/d),s.push(y._mult(e)._add(p));}r.push(s);}return r}(n,p*s)),function(t,e,r){for(var n=0;n<e.length;n++){var i=e[n];if(t.length>=3)for(var a=0;a<i.length;a++)if(Va(t,i[a]))return !0;if(Ca(t,i,r))return !0}return !1}(u,n,l)},e.prototype.isTileClipped=function(){return !0},e}(pi);function bs(t,e){return e>0?e+2*t:t}var _s=yi([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),ws=yi([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4),As=(yi([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4),yi([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}])),Ss=(yi([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"},{type:\"Int16\",name:\"radius\"},{type:\"Int16\",name:\"signedDistanceFromAnchor\"}]),yi([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4)),ks=yi([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4);yi([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),yi([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",components:2,name:\"textOffset\"}]),yi([{type:\"Float32\",name:\"offsetX\"}]),yi([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);function Is(t,e,r){return t.sections.forEach((function(t){t.text=function(t,e,r){var n=e.layout.get(\"text-transform\").evaluate(r,{});return \"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),Jn.applyArabicShaping&&(t=Jn.applyArabicShaping(t)),t}(t.text,e,r);})),t}var zs={\"!\":\"︕\",\"#\":\"#\",$:\"$\",\"%\":\"ï¼…\",\"&\":\"&\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"*\",\"+\":\"+\",\",\":\"ï¸\",\"-\":\"︲\",\".\":\"・\",\"/\":\"ï¼\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"ï¼\",\">\":\"ï¹€\",\"?\":\"︖\",\"@\":\"ï¼ \",\"[\":\"﹇\",\"\\\\\":\"ï¼¼\",\"]\":\"﹈\",\"^\":\"ï¼¾\",_:\"︳\",\"`\":\"ï½€\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"~\",\"¢\":\"ï¿ \",\"£\":\"ï¿¡\",\"Â¥\":\"ï¿¥\",\"¦\":\"¦\",\"¬\":\"ï¿¢\",\"¯\":\"ï¿£\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"ï¹\",\"â€\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"â‚©\":\"₩\",\"ã€\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"ï¹€\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"ï¹\",\"ã€\":\"﹂\",\"『\":\"﹃\",\"ã€\":\"﹄\",\"ã€\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"ï¼\":\"︕\",\"(\":\"︵\",\")\":\"︶\",\",\":\"ï¸\",\"ï¼\":\"︲\",\".\":\"・\",\":\":\"︓\",\"ï¼›\":\"︔\",\"<\":\"︿\",\">\":\"ï¹€\",\"?\":\"︖\",\"ï¼»\":\"﹇\",\"ï¼½\":\"﹈\",\"_\":\"︳\",\"ï½›\":\"︷\",\"|\":\"―\",\"ï½\":\"︸\",\"⦅\":\"︵\",\"ï½ \":\"︶\",\"。\":\"︒\",\"ï½¢\":\"ï¹\",\"ï½£\":\"﹂\"};var Cs=24,Bs=function(t,e,r,n,i){var a,o,s=8*i-n-1,u=(1<<s)-1,l=u>>1,p=-7,c=r?i-1:0,h=r?-1:1,f=t[e+c];for(c+=h,a=f&(1<<-p)-1,f>>=-p,p+=s;p>0;a=256*a+t[e+c],c+=h,p-=8);for(o=a&(1<<-p)-1,a>>=-p,p+=n;p>0;o=256*o+t[e+c],c+=h,p-=8);if(0===a)a=1-l;else{if(a===u)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,n),a-=l;}return (f?-1:1)*o*Math.pow(2,a-n)},Ts=function(t,e,r,n,i,a){var o,s,u,l=8*a-i-1,p=(1<<l)-1,c=p>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:a-1,y=n?1:-1,d=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=p):(o=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-o))<1&&(o--,u*=2),(e+=o+c>=1?h/u:h*Math.pow(2,1-c))*u>=2&&(o++,u/=2),o+c>=p?(s=0,o=p):o+c>=1?(s=(e*u-1)*Math.pow(2,i),o+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),o=0));i>=8;t[r+f]=255&s,f+=y,s/=256,i-=8);for(o=o<<i|s,l+=i;l>0;t[r+f]=255&o,f+=y,o/=256,l-=8);t[r+f-y]|=128*d;},Ps=Es;function Es(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length;}Es.Varint=0,Es.Fixed64=1,Es.Bytes=2,Es.Fixed32=5;var Ms=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function Vs(t){return t.type===Es.Bytes?t.readVarint()+t.pos:t.pos+1}function Fs(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function Ls(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i];}function Os(t,e){for(var r=0;r<t.length;r++)e.writeVarint(t[r]);}function Ds(t,e){for(var r=0;r<t.length;r++)e.writeSVarint(t[r]);}function Rs(t,e){for(var r=0;r<t.length;r++)e.writeFloat(t[r]);}function Us(t,e){for(var r=0;r<t.length;r++)e.writeDouble(t[r]);}function js(t,e){for(var r=0;r<t.length;r++)e.writeBoolean(t[r]);}function qs(t,e){for(var r=0;r<t.length;r++)e.writeFixed32(t[r]);}function Ns(t,e){for(var r=0;r<t.length;r++)e.writeSFixed32(t[r]);}function Ks(t,e){for(var r=0;r<t.length;r++)e.writeFixed64(t[r]);}function Xs(t,e){for(var r=0;r<t.length;r++)e.writeSFixed64(t[r]);}function Zs(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function Gs(t,e,r){t[r]=e,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24;}function Js(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}Es.prototype={destroy:function(){this.buf=null;},readFields:function(t,e,r){for(r=r||this.length;this.pos<r;){var n=this.readVarint(),i=n>>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n);}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=Zs(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=Js(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=Zs(this.buf,this.pos)+4294967296*Zs(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=Zs(this.buf,this.pos)+4294967296*Js(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=Bs(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=Bs(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(i=a[r.pos++],n=(112&i)>>4,i<128)return Fs(t,n,e);if(i=a[r.pos++],n|=(127&i)<<3,i<128)return Fs(t,n,e);if(i=a[r.pos++],n|=(127&i)<<10,i<128)return Fs(t,n,e);if(i=a[r.pos++],n|=(127&i)<<17,i<128)return Fs(t,n,e);if(i=a[r.pos++],n|=(127&i)<<24,i<128)return Fs(t,n,e);if(i=a[r.pos++],n|=(1&i)<<31,i<128)return Fs(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&Ms?function(t,e,r){return Ms.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){var n=\"\",i=e;for(;i<r;){var a,o,s,u=t[i],l=null,p=u>239?4:u>223?3:u>191?2:1;if(i+p>r)break;1===p?u<128&&(l=u):2===p?128==(192&(a=t[i+1]))&&(l=(31&u)<<6|63&a)<=127&&(l=null):3===p?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((l=(15&u)<<12|(63&a)<<6|63&o)<=2047||l>=55296&&l<=57343)&&(l=null)):4===p&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((l=(15&u)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||l>=1114112)&&(l=null)),null===l?(l=65533,p=1):l>65535&&(l-=65536,n+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),n+=String.fromCharCode(l),i+=p;}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==Es.Bytes)return t.push(this.readVarint(e));var r=Vs(this);for(t=t||[];this.pos<r;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){if(this.type!==Es.Bytes)return t.push(this.readSVarint());var e=Vs(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==Es.Bytes)return t.push(this.readBoolean());var e=Vs(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==Es.Bytes)return t.push(this.readFloat());var e=Vs(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==Es.Bytes)return t.push(this.readDouble());var e=Vs(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==Es.Bytes)return t.push(this.readFixed32());var e=Vs(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==Es.Bytes)return t.push(this.readSFixed32());var e=Vs(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==Es.Bytes)return t.push(this.readFixed64());var e=Vs(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){if(this.type!==Es.Bytes)return t.push(this.readSFixed64());var e=Vs(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===Es.Varint)for(;this.buf[this.pos++]>127;);else if(e===Es.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Es.Fixed32)this.pos+=4;else{if(e!==Es.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8;}},writeTag:function(t,e){this.writeVarint(t<<3|e);},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e;}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),Gs(this.buf,t,this.pos),this.pos+=4;},writeSFixed32:function(t){this.realloc(4),Gs(this.buf,t,this.pos),this.pos+=4;},writeFixed64:function(t){this.realloc(8),Gs(this.buf,-1&t,this.pos),Gs(this.buf,Math.floor(t*(1/4294967296)),this.pos+4),this.pos+=8;},writeSFixed64:function(t){this.realloc(8),Gs(this.buf,-1&t,this.pos),Gs(this.buf,Math.floor(t*(1/4294967296)),this.pos+4),this.pos+=8;},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t;}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t;}(n,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t);},writeBoolean:function(t){this.writeVarint(Boolean(t));},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a<e.length;a++){if((n=e.charCodeAt(a))>55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null;}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128);}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&Ls(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;},writeFloat:function(t){this.realloc(4),Ts(this.buf,t,this.pos,!0,23,4),this.pos+=4;},writeDouble:function(t){this.realloc(8),Ts(this.buf,t,this.pos,!0,52,8),this.pos+=8;},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=t[r];},writeRawMessage:function(t,e){this.pos++;var r=this.pos;t(e,this);var n=this.pos-r;n>=128&&Ls(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;},writeMessage:function(t,e,r){this.writeTag(t,Es.Bytes),this.writeRawMessage(e,r);},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,Os,e);},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Ds,e);},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,js,e);},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,Rs,e);},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Us,e);},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,qs,e);},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Ns,e);},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Ks,e);},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Xs,e);},writeBytesField:function(t,e){this.writeTag(t,Es.Bytes),this.writeBytes(e);},writeFixed32Field:function(t,e){this.writeTag(t,Es.Fixed32),this.writeFixed32(e);},writeSFixed32Field:function(t,e){this.writeTag(t,Es.Fixed32),this.writeSFixed32(e);},writeFixed64Field:function(t,e){this.writeTag(t,Es.Fixed64),this.writeFixed64(e);},writeSFixed64Field:function(t,e){this.writeTag(t,Es.Fixed64),this.writeSFixed64(e);},writeVarintField:function(t,e){this.writeTag(t,Es.Varint),this.writeVarint(e);},writeSVarintField:function(t,e){this.writeTag(t,Es.Varint),this.writeSVarint(e);},writeStringField:function(t,e){this.writeTag(t,Es.Bytes),this.writeString(e);},writeFloatField:function(t,e){this.writeTag(t,Es.Fixed32),this.writeFloat(e);},writeDoubleField:function(t,e){this.writeTag(t,Es.Fixed64),this.writeDouble(e);},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e));}};var Hs=3;function Ys(t,e,r){1===t&&r.readMessage($s,e);}function $s(t,e,r){if(3===t){var n=r.readMessage(Ws,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,u=n.left,l=n.top,p=n.advance;e.push({id:i,bitmap:new $a({width:o+2*Hs,height:s+2*Hs},a),metrics:{width:o,height:s,left:u,top:l,advance:p}});}}function Ws(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint());}var Qs=Hs;function tu(t){for(var e=0,r=0,n=0,i=t;n<i.length;n+=1){var a=i[n];e+=a.w*a.h,r=Math.max(r,a.w);}t.sort((function(t,e){return e.h-t.h}));for(var o=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}],s=0,u=0,l=0,p=t;l<p.length;l+=1)for(var c=p[l],h=o.length-1;h>=0;h--){var f=o[h];if(!(c.w>f.w||c.h>f.h)){if(c.x=f.x,c.y=f.y,u=Math.max(u,c.y+c.h),s=Math.max(s,c.x+c.w),c.w===f.w&&c.h===f.h){var y=o.pop();h<o.length&&(o[h]=y);}else c.h===f.h?(f.x+=c.w,f.w-=c.w):c.w===f.w?(f.y+=c.h,f.h-=c.h):(o.push({x:f.x+c.w,y:f.y,w:f.w-c.w,h:c.h}),f.y+=c.h,f.h-=c.h);break}}return {w:s,h:u,fill:e/(s*u)||0}}var eu=1,ru=function(t,e){var r=e.pixelRatio,n=e.version,i=e.stretchX,a=e.stretchY,o=e.content;this.paddedRect=t,this.pixelRatio=r,this.stretchX=i,this.stretchY=a,this.content=o,this.version=n;},nu={tl:{configurable:!0},br:{configurable:!0},tlbr:{configurable:!0},displaySize:{configurable:!0}};nu.tl.get=function(){return [this.paddedRect.x+eu,this.paddedRect.y+eu]},nu.br.get=function(){return [this.paddedRect.x+this.paddedRect.w-eu,this.paddedRect.y+this.paddedRect.h-eu]},nu.tlbr.get=function(){return this.tl.concat(this.br)},nu.displaySize.get=function(){return [(this.paddedRect.w-2*eu)/this.pixelRatio,(this.paddedRect.h-2*eu)/this.pixelRatio]},Object.defineProperties(ru.prototype,nu);var iu=function(t,e){var r={},n={};this.haveRenderCallbacks=[];var i=[];this.addImages(t,r,i),this.addImages(e,n,i);var a=tu(i),o=a.w,s=a.h,u=new Wa({width:o||1,height:s||1});for(var l in t){var p=t[l],c=r[l].paddedRect;Wa.copy(p.data,u,{x:0,y:0},{x:c.x+eu,y:c.y+eu},p.data);}for(var h in e){var f=e[h],y=n[h].paddedRect,d=y.x+eu,m=y.y+eu,v=f.data.width,g=f.data.height;Wa.copy(f.data,u,{x:0,y:0},{x:d,y:m},f.data),Wa.copy(f.data,u,{x:0,y:g-1},{x:d,y:m-1},{width:v,height:1}),Wa.copy(f.data,u,{x:0,y:0},{x:d,y:m+g},{width:v,height:1}),Wa.copy(f.data,u,{x:v-1,y:0},{x:d-1,y:m},{width:1,height:g}),Wa.copy(f.data,u,{x:0,y:0},{x:d+v,y:m},{width:1,height:g});}this.image=u,this.iconPositions=r,this.patternPositions=n;};iu.prototype.addImages=function(t,e,r){for(var n in t){var i=t[n],a={x:0,y:0,w:i.data.width+2*eu,h:i.data.height+2*eu};r.push(a),e[n]=new ru(a,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(n);}},iu.prototype.patchUpdatedImages=function(t,e){for(var r in t.dispatchRenderCallbacks(this.haveRenderCallbacks),t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e);},iu.prototype.patchUpdatedImage=function(t,e,r){if(t&&e&&t.version!==e.version){t.version=e.version;var n=t.tl,i=n[0],a=n[1];r.update(e.data,void 0,{x:i,y:a});}},An(\"ImagePosition\",ru),An(\"ImageAtlas\",iu);var au={horizontal:1,vertical:2,horizontalOnly:3},ou=-17;var su=function(){this.scale=1,this.fontStack=\"\",this.imageName=null;};su.forText=function(t,e){var r=new su;return r.scale=t||1,r.fontStack=e,r},su.forImage=function(t){var e=new su;return e.imageName=t,e};var uu=function(){this.text=\"\",this.sectionIndex=[],this.sections=[],this.imageSectionID=null;};function lu(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d){var m,v=uu.fromFeature(t,i);c===au.vertical&&v.verticalizePunctuation();var g=Jn.processBidirectionalText,x=Jn.processStyledBidirectionalText;if(g&&1===v.sections.length){m=[];for(var b=0,_=g(v.toString(),mu(v,l,a,e,n,f,y));b<_.length;b+=1){var w=_[b],A=new uu;A.text=w,A.sections=v.sections;for(var S=0;S<w.length;S++)A.sectionIndex.push(0);m.push(A);}}else if(x){m=[];for(var k=0,I=x(v.text,v.sectionIndex,mu(v,l,a,e,n,f,y));k<I.length;k+=1){var z=I[k],C=new uu;C.text=z[0],C.sectionIndex=z[1],C.sections=v.sections,m.push(C);}}else m=function(t,e){for(var r=[],n=t.text,i=0,a=0,o=e;a<o.length;a+=1){var s=o[a];r.push(t.substring(i,s)),i=s;}return i<n.length&&r.push(t.substring(i,n.length)),r}(v,mu(v,l,a,e,n,f,y));var B=[],T={positionedLines:B,text:v.toString(),top:p[1],bottom:p[1],left:p[0],right:p[0],writingMode:c,iconsInText:!1,verticalizable:!1};return function(t,e,r,n,i,a,o,s,u,l,p,c){for(var h=0,f=ou,y=0,d=0,m=\"right\"===s?1:\"left\"===s?0:.5,v=0,g=0,x=i;g<x.length;g+=1){var b=x[g];b.trim();var _=b.getMaxScale(),w=(_-1)*Cs,A={positionedGlyphs:[],lineOffset:0};t.positionedLines[v]=A;var S=A.positionedGlyphs,k=0;if(b.length()){for(var I=0;I<b.length();I++){var z=b.getSection(I),C=b.getSectionIndex(I),B=b.getCharCode(I),T=0,P=null,E=null,M=null,V=Cs,F=!(u===au.horizontal||!p&&!En(B)||p&&(pu[B]||(Z=B,Bn.Arabic(Z)||Bn[\"Arabic Supplement\"](Z)||Bn[\"Arabic Extended-A\"](Z)||Bn[\"Arabic Presentation Forms-A\"](Z)||Bn[\"Arabic Presentation Forms-B\"](Z))));if(z.imageName){var L=n[z.imageName];if(!L)continue;M=z.imageName,t.iconsInText=t.iconsInText||!0,E=L.paddedRect;var O=L.displaySize;z.scale=z.scale*Cs/c,P={width:O[0],height:O[1],left:eu,top:-Qs,advance:F?O[1]:O[0]};var D=Cs-O[1]*z.scale;T=w+D,V=P.advance;var R=F?O[0]*z.scale-Cs*_:O[1]*z.scale-Cs*_;R>0&&R>k&&(k=R);}else{var U=r[z.fontStack],j=U&&U[B];if(j&&j.rect)E=j.rect,P=j.metrics;else{var q=e[z.fontStack],N=q&&q[B];if(!N)continue;P=N.metrics;}T=(_-z.scale)*Cs;}F?(t.verticalizable=!0,S.push({glyph:B,imageName:M,x:h,y:f+T,vertical:F,scale:z.scale,fontStack:z.fontStack,sectionIndex:C,metrics:P,rect:E}),h+=V*z.scale+l):(S.push({glyph:B,imageName:M,x:h,y:f+T,vertical:F,scale:z.scale,fontStack:z.fontStack,sectionIndex:C,metrics:P,rect:E}),h+=P.advance*z.scale+l);}if(0!==S.length){var K=h-l;y=Math.max(K,y),gu(S,0,S.length-1,m,k);}h=0;var X=a*_+k;A.lineOffset=Math.max(k,w),f+=X,d=Math.max(X,d),++v;}else f+=a,++v;}var Z;var G=f-ou,J=vu(o),H=J.horizontalAlign,Y=J.verticalAlign;(function(t,e,r,n,i,a,o,s,u){var l=(e-r)*i,p=0;p=a!==o?-s*n-ou:(-n*u+.5)*o;for(var c=0,h=t;c<h.length;c+=1)for(var f=h[c],y=0,d=f.positionedGlyphs;y<d.length;y+=1){var m=d[y];m.x+=l,m.y+=p;}})(t.positionedLines,m,H,Y,y,d,a,G,i.length),t.top+=-Y*G,t.bottom=t.top+G,t.left+=-H*y,t.right=t.left+y;}(T,e,r,n,m,o,s,u,c,l,h,d),!function(t){for(var e=0,r=t;e<r.length;e+=1){if(0!==r[e].positionedGlyphs.length)return !1}return !0}(B)&&T}uu.fromFeature=function(t,e){for(var r=new uu,n=0;n<t.sections.length;n++){var i=t.sections[n];i.image?r.addImageSection(i):r.addTextSection(i,e);}return r},uu.prototype.length=function(){return this.text.length},uu.prototype.getSection=function(t){return this.sections[this.sectionIndex[t]]},uu.prototype.getSectionIndex=function(t){return this.sectionIndex[t]},uu.prototype.getCharCode=function(t){return this.text.charCodeAt(t)},uu.prototype.verticalizePunctuation=function(){this.text=function(t){for(var e=\"\",r=0;r<t.length;r++){var n=t.charCodeAt(r+1)||null,i=t.charCodeAt(r-1)||null;(!n||!Mn(n)||zs[t[r+1]])&&(!i||!Mn(i)||zs[t[r-1]])&&zs[t[r]]?e+=zs[t[r]]:e+=t[r];}return e}(this.text);},uu.prototype.trim=function(){for(var t=0,e=0;e<this.text.length&&pu[this.text.charCodeAt(e)];e++)t++;for(var r=this.text.length,n=this.text.length-1;n>=0&&n>=t&&pu[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r);},uu.prototype.substring=function(t,e){var r=new uu;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},uu.prototype.toString=function(){return this.text},uu.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce((function(e,r){return Math.max(e,t.sections[r].scale)}),0)},uu.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(su.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,n=0;n<t.text.length;++n)this.sectionIndex.push(r);},uu.prototype.addImageSection=function(t){var e=t.image?t.image.name:\"\";if(0!==e.length){var r=this.getNextImageSectionCharCode();r?(this.text+=String.fromCharCode(r),this.sections.push(su.forImage(e)),this.sectionIndex.push(this.sections.length-1)):w(\"Reached maximum number of images 6401\");}else w(\"Can't add FormattedSection with an empty image.\");},uu.prototype.getNextImageSectionCharCode=function(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var pu={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},cu={};function hu(t,e,r,n,i,a){if(e.imageName){var o=n[e.imageName];return o?o.displaySize[0]*e.scale*Cs/a+i:0}var s=r[e.fontStack],u=s&&s[t];return u?u.metrics.advance*e.scale+i:0}function fu(t,e,r,n){var i=Math.pow(t-e,2);return n?t<e?i/2:2*i:i+Math.abs(r)*r}function yu(t,e,r){var n=0;return 10===t&&(n-=1e4),r&&(n+=150),40!==t&&65288!==t||(n+=50),41!==e&&65289!==e||(n+=50),n}function du(t,e,r,n,i,a){for(var o=null,s=fu(e,r,i,a),u=0,l=n;u<l.length;u+=1){var p=l[u],c=fu(e-p.x,r,i,a)+p.badness;c<=s&&(o=p,s=c);}return {index:t,x:e,priorBreak:o,badness:s}}function mu(t,e,r,n,i,a,o){if(\"point\"!==a)return [];if(!t)return [];for(var s,u=[],l=function(t,e,r,n,i,a){for(var o=0,s=0;s<t.length();s++){var u=t.getSection(s);o+=hu(t.getCharCode(s),u,n,i,e,a);}return o/Math.max(1,Math.ceil(o/r))}(t,e,r,n,i,o),p=t.text.indexOf(\"​\")>=0,c=0,h=0;h<t.length();h++){var f=t.getSection(h),y=t.getCharCode(h);if(pu[y]||(c+=hu(y,f,n,i,e,o)),h<t.length()-1){var d=!!(!((s=y)<11904)&&(Bn[\"Bopomofo Extended\"](s)||Bn.Bopomofo(s)||Bn[\"CJK Compatibility Forms\"](s)||Bn[\"CJK Compatibility Ideographs\"](s)||Bn[\"CJK Compatibility\"](s)||Bn[\"CJK Radicals Supplement\"](s)||Bn[\"CJK Strokes\"](s)||Bn[\"CJK Symbols and Punctuation\"](s)||Bn[\"CJK Unified Ideographs Extension A\"](s)||Bn[\"CJK Unified Ideographs\"](s)||Bn[\"Enclosed CJK Letters and Months\"](s)||Bn[\"Halfwidth and Fullwidth Forms\"](s)||Bn.Hiragana(s)||Bn[\"Ideographic Description Characters\"](s)||Bn[\"Kangxi Radicals\"](s)||Bn[\"Katakana Phonetic Extensions\"](s)||Bn.Katakana(s)||Bn[\"Vertical Forms\"](s)||Bn[\"Yi Radicals\"](s)||Bn[\"Yi Syllables\"](s)));(cu[y]||d||f.imageName)&&u.push(du(h+1,c,l,u,yu(y,t.getCharCode(h+1),d&&p),!1));}}return function t(e){return e?t(e.priorBreak).concat(e.index):[]}(du(t.length(),c,l,u,0,!0))}function vu(t){var e=.5,r=.5;switch(t){case\"right\":case\"top-right\":case\"bottom-right\":e=1;break;case\"left\":case\"top-left\":case\"bottom-left\":e=0;}switch(t){case\"bottom\":case\"bottom-right\":case\"bottom-left\":r=1;break;case\"top\":case\"top-right\":case\"top-left\":r=0;}return {horizontalAlign:e,verticalAlign:r}}function gu(t,e,r,n,i){if(n||i)for(var a=t[r],o=a.metrics.advance*a.scale,s=(t[r].x+o)*n,u=e;u<=r;u++)t[u].x-=s,t[u].y+=i;}function xu(t,e,r,n,i,a){var o,s=t.image;if(s.content){var u=s.content,l=s.pixelRatio||1;o=[u[0]/l,u[1]/l,s.displaySize[0]-u[2]/l,s.displaySize[1]-u[3]/l];}var p,c,h,f,y=e.left*a,d=e.right*a;\"width\"===r||\"both\"===r?(f=i[0]+y-n[3],c=i[0]+d+n[1]):c=(f=i[0]+(y+d-s.displaySize[0])/2)+s.displaySize[0];var m=e.top*a,v=e.bottom*a;return \"height\"===r||\"both\"===r?(p=i[1]+m-n[0],h=i[1]+v+n[2]):h=(p=i[1]+(m+v-s.displaySize[1])/2)+s.displaySize[1],{image:s,top:p,right:c,bottom:h,left:f,collisionPadding:o}}cu[10]=!0,cu[32]=!0,cu[38]=!0,cu[40]=!0,cu[41]=!0,cu[43]=!0,cu[45]=!0,cu[47]=!0,cu[173]=!0,cu[183]=!0,cu[8203]=!0,cu[8208]=!0,cu[8211]=!0,cu[8231]=!0;var bu=function(t){function e(e,r,n,i){t.call(this,e,r),this.angle=n,void 0!==i&&(this.segment=i);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.clone=function(){return new e(this.x,this.y,this.angle,this.segment)},e}(i);An(\"Anchor\",bu);var _u=128;function wu(t,e){var r=e.expression;if(\"constant\"===r.kind)return {kind:\"constant\",layoutSize:r.evaluate(new Hn(t+1))};if(\"source\"===r.kind)return {kind:\"source\"};for(var n=r.zoomStops,i=r.interpolationType,a=0;a<n.length&&n[a]<=t;)a++;for(var o=a=Math.max(0,a-1);o<n.length&&n[o]<t+1;)o++;o=Math.min(n.length-1,o);var s=n[a],u=n[o];return \"composite\"===r.kind?{kind:\"composite\",minZoom:s,maxZoom:u,interpolationType:i}:{kind:\"camera\",minZoom:s,maxZoom:u,minSize:r.evaluate(new Hn(s)),maxSize:r.evaluate(new Hn(u)),interpolationType:i}}function Au(t,e,r){var n=e.uSize,i=e.uSizeT,a=r.lowerSize,o=r.upperSize;return \"source\"===t.kind?a/_u:\"composite\"===t.kind?Ie(a/_u,o/_u,i):n}function Su(t,e){var r=0,n=0;if(\"constant\"===t.kind)n=t.layoutSize;else if(\"source\"!==t.kind){var i=t.interpolationType,a=t.minZoom,o=t.maxZoom,s=i?l(Ge.interpolationFactor(i,e,a,o),0,1):0;\"camera\"===t.kind?n=Ie(t.minSize,t.maxSize,s):r=s;}return {uSizeT:r,uSize:n}}var ku=Object.freeze({__proto__:null,getSizeData:wu,evaluateSizeForFeature:Au,evaluateSizeForZoom:Su,SIZE_PACK_FACTOR:_u});function Iu(t,e,r,n,i){if(void 0===e.segment)return !0;for(var a=e,o=e.segment+1,s=0;s>-r/2;){if(--o<0)return !1;s-=t[o].dist(a),a=t[o];}s+=t[o].dist(t[o+1]),o++;for(var u=[],l=0;s<r/2;){var p=t[o-1],c=t[o],h=t[o+1];if(!h)return !1;var f=p.angleTo(c)-c.angleTo(h);for(f=Math.abs((f+3*Math.PI)%(2*Math.PI)-Math.PI),u.push({distance:s,angleDelta:f}),l+=f;s-u[0].distance>n;)l-=u.shift().angleDelta;if(l>i)return !1;o++,s+=c.dist(h);}return !0}function zu(t){for(var e=0,r=0;r<t.length-1;r++)e+=t[r].dist(t[r+1]);return e}function Cu(t,e,r){return t?.6*e*r:0}function Bu(t,e){return Math.max(t?t.right-t.left:0,e?e.right-e.left:0)}function Tu(t,e,r,n,i,a){for(var o=Cu(r,i,a),s=Bu(r,n)*a,u=0,l=zu(t)/2,p=0;p<t.length-1;p++){var c=t[p],h=t[p+1],f=c.dist(h);if(u+f>l){var y=(l-u)/f,d=Ie(c.x,h.x,y),m=Ie(c.y,h.y,y),v=new bu(d,m,h.angleTo(c),p);return v._round(),!o||Iu(t,v,s,o,e)?v:void 0}u+=f;}}function Pu(t,e,r,n,i,a,o,s,u){var l=Cu(n,a,o),p=Bu(n,i),c=p*o,h=0===t[0].x||t[0].x===u||0===t[0].y||t[0].y===u;return e-c<e/4&&(e=c+e/4),function t(e,r,n,i,a,o,s,u,l){var p=o/2;var c=zu(e);var h=0,f=r-n;var y=[];for(var d=0;d<e.length-1;d++){for(var m=e[d],v=e[d+1],g=m.dist(v),x=v.angleTo(m);f+n<h+g;){var b=((f+=n)-h)/g,_=Ie(m.x,v.x,b),w=Ie(m.y,v.y,b);if(_>=0&&_<l&&w>=0&&w<l&&f-p>=0&&f+p<=c){var A=new bu(_,w,x,d);A._round(),i&&!Iu(e,A,o,i,a)||y.push(A);}}h+=g;}u||y.length||s||(y=t(e,h/2,n,i,a,o,s,!0,l));return y}(t,h?e/2*s%e:(p/2+2*a)*o*s%e,e,l,r,c,h,!1,u)}var Eu=eu;function Mu(t,e,r,n){var a=[],o=t.image,s=o.pixelRatio,u=o.paddedRect.w-2*Eu,l=o.paddedRect.h-2*Eu,p=t.right-t.left,c=t.bottom-t.top,h=o.stretchX||[[0,u]],f=o.stretchY||[[0,l]],y=function(t,e){return t+e[1]-e[0]},d=h.reduce(y,0),m=f.reduce(y,0),v=u-d,g=l-m,x=0,b=d,_=0,w=m,A=0,S=v,k=0,I=g;if(o.content&&n){var z=o.content;x=Vu(h,0,z[0]),_=Vu(f,0,z[1]),b=Vu(h,z[0],z[2]),w=Vu(f,z[1],z[3]),A=z[0]-x,k=z[1]-_,S=z[2]-z[0]-b,I=z[3]-z[1]-w;}var C=function(n,a,u,l){var h=Lu(n.stretch-x,b,p,t.left),f=Ou(n.fixed-A,S,n.stretch,d),y=Lu(a.stretch-_,w,c,t.top),v=Ou(a.fixed-k,I,a.stretch,m),g=Lu(u.stretch-x,b,p,t.left),z=Ou(u.fixed-A,S,u.stretch,d),C=Lu(l.stretch-_,w,c,t.top),B=Ou(l.fixed-k,I,l.stretch,m),T=new i(h,y),P=new i(g,y),E=new i(g,C),M=new i(h,C),V=new i(f/s,v/s),F=new i(z/s,B/s),L=e*Math.PI/180;if(L){var O=Math.sin(L),D=Math.cos(L),R=[D,-O,O,D];T._matMult(R),P._matMult(R),M._matMult(R),E._matMult(R);}var U=n.stretch+n.fixed,j=u.stretch+u.fixed,q=a.stretch+a.fixed,N=l.stretch+l.fixed;return {tl:T,tr:P,bl:M,br:E,tex:{x:o.paddedRect.x+Eu+U,y:o.paddedRect.y+Eu+q,w:j-U,h:N-q},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:V,pixelOffsetBR:F,minFontScaleX:S/s/p,minFontScaleY:I/s/c,isSDF:r}};if(n&&(o.stretchX||o.stretchY))for(var B=Fu(h,v,d),T=Fu(f,g,m),P=0;P<B.length-1;P++)for(var E=B[P],M=B[P+1],V=0;V<T.length-1;V++){var F=T[V],L=T[V+1];a.push(C(E,F,M,L));}else a.push(C({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:u+1},{fixed:0,stretch:l+1}));return a}function Vu(t,e,r){for(var n=0,i=0,a=t;i<a.length;i+=1){var o=a[i];n+=Math.max(e,Math.min(r,o[1]))-Math.max(e,Math.min(r,o[0]));}return n}function Fu(t,e,r){for(var n=[{fixed:-Eu,stretch:0}],i=0,a=t;i<a.length;i+=1){var o=a[i],s=o[0],u=o[1],l=n[n.length-1];n.push({fixed:s-l.stretch,stretch:l.stretch}),n.push({fixed:s-l.stretch,stretch:l.stretch+(u-s)});}return n.push({fixed:e+Eu,stretch:r}),n}function Lu(t,e,r,n){return t/e*r+n}function Ou(t,e,r,n){return t-e*r/n}var Du=function(t,e,r,n,a,o,s,u,l,p,c,h){var f=s.top*u-l,y=s.bottom*u+l,d=s.left*u-l,m=s.right*u+l,v=s.collisionPadding;if(v&&(d-=v[0]*u,f-=v[1]*u,m+=v[2]*u,y+=v[3]*u),this.boxStartIndex=t.length,p){var g=y-f,x=m-d;g>0&&(g=Math.max(10*u,g),this._addLineCollisionCircles(t,e,r,r.segment,x,g,n,a,o,c));}else{if(h){var b=new i(d,f),_=new i(m,f),w=new i(d,y),A=new i(m,y),S=h*Math.PI/180;b._rotate(S),_._rotate(S),w._rotate(S),A._rotate(S),d=Math.min(b.x,_.x,w.x,A.x),m=Math.max(b.x,_.x,w.x,A.x),f=Math.min(b.y,_.y,w.y,A.y),y=Math.max(b.y,_.y,w.y,A.y);}t.emplaceBack(r.x,r.y,d,f,m,y,n,a,o,0,0);}this.boxEndIndex=t.length;};Du.prototype._addLineCollisionCircles=function(t,e,r,n,i,a,o,s,u,l){var p=a/2,c=Math.floor(i/p)||1,h=1+.4*Math.log(l)/Math.LN2,f=Math.floor(c*h/2),y=-a/2,d=r,m=n+1,v=y,g=-i/2,x=g-i/4;do{if(--m<0){if(v>g)return;m=0;break}v-=e[m].dist(d),d=e[m];}while(v>x);for(var b=e[m].dist(e[m+1]),_=-f;_<c+f;_++){var w=_*p,A=g+w;if(w<0&&(A+=w),w>i&&(A+=w-i),!(A<v)){for(;v+b<A;){if(v+=b,++m+1>=e.length)return;b=e[m].dist(e[m+1]);}var S=A-v,k=e[m],I=e[m+1].sub(k)._unit()._mult(S)._add(k)._round(),z=Math.abs(A-y)<p?0:.8*(A-y);t.emplaceBack(I.x,I.y,-a/2,-a/2,a/2,a/2,o,s,u,a/2,z);}}};var Ru=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=Uu),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r);};function Uu(t,e){return t<e?-1:t>e?1:0}function ju(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var n=1/0,a=1/0,o=-1/0,s=-1/0,u=t[0],l=0;l<u.length;l++){var p=u[l];(!l||p.x<n)&&(n=p.x),(!l||p.y<a)&&(a=p.y),(!l||p.x>o)&&(o=p.x),(!l||p.y>s)&&(s=p.y);}var c=o-n,h=s-a,f=Math.min(c,h),y=f/2,d=new Ru([],qu);if(0===f)return new i(n,a);for(var m=n;m<o;m+=f)for(var v=a;v<s;v+=f)d.push(new Nu(m+y,v+y,y,t));for(var g=function(t){for(var e=0,r=0,n=0,i=t[0],a=0,o=i.length,s=o-1;a<o;s=a++){var u=i[a],l=i[s],p=u.x*l.y-l.x*u.y;r+=(u.x+l.x)*p,n+=(u.y+l.y)*p,e+=3*p;}return new Nu(r/e,n/e,0,t)}(t),x=d.length;d.length;){var b=d.pop();(b.d>g.d||!g.d)&&(g=b,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*b.d)/1e4,x)),b.max-g.d<=e||(y=b.h/2,d.push(new Nu(b.p.x-y,b.p.y-y,y,t)),d.push(new Nu(b.p.x+y,b.p.y-y,y,t)),d.push(new Nu(b.p.x-y,b.p.y+y,y,t)),d.push(new Nu(b.p.x+y,b.p.y+y,y,t)),x+=4);}return r&&(console.log(\"num probes: \"+x),console.log(\"best distance: \"+g.d)),g.p}function qu(t,e){return e.max-t.max}function Nu(t,e,r,n){this.p=new i(t,e),this.h=r,this.d=function(t,e){for(var r=!1,n=1/0,i=0;i<e.length;i++)for(var a=e[i],o=0,s=a.length,u=s-1;o<s;u=o++){var l=a[o],p=a[u];l.y>t.y!=p.y>t.y&&t.x<(p.x-l.x)*(t.y-l.y)/(p.y-l.y)+l.x&&(r=!r),n=Math.min(n,Ea(t,l,p));}return (r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2;}Ru.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1);},Ru.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},Ru.prototype.peek=function(){return this.data[0]},Ru.prototype._up=function(t){for(var e=this.data,r=this.compare,n=e[t];t>0;){var i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i;}e[t]=n;},Ru.prototype._down=function(t){for(var e=this.data,r=this.compare,n=this.length>>1,i=e[t];t<n;){var a=1+(t<<1),o=e[a],s=a+1;if(s<this.length&&r(e[s],o)<0&&(a=s,o=e[s]),r(o,i)>=0)break;e[t]=o,t=a;}e[t]=i;};var Ku=e((function(t){t.exports=function(t,e){var r,n,i,a,o,s,u,l;for(r=3&t.length,n=t.length-r,i=e,o=3432918353,s=461845907,l=0;l<n;)u=255&t.charCodeAt(l)|(255&t.charCodeAt(++l))<<8|(255&t.charCodeAt(++l))<<16|(255&t.charCodeAt(++l))<<24,++l,i=27492+(65535&(a=5*(65535&(i=(i^=u=(65535&(u=(u=(65535&u)*o+(((u>>>16)*o&65535)<<16)&4294967295)<<15|u>>>17))*s+(((u>>>16)*s&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(u=0,r){case 3:u^=(255&t.charCodeAt(l+2))<<16;case 2:u^=(255&t.charCodeAt(l+1))<<8;case 1:i^=u=(65535&(u=(u=(65535&(u^=255&t.charCodeAt(l)))*o+(((u>>>16)*o&65535)<<16)&4294967295)<<15|u>>>17))*s+(((u>>>16)*s&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0};})),Xu=e((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0};})),Zu=Ku,Gu=Ku,Ju=Xu;Zu.murmur3=Gu,Zu.murmur2=Ju;var Hu=7,Yu=Number.POSITIVE_INFINITY;function $u(t,e){return e[1]!==Yu?function(t,e,r){var n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-Hu;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=-r+Hu;}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e;}return [n,i]}(t,e[0],e[1]):function(t,e){var r=0,n=0;e<0&&(e=0);var i=e/Math.sqrt(2);switch(t){case\"top-right\":case\"top-left\":n=i-Hu;break;case\"bottom-right\":case\"bottom-left\":n=-i+Hu;break;case\"bottom\":n=-e+Hu;break;case\"top\":n=e-Hu;}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e;}return [r,n]}(t,e[0])}function Wu(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return \"right\";case\"left\":case\"top-left\":case\"bottom-left\":return \"left\"}return \"center\"}var Qu=255,tl=Qu*_u;function el(t,e,r,n,a,o,s,u,l,p,c,h,f,y){var d=function(t,e,r,n,a,o,s,u){for(var l=n.layout.get(\"text-rotate\").evaluate(o,{})*Math.PI/180,p=[],c=0,h=e.positionedLines;c<h.length;c+=1)for(var f=h[c],y=0,d=f.positionedGlyphs;y<d.length;y+=1){var m=d[y];if(m.rect){var v=m.rect||{},g=Qs+1,x=!0,b=1,_=0,w=(a||u)&&m.vertical,A=m.metrics.advance*m.scale/2;if(u&&e.verticalizable){var S=(m.scale-1)*Cs,k=(Cs-m.metrics.width*m.scale)/2;_=f.lineOffset/2-(m.imageName?-k:S);}if(m.imageName){var I=s[m.imageName];x=I.sdf,b=I.pixelRatio,g=eu/b;}var z=a?[m.x+A,m.y]:[0,0],C=a?[0,0]:[m.x+A+r[0],m.y+r[1]-_],B=[0,0];w&&(B=C,C=[0,0]);var T=(m.metrics.left-g)*m.scale-A+C[0],P=(-m.metrics.top-g)*m.scale+C[1],E=T+v.w*m.scale/b,M=P+v.h*m.scale/b,V=new i(T,P),F=new i(E,P),L=new i(T,M),O=new i(E,M);if(w){var D=new i(-A,A-ou),R=-Math.PI/2,U=Cs/2-A,j=m.imageName?U:0,q=new i(5-ou-U,-j),N=new(Function.prototype.bind.apply(i,[null].concat(B)));V._rotateAround(R,D)._add(q)._add(N),F._rotateAround(R,D)._add(q)._add(N),L._rotateAround(R,D)._add(q)._add(N),O._rotateAround(R,D)._add(q)._add(N);}if(l){var K=Math.sin(l),X=Math.cos(l),Z=[X,-K,K,X];V._matMult(Z),F._matMult(Z),L._matMult(Z),O._matMult(Z);}var G=new i(0,0),J=new i(0,0);p.push({tl:V,tr:F,bl:L,br:O,tex:v,writingMode:e.writingMode,glyphOffset:z,sectionIndex:m.sectionIndex,isSDF:x,pixelOffsetTL:G,pixelOffsetBR:J,minFontScaleX:0,minFontScaleY:0});}}return p}(0,r,u,a,o,s,n,t.allowVerticalPlacement),m=t.textSizeData,v=null;\"source\"===m.kind?(v=[_u*a.layout.get(\"text-size\").evaluate(s,{})])[0]>tl&&w(t.layerIds[0]+': Value for \"text-size\" is >= '+Qu+'. Reduce your \"text-size\".'):\"composite\"===m.kind&&((v=[_u*y.compositeTextSizes[0].evaluate(s,{}),_u*y.compositeTextSizes[1].evaluate(s,{})])[0]>tl||v[1]>tl)&&w(t.layerIds[0]+': Value for \"text-size\" is >= '+Qu+'. Reduce your \"text-size\".'),t.addSymbols(t.text,d,v,u,o,s,p,e,l.lineStartIndex,l.lineLength,f);for(var g=0,x=c;g<x.length;g+=1){h[x[g]]=t.text.placedSymbolArray.length-1;}return 4*d.length}function rl(t){for(var e in t)return t[e];return null}function nl(t,e,r,n){var i=t.compareText;if(e in i){for(var a=i[e],o=a.length-1;o>=0;o--)if(n.dist(a[o])<r)return !0}else i[e]=[];return i[e].push(n),!1}var il=ts.VectorTileFeature.types,al=[{name:\"a_fade_opacity\",components:1,type:\"Uint8\",offset:0}];function ol(t,e,r,n,i,a,o,s,u,l,p,c,h){var f=s?Math.min(tl,Math.round(s[0])):0,y=s?Math.min(tl,Math.round(s[1])):0;t.emplaceBack(e,r,Math.round(32*n),Math.round(32*i),a,o,(f<<1)+(u?1:0),y,16*l,16*p,256*c,256*h);}function sl(t,e,r){t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r);}function ul(t){for(var e=0,r=t.sections;e<r.length;e+=1){if(Ln(r[e].text))return !0}return !1}var ll=function(t){this.layoutVertexArray=new _i,this.indexArray=new Ei,this.programConfigurations=t,this.segments=new Yi,this.dynamicLayoutVertexArray=new wi,this.opacityVertexArray=new Ai,this.placedSymbolArray=new Ui;};ll.prototype.upload=function(t,e,r,n){r&&(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,_s.members),this.indexBuffer=t.createIndexBuffer(this.indexArray,e),this.dynamicLayoutVertexBuffer=t.createVertexBuffer(this.dynamicLayoutVertexArray,ws.members,!0),this.opacityVertexBuffer=t.createVertexBuffer(this.opacityVertexArray,al,!0),this.opacityVertexBuffer.itemSize=1),(r||n)&&this.programConfigurations.upload(t);},ll.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy());},An(\"SymbolBuffers\",ll);var pl=function(t,e,r){this.layoutVertexArray=new t,this.layoutAttributes=e,this.indexArray=new r,this.segments=new Yi,this.collisionVertexArray=new Ii;};pl.prototype.upload=function(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=t.createVertexBuffer(this.collisionVertexArray,As.members,!0);},pl.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy());},An(\"CollisionBuffers\",pl);var cl=function(t){this.collisionBoxArray=t.collisionBoxArray,this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.pixelRatio=t.pixelRatio,this.sourceLayerIndex=t.sourceLayerIndex,this.hasPattern=!1,this.hasPaintOverrides=!1,this.hasRTLText=!1;var e=this.layers[0]._unevaluatedLayout._values;this.textSizeData=wu(this.zoom,e[\"text-size\"]),this.iconSizeData=wu(this.zoom,e[\"icon-size\"]);var r=this.layers[0].layout,n=r.get(\"symbol-sort-key\"),i=r.get(\"symbol-z-order\");this.sortFeaturesByKey=\"viewport-y\"!==i&&void 0!==n.constantOr(1);var a=\"viewport-y\"===i||\"auto\"===i&&!this.sortFeaturesByKey;this.sortFeaturesByY=a&&(r.get(\"text-allow-overlap\")||r.get(\"icon-allow-overlap\")||r.get(\"text-ignore-placement\")||r.get(\"icon-ignore-placement\")),\"point\"===r.get(\"symbol-placement\")&&(this.writingModes=r.get(\"text-writing-mode\").map((function(t){return au[t]}))),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id})),this.sourceID=t.sourceID;};cl.prototype.createArrays=function(){var t=this.layers[0].layout;this.hasPaintOverrides=dl.hasPaintOverrides(t),this.text=new ll(new ma(_s.members,this.layers,this.zoom,(function(t){return /^text/.test(t)}))),this.icon=new ll(new ma(_s.members,this.layers,this.zoom,(function(t){return /^icon/.test(t)}))),this.textCollisionBox=new pl(ki,Ss.members,Mi),this.iconCollisionBox=new pl(ki,Ss.members,Mi),this.textCollisionCircle=new pl(ki,ks.members,Ei),this.iconCollisionCircle=new pl(ki,ks.members,Ei),this.glyphOffsetArray=new Ki,this.lineVertexArray=new Zi,this.symbolInstances=new qi;},cl.prototype.calculateGlyphDependencies=function(t,e,r,n,i){for(var a=0;a<t.length;a++)if(e[t.charCodeAt(a)]=!0,(r||n)&&i){var o=zs[t.charAt(a)];o&&(e[o.charCodeAt(0)]=!0);}},cl.prototype.populate=function(t,e){var r=this.layers[0],n=r.layout,i=n.get(\"text-font\"),a=n.get(\"text-field\"),o=n.get(\"icon-image\"),s=(\"constant\"!==a.value.kind||a.value.value instanceof re&&!a.value.value.isEmpty()||a.value.value.toString().length>0)&&(\"constant\"!==i.value.kind||i.value.value.length>0),u=(\"constant\"!==o.value.kind||!!o.value.value)&&Object.keys(o.parameters).length>0,l=n.get(\"symbol-sort-key\");if(this.features=[],s||u){for(var p=e.iconDependencies,c=e.glyphDependencies,h=e.availableImages,f=new Hn(this.zoom),y=0,d=t;y<d.length;y+=1){var m=d[y],v=m.feature,g=m.index,x=m.sourceLayerIndex;if(r._featureFilter(f,v)){var b=void 0;if(s){var _=r.getValueAndResolveTokens(\"text-field\",v,h),w=re.factory(_);ul(w)&&(this.hasRTLText=!0),(!this.hasRTLText||\"unavailable\"===Zn()||this.hasRTLText&&Jn.isParsed())&&(b=Is(w,r,v));}var A=void 0;if(u){var S=r.getValueAndResolveTokens(\"icon-image\",v,h);A=S instanceof ne?S:ne.fromString(S);}if(b||A){var k=this.sortFeaturesByKey?l.evaluate(v,{}):void 0,I={text:b,icon:A,index:g,sourceLayerIndex:x,geometry:wa(v),properties:v.properties,type:il[v.type],sortKey:k};if(void 0!==v.id&&(I.id=v.id),this.features.push(I),A&&(p[A.name]=!0),b){var z=i.evaluate(v,{}).join(\",\"),C=\"map\"===n.get(\"text-rotation-alignment\")&&\"point\"!==n.get(\"symbol-placement\");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(au.vertical)>=0;for(var B=0,T=b.sections;B<T.length;B+=1){var P=T[B];if(P.image)p[P.image.name]=!0;else{var E=Tn(b.toString()),M=P.fontStack||z,V=c[M]=c[M]||{};this.calculateGlyphDependencies(P.text,V,C,this.allowVerticalPlacement,E);}}}}}}\"line\"===n.get(\"symbol-placement\")&&(this.features=function(t){var e={},r={},n=[],i=0;function a(e){n.push(t[e]),i++;}function o(t,e,i){var a=r[t];return delete r[t],r[e]=a,n[a].geometry[0].pop(),n[a].geometry[0]=n[a].geometry[0].concat(i[0]),a}function s(t,r,i){var a=e[r];return delete e[r],e[t]=a,n[a].geometry[0].shift(),n[a].geometry[0]=i[0].concat(n[a].geometry[0]),a}function u(t,e,r){var n=r?e[0][e[0].length-1]:e[0][0];return t+\":\"+n.x+\":\"+n.y}for(var l=0;l<t.length;l++){var p=t[l],c=p.geometry,h=p.text?p.text.toString():null;if(h){var f=u(h,c),y=u(h,c,!0);if(f in r&&y in e&&r[f]!==e[y]){var d=s(f,y,c),m=o(f,y,n[d].geometry);delete e[f],delete r[y],r[u(h,n[m].geometry,!0)]=m,n[d].geometry=null;}else f in r?o(f,y,c):y in e?s(f,y,c):(a(l),e[f]=i-1,r[y]=i-1);}else a(l);}return n.filter((function(t){return t.geometry}))}(this.features)),this.sortFeaturesByKey&&this.features.sort((function(t,e){return t.sortKey-e.sortKey}));}},cl.prototype.update=function(t,e,r){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,r),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,r));},cl.prototype.isEmpty=function(){return 0===this.symbolInstances.length&&!this.hasRTLText},cl.prototype.uploadPending=function(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload},cl.prototype.upload=function(t){this.uploaded||(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t),this.textCollisionCircle.upload(t),this.iconCollisionCircle.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;},cl.prototype.destroy=function(){this.text.destroy(),this.icon.destroy(),this.textCollisionBox.destroy(),this.iconCollisionBox.destroy(),this.textCollisionCircle.destroy(),this.iconCollisionCircle.destroy();},cl.prototype.addToLineVertexArray=function(t,e){var r=this.lineVertexArray.length;if(void 0!==t.segment){for(var n=t.dist(e[t.segment+1]),i=t.dist(e[t.segment]),a={},o=t.segment+1;o<e.length;o++)a[o]={x:e[o].x,y:e[o].y,tileUnitDistanceFromAnchor:n},o<e.length-1&&(n+=e[o+1].dist(e[o]));for(var s=t.segment||0;s>=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var u=0;u<e.length;u++){var l=a[u];this.lineVertexArray.emplaceBack(l.x,l.y,l.tileUnitDistanceFromAnchor);}}return {lineStartIndex:r,lineLength:this.lineVertexArray.length-r}},cl.prototype.addSymbols=function(t,e,r,n,i,a,o,s,u,l,p){var c=this,h=t.indexArray,f=t.layoutVertexArray,y=t.dynamicLayoutVertexArray,d=t.segments.prepareSegment(4*e.length,t.layoutVertexArray,t.indexArray,a.sortKey),m=this.glyphOffsetArray.length,v=d.vertexLength,g=this.allowVerticalPlacement&&o===au.vertical?Math.PI/2:0,x=function(t){var e=t.tl,n=t.tr,i=t.bl,a=t.br,o=t.tex,u=t.pixelOffsetTL,l=t.pixelOffsetBR,p=t.minFontScaleX,m=t.minFontScaleY,v=d.vertexLength,x=t.glyphOffset[1];ol(f,s.x,s.y,e.x,x+e.y,o.x,o.y,r,t.isSDF,u.x,u.y,p,m),ol(f,s.x,s.y,n.x,x+n.y,o.x+o.w,o.y,r,t.isSDF,l.x,u.y,p,m),ol(f,s.x,s.y,i.x,x+i.y,o.x,o.y+o.h,r,t.isSDF,u.x,l.y,p,m),ol(f,s.x,s.y,a.x,x+a.y,o.x+o.w,o.y+o.h,r,t.isSDF,l.x,l.y,p,m),sl(y,s,g),h.emplaceBack(v,v+1,v+2),h.emplaceBack(v+1,v+2,v+3),d.vertexLength+=4,d.primitiveLength+=2,c.glyphOffsetArray.emplaceBack(t.glyphOffset[0]);};if(a.text&&a.text.sections){var b=a.text.sections;if(this.hasPaintOverrides){for(var _,w=function(e,r){void 0===_||_===e&&!r||t.programConfigurations.populatePaintArrays(t.layoutVertexArray.length,a,a.index,{},b[_]),_=e;},A=0,S=e;A<S.length;A+=1){var k=S[A];w(k.sectionIndex,!1),x(k);}w(_,!0);}else{for(var I=0,z=e;I<z.length;I+=1){x(z[I]);}t.programConfigurations.populatePaintArrays(t.layoutVertexArray.length,a,a.index,{},b[0]);}}else{for(var C=0,B=e;C<B.length;C+=1){x(B[C]);}t.programConfigurations.populatePaintArrays(t.layoutVertexArray.length,a,a.index,{});}t.placedSymbolArray.emplaceBack(s.x,s.y,m,this.glyphOffsetArray.length-m,v,u,l,s.segment,r?r[0]:0,r?r[1]:0,n[0],n[1],o,0,!1,0,p);},cl.prototype._addCollisionDebugVertex=function(t,e,r,n,i,a){return e.emplaceBack(0,0),t.emplaceBack(r.x,r.y,n,i,Math.round(a.x),Math.round(a.y))},cl.prototype.addCollisionDebugVertices=function(t,e,r,n,a,o,s,u){var l=a.segments.prepareSegment(4,a.layoutVertexArray,a.indexArray),p=l.vertexLength,c=a.layoutVertexArray,h=a.collisionVertexArray,f=s.anchorX,y=s.anchorY;if(this._addCollisionDebugVertex(c,h,o,f,y,new i(t,e)),this._addCollisionDebugVertex(c,h,o,f,y,new i(r,e)),this._addCollisionDebugVertex(c,h,o,f,y,new i(r,n)),this._addCollisionDebugVertex(c,h,o,f,y,new i(t,n)),l.vertexLength+=4,u){var d=a.indexArray;d.emplaceBack(p,p+1,p+2),d.emplaceBack(p,p+2,p+3),l.primitiveLength+=2;}else{var m=a.indexArray;m.emplaceBack(p,p+1),m.emplaceBack(p+1,p+2),m.emplaceBack(p+2,p+3),m.emplaceBack(p+3,p),l.primitiveLength+=4;}},cl.prototype.addDebugCollisionBoxes=function(t,e,r,n){for(var i=t;i<e;i++){var a=this.collisionBoxArray.get(i),o=a.x1,s=a.y1,u=a.x2,l=a.y2,p=a.radius>0;this.addCollisionDebugVertices(o,s,u,l,p?n?this.textCollisionCircle:this.iconCollisionCircle:n?this.textCollisionBox:this.iconCollisionBox,a.anchorPoint,r,p);}},cl.prototype.generateCollisionDebugBuffers=function(){for(var t=0;t<this.symbolInstances.length;t++){var e=this.symbolInstances.get(t);this.addDebugCollisionBoxes(e.textBoxStartIndex,e.textBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.verticalTextBoxStartIndex,e.verticalTextBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.iconBoxStartIndex,e.iconBoxEndIndex,e,!1),this.addDebugCollisionBoxes(e.verticalIconBoxStartIndex,e.verticalIconBoxEndIndex,e,!1);}},cl.prototype._deserializeCollisionBoxesForSymbol=function(t,e,r,n,i,a,o,s,u){for(var l={},p=e;p<r;p++){var c=t.get(p);if(0===c.radius){l.textBox={x1:c.x1,y1:c.y1,x2:c.x2,y2:c.y2,anchorPointX:c.anchorPointX,anchorPointY:c.anchorPointY},l.textFeatureIndex=c.featureIndex;break}l.textCircles||(l.textCircles=[],l.textFeatureIndex=c.featureIndex);l.textCircles.push(c.anchorPointX,c.anchorPointY,c.radius,c.signedDistanceFromAnchor,1);}for(var h=n;h<i;h++){var f=t.get(h);if(0===f.radius){l.verticalTextBox={x1:f.x1,y1:f.y1,x2:f.x2,y2:f.y2,anchorPointX:f.anchorPointX,anchorPointY:f.anchorPointY},l.verticalTextFeatureIndex=f.featureIndex;break}}for(var y=a;y<o;y++){var d=t.get(y);if(0===d.radius){l.iconBox={x1:d.x1,y1:d.y1,x2:d.x2,y2:d.y2,anchorPointX:d.anchorPointX,anchorPointY:d.anchorPointY},l.iconFeatureIndex=d.featureIndex;break}}for(var m=s;m<u;m++){var v=t.get(m);if(0===v.radius){l.verticalIconBox={x1:v.x1,y1:v.y1,x2:v.x2,y2:v.y2,anchorPointX:v.anchorPointX,anchorPointY:v.anchorPointY},l.verticalIconFeatureIndex=v.featureIndex;break}}return l},cl.prototype.deserializeCollisionBoxes=function(t){this.collisionArrays=[];for(var e=0;e<this.symbolInstances.length;e++){var r=this.symbolInstances.get(e);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(t,r.textBoxStartIndex,r.textBoxEndIndex,r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r.iconBoxStartIndex,r.iconBoxEndIndex,r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex));}},cl.prototype.hasTextData=function(){return this.text.segments.get().length>0},cl.prototype.hasIconData=function(){return this.icon.segments.get().length>0},cl.prototype.hasTextCollisionBoxData=function(){return this.textCollisionBox.segments.get().length>0},cl.prototype.hasIconCollisionBoxData=function(){return this.iconCollisionBox.segments.get().length>0},cl.prototype.hasTextCollisionCircleData=function(){return this.textCollisionCircle.segments.get().length>0},cl.prototype.hasIconCollisionCircleData=function(){return this.iconCollisionCircle.segments.get().length>0},cl.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs,i=r.vertexStartIndex;i<n;i+=4)t.indexArray.emplaceBack(i,i+1,i+2),t.indexArray.emplaceBack(i+1,i+2,i+3);},cl.prototype.getSortedSymbolIndexes=function(t){if(this.sortedAngle===t&&void 0!==this.symbolInstanceIndexes)return this.symbolInstanceIndexes;for(var e=Math.sin(t),r=Math.cos(t),n=[],i=[],a=[],o=0;o<this.symbolInstances.length;++o){a.push(o);var s=this.symbolInstances.get(o);n.push(0|Math.round(e*s.anchorX+r*s.anchorY)),i.push(s.featureIndex);}return a.sort((function(t,e){return n[t]-n[e]||i[e]-i[t]})),a},cl.prototype.sortFeatures=function(t){var e=this;if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,n=this.symbolInstanceIndexes;r<n.length;r+=1){var i=n[r],a=this.symbolInstances.get(i);this.featureSortOrder.push(a.featureIndex),[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((function(t,r,n){t>=0&&n.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t);})),a.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,a.verticalPlacedTextSymbolIndex),a.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.placedIconSymbolIndex),a.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}},An(\"SymbolBucket\",cl,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),cl.MAX_GLYPHS=65535,cl.addDynamicAttributes=sl;var hl=new li({\"symbol-placement\":new ii(Tt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new ii(Tt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new ii(Tt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new ai(Tt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new ii(Tt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new ii(Tt.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new ii(Tt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new ii(Tt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new ii(Tt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new ai(Tt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new ii(Tt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new ii(Tt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new ai(Tt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new ai(Tt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new ii(Tt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new ii(Tt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new ai(Tt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new ai(Tt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new ii(Tt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new ii(Tt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new ii(Tt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new ai(Tt.layout_symbol[\"text-field\"]),\"text-font\":new ai(Tt.layout_symbol[\"text-font\"]),\"text-size\":new ai(Tt.layout_symbol[\"text-size\"]),\"text-max-width\":new ai(Tt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new ii(Tt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new ai(Tt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new ai(Tt.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new ai(Tt.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new ii(Tt.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new ai(Tt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new ii(Tt.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new ii(Tt.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new ai(Tt.layout_symbol[\"text-rotate\"]),\"text-padding\":new ii(Tt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new ii(Tt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new ai(Tt.layout_symbol[\"text-transform\"]),\"text-offset\":new ai(Tt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new ii(Tt.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new ii(Tt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new ii(Tt.layout_symbol[\"text-optional\"])}),fl={paint:new li({\"icon-opacity\":new ai(Tt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new ai(Tt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new ai(Tt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new ai(Tt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new ai(Tt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new ii(Tt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new ii(Tt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new ai(Tt.paint_symbol[\"text-opacity\"]),\"text-color\":new ai(Tt.paint_symbol[\"text-color\"],{runtimeType:qt,getOverride:function(t){return t.textColor},hasOverride:function(t){return !!t.textColor}}),\"text-halo-color\":new ai(Tt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new ai(Tt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new ai(Tt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new ii(Tt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new ii(Tt.paint_symbol[\"text-translate-anchor\"])}),layout:hl},yl=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Dt,this.defaultValue=t;};yl.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},yl.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);},yl.prototype.possibleOutputs=function(){return [void 0]},yl.prototype.serialize=function(){return null},An(\"FormatSectionOverride\",yl,{omit:[\"defaultValue\"]});var dl=function(t){function e(e){t.call(this,e,fl);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"icon-rotation-alignment\"]=\"map\":this.layout._values[\"icon-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"text-rotation-alignment\"]=\"map\":this.layout._values[\"text-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),\"point\"===this.layout.get(\"symbol-placement\")){var n=this.layout.get(\"text-writing-mode\");if(n){for(var i=[],a=0,o=n;a<o.length;a+=1){var s=o[a];i.indexOf(s)<0&&i.push(s);}this.layout._values[\"text-writing-mode\"]=i;}else this.layout._values[\"text-writing-mode\"]=[\"horizontal\"];}this._setPaintOverrides();},e.prototype.getValueAndResolveTokens=function(t,e,r){var n=this.layout.get(t).evaluate(e,{},r),i=this._unevaluatedLayout._values[t];return i.isDataDriven()||Pr(i.value)||!n?n:function(t,e){return e.replace(/{([^{}]+)}/g,(function(e,r){return r in t?String(t[r]):\"\"}))}(e.properties,n)},e.prototype.createBucket=function(t){return new cl(t)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return !1},e.prototype._setPaintOverrides=function(){for(var t=0,r=fl.paint.overridableProperties;t<r.length;t+=1){var n=r[t];if(e.hasPaintOverride(this.layout,n)){var i=this.paint.get(n),a=new yl(i),o=new Tr(a,i.property.specification),s=null;s=\"constant\"===i.value.kind||\"source\"===i.value.kind?new Mr(\"source\",o):new Vr(\"composite\",o,i.value.zoomStops,i.value._interpolationType),this.paint._values[n]=new ri(i.property,s,i.parameters);}}},e.prototype._handleOverridablePaintPropertyUpdate=function(t,r,n){return !(!this.layout||r.isDataDriven()||n.isDataDriven())&&e.hasPaintOverride(this.layout,t)},e.hasPaintOverride=function(t,e){var r=t.get(\"text-field\"),n=fl.paint.properties[e],i=!1,a=function(t){for(var e=0,r=t;e<r.length;e+=1){var a=r[e];if(n.overrides&&n.overrides.hasOverride(a))return void(i=!0)}};if(\"constant\"===r.value.kind&&r.value.value instanceof re)a(r.value.value.sections);else if(\"source\"===r.value.kind){var o=function(t){if(!i)if(t instanceof se&&ae(t.value)===Zt){var e=t.value;a(e.sections);}else t instanceof ce?a(t.sections):t.eachChild(o);},s=r.value;s._styleExpression&&o(s._styleExpression.expression);}return i},e.hasPaintOverrides=function(t){for(var r=0,n=fl.paint.overridableProperties;r<n.length;r+=1){var i=n[r];if(e.hasPaintOverride(t,i))return !0}return !1},e}(pi),ml={paint:new li({\"background-color\":new ii(Tt.paint_background[\"background-color\"]),\"background-pattern\":new si(Tt.paint_background[\"background-pattern\"]),\"background-opacity\":new ii(Tt.paint_background[\"background-opacity\"])})},vl=function(t){function e(e){t.call(this,e,ml);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(pi),gl={paint:new li({\"raster-opacity\":new ii(Tt.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new ii(Tt.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new ii(Tt.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new ii(Tt.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new ii(Tt.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new ii(Tt.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new ii(Tt.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new ii(Tt.paint_raster[\"raster-fade-duration\"])})},xl=function(t){function e(e){t.call(this,e,gl);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(pi);var bl=function(t){function e(e){t.call(this,e,{}),this.implementation=e;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.is3D=function(){return \"3d\"===this.implementation.renderingMode},e.prototype.hasOffscreenPass=function(){return void 0!==this.implementation.prerender},e.prototype.recalculate=function(){},e.prototype.updateTransitions=function(){},e.prototype.hasTransition=function(){},e.prototype.serialize=function(){},e.prototype.onAdd=function(t){this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);},e.prototype.onRemove=function(t){this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);},e}(pi),_l={circle:Xa,heatmap:eo,hillshade:no,fill:Ko,\"fill-extrusion\":us,line:xs,symbol:dl,background:vl,raster:xl};var wl=self.HTMLImageElement,Al=self.HTMLCanvasElement,Sl=self.HTMLVideoElement,kl=self.ImageData,Il=function(t,e,r,n){this.context=t,this.format=r,this.texture=t.gl.createTexture(),this.update(e,n);};Il.prototype.update=function(t,e,r){var n=t.width,i=t.height,a=!(this.size&&this.size[0]===n&&this.size[1]===i||r),o=this.context,s=o.gl;if(this.useMipmap=Boolean(e&&e.useMipmap),s.bindTexture(s.TEXTURE_2D,this.texture),o.pixelStoreUnpackFlipY.set(!1),o.pixelStoreUnpack.set(1),o.pixelStoreUnpackPremultiplyAlpha.set(this.format===s.RGBA&&(!e||!1!==e.premultiply)),a)this.size=[n,i],t instanceof wl||t instanceof Al||t instanceof Sl||t instanceof kl?s.texImage2D(s.TEXTURE_2D,0,this.format,this.format,s.UNSIGNED_BYTE,t):s.texImage2D(s.TEXTURE_2D,0,this.format,n,i,0,this.format,s.UNSIGNED_BYTE,t.data);else{var u=r||{x:0,y:0},l=u.x,p=u.y;t instanceof wl||t instanceof Al||t instanceof Sl||t instanceof kl?s.texSubImage2D(s.TEXTURE_2D,0,l,p,s.RGBA,s.UNSIGNED_BYTE,t):s.texSubImage2D(s.TEXTURE_2D,0,l,p,n,i,s.RGBA,s.UNSIGNED_BYTE,t.data);}this.useMipmap&&this.isSizePowerOfTwo()&&s.generateMipmap(s.TEXTURE_2D);},Il.prototype.bind=function(t,e,r){var n=this.context.gl;n.bindTexture(n.TEXTURE_2D,this.texture),r!==n.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(r=n.LINEAR),t!==this.filter&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,t),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,r||t),this.filter=t),e!==this.wrap&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,e),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,e),this.wrap=e);},Il.prototype.isSizePowerOfTwo=function(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0},Il.prototype.destroy=function(){this.context.gl.deleteTexture(this.texture),this.texture=null;};var zl=function(t){var e=this;this._callback=t,this._triggered=!1,\"undefined\"!=typeof MessageChannel&&(this._channel=new MessageChannel,this._channel.port2.onmessage=function(){e._triggered=!1,e._callback();});};zl.prototype.trigger=function(){var t=this;this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((function(){t._triggered=!1,t._callback();}),0));},zl.prototype.remove=function(){delete this._channel,this._callback=function(){};};var Cl=function(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},m([\"receive\",\"process\"],this),this.invoker=new zl(this.process),this.target.addEventListener(\"message\",this.receive,!1),this.globalScope=k()?t:self;};function Bl(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}Cl.prototype.send=function(t,e,r,n,i){var a=this;void 0===i&&(i=!1);var o=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(this.callbacks[o]=r);var s=C(this.globalScope)?void 0:[];return this.target.postMessage({id:o,type:t,hasCallback:!!r,targetMapId:n,mustQueue:i,sourceMapId:this.mapId,data:In(e,s)},s),{cancel:function(){r&&delete a.callbacks[o],a.target.postMessage({id:o,type:\"<cancel>\",targetMapId:n,sourceMapId:a.mapId});}}},Cl.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"<cancel>\"===e.type){delete this.tasks[r];var n=this.cancelCallbacks[r];delete this.cancelCallbacks[r],n&&n();}else k()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e);},Cl.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e);}},Cl.prototype.processTask=function(t,e){var r=this;if(\"<response>\"===e.type){var n=this.callbacks[t];delete this.callbacks[t],n&&(e.error?n(zn(e.error)):n(null,zn(e.data)));}else{var i=!1,a=C(this.globalScope)?void 0:[],o=e.hasCallback?function(e,n){i=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:\"<response>\",sourceMapId:r.mapId,error:e?In(e):null,data:In(n,a)},a);}:function(t){i=!0;},s=null,u=zn(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,u,o);else if(this.parent.getWorkerSource){var l=e.type.split(\".\");s=this.parent.getWorkerSource(e.sourceMapId,l[0],u.source)[l[1]](u,o);}else o(new Error(\"Could not find function \"+e.type));!i&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel);}},Cl.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1);};var Tl=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]));};Tl.prototype.setNorthEast=function(t){return this._ne=t instanceof Pl?new Pl(t.lng,t.lat):Pl.convert(t),this},Tl.prototype.setSouthWest=function(t){return this._sw=t instanceof Pl?new Pl(t.lng,t.lat):Pl.convert(t),this},Tl.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof Pl)e=t,r=t;else{if(!(t instanceof Tl))return Array.isArray(t)?t.every(Array.isArray)?this.extend(Tl.convert(t)):this.extend(Pl.convert(t)):this;if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new Pl(e.lng,e.lat),this._ne=new Pl(r.lng,r.lat)),this},Tl.prototype.getCenter=function(){return new Pl((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},Tl.prototype.getSouthWest=function(){return this._sw},Tl.prototype.getNorthEast=function(){return this._ne},Tl.prototype.getNorthWest=function(){return new Pl(this.getWest(),this.getNorth())},Tl.prototype.getSouthEast=function(){return new Pl(this.getEast(),this.getSouth())},Tl.prototype.getWest=function(){return this._sw.lng},Tl.prototype.getSouth=function(){return this._sw.lat},Tl.prototype.getEast=function(){return this._ne.lng},Tl.prototype.getNorth=function(){return this._ne.lat},Tl.prototype.toArray=function(){return [this._sw.toArray(),this._ne.toArray()]},Tl.prototype.toString=function(){return \"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},Tl.prototype.isEmpty=function(){return !(this._sw&&this._ne)},Tl.prototype.contains=function(t){var e=Pl.convert(t),r=e.lng,n=e.lat,i=this._sw.lat<=n&&n<=this._ne.lat,a=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=r&&r>=this._ne.lng),i&&a},Tl.convert=function(t){return !t||t instanceof Tl?t:new Tl(t)};var Pl=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+e+\")\");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};Pl.prototype.wrap=function(){return new Pl(p(this.lng,-180,180),this.lat)},Pl.prototype.toArray=function(){return [this.lng,this.lat]},Pl.prototype.toString=function(){return \"LngLat(\"+this.lng+\", \"+this.lat+\")\"},Pl.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Tl(new Pl(this.lng-r,this.lat-e),new Pl(this.lng+r,this.lat+e))},Pl.convert=function(t){if(t instanceof Pl)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Pl(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Pl(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\")};var El=2*Math.PI*6378137;function Ml(t){return El*Math.cos(t*Math.PI/180)}function Vl(t){return (180+t)/360}function Fl(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Ll(t,e){return t/Ml(e)}function Ol(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}var Dl=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r;};Dl.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Pl.convert(t);return new Dl(Vl(r.lng),Fl(r.lat),Ll(e,r.lat))},Dl.prototype.toLngLat=function(){return new Pl(360*this.x-180,Ol(this.y))},Dl.prototype.toAltitude=function(){return t=this.z,e=this.y,t*Ml(Ol(e));var t,e;},Dl.prototype.meterInMercatorCoordinateUnits=function(){return 1/El*(t=Ol(this.y),1/Math.cos(t*Math.PI/180));var t;};var Rl=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=ql(0,t,e,r);};Rl.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},Rl.prototype.url=function(t,e){var r,n,i,a,o,s=(r=this.x,n=this.y,i=this.z,a=Bl(256*r,256*(n=Math.pow(2,i)-n-1),i),o=Bl(256*(r+1),256*(n+1),i),a[0]+\",\"+a[1]+\",\"+o[0]+\",\"+o[1]),u=function(t,e,r){for(var n,i=\"\",a=t;a>0;a--)i+=(e&(n=1<<a-1)?1:0)+(r&n?2:0);return i}(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(\"{prefix}\",(this.x%16).toString(16)+(this.y%16).toString(16)).replace(\"{z}\",String(this.z)).replace(\"{x}\",String(this.x)).replace(\"{y}\",String(\"tms\"===e?Math.pow(2,this.z)-this.y-1:this.y)).replace(\"{quadkey}\",u).replace(\"{bbox-epsg-3857}\",s)},Rl.prototype.getTilePoint=function(t){var e=Math.pow(2,this.z);return new i((t.x*e-this.x)*xa,(t.y*e-this.y)*xa)},Rl.prototype.toString=function(){return this.z+\"/\"+this.x+\"/\"+this.y};var Ul=function(t,e){this.wrap=t,this.canonical=e,this.key=ql(t,e.z,e.x,e.y);},jl=function(t,e,r,n,i){this.overscaledZ=t,this.wrap=e,this.canonical=new Rl(r,+n,+i),this.key=ql(e,t,n,i);};function ql(t,e,r,n){(t*=2)<0&&(t=-1*t-1);var i=1<<e;return 32*(i*i*t+i*n+r)+e}jl.prototype.equals=function(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)},jl.prototype.scaledTo=function(t){var e=this.canonical.z-t;return t>this.canonical.z?new jl(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new jl(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},jl.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return !1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ<this.overscaledZ&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e},jl.prototype.children=function(t){if(this.overscaledZ>=t)return [new jl(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new jl(e,this.wrap,e,r,n),new jl(e,this.wrap,e,r+1,n),new jl(e,this.wrap,e,r,n+1),new jl(e,this.wrap,e,r+1,n+1)]},jl.prototype.isLessThan=function(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.overscaledZ<t.overscaledZ||!(this.overscaledZ>t.overscaledZ)&&(this.canonical.x<t.canonical.x||!(this.canonical.x>t.canonical.x)&&this.canonical.y<t.canonical.y))},jl.prototype.wrapped=function(){return new jl(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)},jl.prototype.unwrapTo=function(t){return new jl(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)},jl.prototype.overscaleFactor=function(){return Math.pow(2,this.overscaledZ-this.canonical.z)},jl.prototype.toUnwrapped=function(){return new Ul(this.wrap,this.canonical)},jl.prototype.toString=function(){return this.overscaledZ+\"/\"+this.canonical.x+\"/\"+this.canonical.y},jl.prototype.getTilePoint=function(t){return this.canonical.getTilePoint(new Dl(t.x-this.wrap,t.y))},An(\"CanonicalTileID\",Rl),An(\"OverscaledTileID\",jl,{omit:[\"posMatrix\"]});var Nl=function(t,e,r){if(this.uid=t,e.height!==e.width)throw new RangeError(\"DEM tiles must be square\");if(r&&\"mapbox\"!==r&&\"terrarium\"!==r)return w('\"'+r+'\" is not a valid encoding type. Valid types include \"mapbox\" and \"terrarium\".');this.stride=e.height;var n=this.dim=e.height-2;this.data=new Uint32Array(e.data.buffer),this.encoding=r||\"mapbox\";for(var i=0;i<n;i++)this.data[this._idx(-1,i)]=this.data[this._idx(0,i)],this.data[this._idx(n,i)]=this.data[this._idx(n-1,i)],this.data[this._idx(i,-1)]=this.data[this._idx(i,0)],this.data[this._idx(i,n)]=this.data[this._idx(i,n-1)];this.data[this._idx(-1,-1)]=this.data[this._idx(0,0)],this.data[this._idx(n,-1)]=this.data[this._idx(n-1,0)],this.data[this._idx(-1,n)]=this.data[this._idx(0,n-1)],this.data[this._idx(n,n)]=this.data[this._idx(n-1,n-1)];};Nl.prototype.get=function(t,e){var r=new Uint8Array(this.data.buffer),n=4*this._idx(t,e);return (\"terrarium\"===this.encoding?this._unpackTerrarium:this._unpackMapbox)(r[n],r[n+1],r[n+2])},Nl.prototype.getUnpackVector=function(){return \"terrarium\"===this.encoding?[256,1,1/256,32768]:[6553.6,25.6,.1,1e4]},Nl.prototype._idx=function(t,e){if(t<-1||t>=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return (e+1)*this.stride+(t+1)},Nl.prototype._unpackMapbox=function(t,e,r){return (256*t*256+256*e+r)/10-1e4},Nl.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},Nl.prototype.getPixels=function(){return new Wa({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},Nl.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1;}switch(r){case-1:a=o-1;break;case 1:o=a+1;}for(var s=-e*this.dim,u=-r*this.dim,l=a;l<o;l++)for(var p=n;p<i;p++)this.data[this._idx(p,l)]=t.data[this._idx(p+s,l+u)];},An(\"DEMData\",Nl);var Kl=yi([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]);var Xl=function(t){this._stringToNumber={},this._numberToString=[];for(var e=0;e<t.length;e++){var r=t[e];this._stringToNumber[r]=e,this._numberToString[e]=r;}};Xl.prototype.encode=function(t){return this._stringToNumber[t]},Xl.prototype.decode=function(t){return this._numberToString[t]};var Zl=function(t,e,r,n){this.type=\"Feature\",this._vectorTileFeature=t,t._z=e,t._x=r,t._y=n,this.properties=t.properties,null!=t.id&&(this.id=t.id);},Gl={geometry:{configurable:!0}};Gl.geometry.get=function(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry},Gl.geometry.set=function(t){this._geometry=t;},Zl.prototype.toJSON=function(){var t={geometry:this.geometry};for(var e in this)\"_geometry\"!==e&&\"_vectorTileFeature\"!==e&&(t[e]=this[e]);return t},Object.defineProperties(Zl.prototype,Gl);var Jl=function(){this.state={},this.stateChanges={},this.deletedStates={};};Jl.prototype.updateState=function(t,e,r){var n=String(e);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][n]=this.stateChanges[t][n]||{},c(this.stateChanges[t][n],r),null===this.deletedStates[t])for(var i in this.deletedStates[t]={},this.state[t])i!==n&&(this.deletedStates[t][i]=null);else if(this.deletedStates[t]&&null===this.deletedStates[t][n])for(var a in this.deletedStates[t][n]={},this.state[t][n])r[a]||(this.deletedStates[t][n][a]=null);else for(var o in r){this.deletedStates[t]&&this.deletedStates[t][n]&&null===this.deletedStates[t][n][o]&&delete this.deletedStates[t][n][o];}},Jl.prototype.removeFeatureState=function(t,e,r){if(!(null===this.deletedStates[t])){var n=String(e);if(this.deletedStates[t]=this.deletedStates[t]||{},r&&void 0!==e&&e>=0)null!==this.deletedStates[t][n]&&(this.deletedStates[t][n]=this.deletedStates[t][n]||{},this.deletedStates[t][n][r]=null);else if(void 0!==e&&e>=0){if(this.stateChanges[t]&&this.stateChanges[t][n])for(r in this.deletedStates[t][n]={},this.stateChanges[t][n])this.deletedStates[t][n][r]=null;else this.deletedStates[t][n]=null;}else this.deletedStates[t]=null;}},Jl.prototype.getState=function(t,e){var r=String(e),n=this.state[t]||{},i=this.stateChanges[t]||{},a=c({},n[r],i[r]);if(null===this.deletedStates[t])return {};if(this.deletedStates[t]){var o=this.deletedStates[t][e];if(null===o)return {};for(var s in o)delete a[s];}return a},Jl.prototype.initializeTileState=function(t,e){t.setFeatureState(this.state,e);},Jl.prototype.coalesceChanges=function(t,e){var r={};for(var n in this.stateChanges){this.state[n]=this.state[n]||{};var i={};for(var a in this.stateChanges[n])this.state[n][a]||(this.state[n][a]={}),c(this.state[n][a],this.stateChanges[n][a]),i[a]=this.state[n][a];r[n]=i;}for(var o in this.deletedStates){this.state[o]=this.state[o]||{};var s={};if(null===this.deletedStates[o])for(var u in this.state[o])s[u]={},this.state[o][u]={};else for(var l in this.deletedStates[o]){if(null===this.deletedStates[o][l])this.state[o][l]={};else for(var p=0,h=Object.keys(this.deletedStates[o][l]);p<h.length;p+=1){var f=h[p];delete this.state[o][l][f];}s[l]=this.state[o][l];}r[o]=r[o]||{},c(r[o],s);}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(r).length)for(var y in t){t[y].setFeatureState(r,e);}};var Hl=function(t,e,r){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=e||new gn(xa,16,0),this.grid3D=new gn(xa,16,0),this.featureIndexArray=r||new Ji;};function Yl(t){for(var e=1/0,r=1/0,n=-1/0,i=-1/0,a=0,o=t;a<o.length;a+=1){var s=o[a];e=Math.min(e,s.x),r=Math.min(r,s.y),n=Math.max(n,s.x),i=Math.max(i,s.y);}return {minX:e,minY:r,maxX:n,maxY:i}}function $l(t,e){return e-t}Hl.prototype.insert=function(t,e,r,n,i,a){var o=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,n,i);for(var s=a?this.grid3D:this.grid,u=0;u<e.length;u++){for(var l=e[u],p=[1/0,1/0,-1/0,-1/0],c=0;c<l.length;c++){var h=l[c];p[0]=Math.min(p[0],h.x),p[1]=Math.min(p[1],h.y),p[2]=Math.max(p[2],h.x),p[3]=Math.max(p[3],h.y);}p[0]<xa&&p[1]<xa&&p[2]>=0&&p[3]>=0&&s.insert(o,p[0],p[1],p[2],p[3]);}},Hl.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new ts.VectorTile(new Ps(this.rawTileData)).layers,this.sourceLayerCoder=new Xl(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers},Hl.prototype.query=function(t,e,r){var n=this;this.loadVTLayers();for(var a=t.params||{},o=xa/t.tileSize/t.scale,s=Xr(a.filter),u=t.queryGeometry,l=t.queryPadding*o,p=Yl(u),c=this.grid.query(p.minX-l,p.minY-l,p.maxX+l,p.maxY+l),h=Yl(t.cameraQueryGeometry),f=this.grid3D.query(h.minX-l,h.minY-l,h.maxX+l,h.maxY+l,(function(e,r,n,a){return function(t,e,r,n,a){for(var o=0,s=t;o<s.length;o+=1){var u=s[o];if(e<=u.x&&r<=u.y&&n>=u.x&&a>=u.y)return !0}var l=[new i(e,r),new i(e,a),new i(n,a),new i(n,r)];if(t.length>2)for(var p=0,c=l;p<c.length;p+=1){if(Va(t,c[p]))return !0}for(var h=0;h<t.length-1;h++){if(Fa(t[h],t[h+1],l))return !0}return !1}(t.cameraQueryGeometry,e-l,r-l,n+l,a+l)})),y=0,d=f;y<d.length;y+=1){var m=d[y];c.push(m);}c.sort($l);for(var v,g={},x=function(i){var l=c[i];if(l!==v){v=l;var p=n.featureIndexArray.get(l),h=null;n.loadMatchingFeature(g,p.bucketIndex,p.sourceLayerIndex,p.featureIndex,s,a.layers,e,(function(e,i){h||(h=wa(e));var a={};return e.id&&(a=r.getState(i.sourceLayer||\"_geojsonTileLayer\",e.id)),i.queryIntersectsFeature(u,e,a,h,n.z,t.transform,o,t.pixelPosMatrix)}));}},b=0;b<c.length;b++)x(b);return g},Hl.prototype.loadMatchingFeature=function(t,e,r,n,i,a,o,s){var u=this.bucketLayerIDs[e];if(!a||function(t,e){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>=0)return !0;return !1}(a,u)){var l=this.sourceLayerCoder.decode(r),p=this.vtLayers[l].feature(n);if(i(new Hn(this.tileID.overscaledZ),p))for(var c=0;c<u.length;c++){var h=u[c];if(!(a&&a.indexOf(h)<0)){var f=o[h];if(f){var y=!s||s(p,f);if(y){var d=new Zl(p,this.z,this.x,this.y);d.layer=f.serialize();var m=t[h];void 0===m&&(m=t[h]=[]),m.push({featureIndex:n,feature:d,intersectionZ:y});}}}}}},Hl.prototype.lookupSymbolFeatures=function(t,e,r,n,i,a){var o={};this.loadVTLayers();for(var s=Xr(n),u=0,l=t;u<l.length;u+=1){var p=l[u];this.loadMatchingFeature(o,e,r,p,s,i,a);}return o},Hl.prototype.hasLayer=function(t){for(var e=0,r=this.bucketLayerIDs;e<r.length;e+=1)for(var n=0,i=r[e];n<i.length;n+=1){if(t===i[n])return !0}return !1},An(\"FeatureIndex\",Hl,{omit:[\"rawTileData\",\"sourceLayerCoder\"]});var Wl=function(t,e){this.tileID=t,this.uid=f(),this.uses=0,this.tileSize=e,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.expiredRequestCount=0,this.state=\"loading\";};Wl.prototype.registerFadeDuration=function(t){var e=t+this.timeAdded;e<O.now()||this.fadeEndTime&&e<this.fadeEndTime||(this.fadeEndTime=e);},Wl.prototype.wasRequested=function(){return \"errored\"===this.state||\"loaded\"===this.state||\"reloading\"===this.state},Wl.prototype.loadVectorData=function(t,e,r){if(this.hasData()&&this.unloadVectorData(),this.state=\"loaded\",t){for(var n in t.featureIndex&&(this.latestFeatureIndex=t.featureIndex,t.rawTileData?(this.latestRawTileData=t.rawTileData,this.latestFeatureIndex.rawTileData=t.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=t.collisionBoxArray,this.buckets=function(t,e){var r={};if(!e)return r;for(var n=function(){var t=a[i],n=t.layerIds.map((function(t){return e.getLayer(t)})).filter(Boolean);if(0!==n.length){t.layers=n,t.stateDependentLayerIds&&(t.stateDependentLayers=t.stateDependentLayerIds.map((function(t){return n.filter((function(e){return e.id===t}))[0]})));for(var o=0,s=n;o<s.length;o+=1){var u=s[o];r[u.id]=t;}}},i=0,a=t;i<a.length;i+=1)n();return r}(t.buckets,e.style),this.hasSymbolBuckets=!1,this.buckets){var i=this.buckets[n];if(i instanceof cl){if(this.hasSymbolBuckets=!0,!r)break;i.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(var a in this.buckets){var o=this.buckets[a];if(o instanceof cl&&o.hasRTLText){this.hasRTLText=!0,Jn.isLoading()||Jn.isLoaded()||\"deferred\"!==Zn()||Gn();break}}for(var s in this.queryPadding=0,this.buckets){var u=this.buckets[s];this.queryPadding=Math.max(this.queryPadding,e.style.getLayer(s).queryRadius(u));}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage);}else this.collisionBoxArray=new Di;},Wl.prototype.unloadVectorData=function(){for(var t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state=\"unloaded\";},Wl.prototype.getBucket=function(t){return this.buckets[t.id]},Wl.prototype.upload=function(t){for(var e in this.buckets){var r=this.buckets[e];r.uploadPending()&&r.upload(t);}var n=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new Il(t,this.imageAtlas.image,n.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Il(t,this.glyphAtlasImage,n.ALPHA),this.glyphAtlasImage=null);},Wl.prototype.prepare=function(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture);},Wl.prototype.queryRenderedFeatures=function(t,e,r,n,i,a,o,s,u){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:r,cameraQueryGeometry:n,scale:i,tileSize:this.tileSize,pixelPosMatrix:u,transform:o,params:a,queryPadding:this.queryPadding*s},t,e):{}},Wl.prototype.querySourceFeatures=function(t,e){if(this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData){var r=this.latestFeatureIndex.loadVTLayers(),n=e?e.sourceLayer:\"\",i=r._geojsonTileLayer||r[n];if(i)for(var a=Xr(e&&e.filter),o=this.tileID.canonical,s=o.z,u=o.x,l=o.y,p={z:s,x:u,y:l},c=0;c<i.length;c++){var h=i.feature(c);if(a(new Hn(this.tileID.overscaledZ),h)){var f=new Zl(h,s,u,l);f.tile=p,t.push(f);}}}},Wl.prototype.clearMask=function(){this.segments&&(this.segments.destroy(),delete this.segments),this.maskedBoundsBuffer&&(this.maskedBoundsBuffer.destroy(),delete this.maskedBoundsBuffer),this.maskedIndexBuffer&&(this.maskedIndexBuffer.destroy(),delete this.maskedIndexBuffer),delete this.mask;},Wl.prototype.setMask=function(t,e){if(!o(this.mask,t)&&(this.clearMask(),this.mask=t,!o(t,{0:!0}))){var r=new vi,n=new Ei;this.segments=new Yi,this.segments.prepareSegment(0,r,n);for(var a=Object.keys(t),s=0;s<a.length;s++){var u=t[+a[s]],l=xa>>u.z,p=new i(u.x*l,u.y*l),c=new i(p.x+l,p.y+l),h=this.segments.prepareSegment(4,r,n);r.emplaceBack(p.x,p.y,p.x,p.y),r.emplaceBack(c.x,p.y,c.x,p.y),r.emplaceBack(p.x,c.y,p.x,c.y),r.emplaceBack(c.x,c.y,c.x,c.y);var f=h.vertexLength;n.emplaceBack(f,f+1,f+2),n.emplaceBack(f+1,f+2,f+3),h.vertexLength+=4,h.primitiveLength+=2;}this.maskedBoundsBuffer=e.createVertexBuffer(r,Kl.members),this.maskedIndexBuffer=e.createIndexBuffer(n);}},Wl.prototype.hasData=function(){return \"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state},Wl.prototype.patternsLoaded=function(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length},Wl.prototype.setExpiryData=function(t){var e=this.expirationTime;if(t.cacheControl){var r=I(t.cacheControl);r[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*r[\"max-age\"]);}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){var n=Date.now(),i=!1;if(this.expirationTime>n)i=!1;else if(e)if(this.expirationTime<e)i=!0;else{var a=this.expirationTime-e;a?this.expirationTime=n+Math.max(a,3e4):i=!0;}else i=!0;i?(this.expiredRequestCount++,this.state=\"expired\"):this.expiredRequestCount=0;}},Wl.prototype.getExpiryTimeout=function(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)},Wl.prototype.setFeatureState=function(t,e){if(this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData&&0!==Object.keys(t).length){var r=this.latestFeatureIndex.loadVTLayers();for(var n in this.buckets){var i=this.buckets[n],a=i.layers[0].sourceLayer||\"_geojsonTileLayer\",o=r[a],s=t[a];o&&s&&0!==Object.keys(s).length&&(i.update(s,o,this.imageAtlas&&this.imageAtlas.patternPositions||{}),e&&e.style&&(this.queryPadding=Math.max(this.queryPadding,e.style.getLayer(n).queryRadius(i))));}}},Wl.prototype.holdingForFade=function(){return void 0!==this.symbolFadeHoldUntil},Wl.prototype.symbolFadeFinished=function(){return !this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<O.now()},Wl.prototype.clearFadeHold=function(){this.symbolFadeHoldUntil=void 0;},Wl.prototype.setHoldDuration=function(t){this.symbolFadeHoldUntil=O.now()+t;},Wl.prototype.setDependencies=function(t,e){for(var r={},n=0,i=e;n<i.length;n+=1){r[i[n]]=!0;}this.dependencies[t]=r;},Wl.prototype.hasDependency=function(t,e){for(var r=0,n=t;r<n.length;r+=1){var i=n[r],a=this.dependencies[i];if(a)for(var o=0,s=e;o<s.length;o+=1){if(a[s[o]])return !0}}return !1};t.Actor=Cl,t.AlphaImage=$a,t.CanonicalTileID=Rl,t.CollisionBoxArray=Di,t.Color=Qt,t.DEMData=Nl,t.DataConstantProperty=ii,t.DictionaryCoder=Xl,t.EXTENT=xa,t.ErrorEvent=Ct,t.EvaluationParameters=Hn,t.Event=zt,t.Evented=Bt,t.FeatureIndex=Hl,t.FillBucket=jo,t.FillExtrusionBucket=is,t.ImageAtlas=iu,t.ImagePosition=ru,t.LineBucket=ds,t.LngLat=Pl,t.LngLatBounds=Tl,t.MercatorCoordinate=Dl,t.ONE_EM=Cs,t.OverscaledTileID=jl,t.Point=i,t.Point$1=i,t.ProgramConfiguration=da,t.Properties=li,t.Protobuf=Ps,t.RGBAImage=Wa,t.RequestManager=K,t.ResourceType=dt,t.SegmentVector=Yi,t.SourceFeatureState=Jl,t.StructArrayLayout1ui2=Vi,t.StructArrayLayout2i4=mi,t.StructArrayLayout2ui4=Mi,t.StructArrayLayout3ui6=Ei,t.StructArrayLayout4i8=vi,t.SymbolBucket=cl,t.Texture=Il,t.Tile=Wl,t.Transitionable=Wn,t.Uniform1f=ra,t.Uniform1i=ea,t.Uniform2f=na,t.Uniform3f=ia,t.Uniform4f=aa,t.UniformColor=oa,t.UniformMatrix4f=ua,t.UnwrappedTileID=Ul,t.ValidationError=Pt,t.WritingMode=au,t.ZoomHistory=Cn,t.addDynamicAttributes=sl,t.asyncAll=function(t,e,r){if(!t.length)return r(null,[]);var n=t.length,i=new Array(t.length),a=null;t.forEach((function(t,o){e(t,(function(t,e){t&&(a=t),i[o]=e,0==--n&&r(a,i);}));}));},t.bezier=s,t.bindAll=m,t.browser=O,t.cacheEntryPossiblyAdded=function(t){++yt>ut&&(t.getActor().send(\"enforceCacheSizeLimit\",st),yt=0);},t.clamp=l,t.clearTileCache=function(t){var e=self.caches.delete(ot);t&&e.catch(t).then((function(){return t()}));},t.clone=function(t){var e=new ja(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=b,t.config=D,t.create=function(){var t=new ja(16);return ja!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new ja(9);return ja!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new ja(4);return ja!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=Er,t.createLayout=yi,t.createStyleLayer=function(t){return \"custom\"===t.type?new bl(t):new _l[t.type](t)},t.deepEqual=o,t.ease=u,t.emitValidationErrors=vn,t.endsWith=v,t.enforceCacheSizeLimit=function(t){pt(),Q&&Q.then((function(e){e.keys().then((function(r){for(var n=0;n<r.length-t;n++)e.delete(r[n]);}));}));},t.evaluateSizeForFeature=Au,t.evaluateSizeForZoom=Su,t.evaluateVariableOffset=$u,t.evented=Xn,t.extend=c,t.featureFilter=Xr,t.filterObject=x,t.fromRotation=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=-r,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},t.getAnchorAlignment=vu,t.getAnchorJustification=Wu,t.getArrayBuffer=bt,t.getImage=St,t.getJSON=function(t,e){return xt(c(t,{type:\"json\"}),e)},t.getRTLTextPluginStatus=Zn,t.getReferrer=vt,t.getVideo=function(t,e){var r,n,i=self.document.createElement(\"video\");i.muted=!0,i.onloadstart=function(){e(null,i);};for(var a=0;a<t.length;a++){var o=self.document.createElement(\"source\");r=t[a],n=void 0,(n=self.document.createElement(\"a\")).href=r,(n.protocol!==self.document.location.protocol||n.host!==self.document.location.host)&&(i.crossOrigin=\"Anonymous\"),o.src=t[a],i.appendChild(o);}return {cancel:function(){}}},t.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.invert=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],u=e[6],l=e[7],p=e[8],c=e[9],h=e[10],f=e[11],y=e[12],d=e[13],m=e[14],v=e[15],g=r*s-n*o,x=r*u-i*o,b=r*l-a*o,_=n*u-i*s,w=n*l-a*s,A=i*l-a*u,S=p*d-c*y,k=p*m-h*y,I=p*v-f*y,z=c*m-h*d,C=c*v-f*d,B=h*v-f*m,T=g*B-x*C+b*z+_*I-w*k+A*S;return T?(T=1/T,t[0]=(s*B-u*C+l*z)*T,t[1]=(i*C-n*B-a*z)*T,t[2]=(d*A-m*w+v*_)*T,t[3]=(h*w-c*A-f*_)*T,t[4]=(u*I-o*B-l*k)*T,t[5]=(r*B-i*I+a*k)*T,t[6]=(m*b-y*A-v*x)*T,t[7]=(p*A-h*b+f*x)*T,t[8]=(o*C-s*I+l*S)*T,t[9]=(n*I-r*C-a*S)*T,t[10]=(y*w-d*b+v*g)*T,t[11]=(c*b-p*w-f*g)*T,t[12]=(s*k-o*z-u*S)*T,t[13]=(r*z-n*k+i*S)*T,t[14]=(d*x-y*_-m*g)*T,t[15]=(p*_-c*x+h*g)*T,t):null},t.isChar=Bn,t.isMapboxURL=X,t.keysDifference=function(t,e){var r=[];for(var n in t)n in e||r.push(n);return r},t.makeRequest=xt,t.mapObject=g,t.mercatorXfromLng=Vl,t.mercatorYfromLat=Fl,t.mercatorZfromAltitude=Ll,t.multiply=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],l=e[6],p=e[7],c=e[8],h=e[9],f=e[10],y=e[11],d=e[12],m=e[13],v=e[14],g=e[15],x=r[0],b=r[1],_=r[2],w=r[3];return t[0]=x*n+b*s+_*c+w*d,t[1]=x*i+b*u+_*h+w*m,t[2]=x*a+b*l+_*f+w*v,t[3]=x*o+b*p+_*y+w*g,x=r[4],b=r[5],_=r[6],w=r[7],t[4]=x*n+b*s+_*c+w*d,t[5]=x*i+b*u+_*h+w*m,t[6]=x*a+b*l+_*f+w*v,t[7]=x*o+b*p+_*y+w*g,x=r[8],b=r[9],_=r[10],w=r[11],t[8]=x*n+b*s+_*c+w*d,t[9]=x*i+b*u+_*h+w*m,t[10]=x*a+b*l+_*f+w*v,t[11]=x*o+b*p+_*y+w*g,x=r[12],b=r[13],_=r[14],w=r[15],t[12]=x*n+b*s+_*c+w*d,t[13]=x*i+b*u+_*h+w*m,t[14]=x*a+b*l+_*f+w*v,t[15]=x*o+b*p+_*y+w*g,t},t.mvt=ts,t.number=Ie,t.ortho=function(t,e,r,n,i,a,o){var s=1/(e-r),u=1/(n-i),l=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*u,t[14]=(o+a)*l,t[15]=1,t},t.parseGlyphPBF=function(t){return new Ps(t).readFields(Ys,[])},t.pbf=Ps,t.performSymbolLayout=function(t,e,r,n,a,o){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=xa/s,t.compareText={},t.iconsNeedLinear=!1;var u=t.layers[0].layout,l=t.layers[0]._unevaluatedLayout._values,p={};if(\"composite\"===t.textSizeData.kind){var c=t.textSizeData,h=c.minZoom,f=c.maxZoom;p.compositeTextSizes=[l[\"text-size\"].possiblyEvaluate(new Hn(h)),l[\"text-size\"].possiblyEvaluate(new Hn(f))];}if(\"composite\"===t.iconSizeData.kind){var y=t.iconSizeData,d=y.minZoom,m=y.maxZoom;p.compositeIconSizes=[l[\"icon-size\"].possiblyEvaluate(new Hn(d)),l[\"icon-size\"].possiblyEvaluate(new Hn(m))];}p.layoutTextSize=l[\"text-size\"].possiblyEvaluate(new Hn(t.zoom+1)),p.layoutIconSize=l[\"icon-size\"].possiblyEvaluate(new Hn(t.zoom+1)),p.textMaxSize=l[\"text-size\"].possiblyEvaluate(new Hn(18));for(var v=u.get(\"text-line-height\")*Cs,g=\"map\"===u.get(\"text-rotation-alignment\")&&\"point\"!==u.get(\"symbol-placement\"),x=u.get(\"text-keep-upright\"),b=u.get(\"text-size\"),_=function(){var o=S[A],s=u.get(\"text-font\").evaluate(o,{}).join(\",\"),l=b.evaluate(o,{}),c=p.layoutTextSize.evaluate(o,{}),h=p.layoutIconSize.evaluate(o,{}),f={horizontal:{},vertical:void 0},y=o.text,d=[0,0];if(y){var m=y.toString(),_=u.get(\"text-letter-spacing\").evaluate(o,{})*Cs,k=function(t){for(var e=0,r=t;e<r.length;e+=1){if(!Pn(r[e].charCodeAt(0)))return !1}return !0}(m)?_:0,I=u.get(\"text-anchor\").evaluate(o,{}),z=u.get(\"text-variable-anchor\");if(!z){var C=u.get(\"text-radial-offset\").evaluate(o,{});d=C?$u(I,[C*Cs,Yu]):u.get(\"text-offset\").evaluate(o,{}).map((function(t){return t*Cs}));}var B=g?\"center\":u.get(\"text-justify\").evaluate(o,{}),T=u.get(\"symbol-placement\"),P=\"point\"===T?u.get(\"text-max-width\").evaluate(o,{})*Cs:0,E=function(){t.allowVerticalPlacement&&Tn(m)&&(f.vertical=lu(y,e,r,a,s,P,v,I,\"left\",k,d,au.vertical,!0,T,c,l));};if(!g&&z){for(var M=\"auto\"===B?z.map((function(t){return Wu(t)})):[B],V=!1,F=0;F<M.length;F++){var L=M[F];if(!f.horizontal[L])if(V)f.horizontal[L]=f.horizontal[0];else{var O=lu(y,e,r,a,s,P,v,\"center\",L,k,d,au.horizontal,!1,T,c,l);O&&(f.horizontal[L]=O,V=1===O.positionedLines.length);}}E();}else{\"auto\"===B&&(B=Wu(I));var D=lu(y,e,r,a,s,P,v,I,B,k,d,au.horizontal,!1,T,c,l);D&&(f.horizontal[B]=D),E(),Tn(m)&&g&&x&&(f.vertical=lu(y,e,r,a,s,P,v,I,B,k,d,au.vertical,!1,T,c,l));}}var R=void 0,U=!1;if(o.icon&&o.icon.name){var j=n[o.icon.name];j&&(R=function(t,e,r){var n=vu(r),i=n.horizontalAlign,a=n.verticalAlign,o=e[0],s=e[1],u=o-t.displaySize[0]*i,l=u+t.displaySize[0],p=s-t.displaySize[1]*a;return {image:t,top:p,bottom:p+t.displaySize[1],left:u,right:l}}(a[o.icon.name],u.get(\"icon-offset\").evaluate(o,{}),u.get(\"icon-anchor\").evaluate(o,{})),U=j.sdf,void 0===t.sdfIcons?t.sdfIcons=j.sdf:t.sdfIcons!==j.sdf&&w(\"Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer\"),j.pixelRatio!==t.pixelRatio?t.iconsNeedLinear=!0:0!==u.get(\"icon-rotate\").constantOr(1)&&(t.iconsNeedLinear=!0));}var q=rl(f.horizontal)||f.vertical;t.iconsInText=!!q&&q.iconsInText,(q||R)&&function(t,e,r,n,a,o,s,u,l,p){var c=o.textMaxSize.evaluate(e,{});void 0===c&&(c=s);var h,f=t.layers[0].layout,y=f.get(\"icon-offset\").evaluate(e,{}),d=rl(r.horizontal),m=s/24,v=t.tilePixelRatio*m,g=t.tilePixelRatio*c/24,x=t.tilePixelRatio*u,b=t.tilePixelRatio*f.get(\"symbol-spacing\"),_=f.get(\"text-padding\")*t.tilePixelRatio,A=f.get(\"icon-padding\")*t.tilePixelRatio,S=f.get(\"text-max-angle\")/180*Math.PI,k=\"map\"===f.get(\"text-rotation-alignment\")&&\"point\"!==f.get(\"symbol-placement\"),I=\"map\"===f.get(\"icon-rotation-alignment\")&&\"point\"!==f.get(\"symbol-placement\"),z=f.get(\"symbol-placement\"),C=b/2,B=f.get(\"icon-text-fit\");n&&\"none\"!==B&&(t.allowVerticalPlacement&&r.vertical&&(h=xu(n,r.vertical,B,f.get(\"icon-text-fit-padding\"),y,m)),d&&(n=xu(n,d,B,f.get(\"icon-text-fit-padding\"),y,m)));var T=function(i,s){s.x<0||s.x>=xa||s.y<0||s.y>=xa||function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m,v,g,x,b,_,A){var S,k,I,z,C,B=t.addToLineVertexArray(e,r),T=0,P=0,E=0,M=0,V=-1,F=-1,L={},O=Zu(\"\"),D=0,R=0;void 0===s._unevaluatedLayout.getValue(\"text-radial-offset\")?(S=s.layout.get(\"text-offset\").evaluate(b,{}).map((function(t){return t*Cs})),D=S[0],R=S[1]):(D=s.layout.get(\"text-radial-offset\").evaluate(b,{})*Cs,R=Yu);if(t.allowVerticalPlacement&&n.vertical){var U=s.layout.get(\"text-rotate\").evaluate(b,{})+90,j=n.vertical;z=new Du(u,r,e,l,p,c,j,h,f,y,t.overscaling,U),o&&(C=new Du(u,r,e,l,p,c,o,m,v,y,t.overscaling,U));}if(i){var q=s.layout.get(\"icon-rotate\").evaluate(b,{}),N=\"none\"!==s.layout.get(\"icon-text-fit\"),K=Mu(i,q,A,N),X=o?Mu(o,q,A,N):void 0;I=new Du(u,r,e,l,p,c,i,m,v,!1,t.overscaling,q),T=4*K.length;var Z=t.iconSizeData,G=null;\"source\"===Z.kind?(G=[_u*s.layout.get(\"icon-size\").evaluate(b,{})])[0]>tl&&w(t.layerIds[0]+': Value for \"icon-size\" is >= '+Qu+'. Reduce your \"icon-size\".'):\"composite\"===Z.kind&&((G=[_u*_.compositeIconSizes[0].evaluate(b,{}),_u*_.compositeIconSizes[1].evaluate(b,{})])[0]>tl||G[1]>tl)&&w(t.layerIds[0]+': Value for \"icon-size\" is >= '+Qu+'. Reduce your \"icon-size\".'),t.addSymbols(t.icon,K,G,x,g,b,!1,e,B.lineStartIndex,B.lineLength,-1),V=t.icon.placedSymbolArray.length-1,X&&(P=4*X.length,t.addSymbols(t.icon,X,G,x,g,b,au.vertical,e,B.lineStartIndex,B.lineLength,-1),F=t.icon.placedSymbolArray.length-1);}for(var J in n.horizontal){var H=n.horizontal[J];if(!k){O=Zu(H.text);var Y=s.layout.get(\"text-rotate\").evaluate(b,{});k=new Du(u,r,e,l,p,c,H,h,f,y,t.overscaling,Y);}var $=1===H.positionedLines.length;if(E+=el(t,e,H,a,s,y,b,d,B,n.vertical?au.horizontal:au.horizontalOnly,$?Object.keys(n.horizontal):[J],L,V,_),$)break}n.vertical&&(M+=el(t,e,n.vertical,a,s,y,b,d,B,au.vertical,[\"vertical\"],L,F,_));var W=k?k.boxStartIndex:t.collisionBoxArray.length,Q=k?k.boxEndIndex:t.collisionBoxArray.length,tt=z?z.boxStartIndex:t.collisionBoxArray.length,et=z?z.boxEndIndex:t.collisionBoxArray.length,rt=I?I.boxStartIndex:t.collisionBoxArray.length,nt=I?I.boxEndIndex:t.collisionBoxArray.length,it=C?C.boxStartIndex:t.collisionBoxArray.length,at=C?C.boxEndIndex:t.collisionBoxArray.length;t.glyphOffsetArray.length>=cl.MAX_GLYPHS&&w(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");t.symbolInstances.emplaceBack(e.x,e.y,L.right>=0?L.right:-1,L.center>=0?L.center:-1,L.left>=0?L.left:-1,L.vertical||-1,V,F,O,W,Q,tt,et,rt,nt,it,at,l,E,M,T,P,0,h,D,R);}(t,s,i,r,n,a,h,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,v,_,k,l,x,A,I,y,e,o,p);};if(\"line\"===z)for(var P=0,E=function(t,e,r,n,a){for(var o=[],s=0;s<t.length;s++)for(var u=t[s],l=void 0,p=0;p<u.length-1;p++){var c=u[p],h=u[p+1];c.x<e&&h.x<e||(c.x<e?c=new i(e,c.y+(h.y-c.y)*((e-c.x)/(h.x-c.x)))._round():h.x<e&&(h=new i(e,c.y+(h.y-c.y)*((e-c.x)/(h.x-c.x)))._round()),c.y<r&&h.y<r||(c.y<r?c=new i(c.x+(h.x-c.x)*((r-c.y)/(h.y-c.y)),r)._round():h.y<r&&(h=new i(c.x+(h.x-c.x)*((r-c.y)/(h.y-c.y)),r)._round()),c.x>=n&&h.x>=n||(c.x>=n?c=new i(n,c.y+(h.y-c.y)*((n-c.x)/(h.x-c.x)))._round():h.x>=n&&(h=new i(n,c.y+(h.y-c.y)*((n-c.x)/(h.x-c.x)))._round()),c.y>=a&&h.y>=a||(c.y>=a?c=new i(c.x+(h.x-c.x)*((a-c.y)/(h.y-c.y)),a)._round():h.y>=a&&(h=new i(c.x+(h.x-c.x)*((a-c.y)/(h.y-c.y)),a)._round()),l&&c.equals(l[l.length-1])||(l=[c],o.push(l)),l.push(h)))));}return o}(e.geometry,0,0,xa,xa);P<E.length;P+=1)for(var M=E[P],V=Pu(M,b,S,r.vertical||d,n,24,g,t.overscaling,xa),F=0,L=V;F<L.length;F+=1){var O=L[F],D=d;D&&nl(t,D.text,C,O)||T(M,O);}else if(\"line-center\"===z)for(var R=0,U=e.geometry;R<U.length;R+=1){var j=U[R];if(j.length>1){var q=Tu(j,S,r.vertical||d,n,24,g);q&&T(j,q);}}else if(\"Polygon\"===e.type)for(var N=0,K=Oo(e.geometry,0);N<K.length;N+=1){var X=K[N],Z=ju(X,16);T(X[0],new bu(Z.x,Z.y,0));}else if(\"LineString\"===e.type)for(var G=0,J=e.geometry;G<J.length;G+=1){var H=J[G];T(H,new bu(H[0].x,H[0].y,0));}else if(\"Point\"===e.type)for(var Y=0,$=e.geometry;Y<$.length;Y+=1)for(var W=$[Y],Q=0,tt=W;Q<tt.length;Q+=1){var et=tt[Q];T([et],new bu(et.x,et.y,0));}}(t,o,f,R,n,p,c,h,d,U);},A=0,S=t.features;A<S.length;A+=1)_();o&&t.generateCollisionDebugBuffers();},t.perspective=function(t,e,r,n,i){var a,o=1/Math.tan(e/2);return t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(a=1/(n-i),t[10]=(i+n)*a,t[14]=2*i*n*a):(t[10]=-1,t[14]=-2*n),t},t.pick=function(t,e){for(var r={},n=0;n<e.length;n++){var i=e[n];i in t&&(r[i]=t[i]);}return r},t.plugin=Jn,t.polygonIntersectsPolygon=ka,t.postMapLoadEvent=at,t.postTurnstileEvent=nt,t.potpack=tu,t.rasterBoundsAttributes=Kl,t.refProperties=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"],t.register=An,t.registerForPluginStateChange=function(t){return t({pluginStatus:jn,pluginURL:qn}),Xn.on(\"pluginStateChange\",t),t},t.rotate=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=Math.sin(r),u=Math.cos(r);return t[0]=n*u+a*s,t[1]=i*u+o*s,t[2]=n*-s+a*u,t[3]=i*-s+o*u,t},t.rotateX=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[4],o=e[5],s=e[6],u=e[7],l=e[8],p=e[9],c=e[10],h=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=a*i+l*n,t[5]=o*i+p*n,t[6]=s*i+c*n,t[7]=u*i+h*n,t[8]=l*i-a*n,t[9]=p*i-o*n,t[10]=c*i-s*n,t[11]=h*i-u*n,t},t.rotateZ=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],o=e[1],s=e[2],u=e[3],l=e[4],p=e[5],c=e[6],h=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=a*i+l*n,t[1]=o*i+p*n,t[2]=s*i+c*n,t[3]=u*i+h*n,t[4]=l*i-a*n,t[5]=p*i-o*n,t[6]=c*i-s*n,t[7]=h*i-u*n,t},t.scale=function(t,e,r){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.setCacheLimits=function(t,e){st=t,ut=e;},t.setRTLTextPlugin=function(t,e,r){if(void 0===r&&(r=!1),jn===On||jn===Dn||jn===Rn)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");qn=O.resolveURL(t),jn=On,Un=e,Kn(),r||Gn();},t.sphericalToCartesian=function(t){var e=t[0],r=t[1],n=t[2];return r+=90,r*=Math.PI/180,n*=Math.PI/180,{x:e*Math.cos(r)*Math.sin(n),y:e*Math.sin(r)*Math.sin(n),z:e*Math.cos(n)}},t.styleSpec=Tt,t.symbolSize=ku,t.transformMat3=function(t,e,r){var n=e[0],i=e[1],a=e[2];return t[0]=n*r[0]+i*r[3]+a*r[6],t[1]=n*r[1]+i*r[4]+a*r[7],t[2]=n*r[2]+i*r[5]+a*r[8],t},t.transformMat4=Ka,t.translate=function(t,e,r){var n,i,a,o,s,u,l,p,c,h,f,y,d=r[0],m=r[1],v=r[2];return e===t?(t[12]=e[0]*d+e[4]*m+e[8]*v+e[12],t[13]=e[1]*d+e[5]*m+e[9]*v+e[13],t[14]=e[2]*d+e[6]*m+e[10]*v+e[14],t[15]=e[3]*d+e[7]*m+e[11]*v+e[15]):(n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],l=e[6],p=e[7],c=e[8],h=e[9],f=e[10],y=e[11],t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=u,t[6]=l,t[7]=p,t[8]=c,t[9]=h,t[10]=f,t[11]=y,t[12]=n*d+s*m+c*v+e[12],t[13]=i*d+u*m+h*v+e[13],t[14]=a*d+l*m+f*v+e[14],t[15]=o*d+p*m+y*v+e[15]),t},t.triggerPluginCompletionEvent=Nn,t.uniqueId=f,t.validateCustomStyleLayer=function(t){var e=[],r=t.id;return void 0===r&&e.push({message:\"layers.\"+r+': missing required property \"id\"'}),void 0===t.render&&e.push({message:\"layers.\"+r+': missing required method \"render\"'}),t.renderingMode&&\"2d\"!==t.renderingMode&&\"3d\"!==t.renderingMode&&e.push({message:\"layers.\"+r+': property \"renderingMode\" must be either \"2d\" or \"3d\"'}),e},t.validateLight=yn,t.validateStyle=fn,t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.vectorTile=ts,t.version=\"1.6.1\",t.warnOnce=w,t.webpSupported=R,t.window=self,t.wrap=p;}));\n\ndefine([\"./shared\"],(function(e){\"use strict\";function t(e){var r=typeof e;if(\"number\"===r||\"boolean\"===r||\"string\"===r||null==e)return JSON.stringify(e);if(Array.isArray(e)){for(var i=\"[\",o=0,n=e;o<n.length;o+=1){i+=t(n[o])+\",\";}return i+\"]\"}for(var a=Object.keys(e).sort(),s=\"{\",l=0;l<a.length;l++)s+=JSON.stringify(a[l])+\":\"+t(e[a[l]])+\",\";return s+\"}\"}function r(r){for(var i=\"\",o=0,n=e.refProperties;o<n.length;o+=1){i+=\"/\"+t(r[n[o]]);}return i}var i=function(e){this.keyCache={},e&&this.replace(e);};i.prototype.replace=function(e){this._layerConfigs={},this._layers={},this.update(e,[]);},i.prototype.update=function(t,i){for(var o=this,n=0,a=t;n<a.length;n+=1){var s=a[n];this._layerConfigs[s.id]=s;var l=this._layers[s.id]=e.createStyleLayer(s);l._featureFilter=e.featureFilter(l.filter),this.keyCache[s.id]&&delete this.keyCache[s.id];}for(var u=0,h=i;u<h.length;u+=1){var c=h[u];delete this.keyCache[c],delete this._layerConfigs[c],delete this._layers[c];}this.familiesBySource={};for(var p=0,f=function(e,t){for(var i={},o=0;o<e.length;o++){var n=t&&t[e[o].id]||r(e[o]);t&&(t[e[o].id]=n);var a=i[n];a||(a=i[n]=[]),a.push(e[o]);}var s=[];for(var l in i)s.push(i[l]);return s}(e.values(this._layerConfigs),this.keyCache);p<f.length;p+=1){var d=f[p].map((function(e){return o._layers[e.id]})),g=d[0];if(\"none\"!==g.visibility){var m=g.source||\"\",v=this.familiesBySource[m];v||(v=this.familiesBySource[m]={});var y=g.sourceLayer||\"_geojsonTileLayer\",x=v[y];x||(x=v[y]=[]),x.push(d);}}};var o=function(t){var r={},i=[];for(var o in t){var n=t[o],a=r[o]={};for(var s in n){var l=n[+s];if(l&&0!==l.bitmap.width&&0!==l.bitmap.height){var u={x:0,y:0,w:l.bitmap.width+2,h:l.bitmap.height+2};i.push(u),a[s]={rect:u,metrics:l.metrics};}}}var h=e.potpack(i),c=h.w,p=h.h,f=new e.AlphaImage({width:c||1,height:p||1});for(var d in t){var g=t[d];for(var m in g){var v=g[+m];if(v&&0!==v.bitmap.width&&0!==v.bitmap.height){var y=r[d][m].rect;e.AlphaImage.copy(v.bitmap,f,{x:0,y:0},{x:y.x+1,y:y.y+1},v.bitmap);}}}this.image=f,this.positions=r;};e.register(\"GlyphAtlas\",o);var n=function(t){this.tileID=new e.OverscaledTileID(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies;};function a(t,r,i){for(var o=new e.EvaluationParameters(r),n=0,a=t;n<a.length;n+=1){a[n].recalculate(o,i);}}n.prototype.parse=function(t,r,i,n,s){var l=this;this.status=\"parsing\",this.data=t,this.collisionBoxArray=new e.CollisionBoxArray;var u=new e.DictionaryCoder(Object.keys(t.layers).sort()),h=new e.FeatureIndex(this.tileID);h.bucketLayerIDs=[];var c,p,f,d,g={},m={featureIndex:h,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:i},v=r.familiesBySource[this.source];for(var y in v){var x=t.layers[y];if(x){1===x.version&&e.warnOnce('Vector tile source \"'+this.source+'\" layer \"'+y+'\" does not use vector tile spec v2 and therefore may have some rendering errors.');for(var w=u.encode(y),S=[],M=0;M<x.length;M++){var b=x.feature(M);S.push({feature:b,index:M,sourceLayerIndex:w});}for(var k=0,I=v[y];k<I.length;k+=1){var _=I[k],P=_[0];if(!(P.minzoom&&this.zoom<Math.floor(P.minzoom)))if(!(P.maxzoom&&this.zoom>=P.maxzoom))if(\"none\"!==P.visibility)a(_,this.zoom,i),(g[P.id]=P.createBucket({index:h.bucketLayerIDs.length,layers:_,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:w,sourceID:this.source})).populate(S,m),h.bucketLayerIDs.push(_.map((function(e){return e.id})));}}}var T=e.mapObject(m.glyphDependencies,(function(e){return Object.keys(e).map(Number)}));Object.keys(T).length?n.send(\"getGlyphs\",{uid:this.uid,stacks:T},(function(e,t){c||(c=e,p=t,C.call(l));})):p={};var L=Object.keys(m.iconDependencies);L.length?n.send(\"getImages\",{icons:L,source:this.source,tileID:this.tileID,type:\"icons\"},(function(e,t){c||(c=e,f=t,C.call(l));})):f={};var D=Object.keys(m.patternDependencies);function C(){if(c)return s(c);if(p&&f&&d){var t=new o(p),r=new e.ImageAtlas(f,d);for(var n in g){var l=g[n];l instanceof e.SymbolBucket?(a(l.layers,this.zoom,i),e.performSymbolLayout(l,p,t.positions,f,r.iconPositions,this.showCollisionBoxes)):l.hasPattern&&(l instanceof e.LineBucket||l instanceof e.FillBucket||l instanceof e.FillExtrusionBucket)&&(a(l.layers,this.zoom,i),l.addFeatures(m,r.patternPositions));}this.status=\"done\",s(null,{buckets:e.values(g).filter((function(e){return !e.isEmpty()})),featureIndex:h,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:t.image,imageAtlas:r,glyphMap:this.returnDependencies?p:null,iconMap:this.returnDependencies?f:null,glyphPositions:this.returnDependencies?t.positions:null});}}D.length?n.send(\"getImages\",{icons:D,source:this.source,tileID:this.tileID,type:\"patterns\"},(function(e,t){c||(c=e,d=t,C.call(l));})):d={},C.call(this);};var s=\"undefined\"!=typeof performance,l={getEntriesByName:function(e){return !!(s&&performance&&performance.getEntriesByName)&&performance.getEntriesByName(e)},mark:function(e){return !!(s&&performance&&performance.mark)&&performance.mark(e)},measure:function(e,t,r){return !!(s&&performance&&performance.measure)&&performance.measure(e,t,r)},clearMarks:function(e){return !!(s&&performance&&performance.clearMarks)&&performance.clearMarks(e)},clearMeasures:function(e){return !!(s&&performance&&performance.clearMeasures)&&performance.clearMeasures(e)}},u=function(e){this._marks={start:[e.url,\"start\"].join(\"#\"),end:[e.url,\"end\"].join(\"#\"),measure:e.url.toString()},l.mark(this._marks.start);};function h(t,r){var i=e.getArrayBuffer(t.request,(function(t,i,o,n){t?r(t):i&&r(null,{vectorTile:new e.vectorTile.VectorTile(new e.pbf(i)),rawData:i,cacheControl:o,expires:n});}));return function(){i.cancel(),r();}}u.prototype.finish=function(){l.mark(this._marks.end);var e=l.getEntriesByName(this._marks.measure);return 0===e.length&&(l.measure(this._marks.measure,this._marks.start,this._marks.end),e=l.getEntriesByName(this._marks.measure),l.clearMarks(this._marks.start),l.clearMarks(this._marks.end),l.clearMeasures(this._marks.measure)),e},l.Performance=u;var c=function(e,t,r,i){this.actor=e,this.layerIndex=t,this.availableImages=r,this.loadVectorData=i||h,this.loading={},this.loaded={};};c.prototype.loadTile=function(t,r){var i=this,o=t.uid;this.loading||(this.loading={});var a=!!(t&&t.request&&t.request.collectResourceTiming)&&new l.Performance(t.request),s=this.loading[o]=new n(t);s.abort=this.loadVectorData(t,(function(t,n){if(delete i.loading[o],t||!n)return s.status=\"done\",i.loaded[o]=s,r(t);var l=n.rawData,u={};n.expires&&(u.expires=n.expires),n.cacheControl&&(u.cacheControl=n.cacheControl);var h={};if(a){var c=a.finish();c&&(h.resourceTiming=JSON.parse(JSON.stringify(c)));}s.vectorTile=n.vectorTile,s.parse(n.vectorTile,i.layerIndex,i.availableImages,i.actor,(function(t,i){if(t||!i)return r(t);r(null,e.extend({rawTileData:l.slice(0)},i,u,h));})),i.loaded=i.loaded||{},i.loaded[o]=s;}));},c.prototype.reloadTile=function(e,t){var r=this,i=this.loaded,o=e.uid,n=this;if(i&&i[o]){var a=i[o];a.showCollisionBoxes=e.showCollisionBoxes;var s=function(e,i){var o=a.reloadCallback;o&&(delete a.reloadCallback,a.parse(a.vectorTile,n.layerIndex,r.availableImages,n.actor,o)),t(e,i);};\"parsing\"===a.status?a.reloadCallback=s:\"done\"===a.status&&(a.vectorTile?a.parse(a.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s());}},c.prototype.abortTile=function(e,t){var r=this.loading,i=e.uid;r&&r[i]&&r[i].abort&&(r[i].abort(),delete r[i]),t();},c.prototype.removeTile=function(e,t){var r=this.loaded,i=e.uid;r&&r[i]&&delete r[i],t();};var p=function(){this.loaded={};};p.prototype.loadTile=function(t,r){var i=t.uid,o=t.encoding,n=t.rawImageData,a=new e.DEMData(i,n,o);this.loaded=this.loaded||{},this.loaded[i]=a,r(null,a);},p.prototype.removeTile=function(e){var t=this.loaded,r=e.uid;t&&t[r]&&delete t[r];};var f={RADIUS:6378137,FLATTENING:1/298.257223563,POLAR_RADIUS:6356752.3142};function d(e){var t=0;if(e&&e.length>0){t+=Math.abs(g(e[0]));for(var r=1;r<e.length;r++)t-=Math.abs(g(e[r]));}return t}function g(e){var t,r,i,o,n,a,s=0,l=e.length;if(l>2){for(a=0;a<l;a++)a===l-2?(i=l-2,o=l-1,n=0):a===l-1?(i=l-1,o=0,n=1):(i=a,o=a+1,n=a+2),t=e[i],r=e[o],s+=(m(e[n][0])-m(t[0]))*Math.sin(m(r[1]));s=s*f.RADIUS*f.RADIUS/2;}return s}function m(e){return e*Math.PI/180}var v={geometry:function e(t){var r,i=0;switch(t.type){case\"Polygon\":return d(t.coordinates);case\"MultiPolygon\":for(r=0;r<t.coordinates.length;r++)i+=d(t.coordinates[r]);return i;case\"Point\":case\"MultiPoint\":case\"LineString\":case\"MultiLineString\":return 0;case\"GeometryCollection\":for(r=0;r<t.geometries.length;r++)i+=e(t.geometries[r]);return i}},ring:g},y=function e(t,r){switch(t&&t.type||null){case\"FeatureCollection\":return t.features=t.features.map(x(e,r)),t;case\"GeometryCollection\":return t.geometries=t.geometries.map(x(e,r)),t;case\"Feature\":return t.geometry=e(t.geometry,r),t;case\"Polygon\":case\"MultiPolygon\":return function(e,t){\"Polygon\"===e.type?e.coordinates=w(e.coordinates,t):\"MultiPolygon\"===e.type&&(e.coordinates=e.coordinates.map(x(w,t)));return e}(t,r);default:return t}};function x(e,t){return function(r){return e(r,t)}}function w(e,t){t=!!t,e[0]=S(e[0],t);for(var r=1;r<e.length;r++)e[r]=S(e[r],!t);return e}function S(e,t){return function(e){return v.ring(e)>=0}(e)===t?e:e.reverse()}var M=e.vectorTile.VectorTileFeature.prototype.toGeoJSON,b=function(t){this._feature=t,this.extent=e.EXTENT,this.type=t.type,this.properties=t.tags,\"id\"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10));};b.prototype.loadGeometry=function(){if(1===this._feature.type){for(var t=[],r=0,i=this._feature.geometry;r<i.length;r+=1){var o=i[r];t.push([new e.Point$1(o[0],o[1])]);}return t}for(var n=[],a=0,s=this._feature.geometry;a<s.length;a+=1){for(var l=[],u=0,h=s[a];u<h.length;u+=1){var c=h[u];l.push(new e.Point$1(c[0],c[1]));}n.push(l);}return n},b.prototype.toGeoJSON=function(e,t,r){return M.call(this,e,t,r)};var k=function(t){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=e.EXTENT,this.length=t.length,this._features=t;};k.prototype.feature=function(e){return new b(this._features[e])};var I=e.vectorTile.VectorTileFeature,_=P;function P(e,t){this.options=t||{},this.features=e,this.length=e.length;}function T(e,t){this.id=\"number\"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=t||4096;}P.prototype.feature=function(e){return new T(this.features[e],this.options.extent)},T.prototype.loadGeometry=function(){var t=this.rawGeometry;this.geometry=[];for(var r=0;r<t.length;r++){for(var i=t[r],o=[],n=0;n<i.length;n++)o.push(new e.Point$1(i[n][0],i[n][1]));this.geometry.push(o);}return this.geometry},T.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,r=-1/0,i=1/0,o=-1/0,n=0;n<e.length;n++)for(var a=e[n],s=0;s<a.length;s++){var l=a[s];t=Math.min(t,l.x),r=Math.max(r,l.x),i=Math.min(i,l.y),o=Math.max(o,l.y);}return [t,i,r,o]},T.prototype.toGeoJSON=I.prototype.toGeoJSON;var L=z,D=z,C=function(e,t){t=t||{};var r={};for(var i in e)r[i]=new _(e[i].features,t),r[i].name=i,r[i].version=t.version,r[i].extent=t.extent;return z({layers:r})},O=_;function z(t){var r=new e.pbf;return function(e,t){for(var r in e.layers)t.writeMessage(3,E,e.layers[r]);}(t,r),r.finish()}function E(e,t){var r;t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||\"\"),t.writeVarintField(5,e.extent||4096);var i={keys:[],values:[],keycache:{},valuecache:{}};for(r=0;r<e.length;r++)i.feature=e.feature(r),t.writeMessage(2,N,i);var o=i.keys;for(r=0;r<o.length;r++)t.writeStringField(3,o[r]);var n=i.values;for(r=0;r<n.length;r++)t.writeMessage(4,Z,n[r]);}function N(e,t){var r=e.feature;void 0!==r.id&&t.writeVarintField(1,r.id),t.writeMessage(2,F,e),t.writeVarintField(3,r.type),t.writeMessage(4,J,r);}function F(e,t){var r=e.feature,i=e.keys,o=e.values,n=e.keycache,a=e.valuecache;for(var s in r.properties){var l=n[s];void 0===l&&(i.push(s),l=i.length-1,n[s]=l),t.writeVarint(l);var u=r.properties[s],h=typeof u;\"string\"!==h&&\"boolean\"!==h&&\"number\"!==h&&(u=JSON.stringify(u));var c=h+\":\"+u,p=a[c];void 0===p&&(o.push(u),p=o.length-1,a[c]=p),t.writeVarint(p);}}function A(e,t){return (t<<3)+(7&e)}function B(e){return e<<1^e>>31}function J(e,t){for(var r=e.loadGeometry(),i=e.type,o=0,n=0,a=r.length,s=0;s<a;s++){var l=r[s],u=1;1===i&&(u=l.length),t.writeVarint(A(1,u));for(var h=3===i?l.length-1:l.length,c=0;c<h;c++){1===c&&1!==i&&t.writeVarint(A(2,h-1));var p=l[c].x-o,f=l[c].y-n;t.writeVarint(B(p)),t.writeVarint(B(f)),o+=p,n+=f;}3===i&&t.writeVarint(A(7,1));}}function Z(e,t){var r=typeof e;\"string\"===r?t.writeStringField(1,e):\"boolean\"===r?t.writeBooleanField(7,e):\"number\"===r&&(e%1!=0?t.writeDoubleField(3,e):e<0?t.writeSVarintField(6,e):t.writeVarintField(5,e));}function G(e,t,r,i,o,n){if(!(o-i<=r)){var a=i+o>>1;!function e(t,r,i,o,n,a){for(;n>o;){if(n-o>600){var s=n-o+1,l=i-o+1,u=Math.log(s),h=.5*Math.exp(2*u/3),c=.5*Math.sqrt(u*h*(s-h)/s)*(l-s/2<0?-1:1),p=Math.max(o,Math.floor(i-l*h/s+c)),f=Math.min(n,Math.floor(i+(s-l)*h/s+c));e(t,r,i,p,f,a);}var d=r[2*i+a],g=o,m=n;for(j(t,r,o,i),r[2*n+a]>d&&j(t,r,o,n);g<m;){for(j(t,r,g,m),g++,m--;r[2*g+a]<d;)g++;for(;r[2*m+a]>d;)m--;}r[2*o+a]===d?j(t,r,o,m):j(t,r,++m,n),m<=i&&(o=m+1),i<=m&&(n=m-1);}}(e,t,a,i,o,n%2),G(e,t,r,i,a-1,n+1),G(e,t,r,a+1,o,n+1);}}function j(e,t,r,i){Y(e,r,i),Y(t,2*r,2*i),Y(t,2*r+1,2*i+1);}function Y(e,t,r){var i=e[t];e[t]=e[r],e[r]=i;}function V(e,t,r,i){var o=e-r,n=t-i;return o*o+n*n}L.fromVectorTileJs=D,L.fromGeojsonVt=C,L.GeoJSONWrapper=O;var X=function(e){return e[0]},W=function(e){return e[1]},R=function(e,t,r,i,o){void 0===t&&(t=X),void 0===r&&(r=W),void 0===i&&(i=64),void 0===o&&(o=Float64Array),this.nodeSize=i,this.points=e;for(var n=e.length<65536?Uint16Array:Uint32Array,a=this.ids=new n(e.length),s=this.coords=new o(2*e.length),l=0;l<e.length;l++)a[l]=l,s[2*l]=t(e[l]),s[2*l+1]=r(e[l]);G(a,s,i,0,a.length-1,0);};R.prototype.range=function(e,t,r,i){return function(e,t,r,i,o,n,a){for(var s,l,u=[0,e.length-1,0],h=[];u.length;){var c=u.pop(),p=u.pop(),f=u.pop();if(p-f<=a)for(var d=f;d<=p;d++)s=t[2*d],l=t[2*d+1],s>=r&&s<=o&&l>=i&&l<=n&&h.push(e[d]);else{var g=Math.floor((f+p)/2);s=t[2*g],l=t[2*g+1],s>=r&&s<=o&&l>=i&&l<=n&&h.push(e[g]);var m=(c+1)%2;(0===c?r<=s:i<=l)&&(u.push(f),u.push(g-1),u.push(m)),(0===c?o>=s:n>=l)&&(u.push(g+1),u.push(p),u.push(m));}}return h}(this.ids,this.coords,e,t,r,i,this.nodeSize)},R.prototype.within=function(e,t,r){return function(e,t,r,i,o,n){for(var a=[0,e.length-1,0],s=[],l=o*o;a.length;){var u=a.pop(),h=a.pop(),c=a.pop();if(h-c<=n)for(var p=c;p<=h;p++)V(t[2*p],t[2*p+1],r,i)<=l&&s.push(e[p]);else{var f=Math.floor((c+h)/2),d=t[2*f],g=t[2*f+1];V(d,g,r,i)<=l&&s.push(e[f]);var m=(u+1)%2;(0===u?r-o<=d:i-o<=g)&&(a.push(c),a.push(f-1),a.push(m)),(0===u?r+o>=d:i+o>=g)&&(a.push(f+1),a.push(h),a.push(m));}}return s}(this.ids,this.coords,e,t,r,this.nodeSize)};var q={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(e){return e}},U=function(e){this.options=re(Object.create(q),e),this.trees=new Array(this.options.maxZoom+1);};function $(e,t,r,i,o){return {x:e,y:t,zoom:1/0,id:r,parentId:-1,numPoints:i,properties:o}}function H(e,t){var r=e.geometry.coordinates,i=r[0],o=r[1];return {x:ee(i),y:te(o),zoom:1/0,index:t,parentId:-1}}function K(e){return {type:\"Feature\",id:e.id,properties:Q(e),geometry:{type:\"Point\",coordinates:[(i=e.x,360*(i-.5)),(t=e.y,r=(180-360*t)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var t,r,i;}function Q(e){var t=e.numPoints,r=t>=1e4?Math.round(t/1e3)+\"k\":t>=1e3?Math.round(t/100)/10+\"k\":t;return re(re({},e.properties),{cluster:!0,cluster_id:e.id,point_count:t,point_count_abbreviated:r})}function ee(e){return e/360+.5}function te(e){var t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function re(e,t){for(var r in t)e[r]=t[r];return e}function ie(e){return e.x}function oe(e){return e.y}function ne(e,t,r,i,o,n){var a=o-r,s=n-i;if(0!==a||0!==s){var l=((e-r)*a+(t-i)*s)/(a*a+s*s);l>1?(r=o,i=n):l>0&&(r+=a*l,i+=s*l);}return (a=e-r)*a+(s=t-i)*s}function ae(e,t,r,i){var o={id:void 0===e?null:e,type:t,geometry:r,tags:i,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,r=e.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)se(e,t);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var i=0;i<t.length;i++)se(e,t[i]);else if(\"MultiPolygon\"===r)for(i=0;i<t.length;i++)for(var o=0;o<t[i].length;o++)se(e,t[i][o]);}(o),o}function se(e,t){for(var r=0;r<t.length;r+=3)e.minX=Math.min(e.minX,t[r]),e.minY=Math.min(e.minY,t[r+1]),e.maxX=Math.max(e.maxX,t[r]),e.maxY=Math.max(e.maxY,t[r+1]);}function le(e,t,r,i){if(t.geometry){var o=t.geometry.coordinates,n=t.geometry.type,a=Math.pow(r.tolerance/((1<<r.maxZoom)*r.extent),2),s=[],l=t.id;if(r.promoteId?l=t.properties[r.promoteId]:r.generateId&&(l=i||0),\"Point\"===n)ue(o,s);else if(\"MultiPoint\"===n)for(var u=0;u<o.length;u++)ue(o[u],s);else if(\"LineString\"===n)he(o,s,a,!1);else if(\"MultiLineString\"===n){if(r.lineMetrics){for(u=0;u<o.length;u++)s=[],he(o[u],s,a,!1),e.push(ae(l,\"LineString\",s,t.properties));return}ce(o,s,a,!1);}else if(\"Polygon\"===n)ce(o,s,a,!0);else{if(\"MultiPolygon\"!==n){if(\"GeometryCollection\"===n){for(u=0;u<t.geometry.geometries.length;u++)le(e,{id:l,geometry:t.geometry.geometries[u],properties:t.properties},r,i);return}throw new Error(\"Input data is not a valid GeoJSON object.\")}for(u=0;u<o.length;u++){var h=[];ce(o[u],h,a,!0),s.push(h);}}e.push(ae(l,n,s,t.properties));}}function ue(e,t){t.push(pe(e[0])),t.push(fe(e[1])),t.push(0);}function he(e,t,r,i){for(var o,n,a=0,s=0;s<e.length;s++){var l=pe(e[s][0]),u=fe(e[s][1]);t.push(l),t.push(u),t.push(0),s>0&&(a+=i?(o*u-l*n)/2:Math.sqrt(Math.pow(l-o,2)+Math.pow(u-n,2))),o=l,n=u;}var h=t.length-3;t[2]=1,function e(t,r,i,o){for(var n,a=o,s=i-r>>1,l=i-r,u=t[r],h=t[r+1],c=t[i],p=t[i+1],f=r+3;f<i;f+=3){var d=ne(t[f],t[f+1],u,h,c,p);if(d>a)n=f,a=d;else if(d===a){var g=Math.abs(f-s);g<l&&(n=f,l=g);}}a>o&&(n-r>3&&e(t,r,n,o),t[n+2]=a,i-n>3&&e(t,n,i,o));}(t,0,h,r),t[h+2]=1,t.size=Math.abs(a),t.start=0,t.end=t.size;}function ce(e,t,r,i){for(var o=0;o<e.length;o++){var n=[];he(e[o],n,r,i),t.push(n);}}function pe(e){return e/360+.5}function fe(e){var t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function de(e,t,r,i,o,n,a,s){if(i/=t,n>=(r/=t)&&a<i)return e;if(a<r||n>=i)return null;for(var l=[],u=0;u<e.length;u++){var h=e[u],c=h.geometry,p=h.type,f=0===o?h.minX:h.minY,d=0===o?h.maxX:h.maxY;if(f>=r&&d<i)l.push(h);else if(!(d<r||f>=i)){var g=[];if(\"Point\"===p||\"MultiPoint\"===p)ge(c,g,r,i,o);else if(\"LineString\"===p)me(c,g,r,i,o,!1,s.lineMetrics);else if(\"MultiLineString\"===p)ye(c,g,r,i,o,!1);else if(\"Polygon\"===p)ye(c,g,r,i,o,!0);else if(\"MultiPolygon\"===p)for(var m=0;m<c.length;m++){var v=[];ye(c[m],v,r,i,o,!0),v.length&&g.push(v);}if(g.length){if(s.lineMetrics&&\"LineString\"===p){for(m=0;m<g.length;m++)l.push(ae(h.id,p,g[m],h.tags));continue}\"LineString\"!==p&&\"MultiLineString\"!==p||(1===g.length?(p=\"LineString\",g=g[0]):p=\"MultiLineString\"),\"Point\"!==p&&\"MultiPoint\"!==p||(p=3===g.length?\"Point\":\"MultiPoint\"),l.push(ae(h.id,p,g,h.tags));}}}return l.length?l:null}function ge(e,t,r,i,o){for(var n=0;n<e.length;n+=3){var a=e[n+o];a>=r&&a<=i&&(t.push(e[n]),t.push(e[n+1]),t.push(e[n+2]));}}function me(e,t,r,i,o,n,a){for(var s,l,u=ve(e),h=0===o?we:Se,c=e.start,p=0;p<e.length-3;p+=3){var f=e[p],d=e[p+1],g=e[p+2],m=e[p+3],v=e[p+4],y=0===o?f:d,x=0===o?m:v,w=!1;a&&(s=Math.sqrt(Math.pow(f-m,2)+Math.pow(d-v,2))),y<r?x>r&&(l=h(u,f,d,m,v,r),a&&(u.start=c+s*l)):y>i?x<i&&(l=h(u,f,d,m,v,i),a&&(u.start=c+s*l)):xe(u,f,d,g),x<r&&y>=r&&(l=h(u,f,d,m,v,r),w=!0),x>i&&y<=i&&(l=h(u,f,d,m,v,i),w=!0),!n&&w&&(a&&(u.end=c+s*l),t.push(u),u=ve(e)),a&&(c+=s);}var S=e.length-3;f=e[S],d=e[S+1],g=e[S+2],(y=0===o?f:d)>=r&&y<=i&&xe(u,f,d,g),S=u.length-3,n&&S>=3&&(u[S]!==u[0]||u[S+1]!==u[1])&&xe(u,u[0],u[1],u[2]),u.length&&t.push(u);}function ve(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function ye(e,t,r,i,o,n){for(var a=0;a<e.length;a++)me(e[a],t,r,i,o,n,!1);}function xe(e,t,r,i){e.push(t),e.push(r),e.push(i);}function we(e,t,r,i,o,n){var a=(n-t)/(i-t);return e.push(n),e.push(r+(o-r)*a),e.push(1),a}function Se(e,t,r,i,o,n){var a=(n-r)/(o-r);return e.push(t+(i-t)*a),e.push(n),e.push(1),a}function Me(e,t){for(var r=[],i=0;i<e.length;i++){var o,n=e[i],a=n.type;if(\"Point\"===a||\"MultiPoint\"===a||\"LineString\"===a)o=be(n.geometry,t);else if(\"MultiLineString\"===a||\"Polygon\"===a){o=[];for(var s=0;s<n.geometry.length;s++)o.push(be(n.geometry[s],t));}else if(\"MultiPolygon\"===a)for(o=[],s=0;s<n.geometry.length;s++){for(var l=[],u=0;u<n.geometry[s].length;u++)l.push(be(n.geometry[s][u],t));o.push(l);}r.push(ae(n.id,a,o,n.tags));}return r}function be(e,t){var r=[];r.size=e.size,void 0!==e.start&&(r.start=e.start,r.end=e.end);for(var i=0;i<e.length;i+=3)r.push(e[i]+t,e[i+1],e[i+2]);return r}function ke(e,t){if(e.transformed)return e;var r,i,o,n=1<<e.z,a=e.x,s=e.y;for(r=0;r<e.features.length;r++){var l=e.features[r],u=l.geometry,h=l.type;if(l.geometry=[],1===h)for(i=0;i<u.length;i+=2)l.geometry.push(Ie(u[i],u[i+1],t,n,a,s));else for(i=0;i<u.length;i++){var c=[];for(o=0;o<u[i].length;o+=2)c.push(Ie(u[i][o],u[i][o+1],t,n,a,s));l.geometry.push(c);}}return e.transformed=!0,e}function Ie(e,t,r,i,o,n){return [Math.round(r*(e*i-o)),Math.round(r*(t*i-n))]}function _e(e,t,r,i,o){for(var n=t===o.maxZoom?0:o.tolerance/((1<<t)*o.extent),a={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:i,z:t,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},s=0;s<e.length;s++){a.numFeatures++,Pe(a,e[s],n,o);var l=e[s].minX,u=e[s].minY,h=e[s].maxX,c=e[s].maxY;l<a.minX&&(a.minX=l),u<a.minY&&(a.minY=u),h>a.maxX&&(a.maxX=h),c>a.maxY&&(a.maxY=c);}return a}function Pe(e,t,r,i){var o=t.geometry,n=t.type,a=[];if(\"Point\"===n||\"MultiPoint\"===n)for(var s=0;s<o.length;s+=3)a.push(o[s]),a.push(o[s+1]),e.numPoints++,e.numSimplified++;else if(\"LineString\"===n)Te(a,o,e,r,!1,!1);else if(\"MultiLineString\"===n||\"Polygon\"===n)for(s=0;s<o.length;s++)Te(a,o[s],e,r,\"Polygon\"===n,0===s);else if(\"MultiPolygon\"===n)for(var l=0;l<o.length;l++){var u=o[l];for(s=0;s<u.length;s++)Te(a,u[s],e,r,!0,0===s);}if(a.length){var h=t.tags||null;if(\"LineString\"===n&&i.lineMetrics){for(var c in h={},t.tags)h[c]=t.tags[c];h.mapbox_clip_start=o.start/o.size,h.mapbox_clip_end=o.end/o.size;}var p={geometry:a,type:\"Polygon\"===n||\"MultiPolygon\"===n?3:\"LineString\"===n||\"MultiLineString\"===n?2:1,tags:h};null!==t.id&&(p.id=t.id),e.features.push(p);}}function Te(e,t,r,i,o,n){var a=i*i;if(i>0&&t.size<(o?a:i))r.numPoints+=t.length/3;else{for(var s=[],l=0;l<t.length;l+=3)(0===i||t[l+2]>a)&&(r.numSimplified++,s.push(t[l]),s.push(t[l+1])),r.numPoints++;o&&function(e,t){for(var r=0,i=0,o=e.length,n=o-2;i<o;n=i,i+=2)r+=(e[i]-e[n])*(e[i+1]+e[n+1]);if(r>0===t)for(i=0,o=e.length;i<o/2;i+=2){var a=e[i],s=e[i+1];e[i]=e[o-2-i],e[i+1]=e[o-1-i],e[o-2-i]=a,e[o-1-i]=s;}}(s,n),e.push(s);}}function Le(e,t){var r=(t=this.options=function(e,t){for(var r in t)e[r]=t[r];return e}(Object.create(this.options),t)).debug;if(r&&console.time(\"preprocess data\"),t.maxZoom<0||t.maxZoom>24)throw new Error(\"maxZoom should be in the 0-24 range\");if(t.promoteId&&t.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var i=function(e,t){var r=[];if(\"FeatureCollection\"===e.type)for(var i=0;i<e.features.length;i++)le(r,e.features[i],t,i);else\"Feature\"===e.type?le(r,e,t):le(r,{geometry:e},t);return r}(e,t);this.tiles={},this.tileCoords=[],r&&(console.timeEnd(\"preprocess data\"),console.log(\"index: maxZoom: %d, maxPoints: %d\",t.indexMaxZoom,t.indexMaxPoints),console.time(\"generate tiles\"),this.stats={},this.total=0),(i=function(e,t){var r=t.buffer/t.extent,i=e,o=de(e,1,-1-r,r,0,-1,2,t),n=de(e,1,1-r,2+r,0,-1,2,t);return (o||n)&&(i=de(e,1,-r,1+r,0,-1,2,t)||[],o&&(i=Me(o,1).concat(i)),n&&(i=i.concat(Me(n,-1)))),i}(i,t)).length&&this.splitTile(i,0,0,0),r&&(i.length&&console.log(\"features: %d, points: %d\",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd(\"generate tiles\"),console.log(\"tiles generated:\",this.total,JSON.stringify(this.stats)));}function De(e,t,r){return 32*((1<<e)*r+t)+e}function Ce(e,t){var r=e.tileID.canonical;if(!this._geoJSONIndex)return t(null,null);var i=this._geoJSONIndex.getTile(r.z,r.x,r.y);if(!i)return t(null,null);var o=new k(i.features),n=L(o);0===n.byteOffset&&n.byteLength===n.buffer.byteLength||(n=new Uint8Array(n)),t(null,{vectorTile:o,rawData:n.buffer});}U.prototype.load=function(e){var t=this.options,r=t.log,i=t.minZoom,o=t.maxZoom,n=t.nodeSize;r&&console.time(\"total time\");var a=\"prepare \"+e.length+\" points\";r&&console.time(a),this.points=e;for(var s=[],l=0;l<e.length;l++)e[l].geometry&&s.push(H(e[l],l));this.trees[o+1]=new R(s,ie,oe,n,Float32Array),r&&console.timeEnd(a);for(var u=o;u>=i;u--){var h=+Date.now();s=this._cluster(s,u),this.trees[u]=new R(s,ie,oe,n,Float32Array),r&&console.log(\"z%d: %d clusters in %dms\",u,s.length,+Date.now()-h);}return r&&console.timeEnd(\"total time\"),this},U.prototype.getClusters=function(e,t){var r=((e[0]+180)%360+360)%360-180,i=Math.max(-90,Math.min(90,e[1])),o=180===e[2]?180:((e[2]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)r=-180,o=180;else if(r>o){var a=this.getClusters([r,i,180,n],t),s=this.getClusters([-180,i,o,n],t);return a.concat(s)}for(var l=this.trees[this._limitZoom(t)],u=[],h=0,c=l.range(ee(r),te(n),ee(o),te(i));h<c.length;h+=1){var p=c[h],f=l.points[p];u.push(f.numPoints?K(f):this.points[f.index]);}return u},U.prototype.getChildren=function(e){var t=this._getOriginId(e),r=this._getOriginZoom(e),i=\"No cluster with the specified id.\",o=this.trees[r];if(!o)throw new Error(i);var n=o.points[t];if(!n)throw new Error(i);for(var a=this.options.radius/(this.options.extent*Math.pow(2,r-1)),s=[],l=0,u=o.within(n.x,n.y,a);l<u.length;l+=1){var h=u[l],c=o.points[h];c.parentId===e&&s.push(c.numPoints?K(c):this.points[c.index]);}if(0===s.length)throw new Error(i);return s},U.prototype.getLeaves=function(e,t,r){t=t||10,r=r||0;var i=[];return this._appendLeaves(i,e,t,r,0),i},U.prototype.getTile=function(e,t,r){var i=this.trees[this._limitZoom(e)],o=Math.pow(2,e),n=this.options,a=n.extent,s=n.radius/a,l=(r-s)/o,u=(r+1+s)/o,h={features:[]};return this._addTileFeatures(i.range((t-s)/o,l,(t+1+s)/o,u),i.points,t,r,o,h),0===t&&this._addTileFeatures(i.range(1-s/o,l,1,u),i.points,o,r,o,h),t===o-1&&this._addTileFeatures(i.range(0,l,s/o,u),i.points,-1,r,o,h),h.features.length?h:null},U.prototype.getClusterExpansionZoom=function(e){for(var t=this._getOriginZoom(e)-1;t<=this.options.maxZoom;){var r=this.getChildren(e);if(t++,1!==r.length)break;e=r[0].properties.cluster_id;}return t},U.prototype._appendLeaves=function(e,t,r,i,o){for(var n=0,a=this.getChildren(t);n<a.length;n+=1){var s=a[n],l=s.properties;if(l&&l.cluster?o+l.point_count<=i?o+=l.point_count:o=this._appendLeaves(e,l.cluster_id,r,i,o):o<i?o++:e.push(s),e.length===r)break}return o},U.prototype._addTileFeatures=function(e,t,r,i,o,n){for(var a=0,s=e;a<s.length;a+=1){var l=t[s[a]],u=l.numPoints,h={type:1,geometry:[[Math.round(this.options.extent*(l.x*o-r)),Math.round(this.options.extent*(l.y*o-i))]],tags:u?Q(l):this.points[l.index].properties},c=void 0;u?c=l.id:this.options.generateId?c=l.index:this.points[l.index].id&&(c=this.points[l.index].id),void 0!==c&&(h.id=c),n.features.push(h);}},U.prototype._limitZoom=function(e){return Math.max(this.options.minZoom,Math.min(e,this.options.maxZoom+1))},U.prototype._cluster=function(e,t){for(var r=[],i=this.options,o=i.radius,n=i.extent,a=i.reduce,s=o/(n*Math.pow(2,t)),l=0;l<e.length;l++){var u=e[l];if(!(u.zoom<=t)){u.zoom=t;for(var h=this.trees[t+1],c=h.within(u.x,u.y,s),p=u.numPoints||1,f=u.x*p,d=u.y*p,g=a&&p>1?this._map(u,!0):null,m=(l<<5)+(t+1)+this.points.length,v=0,y=c;v<y.length;v+=1){var x=y[v],w=h.points[x];if(!(w.zoom<=t)){w.zoom=t;var S=w.numPoints||1;f+=w.x*S,d+=w.y*S,p+=S,w.parentId=m,a&&(g||(g=this._map(u,!0)),a(g,this._map(w)));}}1===p?r.push(u):(u.parentId=m,r.push($(f/p,d/p,m,p,g)));}}return r},U.prototype._getOriginId=function(e){return e-this.points.length>>5},U.prototype._getOriginZoom=function(e){return (e-this.points.length)%32},U.prototype._map=function(e,t){if(e.numPoints)return t?re({},e.properties):e.properties;var r=this.points[e.index].properties,i=this.options.map(r);return t&&i===r?re({},i):i},Le.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},Le.prototype.splitTile=function(e,t,r,i,o,n,a){for(var s=[e,t,r,i],l=this.options,u=l.debug;s.length;){i=s.pop(),r=s.pop(),t=s.pop(),e=s.pop();var h=1<<t,c=De(t,r,i),p=this.tiles[c];if(!p&&(u>1&&console.time(\"creation\"),p=this.tiles[c]=_e(e,t,r,i,l),this.tileCoords.push({z:t,x:r,y:i}),u)){u>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,r,i,p.numFeatures,p.numPoints,p.numSimplified),console.timeEnd(\"creation\"));var f=\"z\"+t;this.stats[f]=(this.stats[f]||0)+1,this.total++;}if(p.source=e,o){if(t===l.maxZoom||t===o)continue;var d=1<<o-t;if(r!==Math.floor(n/d)||i!==Math.floor(a/d))continue}else if(t===l.indexMaxZoom||p.numPoints<=l.indexMaxPoints)continue;if(p.source=null,0!==e.length){u>1&&console.time(\"clipping\");var g,m,v,y,x,w,S=.5*l.buffer/l.extent,M=.5-S,b=.5+S,k=1+S;g=m=v=y=null,x=de(e,h,r-S,r+b,0,p.minX,p.maxX,l),w=de(e,h,r+M,r+k,0,p.minX,p.maxX,l),e=null,x&&(g=de(x,h,i-S,i+b,1,p.minY,p.maxY,l),m=de(x,h,i+M,i+k,1,p.minY,p.maxY,l),x=null),w&&(v=de(w,h,i-S,i+b,1,p.minY,p.maxY,l),y=de(w,h,i+M,i+k,1,p.minY,p.maxY,l),w=null),u>1&&console.timeEnd(\"clipping\"),s.push(g||[],t+1,2*r,2*i),s.push(m||[],t+1,2*r,2*i+1),s.push(v||[],t+1,2*r+1,2*i),s.push(y||[],t+1,2*r+1,2*i+1);}}},Le.prototype.getTile=function(e,t,r){var i=this.options,o=i.extent,n=i.debug;if(e<0||e>24)return null;var a=1<<e,s=De(e,t=(t%a+a)%a,r);if(this.tiles[s])return ke(this.tiles[s],o);n>1&&console.log(\"drilling down to z%d-%d-%d\",e,t,r);for(var l,u=e,h=t,c=r;!l&&u>0;)u--,h=Math.floor(h/2),c=Math.floor(c/2),l=this.tiles[De(u,h,c)];return l&&l.source?(n>1&&console.log(\"found parent tile z%d-%d-%d\",u,h,c),n>1&&console.time(\"drilling down\"),this.splitTile(l.source,u,h,c,e,t,r),n>1&&console.timeEnd(\"drilling down\"),this.tiles[s]?ke(this.tiles[s],o):null):null};var Oe=function(t){function r(e,r,i,o){t.call(this,e,r,i,Ce),o&&(this.loadGeoJSON=o);}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.loadData=function(e,t){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=t,this._pendingLoadDataParams=e,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData());},r.prototype._loadData=function(){var t=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,i=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var o=!!(i&&i.request&&i.request.collectResourceTiming)&&new l.Performance(i.request);this.loadGeoJSON(i,(function(n,a){if(n||!a)return r(n);if(\"object\"!=typeof a)return r(new Error(\"Input data given to '\"+i.source+\"' is not a valid GeoJSON object.\"));y(a,!0);try{t._geoJSONIndex=i.cluster?new U(function(t){var r=t.superclusterOptions,i=t.clusterProperties;if(!i||!r)return r;for(var o={},n={},a={accumulated:null,zoom:0},s={properties:null},l=Object.keys(i),u=0,h=l;u<h.length;u+=1){var c=h[u],p=i[c],f=p[0],d=p[1],g=e.createExpression(d),m=e.createExpression(\"string\"==typeof f?[f,[\"accumulated\"],[\"get\",c]]:f);o[c]=g.value,n[c]=m.value;}return r.map=function(e){s.properties=e;for(var t={},r=0,i=l;r<i.length;r+=1){var n=i[r];t[n]=o[n].evaluate(a,s);}return t},r.reduce=function(e,t){s.properties=t;for(var r=0,i=l;r<i.length;r+=1){var o=i[r];a.accumulated=e[o],e[o]=n[o].evaluate(a,s);}},r}(i)).load(a.features):function(e,t){return new Le(e,t)}(a,i.geojsonVtOptions);}catch(n){return r(n)}t.loaded={};var s={};if(o){var l=o.finish();l&&(s.resourceTiming={},s.resourceTiming[i.source]=JSON.parse(JSON.stringify(l)));}r(null,s);}));}},r.prototype.coalesce=function(){\"Coalescing\"===this._state?this._state=\"Idle\":\"NeedsLoadData\"===this._state&&(this._state=\"Coalescing\",this._loadData());},r.prototype.reloadTile=function(e,r){var i=this.loaded,o=e.uid;return i&&i[o]?t.prototype.reloadTile.call(this,e,r):this.loadTile(e,r)},r.prototype.loadGeoJSON=function(t,r){if(t.request)e.getJSON(t.request,r);else{if(\"string\"!=typeof t.data)return r(new Error(\"Input data given to '\"+t.source+\"' is not a valid GeoJSON object.\"));try{return r(null,JSON.parse(t.data))}catch(e){return r(new Error(\"Input data given to '\"+t.source+\"' is not a valid GeoJSON object.\"))}}},r.prototype.removeSource=function(e,t){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),t();},r.prototype.getClusterExpansionZoom=function(e,t){t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId));},r.prototype.getClusterChildren=function(e,t){t(null,this._geoJSONIndex.getChildren(e.clusterId));},r.prototype.getClusterLeaves=function(e,t){t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset));},r}(c);var ze=function(t){var r=this;this.self=t,this.actor=new e.Actor(t,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:c,geojson:Oe},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=function(e,t){if(r.workerSourceTypes[e])throw new Error('Worker source with name \"'+e+'\" already registered.');r.workerSourceTypes[e]=t;},this.self.registerRTLTextPlugin=function(t){if(e.plugin.isParsed())throw new Error(\"RTL text plugin already registered.\");e.plugin.applyArabicShaping=t.applyArabicShaping,e.plugin.processBidirectionalText=t.processBidirectionalText,e.plugin.processStyledBidirectionalText=t.processStyledBidirectionalText;};};return ze.prototype.setReferrer=function(e,t){this.referrer=t;},ze.prototype.setImages=function(e,t,r){this.availableImages[e]=t,r();},ze.prototype.setLayers=function(e,t,r){this.getLayerIndex(e).replace(t),r();},ze.prototype.updateLayers=function(e,t,r){this.getLayerIndex(e).update(t.layers,t.removedIds),r();},ze.prototype.loadTile=function(e,t,r){this.getWorkerSource(e,t.type,t.source).loadTile(t,r);},ze.prototype.loadDEMTile=function(e,t,r){this.getDEMWorkerSource(e,t.source).loadTile(t,r);},ze.prototype.reloadTile=function(e,t,r){this.getWorkerSource(e,t.type,t.source).reloadTile(t,r);},ze.prototype.abortTile=function(e,t,r){this.getWorkerSource(e,t.type,t.source).abortTile(t,r);},ze.prototype.removeTile=function(e,t,r){this.getWorkerSource(e,t.type,t.source).removeTile(t,r);},ze.prototype.removeDEMTile=function(e,t){this.getDEMWorkerSource(e,t.source).removeTile(t);},ze.prototype.removeSource=function(e,t,r){if(this.workerSources[e]&&this.workerSources[e][t.type]&&this.workerSources[e][t.type][t.source]){var i=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==i.removeSource?i.removeSource(t,r):r();}},ze.prototype.loadWorkerSource=function(e,t,r){try{this.self.importScripts(t.url),r();}catch(e){r(e.toString());}},ze.prototype.syncRTLPluginState=function(t,r,i){try{e.plugin.setState(r);var o=e.plugin.getPluginURL();if(e.plugin.isLoaded()&&!e.plugin.isParsed()&&null!=o){this.self.importScripts(o);var n=e.plugin.isParsed();i(n?void 0:new Error(\"RTL Text Plugin failed to import scripts from \"+o),n);}}catch(e){i(e.toString());}},ze.prototype.getAvailableImages=function(e){var t=this.availableImages[e];return t||(t=[]),t},ze.prototype.getLayerIndex=function(e){var t=this.layerIndexes[e];return t||(t=this.layerIndexes[e]=new i),t},ze.prototype.getWorkerSource=function(e,t,r){var i=this;if(this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),!this.workerSources[e][t][r]){var o={send:function(t,r,o){i.actor.send(t,r,o,e);}};this.workerSources[e][t][r]=new this.workerSourceTypes[t](o,this.getLayerIndex(e),this.getAvailableImages(e));}return this.workerSources[e][t][r]},ze.prototype.getDEMWorkerSource=function(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new p),this.demWorkerSources[e][t]},ze.prototype.enforceCacheSizeLimit=function(t,r){e.enforceCacheSizeLimit(r);},\"undefined\"!=typeof WorkerGlobalScope&&void 0!==e.window&&e.window instanceof WorkerGlobalScope&&(e.window.worker=new ze(e.window)),ze}));\n\ndefine([\"./shared\"],(function(t){\"use strict\";var e=t.createCommonjsModule((function(t){function e(t){return !!(\"undefined\"!=typeof window&&\"undefined\"!=typeof document&&Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray&&Function.prototype&&Function.prototype.bind&&Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions&&\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON&&function(){if(!(\"Worker\"in window&&\"Blob\"in window&&\"URL\"in window))return !1;var t,e,i=new Blob([\"\"],{type:\"text/javascript\"}),o=URL.createObjectURL(i);try{e=new Worker(o),t=!0;}catch(e){t=!1;}e&&e.terminate();return URL.revokeObjectURL(o),t}()&&\"Uint8ClampedArray\"in window&&ArrayBuffer.isView&&function(t){void 0===i[t]&&(i[t]=function(t){var i=document.createElement(\"canvas\"),o=Object.create(e.webGLContextAttributes);return o.failIfMajorPerformanceCaveat=t,i.probablySupportsContext?i.probablySupportsContext(\"webgl\",o)||i.probablySupportsContext(\"experimental-webgl\",o):i.supportsContext?i.supportsContext(\"webgl\",o)||i.supportsContext(\"experimental-webgl\",o):i.getContext(\"webgl\",o)||i.getContext(\"experimental-webgl\",o)}(t));return i[t]}(t&&t.failIfMajorPerformanceCaveat))}t.exports?t.exports=e:window&&(window.mapboxgl=window.mapboxgl||{},window.mapboxgl.supported=e);var i={};e.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0};})),i={create:function(e,i,o){var r=t.window.document.createElement(e);return void 0!==i&&(r.className=i),o&&o.appendChild(r),r},createNS:function(e,i){return t.window.document.createElementNS(e,i)}},o=t.window.document.documentElement.style;function r(t){if(!o)return t[0];for(var e=0;e<t.length;e++)if(t[e]in o)return t[e];return t[0]}var a,n=r([\"userSelect\",\"MozUserSelect\",\"WebkitUserSelect\",\"msUserSelect\"]);i.disableDrag=function(){o&&n&&(a=o[n],o[n]=\"none\");},i.enableDrag=function(){o&&n&&(o[n]=a);};var s=r([\"transform\",\"WebkitTransform\"]);i.setTransform=function(t,e){t.style[s]=e;};var l=!1;try{var c=Object.defineProperty({},\"passive\",{get:function(){l=!0;}});t.window.addEventListener(\"test\",c,c),t.window.removeEventListener(\"test\",c,c);}catch(t){l=!1;}i.addEventListener=function(t,e,i,o){void 0===o&&(o={}),\"passive\"in o&&l?t.addEventListener(e,i,o):t.addEventListener(e,i,o.capture);},i.removeEventListener=function(t,e,i,o){void 0===o&&(o={}),\"passive\"in o&&l?t.removeEventListener(e,i,o):t.removeEventListener(e,i,o.capture);};var u=function(e){e.preventDefault(),e.stopPropagation(),t.window.removeEventListener(\"click\",u,!0);};function h(t){var e=t.userImage;if(e&&e.render&&e.render())return t.data.replace(new Uint8Array(e.data.buffer)),!0;return !1}i.suppressClick=function(){t.window.addEventListener(\"click\",u,!0),t.window.setTimeout((function(){t.window.removeEventListener(\"click\",u,!0);}),0);},i.mousePos=function(e,i){var o=e.getBoundingClientRect(),r=t.window.TouchEvent&&i instanceof t.window.TouchEvent?i.touches[0]:i;return new t.Point(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop)},i.touchPos=function(e,i){for(var o=e.getBoundingClientRect(),r=[],a=\"touchend\"===i.type?i.changedTouches:i.touches,n=0;n<a.length;n++)r.push(new t.Point(a[n].clientX-o.left-e.clientLeft,a[n].clientY-o.top-e.clientTop));return r},i.mouseButton=function(e){return void 0!==t.window.InstallTrigger&&2===e.button&&e.ctrlKey&&t.window.navigator.platform.toUpperCase().indexOf(\"MAC\")>=0?0:e.button},i.remove=function(t){t.parentNode&&t.parentNode.removeChild(t);};var p=function(e){function i(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0;}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.isLoaded=function(){return this.loaded},i.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,i=this.requestors;e<i.length;e+=1){var o=i[e],r=o.ids,a=o.callback;this._notify(r,a);}this.requestors=[];}},i.prototype.getImage=function(t){return this.images[t]},i.prototype.addImage=function(t,e){this._validate(t,e)&&(this.images[t]=e);},i.prototype._validate=function(e,i){var o=!0;return this._validateStretch(i.stretchX,i.data&&i.data.width)||(this.fire(new t.ErrorEvent(new Error('Image \"'+e+'\" has invalid \"stretchX\" value'))),o=!1),this._validateStretch(i.stretchY,i.data&&i.data.height)||(this.fire(new t.ErrorEvent(new Error('Image \"'+e+'\" has invalid \"stretchY\" value'))),o=!1),this._validateContent(i.content,i)||(this.fire(new t.ErrorEvent(new Error('Image \"'+e+'\" has invalid \"content\" value'))),o=!1),o},i.prototype._validateStretch=function(t,e){if(!t)return !0;for(var i=0,o=0,r=t;o<r.length;o+=1){var a=r[o];if(a[0]<i||a[1]<a[0]||e<a[1])return !1;i=a[1];}return !0},i.prototype._validateContent=function(t,e){return !t||4===t.length&&(!(t[0]<0||e.data.width<t[0])&&(!(t[1]<0||e.data.height<t[1])&&(!(t[2]<0||e.data.width<t[2])&&(!(t[3]<0||e.data.height<t[3])&&(!(t[2]<t[0])&&!(t[3]<t[1]))))))},i.prototype.updateImage=function(t,e){var i=this.images[t];e.version=i.version+1,this.images[t]=e,this.updatedImages[t]=!0;},i.prototype.removeImage=function(t){var e=this.images[t];delete this.images[t],delete this.patterns[t],e.userImage&&e.userImage.onRemove&&e.userImage.onRemove();},i.prototype.listImages=function(){return Object.keys(this.images)},i.prototype.getImages=function(t,e){var i=!0;if(!this.isLoaded())for(var o=0,r=t;o<r.length;o+=1){var a=r[o];this.images[a]||(i=!1);}this.isLoaded()||i?this._notify(t,e):this.requestors.push({ids:t,callback:e});},i.prototype._notify=function(e,i){for(var o={},r=0,a=e;r<a.length;r+=1){var n=a[r];this.images[n]||this.fire(new t.Event(\"styleimagemissing\",{id:n}));var s=this.images[n];s?o[n]={data:s.data.clone(),pixelRatio:s.pixelRatio,sdf:s.sdf,version:s.version,stretchX:s.stretchX,stretchY:s.stretchY,content:s.content,hasRenderCallback:Boolean(s.userImage&&s.userImage.render)}:t.warnOnce('Image \"'+n+'\" could not be loaded. Please make sure you have added the image with map.addImage() or a \"sprite\" property in your style. You can provide missing images by listening for the \"styleimagemissing\" map event.');}i(null,o);},i.prototype.getPixelSize=function(){var t=this.atlasImage;return {width:t.width,height:t.height}},i.prototype.getPattern=function(e){var i=this.patterns[e],o=this.getImage(e);if(!o)return null;if(i&&i.position.version===o.version)return i.position;if(i)i.position.version=o.version;else{var r={w:o.data.width+2,h:o.data.height+2,x:0,y:0},a=new t.ImagePosition(r,o);this.patterns[e]={bin:r,position:a};}return this._updatePatternAtlas(),this.patterns[e].position},i.prototype.bind=function(e){var i=e.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new t.Texture(e,this.atlasImage,i.RGBA),this.atlasTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE);},i.prototype._updatePatternAtlas=function(){var e=[];for(var i in this.patterns)e.push(this.patterns[i].bin);var o=t.potpack(e),r=o.w,a=o.h,n=this.atlasImage;for(var s in n.resize({width:r||1,height:a||1}),this.patterns){var l=this.patterns[s].bin,c=l.x+1,u=l.y+1,h=this.images[s].data,p=h.width,d=h.height;t.RGBAImage.copy(h,n,{x:0,y:0},{x:c,y:u},{width:p,height:d}),t.RGBAImage.copy(h,n,{x:0,y:d-1},{x:c,y:u-1},{width:p,height:1}),t.RGBAImage.copy(h,n,{x:0,y:0},{x:c,y:u+d},{width:p,height:1}),t.RGBAImage.copy(h,n,{x:p-1,y:0},{x:c-1,y:u},{width:1,height:d}),t.RGBAImage.copy(h,n,{x:0,y:0},{x:c+p,y:u},{width:1,height:d});}this.dirty=!0;},i.prototype.beginFrame=function(){this.callbackDispatchedThisFrame={};},i.prototype.dispatchRenderCallbacks=function(t){for(var e=0,i=t;e<i.length;e+=1){var o=i[e];if(!this.callbackDispatchedThisFrame[o]){this.callbackDispatchedThisFrame[o]=!0;var r=this.images[o];h(r)&&this.updateImage(o,r);}}},i}(t.Evented);var d=m,_=m,f=1e20;function m(t,e,i,o,r,a){this.fontSize=t||24,this.buffer=void 0===e?3:e,this.cutoff=o||.25,this.fontFamily=r||\"sans-serif\",this.fontWeight=a||\"normal\",this.radius=i||8;var n=this.size=this.fontSize+2*this.buffer;this.canvas=document.createElement(\"canvas\"),this.canvas.width=this.canvas.height=n,this.ctx=this.canvas.getContext(\"2d\"),this.ctx.font=this.fontWeight+\" \"+this.fontSize+\"px \"+this.fontFamily,this.ctx.textBaseline=\"middle\",this.ctx.fillStyle=\"black\",this.gridOuter=new Float64Array(n*n),this.gridInner=new Float64Array(n*n),this.f=new Float64Array(n),this.d=new Float64Array(n),this.z=new Float64Array(n+1),this.v=new Int16Array(n),this.middle=Math.round(n/2*(navigator.userAgent.indexOf(\"Gecko/\")>=0?1.2:1));}function g(t,e,i,o,r,a,n){for(var s=0;s<e;s++){for(var l=0;l<i;l++)o[l]=t[l*e+s];for(v(o,r,a,n,i),l=0;l<i;l++)t[l*e+s]=r[l];}for(l=0;l<i;l++){for(s=0;s<e;s++)o[s]=t[l*e+s];for(v(o,r,a,n,e),s=0;s<e;s++)t[l*e+s]=Math.sqrt(r[s]);}}function v(t,e,i,o,r){i[0]=0,o[0]=-f,o[1]=+f;for(var a=1,n=0;a<r;a++){for(var s=(t[a]+a*a-(t[i[n]]+i[n]*i[n]))/(2*a-2*i[n]);s<=o[n];)n--,s=(t[a]+a*a-(t[i[n]]+i[n]*i[n]))/(2*a-2*i[n]);i[++n]=a,o[n]=s,o[n+1]=+f;}for(a=0,n=0;a<r;a++){for(;o[n+1]<a;)n++;e[a]=(a-i[n])*(a-i[n])+t[i[n]];}}m.prototype.draw=function(t){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(t,this.buffer,this.middle);for(var e=this.ctx.getImageData(0,0,this.size,this.size),i=new Uint8ClampedArray(this.size*this.size),o=0;o<this.size*this.size;o++){var r=e.data[4*o+3]/255;this.gridOuter[o]=1===r?0:0===r?f:Math.pow(Math.max(0,.5-r),2),this.gridInner[o]=1===r?f:0===r?0:Math.pow(Math.max(0,r-.5),2);}for(g(this.gridOuter,this.size,this.size,this.f,this.d,this.v,this.z),g(this.gridInner,this.size,this.size,this.f,this.d,this.v,this.z),o=0;o<this.size*this.size;o++){var a=this.gridOuter[o]-this.gridInner[o];i[o]=Math.max(0,Math.min(255,Math.round(255-255*(a/this.radius+this.cutoff))));}return i},d.default=_;var y=function(t,e){this.requestManager=t,this.localIdeographFontFamily=e,this.entries={};};y.prototype.setURL=function(t){this.url=t;},y.prototype.getGlyphs=function(e,i){var o=this,r=[];for(var a in e)for(var n=0,s=e[a];n<s.length;n+=1){var l=s[n];r.push({stack:a,id:l});}t.asyncAll(r,(function(t,e){var i=t.stack,r=t.id,a=o.entries[i];a||(a=o.entries[i]={glyphs:{},requests:{}});var n=a.glyphs[r];if(void 0===n){if(n=o._tinySDF(a,i,r))return a.glyphs[r]=n,void e(null,{stack:i,id:r,glyph:n});var s=Math.floor(r/256);if(256*s>65535)e(new Error(\"glyphs > 65535 not supported\"));else{var l=a.requests[s];l||(l=a.requests[s]=[],y.loadGlyphRange(i,s,o.url,o.requestManager,(function(t,e){if(e)for(var i in e)o._doesCharSupportLocalGlyph(+i)||(a.glyphs[+i]=e[+i]);for(var r=0,n=l;r<n.length;r+=1){(0,n[r])(t,e);}delete a.requests[s];}))),l.push((function(t,o){t?e(t):o&&e(null,{stack:i,id:r,glyph:o[r]||null});}));}}else e(null,{stack:i,id:r,glyph:n});}),(function(t,e){if(t)i(t);else if(e){for(var o={},r=0,a=e;r<a.length;r+=1){var n=a[r],s=n.stack,l=n.id,c=n.glyph;(o[s]||(o[s]={}))[l]=c&&{id:c.id,bitmap:c.bitmap.clone(),metrics:c.metrics};}i(null,o);}}));},y.prototype._doesCharSupportLocalGlyph=function(e){return !!this.localIdeographFontFamily&&(t.isChar[\"CJK Unified Ideographs\"](e)||t.isChar[\"Hangul Syllables\"](e)||t.isChar.Hiragana(e)||t.isChar.Katakana(e))},y.prototype._tinySDF=function(e,i,o){var r=this.localIdeographFontFamily;if(r&&this._doesCharSupportLocalGlyph(o)){var a=e.tinySDF;if(!a){var n=\"400\";/bold/i.test(i)?n=\"900\":/medium/i.test(i)?n=\"500\":/light/i.test(i)&&(n=\"200\"),a=e.tinySDF=new y.TinySDF(24,3,8,.25,r,n);}return {id:o,bitmap:new t.AlphaImage({width:30,height:30},a.draw(String.fromCharCode(o))),metrics:{width:24,height:24,left:0,top:-8,advance:24}}}},y.loadGlyphRange=function(e,i,o,r,a){var n=256*i,s=n+255,l=r.transformRequest(r.normalizeGlyphsURL(o).replace(\"{fontstack}\",e).replace(\"{range}\",n+\"-\"+s),t.ResourceType.Glyphs);t.getArrayBuffer(l,(function(e,i){if(e)a(e);else if(i){for(var o={},r=0,n=t.parseGlyphPBF(i);r<n.length;r+=1){var s=n[r];o[s.id]=s;}a(null,o);}}));},y.TinySDF=d;var x=function(){this.specification=t.styleSpec.light.position;};x.prototype.possiblyEvaluate=function(e,i){return t.sphericalToCartesian(e.expression.evaluate(i))},x.prototype.interpolate=function(e,i,o){return {x:t.number(e.x,i.x,o),y:t.number(e.y,i.y,o),z:t.number(e.z,i.z,o)}};var b=new t.Properties({anchor:new t.DataConstantProperty(t.styleSpec.light.anchor),position:new x,color:new t.DataConstantProperty(t.styleSpec.light.color),intensity:new t.DataConstantProperty(t.styleSpec.light.intensity)}),w=function(e){function i(i){e.call(this),this._transitionable=new t.Transitionable(b),this.setLight(i),this._transitioning=this._transitionable.untransitioned();}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.getLight=function(){return this._transitionable.serialize()},i.prototype.setLight=function(e,i){if(void 0===i&&(i={}),!this._validate(t.validateLight,e,i))for(var o in e){var r=e[o];t.endsWith(o,\"-transition\")?this._transitionable.setTransition(o.slice(0,-\"-transition\".length),r):this._transitionable.setValue(o,r);}},i.prototype.updateTransitions=function(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning);},i.prototype.hasTransition=function(){return this._transitioning.hasTransition()},i.prototype.recalculate=function(t){this.properties=this._transitioning.possiblyEvaluate(t);},i.prototype._validate=function(e,i,o){return (!o||!1!==o.validate)&&t.emitValidationErrors(this,e.call(t.validateStyle,t.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:t.styleSpec})))},i}(t.Evented),E=function(t,e){this.width=t,this.height=e,this.nextRow=0,this.bytes=4,this.data=new Uint8Array(this.width*this.height*this.bytes),this.positions={};};E.prototype.getDash=function(t,e){var i=t.join(\",\")+String(e);return this.positions[i]||(this.positions[i]=this.addDash(t,e)),this.positions[i]},E.prototype.addDash=function(e,i){var o=i?7:0,r=2*o+1;if(this.nextRow+r>this.height)return t.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,n=0;n<e.length;n++)a+=e[n];for(var s=this.width/a,l=s/2,c=e.length%2==1,u=-o;u<=o;u++)for(var h=this.nextRow+o+u,p=this.width*h,d=c?-e[e.length-1]:0,_=e[0],f=1,m=0;m<this.width;m++){for(;_<m/s;)d=_,_+=e[f],c&&f===e.length-1&&(_+=e[0]),f++;var g=Math.abs(m-d*s),v=Math.abs(m-_*s),y=Math.min(g,v),x=f%2==1,b=void 0;if(i){var w=o?u/o*(l+1):0;if(x){var E=l-Math.abs(w);b=Math.sqrt(y*y+E*E);}else b=l-Math.sqrt(y*y+w*w);}else b=(x?1:-1)*y;this.data[3+4*(p+m)]=Math.max(0,Math.min(255,b+128));}var T={y:(this.nextRow+o+.5)/this.height,height:2*o/this.height,width:a};return this.nextRow+=r,this.dirty=!0,T},E.prototype.bind=function(t){var e=t.gl;this.texture?(e.bindTexture(e.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,e.texSubImage2D(e.TEXTURE_2D,0,0,0,this.width,this.height,e.RGBA,e.UNSIGNED_BYTE,this.data))):(this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,this.width,this.height,0,e.RGBA,e.UNSIGNED_BYTE,this.data));};var T=function e(i,o){this.workerPool=i,this.actors=[],this.currentActor=0,this.id=t.uniqueId();for(var r=this.workerPool.acquire(this.id),a=0;a<r.length;a++){var n=r[a],s=new e.Actor(n,o,this.id);s.name=\"Worker \"+a,this.actors.push(s);}};function I(e,i,o){var r=function(r,a){if(r)return o(r);if(a){var n=t.pick(t.extend(a,e),[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"mapbox_logo\",\"bounds\",\"scheme\",\"tileSize\",\"encoding\"]);a.vector_layers&&(n.vectorLayers=a.vector_layers,n.vectorLayerIds=n.vectorLayers.map((function(t){return t.id}))),e.url&&(n.tiles=i.canonicalizeTileset(n,e.url)),o(null,n);}};return e.url?t.getJSON(i.transformRequest(i.normalizeSourceURL(e.url),t.ResourceType.Source),r):t.browser.frame((function(){return r(null,e)}))}T.prototype.broadcast=function(e,i,o){o=o||function(){},t.asyncAll(this.actors,(function(t,o){t.send(e,i,o);}),o);},T.prototype.getActor=function(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]},T.prototype.remove=function(){this.actors.forEach((function(t){t.remove();})),this.actors=[],this.workerPool.release(this.id);},T.Actor=t.Actor;var C=function(e,i,o){this.bounds=t.LngLatBounds.convert(this.validateBounds(e)),this.minzoom=i||0,this.maxzoom=o||24;};C.prototype.validateBounds=function(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]},C.prototype.contains=function(e){var i=Math.pow(2,e.z),o=Math.floor(t.mercatorXfromLng(this.bounds.getWest())*i),r=Math.floor(t.mercatorYfromLat(this.bounds.getNorth())*i),a=Math.ceil(t.mercatorXfromLng(this.bounds.getEast())*i),n=Math.ceil(t.mercatorYfromLat(this.bounds.getSouth())*i);return e.x>=o&&e.x<a&&e.y>=r&&e.y<n};var S=function(e){function i(i,o,r,a){if(e.call(this),this.id=i,this.dispatcher=r,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,t.extend(this,t.pick(o,[\"url\",\"scheme\",\"tileSize\"])),this._options=t.extend({type:\"vector\"},o),this._collectResourceTiming=o.collectResourceTiming,512!==this.tileSize)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(a);}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.load=function(){var e=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=I(this._options,this.map._requestManager,(function(i,o){e._tileJSONRequest=null,e._loaded=!0,i?e.fire(new t.ErrorEvent(i)):o&&(t.extend(e,o),o.bounds&&(e.tileBounds=new C(o.bounds,e.minzoom,e.maxzoom)),t.postTurnstileEvent(o.tiles,e.map._requestManager._customAccessToken),t.postMapLoadEvent(o.tiles,e.map._getMapId(),e.map._requestManager._skuToken,e.map._requestManager._customAccessToken),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));},i.prototype.loaded=function(){return this._loaded},i.prototype.hasTile=function(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.onRemove=function(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);},i.prototype.serialize=function(){return t.extend({},this._options)},i.prototype.loadTile=function(e,i){var o=this.map._requestManager.normalizeTileURL(e.tileID.canonical.url(this.tiles,this.scheme),this.url,null),r={request:this.map._requestManager.transformRequest(o,t.ResourceType.Tile),uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,tileSize:this.tileSize*e.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes};function a(o,r){return delete e.request,e.aborted?i(null):o&&404!==o.status?i(o):(r&&r.resourceTiming&&(e.resourceTiming=r.resourceTiming),this.map._refreshExpiredTiles&&r&&e.setExpiryData(r),e.loadVectorData(r,this.map.painter),t.cacheEntryPossiblyAdded(this.dispatcher),i(null),void(e.reloadCallback&&(this.loadTile(e,e.reloadCallback),e.reloadCallback=null)))}r.request.collectResourceTiming=this._collectResourceTiming,e.actor&&\"expired\"!==e.state?\"loading\"===e.state?e.reloadCallback=i:e.request=e.actor.send(\"reloadTile\",r,a.bind(this)):(e.actor=this.dispatcher.getActor(),e.request=e.actor.send(\"loadTile\",r,a.bind(this)));},i.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.actor&&t.actor.send(\"abortTile\",{uid:t.uid,type:this.type,source:this.id},void 0);},i.prototype.unloadTile=function(t){t.unloadVectorData(),t.clearMask(),t.actor&&t.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id},void 0);},i.prototype.hasTransition=function(){return !1},i}(t.Evented),P=function(e){function i(i,o,r,a){e.call(this),this.id=i,this.dispatcher=r,this.setEventedParent(a),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=t.extend({type:\"raster\"},o),t.extend(this,t.pick(o,[\"url\",\"scheme\",\"tileSize\"]));}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.load=function(){var e=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=I(this._options,this.map._requestManager,(function(i,o){e._tileJSONRequest=null,e._loaded=!0,i?e.fire(new t.ErrorEvent(i)):o&&(t.extend(e,o),o.bounds&&(e.tileBounds=new C(o.bounds,e.minzoom,e.maxzoom)),t.postTurnstileEvent(o.tiles),t.postMapLoadEvent(o.tiles,e.map._getMapId(),e.map._requestManager._skuToken),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));},i.prototype.loaded=function(){return this._loaded},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.onRemove=function(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);},i.prototype.serialize=function(){return t.extend({},this._options)},i.prototype.hasTile=function(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)},i.prototype.loadTile=function(e,i){var o=this,r=this.map._requestManager.normalizeTileURL(e.tileID.canonical.url(this.tiles,this.scheme),this.url,this.tileSize);e.request=t.getImage(this.map._requestManager.transformRequest(r,t.ResourceType.Tile),(function(r,a){if(delete e.request,e.aborted)e.state=\"unloaded\",i(null);else if(r)e.state=\"errored\",i(r);else if(a){o.map._refreshExpiredTiles&&e.setExpiryData(a),delete a.cacheControl,delete a.expires;var n=o.map.painter.context,s=n.gl;e.texture=o.map.painter.getTileTexture(a.width),e.texture?e.texture.update(a,{useMipmap:!0}):(e.texture=new t.Texture(n,a,s.RGBA,{useMipmap:!0}),e.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE,s.LINEAR_MIPMAP_NEAREST),n.extTextureFilterAnisotropic&&s.texParameterf(s.TEXTURE_2D,n.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,n.extTextureFilterAnisotropicMax)),e.state=\"loaded\",t.cacheEntryPossiblyAdded(o.dispatcher),i(null);}}));},i.prototype.abortTile=function(t,e){t.request&&(t.request.cancel(),delete t.request),e();},i.prototype.unloadTile=function(t,e){t.texture&&this.map.painter.saveTileTexture(t.texture),t.clearMask(),e();},i.prototype.hasTransition=function(){return !1},i}(t.Evented),z=function(e){function i(i,o,r,a){e.call(this,i,o,r,a),this.type=\"raster-dem\",this.maxzoom=22,this._options=t.extend({type:\"raster-dem\"},o),this.encoding=o.encoding||\"mapbox\";}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.serialize=function(){return {type:\"raster-dem\",url:this.url,tileSize:this.tileSize,tiles:this.tiles,bounds:this.bounds,encoding:this.encoding}},i.prototype.loadTile=function(e,i){var o=this.map._requestManager.normalizeTileURL(e.tileID.canonical.url(this.tiles,this.scheme),this.url,this.tileSize);function r(t,o){t&&(e.state=\"errored\",i(t)),o&&(e.dem=o,e.needsHillshadePrepare=!0,e.state=\"loaded\",i(null));}e.request=t.getImage(this.map._requestManager.transformRequest(o,t.ResourceType.Tile),function(o,a){if(delete e.request,e.aborted)e.state=\"unloaded\",i(null);else if(o)e.state=\"errored\",i(o);else if(a){this.map._refreshExpiredTiles&&e.setExpiryData(a),delete a.cacheControl,delete a.expires;var n=t.browser.getImageData(a,1),s={uid:e.uid,coord:e.tileID,source:this.id,rawImageData:n,encoding:this.encoding};e.actor&&\"expired\"!==e.state||(e.actor=this.dispatcher.getActor(),e.actor.send(\"loadDEMTile\",s,r.bind(this)));}}.bind(this)),e.neighboringTiles=this._getNeighboringTiles(e.tileID);},i.prototype._getNeighboringTiles=function(e){var i=e.canonical,o=Math.pow(2,i.z),r=(i.x-1+o)%o,a=0===i.x?e.wrap-1:e.wrap,n=(i.x+1+o)%o,s=i.x+1===o?e.wrap+1:e.wrap,l={};return l[new t.OverscaledTileID(e.overscaledZ,a,i.z,r,i.y).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,i.z,n,i.y).key]={backfilled:!1},i.y>0&&(l[new t.OverscaledTileID(e.overscaledZ,a,i.z,r,i.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,i.z,n,i.y-1).key]={backfilled:!1}),i.y+1<o&&(l[new t.OverscaledTileID(e.overscaledZ,a,i.z,r,i.y+1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,i.z,i.x,i.y+1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,i.z,n,i.y+1).key]={backfilled:!1}),l},i.prototype.unloadTile=function(t){t.demTexture&&this.map.painter.saveTileTexture(t.demTexture),t.fbo&&(t.fbo.destroy(),delete t.fbo),t.dem&&delete t.dem,delete t.neighboringTiles,t.clearMask(),t.state=\"unloaded\",t.actor&&t.actor.send(\"removeDEMTile\",{uid:t.uid,source:this.id});},i}(P),L=function(e){function i(i,o,r,a){e.call(this),this.id=i,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._loaded=!1,this.actor=r.getActor(),this.setEventedParent(a),this._data=o.data,this._options=t.extend({},o),this._collectResourceTiming=o.collectResourceTiming,this._resourceTiming=[],void 0!==o.maxzoom&&(this.maxzoom=o.maxzoom),o.type&&(this.type=o.type),o.attribution&&(this.attribution=o.attribution);var n=t.EXTENT/this.tileSize;this.workerOptions=t.extend({source:this.id,cluster:o.cluster||!1,geojsonVtOptions:{buffer:(void 0!==o.buffer?o.buffer:128)*n,tolerance:(void 0!==o.tolerance?o.tolerance:.375)*n,extent:t.EXTENT,maxZoom:this.maxzoom,lineMetrics:o.lineMetrics||!1,generateId:o.generateId||!1},superclusterOptions:{maxZoom:void 0!==o.clusterMaxZoom?Math.min(o.clusterMaxZoom,this.maxzoom-1):this.maxzoom-1,extent:t.EXTENT,radius:(o.clusterRadius||50)*n,log:!1,generateId:o.generateId||!1},clusterProperties:o.clusterProperties},o.workerOptions);}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.load=function(){var e=this;this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData((function(i){if(i)e.fire(new t.ErrorEvent(i));else{var o={dataType:\"source\",sourceDataType:\"metadata\"};e._collectResourceTiming&&e._resourceTiming&&e._resourceTiming.length>0&&(o.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event(\"data\",o));}}));},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.setData=function(e){var i=this;return this._data=e,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData((function(e){if(e)i.fire(new t.ErrorEvent(e));else{var o={dataType:\"source\",sourceDataType:\"content\"};i._collectResourceTiming&&i._resourceTiming&&i._resourceTiming.length>0&&(o.resourceTiming=i._resourceTiming,i._resourceTiming=[]),i.fire(new t.Event(\"data\",o));}})),this},i.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:t,source:this.id},e),this},i.prototype.getClusterChildren=function(t,e){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:t,source:this.id},e),this},i.prototype.getClusterLeaves=function(t,e,i,o){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:t,limit:e,offset:i},o),this},i.prototype._updateWorkerData=function(e){var i=this;this._loaded=!1;var o=t.extend({},this.workerOptions),r=this._data;\"string\"==typeof r?(o.request=this.map._requestManager.transformRequest(t.browser.resolveURL(r),t.ResourceType.Source),o.request.collectResourceTiming=this._collectResourceTiming):o.data=JSON.stringify(r),this.actor.send(this.type+\".loadData\",o,(function(t,r){i._removed||r&&r.abandoned||(i._loaded=!0,r&&r.resourceTiming&&r.resourceTiming[i.id]&&(i._resourceTiming=r.resourceTiming[i.id].slice(0)),i.actor.send(i.type+\".coalesce\",{source:o.source},null),e(t));}));},i.prototype.loaded=function(){return this._loaded},i.prototype.loadTile=function(e,i){var o=this,r=e.actor?\"reloadTile\":\"loadTile\";e.actor=this.actor;var a={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes};e.request=this.actor.send(r,a,(function(t,a){return delete e.request,e.unloadVectorData(),e.aborted?i(null):t?i(t):(e.loadVectorData(a,o.map.painter,\"reloadTile\"===r),i(null))}));},i.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0;},i.prototype.unloadTile=function(t){t.unloadVectorData(),t.clearMask(),this.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id});},i.prototype.onRemove=function(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id});},i.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},i.prototype.hasTransition=function(){return !1},i}(t.Evented),M=function(e){function i(t,i,o,r){e.call(this),this.id=t,this.dispatcher=o,this.coordinates=i.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(r),this.options=i;}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.load=function(e,i){var o=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),(function(r,a){o._loaded=!0,r?o.fire(new t.ErrorEvent(r)):a&&(o.image=a,e&&(o.coordinates=e),i&&i(),o._finishLoading());}));},i.prototype.loaded=function(){return this._loaded},i.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,(function(){e.texture=null;})),this):this},i.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})));},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.setCoordinates=function(e){var i=this;this.coordinates=e;var o=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var i=1/0,o=1/0,r=-1/0,a=-1/0,n=0,s=e;n<s.length;n+=1){var l=s[n];i=Math.min(i,l.x),o=Math.min(o,l.y),r=Math.max(r,l.x),a=Math.max(a,l.y);}var c=r-i,u=a-o,h=Math.max(c,u),p=Math.max(0,Math.floor(-Math.log(h)/Math.LN2)),d=Math.pow(2,p);return new t.CanonicalTileID(p,Math.floor((i+r)/2*d),Math.floor((o+a)/2*d))}(o),this.minzoom=this.maxzoom=this.tileID.z;var r=o.map((function(t){return i.tileID.getTilePoint(t)._round()}));return this._boundsArray=new t.StructArrayLayout4i8,this._boundsArray.emplaceBack(r[0].x,r[0].y,0,0),this._boundsArray.emplaceBack(r[1].x,r[1].y,t.EXTENT,0),this._boundsArray.emplaceBack(r[3].x,r[3].y,0,t.EXTENT),this._boundsArray.emplaceBack(r[2].x,r[2].y,t.EXTENT,t.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this},i.prototype.prepare=function(){if(0!==Object.keys(this.tiles).length&&this.image){var e=this.map.painter.context,i=e.gl;for(var o in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,t.rasterBoundsAttributes.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new t.Texture(e,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE)),this.tiles){var r=this.tiles[o];\"loaded\"!==r.state&&(r.state=\"loaded\",r.texture=this.texture);}}},i.prototype.loadTile=function(t,e){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={},e(null)):(t.state=\"errored\",e(null));},i.prototype.serialize=function(){return {type:\"image\",url:this.options.url,coordinates:this.coordinates}},i.prototype.hasTransition=function(){return !1},i}(t.Evented);var D=function(e){function i(t,i,o,r){e.call(this,t,i,o,r),this.roundZoom=!0,this.type=\"video\",this.options=i;}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.load=function(){var e=this;this._loaded=!1;var i=this.options;this.urls=[];for(var o=0,r=i.urls;o<r.length;o+=1){var a=r[o];this.urls.push(this.map._requestManager.transformRequest(a,t.ResourceType.Source).url);}t.getVideo(this.urls,(function(i,o){e._loaded=!0,i?e.fire(new t.ErrorEvent(i)):o&&(e.video=o,e.video.loop=!0,e.video.addEventListener(\"playing\",(function(){e.map.triggerRepaint();})),e.map&&e.video.play(),e._finishLoading());}));},i.prototype.pause=function(){this.video&&this.video.pause();},i.prototype.play=function(){this.video&&this.video.play();},i.prototype.seek=function(e){if(this.video){var i=this.video.seekable;e<i.start(0)||e>i.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+this.id,null,\"Playback for this video can be set only between the \"+i.start(0)+\" and \"+i.end(0)+\"-second mark.\"))):this.video.currentTime=e;}},i.prototype.getVideo=function(){return this.video},i.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));},i.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,i=e.gl;for(var o in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,t.rasterBoundsAttributes.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE)),this.tiles){var r=this.tiles[o];\"loaded\"!==r.state&&(r.state=\"loaded\",r.texture=this.texture);}}},i.prototype.serialize=function(){return {type:\"video\",urls:this.urls,coordinates:this.coordinates}},i.prototype.hasTransition=function(){return this.video&&!this.video.paused},i}(M),A=function(e){function i(i,o,r,a){e.call(this,i,o,r,a),o.coordinates?Array.isArray(o.coordinates)&&4===o.coordinates.length&&!o.coordinates.some((function(t){return !Array.isArray(t)||2!==t.length||t.some((function(t){return \"number\"!=typeof t}))}))||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+i,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+i,null,'missing required property \"coordinates\"'))),o.animate&&\"boolean\"!=typeof o.animate&&this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+i,null,'optional \"animate\" property must be a boolean value'))),o.canvas?\"string\"==typeof o.canvas||o.canvas instanceof t.window.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+i,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+i,null,'missing required property \"canvas\"'))),this.options=o,this.animate=void 0===o.animate||o.animate;}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());},i.prototype.getCanvas=function(){return this.canvas},i.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play();},i.prototype.onRemove=function(){this.pause();},i.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var i=this.map.painter.context,o=i.gl;for(var r in this.boundsBuffer||(this.boundsBuffer=i.createVertexBuffer(this._boundsArray,t.rasterBoundsAttributes.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(i,this.canvas,o.RGBA,{premultiply:!0}),this.tiles){var a=this.tiles[r];\"loaded\"!==a.state&&(a.state=\"loaded\",a.texture=this.texture);}}},i.prototype.serialize=function(){return {type:\"canvas\",coordinates:this.coordinates}},i.prototype.hasTransition=function(){return this._playing},i.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];t<e.length;t+=1){var i=e[t];if(isNaN(i)||i<=0)return !0}return !1},i}(M),R={vector:S,raster:P,\"raster-dem\":z,geojson:L,video:D,image:M,canvas:A},k=function(e,i,o,r){var a=new R[i.type](e,i,o,r);if(a.id!==e)throw new Error(\"Expected Source id to be \"+e+\" instead of \"+a.id);return t.bindAll([\"load\",\"abort\",\"unload\",\"serialize\",\"prepare\"],a),a};function B(e,i){var o=t.identity([]);return t.translate(o,o,[1,1,0]),t.scale(o,o,[.5*e.width,.5*e.height,1]),t.multiply(o,o,e.calculatePosMatrix(i.toUnwrapped()))}function O(t,e,i,o,r){var a=function(t,e,i){if(t)for(var o=0,r=t;o<r.length;o+=1){var a=e[r[o]];if(a&&a.source===i&&\"fill-extrusion\"===a.type)return !0}else for(var n in e){var s=e[n];if(s.source===i&&\"fill-extrusion\"===s.type)return !0}return !1}(o&&o.layers,e,t.id),n=r.maxPitchScaleFactor(),s=t.tilesIn(i,n,a);s.sort(F);for(var l=[],c=0,u=s;c<u.length;c+=1){var h=u[c];l.push({wrappedTileID:h.tileID.wrapped().key,queryResults:h.tile.queryRenderedFeatures(e,t._state,h.queryGeometry,h.cameraQueryGeometry,h.scale,o,r,n,B(t.transform,h.tileID))});}var p=function(t){for(var e={},i={},o=0,r=t;o<r.length;o+=1){var a=r[o],n=a.queryResults,s=a.wrappedTileID,l=i[s]=i[s]||{};for(var c in n)for(var u=n[c],h=l[c]=l[c]||{},p=e[c]=e[c]||[],d=0,_=u;d<_.length;d+=1){var f=_[d];h[f.featureIndex]||(h[f.featureIndex]=!0,p.push(f));}}return e}(l);for(var d in p)p[d].forEach((function(e){var i=e.feature,o=t.getFeatureState(i.layer[\"source-layer\"],i.id);i.source=i.layer.source,i.layer[\"source-layer\"]&&(i.sourceLayer=i.layer[\"source-layer\"]),i.state=o;}));return p}function F(t,e){var i=t.tileID,o=e.tileID;return i.overscaledZ-o.overscaledZ||i.canonical.y-o.canonical.y||i.wrap-o.wrap||i.canonical.x-o.canonical.x}var U=function(t,e){this.max=t,this.onRemove=e,this.reset();};U.prototype.reset=function(){for(var t in this.data)for(var e=0,i=this.data[t];e<i.length;e+=1){var o=i[e];o.timeout&&clearTimeout(o.timeout),this.onRemove(o.value);}return this.data={},this.order=[],this},U.prototype.add=function(t,e,i){var o=this,r=t.wrapped().key;void 0===this.data[r]&&(this.data[r]=[]);var a={value:e,timeout:void 0};if(void 0!==i&&(a.timeout=setTimeout((function(){o.remove(t,a);}),i)),this.data[r].push(a),this.order.push(r),this.order.length>this.max){var n=this._getAndRemoveByKey(this.order[0]);n&&this.onRemove(n);}return this},U.prototype.has=function(t){return t.wrapped().key in this.data},U.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},U.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},U.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},U.prototype.remove=function(t,e){if(!this.has(t))return this;var i=t.wrapped().key,o=void 0===e?0:this.data[i].indexOf(e),r=this.data[i][o];return this.data[i].splice(o,1),r.timeout&&clearTimeout(r.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(r.value),this.order.splice(this.order.indexOf(i),1),this},U.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e);}return this},U.prototype.filter=function(t){var e=[];for(var i in this.data)for(var o=0,r=this.data[i];o<r.length;o+=1){var a=r[o];t(a.value)||e.push(a);}for(var n=0,s=e;n<s.length;n+=1){var l=s[n];this.remove(l.value.tileID,l);}};var N=function(t,e,i){this.context=t;var o=t.gl;this.buffer=o.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?o.DYNAMIC_DRAW:o.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;};N.prototype.bind=function(){this.context.bindElementBuffer.set(this.buffer);},N.prototype.updateData=function(t){var e=this.context.gl;this.context.unbindVAO(),this.bind(),e.bufferSubData(e.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer);},N.prototype.destroy=function(){var t=this.context.gl;this.buffer&&(t.deleteBuffer(this.buffer),delete this.buffer);};var Z={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"},q=function(t,e,i,o){this.length=e.length,this.attributes=i,this.itemSize=e.bytesPerElement,this.dynamicDraw=o,this.context=t;var r=t.gl;this.buffer=r.createBuffer(),t.bindVertexBuffer.set(this.buffer),r.bufferData(r.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;};q.prototype.bind=function(){this.context.bindVertexBuffer.set(this.buffer);},q.prototype.updateData=function(t){var e=this.context.gl;this.bind(),e.bufferSubData(e.ARRAY_BUFFER,0,t.arrayBuffer);},q.prototype.enableAttributes=function(t,e){for(var i=0;i<this.attributes.length;i++){var o=this.attributes[i],r=e.attributes[o.name];void 0!==r&&t.enableVertexAttribArray(r);}},q.prototype.setVertexAttribPointers=function(t,e,i){for(var o=0;o<this.attributes.length;o++){var r=this.attributes[o],a=e.attributes[r.name];void 0!==a&&t.vertexAttribPointer(a,r.components,t[Z[r.type]],!1,this.itemSize,r.offset+this.itemSize*(i||0));}},q.prototype.destroy=function(){var t=this.context.gl;this.buffer&&(t.deleteBuffer(this.buffer),delete this.buffer);};var j=function(t){this.gl=t.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1;};j.prototype.get=function(){return this.current},j.prototype.set=function(t){},j.prototype.getDefault=function(){return this.default},j.prototype.setDefault=function(){this.set(this.default);};var V=function(e){function i(){e.apply(this,arguments);}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.getDefault=function(){return t.Color.transparent},i.prototype.set=function(t){var e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.clearColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1);},i}(j),G=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return 1},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.clearDepth(t),this.current=t,this.dirty=!1);},e}(j),W=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return 0},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.clearStencil(t),this.current=t,this.dirty=!1);},e}(j),X=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return [!0,!0,!0,!0]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.colorMask(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1);},e}(j),H=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return !0},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.depthMask(t),this.current=t,this.dirty=!1);},e}(j),K=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return 255},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.stencilMask(t),this.current=t,this.dirty=!1);},e}(j),Y=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return {func:this.gl.ALWAYS,ref:0,mask:255}},e.prototype.set=function(t){var e=this.current;(t.func!==e.func||t.ref!==e.ref||t.mask!==e.mask||this.dirty)&&(this.gl.stencilFunc(t.func,t.ref,t.mask),this.current=t,this.dirty=!1);},e}(j),J=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){var t=this.gl;return [t.KEEP,t.KEEP,t.KEEP]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||this.dirty)&&(this.gl.stencilOp(t[0],t[1],t[2]),this.current=t,this.dirty=!1);},e}(j),Q=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.STENCIL_TEST):e.disable(e.STENCIL_TEST),this.current=t,this.dirty=!1;}},e}(j),$=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return [0,1]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.depthRange(t[0],t[1]),this.current=t,this.dirty=!1);},e}(j),tt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),this.current=t,this.dirty=!1;}},e}(j),et=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return this.gl.LESS},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.depthFunc(t),this.current=t,this.dirty=!1);},e}(j),it=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.BLEND):e.disable(e.BLEND),this.current=t,this.dirty=!1;}},e}(j),ot=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){var t=this.gl;return [t.ONE,t.ZERO]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.blendFunc(t[0],t[1]),this.current=t,this.dirty=!1);},e}(j),rt=function(e){function i(){e.apply(this,arguments);}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.getDefault=function(){return t.Color.transparent},i.prototype.set=function(t){var e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.blendColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1);},i}(j),at=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return this.gl.FUNC_ADD},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.blendEquation(t),this.current=t,this.dirty=!1);},e}(j),nt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.CULL_FACE):e.disable(e.CULL_FACE),this.current=t,this.dirty=!1;}},e}(j),st=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return this.gl.BACK},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.cullFace(t),this.current=t,this.dirty=!1);},e}(j),lt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return this.gl.CCW},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.frontFace(t),this.current=t,this.dirty=!1);},e}(j),ct=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.useProgram(t),this.current=t,this.dirty=!1);},e}(j),ut=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return this.gl.TEXTURE0},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.activeTexture(t),this.current=t,this.dirty=!1);},e}(j),ht=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){var t=this.gl;return [0,0,t.drawingBufferWidth,t.drawingBufferHeight]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.viewport(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1);},e}(j),pt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,t),this.current=t,this.dirty=!1;}},e}(j),dt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindRenderbuffer(e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}},e}(j),_t=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindTexture(e.TEXTURE_2D,t),this.current=t,this.dirty=!1;}},e}(j),ft=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindBuffer(e.ARRAY_BUFFER,t),this.current=t,this.dirty=!1;}},e}(j),mt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){var e=this.gl;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t),this.current=t,this.dirty=!1;},e}(j),gt=function(t){function e(e){t.call(this,e),this.vao=e.extVertexArrayObject;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){this.vao&&(t!==this.current||this.dirty)&&(this.vao.bindVertexArrayOES(t),this.current=t,this.dirty=!1);},e}(j),vt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return 4},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.pixelStorei(e.UNPACK_ALIGNMENT,t),this.current=t,this.dirty=!1;}},e}(j),yt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t),this.current=t,this.dirty=!1;}},e}(j),xt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t),this.current=t,this.dirty=!1;}},e}(j),bt=function(t){function e(e,i){t.call(this,e),this.context=e,this.parent=i;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDefault=function(){return null},e}(j),wt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setDirty=function(){this.dirty=!0;},e.prototype.set=function(t){if(t!==this.current||this.dirty){this.context.bindFramebuffer.set(this.parent);var e=this.gl;e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0),this.current=t,this.dirty=!1;}},e}(bt),Et=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){if(t!==this.current||this.dirty){this.context.bindFramebuffer.set(this.parent);var e=this.gl;e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}},e}(bt),Tt=function(t,e,i){this.context=t,this.width=e,this.height=i;var o=t.gl,r=this.framebuffer=o.createFramebuffer();this.colorAttachment=new wt(t,r),this.depthAttachment=new Et(t,r);};Tt.prototype.destroy=function(){var t=this.context.gl,e=this.colorAttachment.get();e&&t.deleteTexture(e);var i=this.depthAttachment.get();i&&t.deleteRenderbuffer(i),t.deleteFramebuffer(this.framebuffer);};var It=function(t,e,i){this.func=t,this.mask=e,this.range=i;};It.ReadOnly=!1,It.ReadWrite=!0,It.disabled=new It(519,It.ReadOnly,[0,1]);var Ct=function(t,e,i,o,r,a){this.test=t,this.ref=e,this.mask=i,this.fail=o,this.depthFail=r,this.pass=a;};Ct.disabled=new Ct({func:519,mask:0},0,0,7680,7680,7680);var St=function(t,e,i){this.blendFunction=t,this.blendColor=e,this.mask=i;};St.Replace=[1,0],St.disabled=new St(St.Replace,t.Color.transparent,[!1,!1,!1,!1]),St.unblended=new St(St.Replace,t.Color.transparent,[!0,!0,!0,!0]),St.alphaBlended=new St([1,771],t.Color.transparent,[!0,!0,!0,!0]);var Pt=function(t,e,i){this.enable=t,this.mode=e,this.frontFace=i;};Pt.disabled=new Pt(!1,1029,2305),Pt.backCCW=new Pt(!0,1029,2305);var zt=function(t){this.gl=t,this.extVertexArrayObject=this.gl.getExtension(\"OES_vertex_array_object\"),this.clearColor=new V(this),this.clearDepth=new G(this),this.clearStencil=new W(this),this.colorMask=new X(this),this.depthMask=new H(this),this.stencilMask=new K(this),this.stencilFunc=new Y(this),this.stencilOp=new J(this),this.stencilTest=new Q(this),this.depthRange=new $(this),this.depthTest=new tt(this),this.depthFunc=new et(this),this.blend=new it(this),this.blendFunc=new ot(this),this.blendColor=new rt(this),this.blendEquation=new at(this),this.cullFace=new nt(this),this.cullFaceSide=new st(this),this.frontFace=new lt(this),this.program=new ct(this),this.activeTexture=new ut(this),this.viewport=new ht(this),this.bindFramebuffer=new pt(this),this.bindRenderbuffer=new dt(this),this.bindTexture=new _t(this),this.bindVertexBuffer=new ft(this),this.bindElementBuffer=new mt(this),this.bindVertexArrayOES=this.extVertexArrayObject&&new gt(this),this.pixelStoreUnpack=new vt(this),this.pixelStoreUnpackPremultiplyAlpha=new yt(this),this.pixelStoreUnpackFlipY=new xt(this),this.extTextureFilterAnisotropic=t.getExtension(\"EXT_texture_filter_anisotropic\")||t.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||t.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.extTextureHalfFloat=t.getExtension(\"OES_texture_half_float\"),this.extTextureHalfFloat&&t.getExtension(\"OES_texture_half_float_linear\"),this.extTimerQuery=t.getExtension(\"EXT_disjoint_timer_query\");};zt.prototype.setDefault=function(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault();},zt.prototype.setDirty=function(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.extVertexArrayObject&&(this.bindVertexArrayOES.dirty=!0),this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0;},zt.prototype.createIndexBuffer=function(t,e){return new N(this,t,e)},zt.prototype.createVertexBuffer=function(t,e,i){return new q(this,t,e,i)},zt.prototype.createRenderbuffer=function(t,e,i){var o=this.gl,r=o.createRenderbuffer();return this.bindRenderbuffer.set(r),o.renderbufferStorage(o.RENDERBUFFER,t,e,i),this.bindRenderbuffer.set(null),r},zt.prototype.createFramebuffer=function(t,e){return new Tt(this,t,e)},zt.prototype.clear=function(t){var e=t.color,i=t.depth,o=this.gl,r=0;e&&(r|=o.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),void 0!==i&&(r|=o.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(i),this.depthMask.set(!0)),o.clear(r);},zt.prototype.setCullFace=function(t){!1===t.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(t.mode),this.frontFace.set(t.frontFace));},zt.prototype.setDepthMode=function(t){t.func!==this.gl.ALWAYS||t.mask?(this.depthTest.set(!0),this.depthFunc.set(t.func),this.depthMask.set(t.mask),this.depthRange.set(t.range)):this.depthTest.set(!1);},zt.prototype.setStencilMode=function(t){t.test.func!==this.gl.ALWAYS||t.mask?(this.stencilTest.set(!0),this.stencilMask.set(t.mask),this.stencilOp.set([t.fail,t.depthFail,t.pass]),this.stencilFunc.set({func:t.test.func,ref:t.ref,mask:t.test.mask})):this.stencilTest.set(!1);},zt.prototype.setColorMode=function(e){t.deepEqual(e.blendFunction,St.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(e.blendFunction),this.blendColor.set(e.blendColor)),this.colorMask.set(e.mask);},zt.prototype.unbindVAO=function(){this.extVertexArrayObject&&this.bindVertexArrayOES.set(null);};var Lt=function(e){function i(i,o,r){var a=this;e.call(this),this.id=i,this.dispatcher=r,this.on(\"data\",(function(t){\"source\"===t.dataType&&\"metadata\"===t.sourceDataType&&(a._sourceLoaded=!0),a._sourceLoaded&&!a._paused&&\"source\"===t.dataType&&\"content\"===t.sourceDataType&&(a.reload(),a.transform&&a.update(a.transform));})),this.on(\"error\",(function(){a._sourceErrored=!0;})),this._source=k(i,o,r,this),this._tiles={},this._cache=new U(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._coveredTiles={},this._state=new t.SourceFeatureState;}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.onAdd=function(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._source&&this._source.onAdd&&this._source.onAdd(t);},i.prototype.onRemove=function(t){this._source&&this._source.onRemove&&this._source.onRemove(t);},i.prototype.loaded=function(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;for(var t in this._tiles){var e=this._tiles[t];if(\"loaded\"!==e.state&&\"errored\"!==e.state)return !1}return !0},i.prototype.getSource=function(){return this._source},i.prototype.pause=function(){this._paused=!0;},i.prototype.resume=function(){if(this._paused){var t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform);}},i.prototype._loadTile=function(t,e){return this._source.loadTile(t,e)},i.prototype._unloadTile=function(t){if(this._source.unloadTile)return this._source.unloadTile(t,(function(){}))},i.prototype._abortTile=function(t){if(this._source.abortTile)return this._source.abortTile(t,(function(){}))},i.prototype.serialize=function(){return this._source.serialize()},i.prototype.prepare=function(t){for(var e in this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null),this._tiles){var i=this._tiles[e];i.upload(t),i.prepare(this.map.style.imageManager);}},i.prototype.getIds=function(){return Object.keys(this._tiles).map(Number).sort(Mt)},i.prototype.getRenderableIds=function(e){var i=this,o=[];for(var r in this._tiles)this._isIdRenderable(+r,e)&&o.push(+r);return e?o.sort((function(e,o){var r=i._tiles[e].tileID,a=i._tiles[o].tileID,n=new t.Point(r.canonical.x,r.canonical.y)._rotate(i.transform.angle),s=new t.Point(a.canonical.x,a.canonical.y)._rotate(i.transform.angle);return r.overscaledZ-a.overscaledZ||s.y-n.y||s.x-n.x})):o.sort(Mt)},i.prototype.hasRenderableParent=function(t){var e=this.findLoadedParent(t,0);return !!e&&this._isIdRenderable(e.tileID.key)},i.prototype._isIdRenderable=function(t,e){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(e||!this._tiles[t].holdingForFade())},i.prototype.reload=function(){if(this._paused)this._shouldReloadOnResume=!0;else for(var t in this._cache.reset(),this._tiles)\"errored\"!==this._tiles[t].state&&this._reloadTile(t,\"reloading\");},i.prototype._reloadTile=function(t,e){var i=this._tiles[t];i&&(\"loading\"!==i.state&&(i.state=e),this._loadTile(i,this._tileLoaded.bind(this,i,t,e)));},i.prototype._tileLoaded=function(e,i,o,r){if(r)return e.state=\"errored\",void(404!==r.status?this._source.fire(new t.ErrorEvent(r,{tile:e})):this.update(this.transform));e.timeAdded=t.browser.now(),\"expired\"===o&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),\"raster-dem\"===this.getSource().type&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),this._source.fire(new t.Event(\"data\",{dataType:\"source\",tile:e,coord:e.tileID}));},i.prototype._backfillDEM=function(t){for(var e=this.getRenderableIds(),i=0;i<e.length;i++){var o=e[i];if(t.neighboringTiles&&t.neighboringTiles[o]){var r=this.getTileByID(o);a(t,r),a(r,t);}}function a(t,e){t.needsHillshadePrepare=!0;var i=e.tileID.canonical.x-t.tileID.canonical.x,o=e.tileID.canonical.y-t.tileID.canonical.y,r=Math.pow(2,t.tileID.canonical.z),a=e.tileID.key;0===i&&0===o||Math.abs(o)>1||(Math.abs(i)>1&&(1===Math.abs(i+r)?i+=r:1===Math.abs(i-r)&&(i-=r)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,i,o),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)));}},i.prototype.getTile=function(t){return this.getTileByID(t.key)},i.prototype.getTileByID=function(t){return this._tiles[t]},i.prototype._retainLoadedChildren=function(t,e,i,o){for(var r in this._tiles){var a=this._tiles[r];if(!(o[r]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>i)){for(var n=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(n=s);}for(var l=n;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){o[n.key]=n;break}}}},i.prototype.findLoadedParent=function(t,e){for(var i=t.overscaledZ-1;i>=e;i--){var o=t.scaledTo(i);if(!o)return;var r=String(o.key),a=this._tiles[r];if(a&&a.hasData())return a;if(this._cache.has(o))return this._cache.get(o)}},i.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),i=Math.floor(5*e),o=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,i):i;this._cache.setMaxSize(o);},i.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,i=Math.round(e);if(this._prevLng=t,i){var o={};for(var r in this._tiles){var a=this._tiles[r];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+i),o[a.tileID.key]=a;}for(var n in this._tiles=o,this._timers)clearTimeout(this._timers[n]),delete this._timers[n];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l);}}},i.prototype.update=function(e){var o=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var r;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?r=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)})):(r=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(r=r.filter((function(t){return o._source.hasTile(t)})))):r=[];var a=e.coveringZoomLevel(this._source),n=Math.max(a-i.maxOverzooming,this._source.minzoom),s=Math.max(a+i.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(r,a);if(Dt(this._source.type)){for(var c={},u={},h=0,p=Object.keys(l);h<p.length;h+=1){var d=p[h],_=l[d],f=this._tiles[d];if(f&&!(f.fadeEndTime&&f.fadeEndTime<=t.browser.now())){var m=this.findLoadedParent(_,n);m&&(this._addTile(m.tileID),c[m.tileID.key]=m.tileID),u[d]=_;}}for(var g in this._retainLoadedChildren(u,a,s,l),c)l[g]||(this._coveredTiles[g]=!0,l[g]=c[g]);}for(var v in l)this._tiles[v].clearFadeHold();for(var y=0,x=t.keysDifference(this._tiles,l);y<x.length;y+=1){var b=x[y],w=this._tiles[b];w.hasSymbolBuckets&&!w.holdingForFade()?w.setHoldDuration(this.map._fadeDuration):w.hasSymbolBuckets&&!w.symbolFadeFinished()||this._removeTile(b);}}},i.prototype.releaseSymbolFadeTiles=function(){for(var t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t);},i.prototype._updateRetainedTiles=function(t,e){for(var o={},r={},a=Math.max(e-i.maxOverzooming,this._source.minzoom),n=Math.max(e+i.maxUnderzooming,this._source.minzoom),s={},l=0,c=t;l<c.length;l+=1){var u=c[l],h=this._addTile(u);o[u.key]=u,h.hasData()||e<this._source.maxzoom&&(s[u.key]=u);}this._retainLoadedChildren(s,e,n,o);for(var p=0,d=t;p<d.length;p+=1){var _=d[p],f=this._tiles[_.key];if(!f.hasData()){if(e+1>this._source.maxzoom){var m=_.children(this._source.maxzoom)[0],g=this.getTile(m);if(g&&g.hasData()){o[m.key]=m;continue}}else{var v=_.children(this._source.maxzoom);if(o[v[0].key]&&o[v[1].key]&&o[v[2].key]&&o[v[3].key])continue}for(var y=f.wasRequested(),x=_.overscaledZ-1;x>=a;--x){var b=_.scaledTo(x);if(r[b.key])break;if(r[b.key]=!0,!(f=this.getTile(b))&&y&&(f=this._addTile(b)),f&&(o[b.key]=b,y=f.wasRequested(),f.hasData()))break}}}return o},i.prototype._addTile=function(e){var i=this._tiles[e.key];if(i)return i;(i=this._cache.getAndRemove(e))&&(this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,i)));var o=Boolean(i);return o||(i=new t.Tile(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,this._tileLoaded.bind(this,i,e.key,i.state))),i?(i.uses++,this._tiles[e.key]=i,o||this._source.fire(new t.Event(\"dataloading\",{tile:i,coord:i.tileID,dataType:\"source\"})),i):null},i.prototype._setTileReloadTimer=function(t,e){var i=this;t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);var o=e.getExpiryTimeout();o&&(this._timers[t]=setTimeout((function(){i._reloadTile(t,\"expired\"),delete i._timers[t];}),o));},i.prototype._removeTile=function(t){var e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))));},i.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset();},i.prototype.tilesIn=function(e,i,o){var r=this,a=[],n=this.transform;if(!n)return a;for(var s=o?n.getCameraQueryGeometry(e):e,l=e.map((function(t){return n.pointCoordinate(t)})),c=s.map((function(t){return n.pointCoordinate(t)})),u=this.getIds(),h=1/0,p=1/0,d=-1/0,_=-1/0,f=0,m=c;f<m.length;f+=1){var g=m[f];h=Math.min(h,g.x),p=Math.min(p,g.y),d=Math.max(d,g.x),_=Math.max(_,g.y);}for(var v=function(e){var o=r._tiles[u[e]];if(!o.holdingForFade()){var s=o.tileID,f=Math.pow(2,n.zoom-o.tileID.overscaledZ),m=i*o.queryPadding*t.EXTENT/o.tileSize/f,g=[s.getTilePoint(new t.MercatorCoordinate(h,p)),s.getTilePoint(new t.MercatorCoordinate(d,_))];if(g[0].x-m<t.EXTENT&&g[0].y-m<t.EXTENT&&g[1].x+m>=0&&g[1].y+m>=0){var v=l.map((function(t){return s.getTilePoint(t)})),y=c.map((function(t){return s.getTilePoint(t)}));a.push({tile:o,tileID:s,queryGeometry:v,cameraQueryGeometry:y,scale:f});}}},y=0;y<u.length;y++)v(y);return a},i.prototype.getVisibleCoordinates=function(t){for(var e=this,i=this.getRenderableIds(t).map((function(t){return e._tiles[t].tileID})),o=0,r=i;o<r.length;o+=1){var a=r[o];a.posMatrix=this.transform.calculatePosMatrix(a.toUnwrapped());}return i},i.prototype.hasTransition=function(){if(this._source.hasTransition())return !0;if(Dt(this._source.type))for(var e in this._tiles){var i=this._tiles[e];if(void 0!==i.fadeEndTime&&i.fadeEndTime>=t.browser.now())return !0}return !1},i.prototype.setFeatureState=function(t,e,i){t=t||\"_geojsonTileLayer\",this._state.updateState(t,e,i);},i.prototype.removeFeatureState=function(t,e,i){t=t||\"_geojsonTileLayer\",this._state.removeFeatureState(t,e,i);},i.prototype.getFeatureState=function(t,e){return t=t||\"_geojsonTileLayer\",this._state.getState(t,e)},i.prototype.setDependencies=function(t,e,i){var o=this._tiles[t];o&&o.setDependencies(e,i);},i.prototype.reloadTilesForDependencies=function(t,e){for(var i in this._tiles){this._tiles[i].hasDependency(t,e)&&this._reloadTile(i,\"reloading\");}this._cache.filter((function(i){return !i.hasDependency(t,e)}));},i}(t.Evented);function Mt(t,e){return t%32-e%32||e-t}function Dt(t){return \"raster\"===t||\"image\"===t||\"video\"===t}function At(){return new t.window.Worker(cr.workerUrl)}Lt.maxOverzooming=10,Lt.maxUnderzooming=3;var Rt=function(){this.active={};};Rt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length<Rt.workerCount;)this.workers.push(new At);return this.active[t]=!0,this.workers.slice()},Rt.prototype.release=function(t){delete this.active[t],0===Object.keys(this.active).length&&(this.workers.forEach((function(t){t.terminate();})),this.workers=null);};var kt,Bt=Math.floor(t.browser.hardwareConcurrency/2);function Ot(e,i){var o={};for(var r in e)\"ref\"!==r&&(o[r]=e[r]);return t.refProperties.forEach((function(t){t in i&&(o[t]=i[t]);})),o}function Ft(t){t=t.slice();for(var e=Object.create(null),i=0;i<t.length;i++)e[t[i].id]=t[i];for(var o=0;o<t.length;o++)\"ref\"in t[o]&&(t[o]=Ot(t[o],e[t[o].ref]));return t}Rt.workerCount=Math.max(Math.min(Bt,6),1);var Ut={setStyle:\"setStyle\",addLayer:\"addLayer\",removeLayer:\"removeLayer\",setPaintProperty:\"setPaintProperty\",setLayoutProperty:\"setLayoutProperty\",setFilter:\"setFilter\",addSource:\"addSource\",removeSource:\"removeSource\",setGeoJSONSourceData:\"setGeoJSONSourceData\",setLayerZoomRange:\"setLayerZoomRange\",setLayerProperty:\"setLayerProperty\",setCenter:\"setCenter\",setZoom:\"setZoom\",setBearing:\"setBearing\",setPitch:\"setPitch\",setSprite:\"setSprite\",setGlyphs:\"setGlyphs\",setTransition:\"setTransition\",setLight:\"setLight\"};function Nt(t,e,i){i.push({command:Ut.addSource,args:[t,e[t]]});}function Zt(t,e,i){e.push({command:Ut.removeSource,args:[t]}),i[t]=!0;}function qt(t,e,i,o){Zt(t,i,o),Nt(t,e,i);}function jt(e,i,o){var r;for(r in e[o])if(e[o].hasOwnProperty(r)&&\"data\"!==r&&!t.deepEqual(e[o][r],i[o][r]))return !1;for(r in i[o])if(i[o].hasOwnProperty(r)&&\"data\"!==r&&!t.deepEqual(e[o][r],i[o][r]))return !1;return !0}function Vt(e,i,o,r,a,n){var s;for(s in i=i||{},e=e||{})e.hasOwnProperty(s)&&(t.deepEqual(e[s],i[s])||o.push({command:n,args:[r,s,i[s],a]}));for(s in i)i.hasOwnProperty(s)&&!e.hasOwnProperty(s)&&(t.deepEqual(e[s],i[s])||o.push({command:n,args:[r,s,i[s],a]}));}function Gt(t){return t.id}function Wt(t,e){return t[e.id]=e,t}function Xt(e,i){if(!e)return [{command:Ut.setStyle,args:[i]}];var o=[];try{if(!t.deepEqual(e.version,i.version))return [{command:Ut.setStyle,args:[i]}];t.deepEqual(e.center,i.center)||o.push({command:Ut.setCenter,args:[i.center]}),t.deepEqual(e.zoom,i.zoom)||o.push({command:Ut.setZoom,args:[i.zoom]}),t.deepEqual(e.bearing,i.bearing)||o.push({command:Ut.setBearing,args:[i.bearing]}),t.deepEqual(e.pitch,i.pitch)||o.push({command:Ut.setPitch,args:[i.pitch]}),t.deepEqual(e.sprite,i.sprite)||o.push({command:Ut.setSprite,args:[i.sprite]}),t.deepEqual(e.glyphs,i.glyphs)||o.push({command:Ut.setGlyphs,args:[i.glyphs]}),t.deepEqual(e.transition,i.transition)||o.push({command:Ut.setTransition,args:[i.transition]}),t.deepEqual(e.light,i.light)||o.push({command:Ut.setLight,args:[i.light]});var r={},a=[];!function(e,i,o,r){var a;for(a in i=i||{},e=e||{})e.hasOwnProperty(a)&&(i.hasOwnProperty(a)||Zt(a,o,r));for(a in i)i.hasOwnProperty(a)&&(e.hasOwnProperty(a)?t.deepEqual(e[a],i[a])||(\"geojson\"===e[a].type&&\"geojson\"===i[a].type&&jt(e,i,a)?o.push({command:Ut.setGeoJSONSourceData,args:[a,i[a].data]}):qt(a,i,o,r)):Nt(a,i,o));}(e.sources,i.sources,a,r);var n=[];e.layers&&e.layers.forEach((function(t){r[t.source]?o.push({command:Ut.removeLayer,args:[t.id]}):n.push(t);})),o=o.concat(a),function(e,i,o){i=i||[];var r,a,n,s,l,c,u,h=(e=e||[]).map(Gt),p=i.map(Gt),d=e.reduce(Wt,{}),_=i.reduce(Wt,{}),f=h.slice(),m=Object.create(null);for(r=0,a=0;r<h.length;r++)n=h[r],_.hasOwnProperty(n)?a++:(o.push({command:Ut.removeLayer,args:[n]}),f.splice(f.indexOf(n,a),1));for(r=0,a=0;r<p.length;r++)n=p[p.length-1-r],f[f.length-1-r]!==n&&(d.hasOwnProperty(n)?(o.push({command:Ut.removeLayer,args:[n]}),f.splice(f.lastIndexOf(n,f.length-a),1)):a++,c=f[f.length-r],o.push({command:Ut.addLayer,args:[_[n],c]}),f.splice(f.length-r,0,n),m[n]=!0);for(r=0;r<p.length;r++)if(s=d[n=p[r]],l=_[n],!m[n]&&!t.deepEqual(s,l))if(t.deepEqual(s.source,l.source)&&t.deepEqual(s[\"source-layer\"],l[\"source-layer\"])&&t.deepEqual(s.type,l.type)){for(u in Vt(s.layout,l.layout,o,n,null,Ut.setLayoutProperty),Vt(s.paint,l.paint,o,n,null,Ut.setPaintProperty),t.deepEqual(s.filter,l.filter)||o.push({command:Ut.setFilter,args:[n,l.filter]}),t.deepEqual(s.minzoom,l.minzoom)&&t.deepEqual(s.maxzoom,l.maxzoom)||o.push({command:Ut.setLayerZoomRange,args:[n,l.minzoom,l.maxzoom]}),s)s.hasOwnProperty(u)&&\"layout\"!==u&&\"paint\"!==u&&\"filter\"!==u&&\"metadata\"!==u&&\"minzoom\"!==u&&\"maxzoom\"!==u&&(0===u.indexOf(\"paint.\")?Vt(s[u],l[u],o,n,u.slice(6),Ut.setPaintProperty):t.deepEqual(s[u],l[u])||o.push({command:Ut.setLayerProperty,args:[n,u,l[u]]}));for(u in l)l.hasOwnProperty(u)&&!s.hasOwnProperty(u)&&\"layout\"!==u&&\"paint\"!==u&&\"filter\"!==u&&\"metadata\"!==u&&\"minzoom\"!==u&&\"maxzoom\"!==u&&(0===u.indexOf(\"paint.\")?Vt(s[u],l[u],o,n,u.slice(6),Ut.setPaintProperty):t.deepEqual(s[u],l[u])||o.push({command:Ut.setLayerProperty,args:[n,u,l[u]]}));}else o.push({command:Ut.removeLayer,args:[n]}),c=f[f.lastIndexOf(n)+1],o.push({command:Ut.addLayer,args:[l,c]});}(n,i.layers,o);}catch(t){console.warn(\"Unable to compute style diff:\",t),o=[{command:Ut.setStyle,args:[i]}];}return o}var Ht=function(t,e,i){var o=this.boxCells=[],r=this.circleCells=[];this.xCellCount=Math.ceil(t/i),this.yCellCount=Math.ceil(e/i);for(var a=0;a<this.xCellCount*this.yCellCount;a++)o.push([]),r.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=t,this.height=e,this.xScale=this.xCellCount/t,this.yScale=this.yCellCount/e,this.boxUid=0,this.circleUid=0;};function Kt(e,i,o,r,a){var n=t.create();return i?(t.scale(n,n,[1/a,1/a,1]),o||t.rotateZ(n,n,r.angle)):t.multiply(n,r.labelPlaneMatrix,e),n}function Yt(e,i,o,r,a){if(i){var n=t.clone(e);return t.scale(n,n,[a,a,1]),o||t.rotateZ(n,n,-r.angle),n}return r.glCoordMatrix}function Jt(e,i){var o=[e.x,e.y,0,1];se(o,o,i);var r=o[3];return {point:new t.Point(o[0]/r,o[1]/r),signedDistanceFromCamera:r}}function Qt(t,e){var i=t[0]/t[3],o=t[1]/t[3];return i>=-e[0]&&i<=e[0]&&o>=-e[1]&&o<=e[1]}function $t(e,i,o,r,a,n,s,l){var c=r?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,o.transform.zoom),h=[256/o.width*2+1,256/o.height*2+1],p=r?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;p.clear();for(var d=e.lineVertexArray,_=r?e.text.placedSymbolArray:e.icon.placedSymbolArray,f=o.transform.width/o.transform.height,m=!1,g=0;g<_.length;g++){var v=_.get(g);if(v.hidden||v.writingMode===t.WritingMode.vertical&&!m)ne(v.numGlyphs,p);else{m=!1;var y=[v.anchorX,v.anchorY,0,1];if(t.transformMat4(y,y,i),Qt(y,h)){var x=.5+y[3]/o.transform.cameraToCenterDistance*.5,b=t.evaluateSizeForFeature(c,u,v),w=s?b*x:b/x,E=new t.Point(v.anchorX,v.anchorY),T=Jt(E,a).point,I={},C=ie(v,w,!1,l,i,a,n,e.glyphOffsetArray,d,p,T,E,I,f);m=C.useVertical,(C.notEnoughRoom||m||C.needsFlipping&&ie(v,w,!0,l,i,a,n,e.glyphOffsetArray,d,p,T,E,I,f).notEnoughRoom)&&ne(v.numGlyphs,p);}else ne(v.numGlyphs,p);}}r?e.text.dynamicLayoutVertexBuffer.updateData(p):e.icon.dynamicLayoutVertexBuffer.updateData(p);}function te(t,e,i,o,r,a,n,s,l,c,u,h){var p=s.glyphStartIndex+s.numGlyphs,d=s.lineStartIndex,_=s.lineStartIndex+s.lineLength,f=e.getoffsetX(s.glyphStartIndex),m=e.getoffsetX(p-1),g=re(t*f,i,o,r,a,n,s.segment,d,_,l,c,u,h);if(!g)return null;var v=re(t*m,i,o,r,a,n,s.segment,d,_,l,c,u,h);return v?{first:g,last:v}:null}function ee(e,i,o,r){if(e===t.WritingMode.horizontal&&Math.abs(o.y-i.y)>Math.abs(o.x-i.x)*r)return {useVertical:!0};return (e===t.WritingMode.vertical?i.y<o.y:i.x>o.x)?{needsFlipping:!0}:null}function ie(e,i,o,r,a,n,s,l,c,u,h,p,d,_){var f,m=i/24,g=e.lineOffsetX*m,v=e.lineOffsetY*m;if(e.numGlyphs>1){var y=e.glyphStartIndex+e.numGlyphs,x=e.lineStartIndex,b=e.lineStartIndex+e.lineLength,w=te(m,l,g,v,o,h,p,e,c,n,d,!1);if(!w)return {notEnoughRoom:!0};var E=Jt(w.first.point,s).point,T=Jt(w.last.point,s).point;if(r&&!o){var I=ee(e.writingMode,E,T,_);if(I)return I}f=[w.first];for(var C=e.glyphStartIndex+1;C<y-1;C++)f.push(re(m*l.getoffsetX(C),g,v,o,h,p,e.segment,x,b,c,n,d,!1));f.push(w.last);}else{if(r&&!o){var S=Jt(p,a).point,P=e.lineStartIndex+e.segment+1,z=new t.Point(c.getx(P),c.gety(P)),L=Jt(z,a),M=L.signedDistanceFromCamera>0?L.point:oe(p,z,S,1,a),D=ee(e.writingMode,S,M,_);if(D)return D}var A=re(m*l.getoffsetX(e.glyphStartIndex),g,v,o,h,p,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,n,d,!1);if(!A)return {notEnoughRoom:!0};f=[A];}for(var R=0,k=f;R<k.length;R+=1){var B=k[R];t.addDynamicAttributes(u,B.point,B.angle);}return {}}function oe(t,e,i,o,r){var a=Jt(t.add(t.sub(e)._unit()),r).point,n=i.sub(a);return i.add(n._mult(o/n.mag()))}function re(e,i,o,r,a,n,s,l,c,u,h,p,d){var _=r?e-i:e+i,f=_>0?1:-1,m=0;r&&(f*=-1,m=Math.PI),f<0&&(m+=Math.PI);for(var g=f>0?l+s:l+s+1,v=g,y=a,x=a,b=0,w=0,E=Math.abs(_);b+w<=E;){if((g+=f)<l||g>=c)return null;if(x=y,void 0===(y=p[g])){var T=new t.Point(u.getx(g),u.gety(g)),I=Jt(T,h);if(I.signedDistanceFromCamera>0)y=p[g]=I.point;else{var C=g-f;y=oe(0===b?n:new t.Point(u.getx(C),u.gety(C)),T,x,E-b+1,h);}}b+=w,w=x.dist(y);}var S=(E-b)/w,P=y.sub(x),z=P.mult(S)._add(x);return z._add(P._unit()._perp()._mult(o*f)),{point:z,angle:m+Math.atan2(y.y-x.y,y.x-x.x),tileDistance:d?{prevTileDistance:g-f===v?0:u.gettileUnitDistanceFromAnchor(g-f),lastSegmentViewportDistance:E-b}:null}}Ht.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Ht.prototype.insert=function(t,e,i,o,r){this._forEachCell(e,i,o,r,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(i),this.bboxes.push(o),this.bboxes.push(r);},Ht.prototype.insertCircle=function(t,e,i,o){this._forEachCell(e-o,i-o,e+o,i+o,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(i),this.circles.push(o);},Ht.prototype._insertBoxCell=function(t,e,i,o,r,a){this.boxCells[r].push(a);},Ht.prototype._insertCircleCell=function(t,e,i,o,r,a){this.circleCells[r].push(a);},Ht.prototype._query=function(t,e,i,o,r,a){if(i<0||t>this.width||o<0||e>this.height)return !r&&[];var n=[];if(t<=0&&e<=0&&this.width<=i&&this.height<=o){if(r)return !0;for(var s=0;s<this.boxKeys.length;s++)n.push({key:this.boxKeys[s],x1:this.bboxes[4*s],y1:this.bboxes[4*s+1],x2:this.bboxes[4*s+2],y2:this.bboxes[4*s+3]});for(var l=0;l<this.circleKeys.length;l++){var c=this.circles[3*l],u=this.circles[3*l+1],h=this.circles[3*l+2];n.push({key:this.circleKeys[l],x1:c-h,y1:u-h,x2:c+h,y2:u+h});}return a?n.filter(a):n}var p={hitTest:r,seenUids:{box:{},circle:{}}};return this._forEachCell(t,e,i,o,this._queryCell,n,p,a),r?n.length>0:n},Ht.prototype._queryCircle=function(t,e,i,o,r){var a=t-i,n=t+i,s=e-i,l=e+i;if(n<0||a>this.width||l<0||s>this.height)return !o&&[];var c=[],u={hitTest:o,circle:{x:t,y:e,radius:i},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,n,l,this._queryCellCircle,c,u,r),o?c.length>0:c},Ht.prototype.query=function(t,e,i,o,r){return this._query(t,e,i,o,!1,r)},Ht.prototype.hitTest=function(t,e,i,o,r){return this._query(t,e,i,o,!0,r)},Ht.prototype.hitTestCircle=function(t,e,i,o){return this._queryCircle(t,e,i,!0,o)},Ht.prototype._queryCell=function(t,e,i,o,r,a,n,s){var l=n.seenUids,c=this.boxCells[r];if(null!==c)for(var u=this.bboxes,h=0,p=c;h<p.length;h+=1){var d=p[h];if(!l.box[d]){l.box[d]=!0;var _=4*d;if(t<=u[_+2]&&e<=u[_+3]&&i>=u[_+0]&&o>=u[_+1]&&(!s||s(this.boxKeys[d]))){if(n.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[d],x1:u[_],y1:u[_+1],x2:u[_+2],y2:u[_+3]});}}}var f=this.circleCells[r];if(null!==f)for(var m=this.circles,g=0,v=f;g<v.length;g+=1){var y=v[g];if(!l.circle[y]){l.circle[y]=!0;var x=3*y;if(this._circleAndRectCollide(m[x],m[x+1],m[x+2],t,e,i,o)&&(!s||s(this.circleKeys[y]))){if(n.hitTest)return a.push(!0),!0;var b=m[x],w=m[x+1],E=m[x+2];a.push({key:this.circleKeys[y],x1:b-E,y1:w-E,x2:b+E,y2:w+E});}}}},Ht.prototype._queryCellCircle=function(t,e,i,o,r,a,n,s){var l=n.circle,c=n.seenUids,u=this.boxCells[r];if(null!==u)for(var h=this.bboxes,p=0,d=u;p<d.length;p+=1){var _=d[p];if(!c.box[_]){c.box[_]=!0;var f=4*_;if(this._circleAndRectCollide(l.x,l.y,l.radius,h[f+0],h[f+1],h[f+2],h[f+3])&&(!s||s(this.boxKeys[_])))return a.push(!0),!0}}var m=this.circleCells[r];if(null!==m)for(var g=this.circles,v=0,y=m;v<y.length;v+=1){var x=y[v];if(!c.circle[x]){c.circle[x]=!0;var b=3*x;if(this._circlesCollide(g[b],g[b+1],g[b+2],l.x,l.y,l.radius)&&(!s||s(this.circleKeys[x])))return a.push(!0),!0}}},Ht.prototype._forEachCell=function(t,e,i,o,r,a,n,s){for(var l=this._convertToXCellCoord(t),c=this._convertToYCellCoord(e),u=this._convertToXCellCoord(i),h=this._convertToYCellCoord(o),p=l;p<=u;p++)for(var d=c;d<=h;d++){var _=this.xCellCount*d+p;if(r.call(this,t,e,i,o,_,a,n,s))return}},Ht.prototype._convertToXCellCoord=function(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))},Ht.prototype._convertToYCellCoord=function(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))},Ht.prototype._circlesCollide=function(t,e,i,o,r,a){var n=o-t,s=r-e,l=i+a;return l*l>n*n+s*s},Ht.prototype._circleAndRectCollide=function(t,e,i,o,r,a,n){var s=(a-o)/2,l=Math.abs(t-(o+s));if(l>s+i)return !1;var c=(n-r)/2,u=Math.abs(e-(r+c));if(u>c+i)return !1;if(l<=s||u<=c)return !0;var h=l-s,p=u-c;return h*h+p*p<=i*i};var ae=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ne(t,e){for(var i=0;i<t;i++){var o=e.length;e.resize(o+4),e.float32.set(ae,3*o);}}function se(t,e,i){var o=e[0],r=e[1];return t[0]=i[0]*o+i[4]*r+i[12],t[1]=i[1]*o+i[5]*r+i[13],t[3]=i[3]*o+i[7]*r+i[15],t}var le=function(t,e,i){void 0===e&&(e=new Ht(t.width+200,t.height+200,25)),void 0===i&&(i=new Ht(t.width+200,t.height+200,25)),this.transform=t,this.grid=e,this.ignoredGrid=i,this.pitchfactor=Math.cos(t._pitch)*t.cameraToCenterDistance,this.screenRightBoundary=t.width+100,this.screenBottomBoundary=t.height+100,this.gridRightBoundary=t.width+200,this.gridBottomBoundary=t.height+200;};function ce(t,e,i){t[e+4]=i?1:0;}function ue(e,i,o){return i*(t.EXTENT/(e.tileSize*Math.pow(2,o-e.tileID.overscaledZ)))}le.prototype.placeCollisionBox=function(t,e,i,o,r){var a=this.projectAndGetPerspectiveRatio(o,t.anchorPointX,t.anchorPointY),n=i*a.perspectiveRatio,s=t.x1*n+a.point.x,l=t.y1*n+a.point.y,c=t.x2*n+a.point.x,u=t.y2*n+a.point.y;return !this.isInsideGrid(s,l,c,u)||!e&&this.grid.hitTest(s,l,c,u,r)?{box:[],offscreen:!1}:{box:[s,l,c,u],offscreen:this.isOffscreen(s,l,c,u)}},le.prototype.approximateTileDistance=function(t,e,i,o,r){var a=r?1:o/this.pitchfactor,n=t.lastSegmentViewportDistance*i;return t.prevTileDistance+n+(a-1)*n*Math.abs(Math.sin(e))},le.prototype.placeCollisionCircles=function(e,i,o,r,a,n,s,l,c,u,h,p,d){var _=[],f=this.projectAnchor(c,a.anchorX,a.anchorY),m=l/24,g=a.lineOffsetX*l,v=a.lineOffsetY*l,y=new t.Point(a.anchorX,a.anchorY),x=te(m,s,g,v,!1,Jt(y,u).point,y,a,n,u,{},!0),b=!1,w=!1,E=!0,T=f.perspectiveRatio*r,I=1/(r*o),C=0,S=0;x&&(C=this.approximateTileDistance(x.first.tileDistance,x.first.angle,I,f.cameraDistance,p),S=this.approximateTileDistance(x.last.tileDistance,x.last.angle,I,f.cameraDistance,p));for(var P=0;P<e.length;P+=5){var z=e[P],L=e[P+1],M=e[P+2],D=e[P+3];if(!x||D<-C||D>S)ce(e,P,!1);else{var A=this.projectPoint(c,z,L),R=M*T;if(_.length>0){var k=A.x-_[_.length-4],B=A.y-_[_.length-3];if(R*R*2>k*k+B*B)if(P+8<e.length){var O=e[P+8];if(O>-C&&O<S){ce(e,P,!1);continue}}}var F=P/5;_.push(A.x,A.y,R,F),ce(e,P,!0);var U=A.x-R,N=A.y-R,Z=A.x+R,q=A.y+R;if(E=E&&this.isOffscreen(U,N,Z,q),w=w||this.isInsideGrid(U,N,Z,q),!i&&this.grid.hitTestCircle(A.x,A.y,R,d)){if(!h)return {circles:[],offscreen:!1};b=!0;}}}return {circles:b||!w?[]:_,offscreen:E}},le.prototype.queryRenderedSymbols=function(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return {};for(var i=[],o=1/0,r=1/0,a=-1/0,n=-1/0,s=0,l=e;s<l.length;s+=1){var c=l[s],u=new t.Point(c.x+100,c.y+100);o=Math.min(o,u.x),r=Math.min(r,u.y),a=Math.max(a,u.x),n=Math.max(n,u.y),i.push(u);}for(var h={},p={},d=0,_=this.grid.query(o,r,a,n).concat(this.ignoredGrid.query(o,r,a,n));d<_.length;d+=1){var f=_[d],m=f.key;if(void 0===h[m.bucketInstanceId]&&(h[m.bucketInstanceId]={}),!h[m.bucketInstanceId][m.featureIndex]){var g=[new t.Point(f.x1,f.y1),new t.Point(f.x2,f.y1),new t.Point(f.x2,f.y2),new t.Point(f.x1,f.y2)];t.polygonIntersectsPolygon(i,g)&&(h[m.bucketInstanceId][m.featureIndex]=!0,void 0===p[m.bucketInstanceId]&&(p[m.bucketInstanceId]=[]),p[m.bucketInstanceId].push(m.featureIndex));}}return p},le.prototype.insertCollisionBox=function(t,e,i,o,r){var a={bucketInstanceId:i,featureIndex:o,collisionGroupID:r};(e?this.ignoredGrid:this.grid).insert(a,t[0],t[1],t[2],t[3]);},le.prototype.insertCollisionCircles=function(t,e,i,o,r){for(var a=e?this.ignoredGrid:this.grid,n={bucketInstanceId:i,featureIndex:o,collisionGroupID:r},s=0;s<t.length;s+=4)a.insertCircle(n,t[s],t[s+1],t[s+2]);},le.prototype.projectAnchor=function(t,e,i){var o=[e,i,0,1];return se(o,o,t),{perspectiveRatio:.5+this.transform.cameraToCenterDistance/o[3]*.5,cameraDistance:o[3]}},le.prototype.projectPoint=function(e,i,o){var r=[i,o,0,1];return se(r,r,e),new t.Point((r[0]/r[3]+1)/2*this.transform.width+100,(-r[1]/r[3]+1)/2*this.transform.height+100)},le.prototype.projectAndGetPerspectiveRatio=function(e,i,o){var r=[i,o,0,1];return se(r,r,e),{point:new t.Point((r[0]/r[3]+1)/2*this.transform.width+100,(-r[1]/r[3]+1)/2*this.transform.height+100),perspectiveRatio:.5+this.transform.cameraToCenterDistance/r[3]*.5}},le.prototype.isOffscreen=function(t,e,i,o){return i<100||t>=this.screenRightBoundary||o<100||e>this.screenBottomBoundary},le.prototype.isInsideGrid=function(t,e,i,o){return i>=0&&t<this.gridRightBoundary&&o>=0&&e<this.gridBottomBoundary};var he=function(t,e,i,o){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?e:-e))):o&&i?1:0,this.placed=i;};he.prototype.isHidden=function(){return 0===this.opacity&&!this.placed};var pe=function(t,e,i,o,r){this.text=new he(t?t.text:null,e,i,r),this.icon=new he(t?t.icon:null,e,o,r);};pe.prototype.isHidden=function(){return this.text.isHidden()&&this.icon.isHidden()};var de=function(t,e,i){this.text=t,this.icon=e,this.skipFade=i;},_e=function(t,e,i,o,r){this.bucketInstanceId=t,this.featureIndex=e,this.sourceLayerIndex=i,this.bucketIndex=o,this.tileID=r;},fe=function(t){this.crossSourceCollisions=t,this.maxGroupID=0,this.collisionGroups={};};function me(e,i,o,r,a){var n=t.getAnchorAlignment(e),s=-(n.horizontalAlign-.5)*i,l=-(n.verticalAlign-.5)*o,c=t.evaluateVariableOffset(e,r);return new t.Point(s+c[0]*a,l+c[1]*a)}function ge(e,i,o,r,a,n){var s=e.x1,l=e.x2,c=e.y1,u=e.y2,h=e.anchorPointX,p=e.anchorPointY,d=new t.Point(i,o);return r&&d._rotate(a?n:-n),{x1:s+d.x,y1:c+d.y,x2:l+d.x,y2:u+d.y,anchorPointX:h,anchorPointY:p}}fe.prototype.get=function(t){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!this.collisionGroups[t]){var e=++this.maxGroupID;this.collisionGroups[t]={ID:e,predicate:function(t){return t.collisionGroupID===e}};}return this.collisionGroups[t]};var ve=function(t,e,i,o){this.transform=t.clone(),this.collisionIndex=new le(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=e,this.retainedQueryData={},this.collisionGroups=new fe(i),this.prevPlacement=o,o&&(o.prevPlacement=void 0),this.placedOrientations={};};function ye(t,e,i,o,r){t.emplaceBack(e?1:0,i?1:0,o||0,r||0),t.emplaceBack(e?1:0,i?1:0,o||0,r||0),t.emplaceBack(e?1:0,i?1:0,o||0,r||0),t.emplaceBack(e?1:0,i?1:0,o||0,r||0);}ve.prototype.placeLayerTile=function(e,i,o,r){var a=i.getBucket(e),n=i.latestFeatureIndex;if(a&&n&&e.id===a.layerIds[0]){var s=i.collisionBoxArray,l=a.layers[0].layout,c=Math.pow(2,this.transform.zoom-i.tileID.overscaledZ),u=i.tileSize/t.EXTENT,h=this.transform.calculatePosMatrix(i.tileID.toUnwrapped()),p=Kt(h,\"map\"===l.get(\"text-pitch-alignment\"),\"map\"===l.get(\"text-rotation-alignment\"),this.transform,ue(i,1,this.transform.zoom)),d=Kt(h,\"map\"===l.get(\"icon-pitch-alignment\"),\"map\"===l.get(\"icon-rotation-alignment\"),this.transform,ue(i,1,this.transform.zoom));this.retainedQueryData[a.bucketInstanceId]=new _e(a.bucketInstanceId,n,a.sourceLayerIndex,a.index,i.tileID),this.placeLayerBucket(a,h,p,d,c,u,o,i.holdingForFade(),r,s);}},ve.prototype.attemptAnchorPlacement=function(t,e,i,o,r,a,n,s,l,c,u,h,p,d,_){var f,m=[h.textOffset0,h.textOffset1],g=me(t,i,o,m,r),v=this.collisionIndex.placeCollisionBox(ge(e,g.x,g.y,a,n,this.transform.angle),u,s,l,c.predicate);if(_&&0===this.collisionIndex.placeCollisionBox(ge(_,g.x,g.y,a,n,this.transform.angle),u,s,l,c.predicate).box.length)return;if(v.box.length>0)return this.prevPlacement&&this.prevPlacement.variableOffsets[h.crossTileID]&&this.prevPlacement.placements[h.crossTileID]&&this.prevPlacement.placements[h.crossTileID].text&&(f=this.prevPlacement.variableOffsets[h.crossTileID].anchor),this.variableOffsets[h.crossTileID]={textOffset:m,width:i,height:o,anchor:t,textBoxScale:r,prevAnchor:f},this.markUsedJustification(p,t,h,d),p.allowVerticalPlacement&&(this.markUsedOrientation(p,d,h),this.placedOrientations[h.crossTileID]=d),{shift:g,placedGlyphBoxes:v}},ve.prototype.placeLayerBucket=function(e,i,o,r,a,n,s,l,c,u){var h=this,p=e.layers[0].layout,d=t.evaluateSizeForZoom(e.textSizeData,this.transform.zoom),_=p.get(\"text-optional\"),f=p.get(\"icon-optional\"),m=p.get(\"text-allow-overlap\"),g=p.get(\"icon-allow-overlap\"),v=m&&(g||!e.hasIconData()||f),y=g&&(m||!e.hasTextData()||_),x=this.collisionGroups.get(e.sourceID),b=\"map\"===p.get(\"text-rotation-alignment\"),w=\"map\"===p.get(\"text-pitch-alignment\"),E=\"none\"!==p.get(\"icon-text-fit\"),T=\"viewport-y\"===p.get(\"symbol-z-order\");!e.collisionArrays&&u&&e.deserializeCollisionBoxes(u);var I=function(r,u){if(!c[r.crossTileID])if(l)h.placements[r.crossTileID]=new de(!1,!1,!1);else{var T,I=!1,C=!1,S=!0,P=null,z={box:null,offscreen:null},L={box:null,offscreen:null},M=null,D=null,A=0,R=0,k=0;u.textFeatureIndex&&(A=u.textFeatureIndex),u.verticalTextFeatureIndex&&(R=u.verticalTextFeatureIndex);var B=u.textBox;if(B){var O=function(i){var o=t.WritingMode.horizontal;if(e.allowVerticalPlacement&&!i&&h.prevPlacement){var a=h.prevPlacement.placedOrientations[r.crossTileID];a&&(h.placedOrientations[r.crossTileID]=a,o=a,h.markUsedOrientation(e,o,r));}return o},F=function(i,o){if(e.allowVerticalPlacement&&r.numVerticalGlyphVertices>0&&u.verticalTextBox)for(var a=0,n=e.writingModes;a<n.length;a+=1){if(n[a]===t.WritingMode.vertical?(z=o(),L=z):z=i(),z&&z.box&&z.box.length)break}else z=i();};if(p.get(\"text-variable-anchor\")){var U=p.get(\"text-variable-anchor\");if(h.prevPlacement&&h.prevPlacement.variableOffsets[r.crossTileID]){var N=h.prevPlacement.variableOffsets[r.crossTileID];U.indexOf(N.anchor)>0&&(U=U.filter((function(t){return t!==N.anchor}))).unshift(N.anchor);}var Z=function(t,o,a){for(var s=t.x2-t.x1,l=t.y2-t.y1,c=r.textBoxScale,u=E&&!g?o:null,p={box:[],offscreen:!1},d=m?2*U.length:U.length,_=0;_<d;++_){var f=U[_%U.length],v=_>=U.length,y=h.attemptAnchorPlacement(f,t,s,l,c,b,w,n,i,x,v,r,e,a,u);if(y&&(p=y.placedGlyphBoxes)&&p.box&&p.box.length){I=!0,P=y.shift;break}}return p};F((function(){return Z(B,u.iconBox,t.WritingMode.horizontal)}),(function(){var i=u.verticalTextBox,o=z&&z.box&&z.box.length;return e.allowVerticalPlacement&&!o&&r.numVerticalGlyphVertices>0&&i?Z(i,u.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}})),z&&(I=z.box,S=z.offscreen);var q=O(z&&z.box);if(!I&&h.prevPlacement){var j=h.prevPlacement.variableOffsets[r.crossTileID];j&&(h.variableOffsets[r.crossTileID]=j,h.markUsedJustification(e,j.anchor,r,q));}}else{var V=function(t,o){var a=h.collisionIndex.placeCollisionBox(t,p.get(\"text-allow-overlap\"),n,i,x.predicate);return a&&a.box&&a.box.length&&(h.markUsedOrientation(e,o,r),h.placedOrientations[r.crossTileID]=o),a};F((function(){return V(B,t.WritingMode.horizontal)}),(function(){var i=u.verticalTextBox;return e.allowVerticalPlacement&&r.numVerticalGlyphVertices>0&&i?V(i,t.WritingMode.vertical):{box:null,offscreen:null}})),O(z&&z.box&&z.box.length);}}I=(T=z)&&T.box&&T.box.length>0,S=T&&T.offscreen;var G=u.textCircles;if(G){var W=e.text.placedSymbolArray.get(r.centerJustifiedTextSymbolIndex),X=t.evaluateSizeForFeature(e.textSizeData,d,W);M=h.collisionIndex.placeCollisionCircles(G,p.get(\"text-allow-overlap\"),a,n,W,e.lineVertexArray,e.glyphOffsetArray,X,i,o,s,w,x.predicate),I=p.get(\"text-allow-overlap\")||M.circles.length>0,S=S&&M.offscreen;}if(u.iconFeatureIndex&&(k=u.iconFeatureIndex),u.iconBox){var H=function(t){var e=E&&P?ge(t,P.x,P.y,b,w,h.transform.angle):t;return h.collisionIndex.placeCollisionBox(e,p.get(\"icon-allow-overlap\"),n,i,x.predicate)};C=L&&L.box&&L.box.length&&u.verticalIconBox?(D=H(u.verticalIconBox)).box.length>0:(D=H(u.iconBox)).box.length>0,S=S&&D.offscreen;}var K=_||0===r.numHorizontalGlyphVertices&&0===r.numVerticalGlyphVertices,Y=f||0===r.numIconVertices;K||Y?Y?K||(C=C&&I):I=C&&I:C=I=C&&I,I&&T&&T.box&&(L&&L.box&&R?h.collisionIndex.insertCollisionBox(T.box,p.get(\"text-ignore-placement\"),e.bucketInstanceId,R,x.ID):h.collisionIndex.insertCollisionBox(T.box,p.get(\"text-ignore-placement\"),e.bucketInstanceId,A,x.ID)),C&&D&&h.collisionIndex.insertCollisionBox(D.box,p.get(\"icon-ignore-placement\"),e.bucketInstanceId,k,x.ID),I&&M&&h.collisionIndex.insertCollisionCircles(M.circles,p.get(\"text-ignore-placement\"),e.bucketInstanceId,A,x.ID),h.placements[r.crossTileID]=new de(I||v,C||y,S||e.justReloaded),c[r.crossTileID]=!0;}};if(T)for(var C=e.getSortedSymbolIndexes(this.transform.angle),S=C.length-1;S>=0;--S){var P=C[S];I(e.symbolInstances.get(P),e.collisionArrays[P]);}else for(var z=0;z<e.symbolInstances.length;++z)I(e.symbolInstances.get(z),e.collisionArrays[z]);e.justReloaded=!1;},ve.prototype.markUsedJustification=function(e,i,o,r){var a,n={left:o.leftJustifiedTextSymbolIndex,center:o.centerJustifiedTextSymbolIndex,right:o.rightJustifiedTextSymbolIndex};a=r===t.WritingMode.vertical?o.verticalPlacedTextSymbolIndex:n[t.getAnchorJustification(i)];for(var s=0,l=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex,o.verticalPlacedTextSymbolIndex];s<l.length;s+=1){var c=l[s];c>=0&&(e.text.placedSymbolArray.get(c).crossTileID=a>=0&&c!==a?0:o.crossTileID);}},ve.prototype.markUsedOrientation=function(e,i,o){for(var r=i===t.WritingMode.horizontal||i===t.WritingMode.horizontalOnly?i:0,a=i===t.WritingMode.vertical?i:0,n=0,s=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex];n<s.length;n+=1){var l=s[n];e.text.placedSymbolArray.get(l).placedOrientation=r;}o.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).placedOrientation=a);},ve.prototype.commit=function(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;var e=this.prevPlacement,i=!1;this.prevZoomAdjustment=e?e.zoomAdjustment(this.transform.zoom):0;var o=e?e.symbolFadeChange(t):1,r=e?e.opacities:{},a=e?e.variableOffsets:{},n=e?e.placedOrientations:{};for(var s in this.placements){var l=this.placements[s],c=r[s];c?(this.opacities[s]=new pe(c,o,l.text,l.icon),i=i||l.text!==c.text.placed||l.icon!==c.icon.placed):(this.opacities[s]=new pe(null,o,l.text,l.icon,l.skipFade),i=i||l.text||l.icon);}for(var u in r){var h=r[u];if(!this.opacities[u]){var p=new pe(h,o,!1,!1);p.isHidden()||(this.opacities[u]=p,i=i||h.text.placed||h.icon.placed);}}for(var d in a)this.variableOffsets[d]||!this.opacities[d]||this.opacities[d].isHidden()||(this.variableOffsets[d]=a[d]);for(var _ in n)this.placedOrientations[_]||!this.opacities[_]||this.opacities[_].isHidden()||(this.placedOrientations[_]=n[_]);i?this.lastPlacementChangeTime=t:\"number\"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=e?e.lastPlacementChangeTime:t);},ve.prototype.updateLayerOpacities=function(t,e){for(var i={},o=0,r=e;o<r.length;o+=1){var a=r[o],n=a.getBucket(t);n&&a.latestFeatureIndex&&t.id===n.layerIds[0]&&this.updateBucketOpacities(n,i,a.collisionBoxArray);}},ve.prototype.updateBucketOpacities=function(e,i,o){var r=this;e.hasTextData()&&e.text.opacityVertexArray.clear(),e.hasIconData()&&e.icon.opacityVertexArray.clear(),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear(),e.hasIconCollisionCircleData()&&e.iconCollisionCircle.collisionVertexArray.clear(),e.hasTextCollisionCircleData()&&e.textCollisionCircle.collisionVertexArray.clear();var a=e.layers[0].layout,n=new pe(null,0,!1,!1,!0),s=a.get(\"text-allow-overlap\"),l=a.get(\"icon-allow-overlap\"),c=a.get(\"text-variable-anchor\"),u=\"map\"===a.get(\"text-rotation-alignment\"),h=\"map\"===a.get(\"text-pitch-alignment\"),p=\"none\"!==a.get(\"icon-text-fit\"),d=new pe(null,0,s&&(l||!e.hasIconData()||a.get(\"icon-optional\")),l&&(s||!e.hasTextData()||a.get(\"text-optional\")),!0);!e.collisionArrays&&o&&(e.hasIconCollisionBoxData()||e.hasIconCollisionCircleData()||e.hasTextCollisionBoxData()||e.hasTextCollisionCircleData())&&e.deserializeCollisionBoxes(o);for(var _=function(t,e,i){for(var o=0;o<e/4;o++)t.opacityVertexArray.emplaceBack(i);},f=function(o){var a=e.symbolInstances.get(o),s=a.numHorizontalGlyphVertices,l=a.numVerticalGlyphVertices,f=a.crossTileID,m=i[f],g=r.opacities[f];m?g=n:g||(g=d,r.opacities[f]=g),i[f]=!0;var v=s>0||l>0,y=a.numIconVertices>0,x=r.placedOrientations[a.crossTileID],b=x===t.WritingMode.vertical,w=x===t.WritingMode.horizontal||x===t.WritingMode.horizontalOnly;if(v){var E=Se(g.text),T=b?Pe:E;_(e.text,s,T);var I=w?Pe:E;_(e.text,l,I);var C=g.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=C||b?1:0);})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=C||w?1:0);var S=r.variableOffsets[a.crossTileID];S&&r.markUsedJustification(e,S.anchor,a,x);var P=r.placedOrientations[a.crossTileID];P&&(r.markUsedJustification(e,\"left\",a,P),r.markUsedOrientation(e,P,a));}if(y){var z=Se(g.icon),L=!(p&&a.verticalPlacedIconSymbolIndex&&b);if(a.placedIconSymbolIndex>=0){var M=L?z:Pe;_(e.icon,a.numIconVertices,M),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=g.icon.isHidden();}if(a.verticalPlacedIconSymbolIndex>=0){var D=L?Pe:z;_(e.icon,a.numVerticalIconVertices,D),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=g.icon.isHidden();}}if(e.hasIconCollisionBoxData()||e.hasIconCollisionCircleData()||e.hasTextCollisionBoxData()||e.hasTextCollisionCircleData()){var A=e.collisionArrays[o];if(A){var R=new t.Point(0,0);if(A.textBox||A.verticalTextBox){var k=!0;if(c){var B=r.variableOffsets[f];B?(R=me(B.anchor,B.width,B.height,B.textOffset,B.textBoxScale),u&&R._rotate(h?r.transform.angle:-r.transform.angle)):k=!1;}A.textBox&&ye(e.textCollisionBox.collisionVertexArray,g.text.placed,!k||b,R.x,R.y),A.verticalTextBox&&ye(e.textCollisionBox.collisionVertexArray,g.text.placed,!k||w,R.x,R.y);}var O=Boolean(!w&&A.verticalIconBox);A.iconBox&&ye(e.iconCollisionBox.collisionVertexArray,g.icon.placed,O,p?R.x:0,p?R.y:0),A.verticalIconBox&&ye(e.iconCollisionBox.collisionVertexArray,g.icon.placed,!O,p?R.x:0,p?R.y:0);var F=A.textCircles;if(F&&e.hasTextCollisionCircleData())for(var U=0;U<F.length;U+=5){var N=m||0===F[U+4];ye(e.textCollisionCircle.collisionVertexArray,g.text.placed,N);}}}},m=0;m<e.symbolInstances.length;m++)f(m);e.sortFeatures(this.transform.angle),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.hasIconCollisionCircleData()&&e.iconCollisionCircle.collisionVertexBuffer&&e.iconCollisionCircle.collisionVertexBuffer.updateData(e.iconCollisionCircle.collisionVertexArray),e.hasTextCollisionCircleData()&&e.textCollisionCircle.collisionVertexBuffer&&e.textCollisionCircle.collisionVertexBuffer.updateData(e.textCollisionCircle.collisionVertexArray);},ve.prototype.symbolFadeChange=function(t){return 0===this.fadeDuration?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment},ve.prototype.zoomAdjustment=function(t){return Math.max(0,(this.transform.zoom-t)/1.5)},ve.prototype.hasTransitions=function(t){return this.stale||t-this.lastPlacementChangeTime<this.fadeDuration},ve.prototype.stillRecent=function(t,e){var i=this.zoomAtLastRecencyCheck===e?1-this.zoomAdjustment(e):1;return this.zoomAtLastRecencyCheck=e,this.commitTime+this.fadeDuration*i>t},ve.prototype.setStale=function(){this.stale=!0;};var xe=Math.pow(2,25),be=Math.pow(2,24),we=Math.pow(2,17),Ee=Math.pow(2,16),Te=Math.pow(2,9),Ie=Math.pow(2,8),Ce=Math.pow(2,1);function Se(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,i=Math.floor(127*t.opacity);return i*xe+e*be+i*we+e*Ee+i*Te+e*Ie+i*Ce+e}var Pe=0,ze=function(){this._currentTileIndex=0,this._seenCrossTileIDs={};};ze.prototype.continuePlacement=function(t,e,i,o,r){for(;this._currentTileIndex<t.length;){var a=t[this._currentTileIndex];if(e.placeLayerTile(o,a,i,this._seenCrossTileIDs),this._currentTileIndex++,r())return !0}};var Le=function(t,e,i,o,r,a,n){this.placement=new ve(t,r,a,n),this._currentPlacementIndex=e.length-1,this._forceFullPlacement=i,this._showCollisionBoxes=o,this._done=!1;};Le.prototype.isDone=function(){return this._done},Le.prototype.continuePlacement=function(e,i,o){for(var r=this,a=t.browser.now(),n=function(){var e=t.browser.now()-a;return !r._forceFullPlacement&&e>2};this._currentPlacementIndex>=0;){var s=i[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new ze),this._inProgressLayer.continuePlacement(o[s.source],this.placement,this._showCollisionBoxes,s,n))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;},Le.prototype.commit=function(t){return this.placement.commit(t),this.placement};var Me=512/t.EXTENT/2,De=function(t,e,i){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=i;for(var o=0;o<e.length;o++){var r=e.get(o),a=r.key;this.indexedSymbolInstances[a]||(this.indexedSymbolInstances[a]=[]),this.indexedSymbolInstances[a].push({crossTileID:r.crossTileID,coord:this.getScaledCoordinates(r,t)});}};De.prototype.getScaledCoordinates=function(e,i){var o=i.canonical.z-this.tileID.canonical.z,r=Me/Math.pow(2,o);return {x:Math.floor((i.canonical.x*t.EXTENT+e.anchorX)*r),y:Math.floor((i.canonical.y*t.EXTENT+e.anchorY)*r)}},De.prototype.findMatches=function(t,e,i){for(var o=this.tileID.canonical.z<e.canonical.z?1:Math.pow(2,this.tileID.canonical.z-e.canonical.z),r=0;r<t.length;r++){var a=t.get(r);if(!a.crossTileID){var n=this.indexedSymbolInstances[a.key];if(n)for(var s=this.getScaledCoordinates(a,e),l=0,c=n;l<c.length;l+=1){var u=c[l];if(Math.abs(u.coord.x-s.x)<=o&&Math.abs(u.coord.y-s.y)<=o&&!i[u.crossTileID]){i[u.crossTileID]=!0,a.crossTileID=u.crossTileID;break}}}}};var Ae=function(){this.maxCrossTileID=0;};Ae.prototype.generate=function(){return ++this.maxCrossTileID};var Re=function(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;};Re.prototype.handleWrapJump=function(t){var e=Math.round((t-this.lng)/360);if(0!==e)for(var i in this.indexes){var o=this.indexes[i],r={};for(var a in o){var n=o[a];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+e),r[n.tileID.key]=n;}this.indexes[i]=r;}this.lng=t;},Re.prototype.addBucket=function(t,e,i){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===e.bucketInstanceId)return !1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key]);}for(var o=0;o<e.symbolInstances.length;o++){e.symbolInstances.get(o).crossTileID=0;}this.usedCrossTileIDs[t.overscaledZ]||(this.usedCrossTileIDs[t.overscaledZ]={});var r=this.usedCrossTileIDs[t.overscaledZ];for(var a in this.indexes){var n=this.indexes[a];if(Number(a)>t.overscaledZ)for(var s in n){var l=n[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,r);}else{var c=n[t.scaledTo(Number(a)).key];c&&c.findMatches(e.symbolInstances,t,r);}}for(var u=0;u<e.symbolInstances.length;u++){var h=e.symbolInstances.get(u);h.crossTileID||(h.crossTileID=i.generate(),r[h.crossTileID]=!0);}return void 0===this.indexes[t.overscaledZ]&&(this.indexes[t.overscaledZ]={}),this.indexes[t.overscaledZ][t.key]=new De(t,e.symbolInstances,e.bucketInstanceId),!0},Re.prototype.removeBucketCrossTileIDs=function(t,e){for(var i in e.indexedSymbolInstances)for(var o=0,r=e.indexedSymbolInstances[i];o<r.length;o+=1){var a=r[o];delete this.usedCrossTileIDs[t][a.crossTileID];}},Re.prototype.removeStaleBuckets=function(t){var e=!1;for(var i in this.indexes){var o=this.indexes[i];for(var r in o)t[o[r].bucketInstanceId]||(this.removeBucketCrossTileIDs(i,o[r]),delete o[r],e=!0);}return e};var ke=function(){this.layerIndexes={},this.crossTileIDs=new Ae,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={};};ke.prototype.addLayer=function(t,e,i){var o=this.layerIndexes[t.id];void 0===o&&(o=this.layerIndexes[t.id]=new Re);var r=!1,a={};o.handleWrapJump(i);for(var n=0,s=e;n<s.length;n+=1){var l=s[n],c=l.getBucket(t);c&&t.id===c.layerIds[0]&&(c.bucketInstanceId||(c.bucketInstanceId=++this.maxBucketInstanceId),o.addBucket(l.tileID,c,this.crossTileIDs)&&(r=!0),a[c.bucketInstanceId]=!0);}return o.removeStaleBuckets(a)&&(r=!0),r},ke.prototype.pruneUnusedLayers=function(t){var e={};for(var i in t.forEach((function(t){e[t]=!0;})),this.layerIndexes)e[i]||delete this.layerIndexes[i];};var Be=function(e,i){return t.emitValidationErrors(e,i&&i.filter((function(t){return \"source.canvas\"!==t.identifier})))},Oe=t.pick(Ut,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\",\"setGeoJSONSourceData\"]),Fe=t.pick(Ut,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),Ue=function(e){function i(o,r){var a=this;void 0===r&&(r={}),e.call(this),this.map=o,this.dispatcher=new T((kt||(kt=new Rt),kt),this),this.imageManager=new p,this.imageManager.setEventedParent(this),this.glyphManager=new y(o._requestManager,r.localIdeographFontFamily),this.lineAtlas=new E(256,512),this.crossTileSymbolIndex=new ke,this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new t.ZoomHistory,this._loaded=!1,this._resetUpdates(),this.dispatcher.broadcast(\"setReferrer\",t.getReferrer());var n=this;this._rtlTextPluginCallback=i.registerForPluginStateChange((function(e){var i={pluginStatus:e.pluginStatus,pluginURL:e.pluginURL};n.dispatcher.broadcast(\"syncRTLPluginState\",i,(function(e,i){if((t.triggerPluginCompletionEvent(e),i)&&i.every((function(t){return t})))for(var o in n.sourceCaches)n.sourceCaches[o].reload();}));})),this.on(\"data\",(function(t){if(\"source\"===t.dataType&&\"metadata\"===t.sourceDataType){var e=a.sourceCaches[t.sourceId];if(e){var i=e.getSource();if(i&&i.vectorLayerIds)for(var o in a._layers){var r=a._layers[o];r.source===i.id&&a._validateLayer(r);}}}}));}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.loadURL=function(e,i){var o=this;void 0===i&&(i={}),this.fire(new t.Event(\"dataloading\",{dataType:\"style\"}));var r=\"boolean\"==typeof i.validate?i.validate:!t.isMapboxURL(e);e=this.map._requestManager.normalizeStyleURL(e,i.accessToken);var a=this.map._requestManager.transformRequest(e,t.ResourceType.Style);this._request=t.getJSON(a,(function(e,i){o._request=null,e?o.fire(new t.ErrorEvent(e)):i&&o._load(i,r);}));},i.prototype.loadJSON=function(e,i){var o=this;void 0===i&&(i={}),this.fire(new t.Event(\"dataloading\",{dataType:\"style\"})),this._request=t.browser.frame((function(){o._request=null,o._load(e,!1!==i.validate);}));},i.prototype._load=function(e,i){var o=this;if(!i||!Be(this,t.validateStyle(e))){for(var r in this._loaded=!0,this.stylesheet=e,e.sources)this.addSource(r,e.sources[r],{validate:!1});e.sprite?this._spriteRequest=function(e,i,o){var r,a,n,s=t.browser.devicePixelRatio>1?\"@2x\":\"\",l=t.getJSON(i.transformRequest(i.normalizeSpriteURL(e,s,\".json\"),t.ResourceType.SpriteJSON),(function(t,e){l=null,n||(n=t,r=e,u());})),c=t.getImage(i.transformRequest(i.normalizeSpriteURL(e,s,\".png\"),t.ResourceType.SpriteImage),(function(t,e){c=null,n||(n=t,a=e,u());}));function u(){if(n)o(n);else if(r&&a){var e=t.browser.getImageData(a),i={};for(var s in r){var l=r[s],c=l.width,u=l.height,h=l.x,p=l.y,d=l.sdf,_=l.pixelRatio,f=l.stretchX,m=l.stretchY,g=l.content,v=new t.RGBAImage({width:c,height:u});t.RGBAImage.copy(e,v,{x:h,y:p},{x:0,y:0},{width:c,height:u}),i[s]={data:v,pixelRatio:_,sdf:d,stretchX:f,stretchY:m,content:g};}o(null,i);}}return {cancel:function(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null);}}}(e.sprite,this.map._requestManager,(function(e,i){if(o._spriteRequest=null,e)o.fire(new t.ErrorEvent(e));else if(i)for(var r in i)o.imageManager.addImage(r,i[r]);o.imageManager.setLoaded(!0),o.dispatcher.broadcast(\"setImages\",o.imageManager.listImages()),o.fire(new t.Event(\"data\",{dataType:\"style\"}));})):this.imageManager.setLoaded(!0),this.glyphManager.setURL(e.glyphs);var a=Ft(this.stylesheet.layers);this._order=a.map((function(t){return t.id})),this._layers={};for(var n=0,s=a;n<s.length;n+=1){var l=s[n];(l=t.createStyleLayer(l)).setEventedParent(this,{layer:{id:l.id}}),this._layers[l.id]=l;}this.dispatcher.broadcast(\"setLayers\",this._serializeLayers(this._order)),this.light=new w(this.stylesheet.light),this.fire(new t.Event(\"data\",{dataType:\"style\"})),this.fire(new t.Event(\"style.load\"));}},i.prototype._validateLayer=function(e){var i=this.sourceCaches[e.source];if(i){var o=e.sourceLayer;if(o){var r=i.getSource();(\"geojson\"===r.type||r.vectorLayerIds&&-1===r.vectorLayerIds.indexOf(o))&&this.fire(new t.ErrorEvent(new Error('Source layer \"'+o+'\" does not exist on source \"'+r.id+'\" as specified by style layer \"'+e.id+'\"')));}}},i.prototype.loaded=function(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return !1;return !!this.imageManager.isLoaded()},i.prototype._serializeLayers=function(t){for(var e=[],i=0,o=t;i<o.length;i+=1){var r=o[i],a=this._layers[r];\"custom\"!==a.type&&e.push(a.serialize());}return e},i.prototype.hasTransitions=function(){if(this.light&&this.light.hasTransition())return !0;for(var t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return !0;for(var e in this._layers)if(this._layers[e].hasTransition())return !0;return !1},i.prototype._checkLoaded=function(){if(!this._loaded)throw new Error(\"Style is not done loading\")},i.prototype.update=function(e){if(this._loaded){var i=this._changed;if(this._changed){var o=Object.keys(this._updatedLayers),r=Object.keys(this._removedLayers);for(var a in (o.length||r.length)&&this._updateWorkerLayers(o,r),this._updatedSources){var n=this._updatedSources[a];\"reload\"===n?this._reloadSource(a):\"clear\"===n&&this._clearSource(a);}for(var s in this._updateTilesForChangedImages(),this._updatedPaintProps)this._layers[s].updateTransitions(e);this.light.updateTransitions(e),this._resetUpdates();}for(var l in this.sourceCaches)this.sourceCaches[l].used=!1;for(var c=0,u=this._order;c<u.length;c+=1){var h=u[c],p=this._layers[h];p.recalculate(e,this.imageManager.listImages()),!p.isHidden(e.zoom)&&p.source&&(this.sourceCaches[p.source].used=!0);}this.light.recalculate(e),this.z=e.zoom,i&&this.fire(new t.Event(\"data\",{dataType:\"style\"}));}},i.prototype._updateTilesForChangedImages=function(){var t=Object.keys(this._changedImages);if(t.length){for(var e in this.sourceCaches)this.sourceCaches[e].reloadTilesForDependencies([\"icons\",\"patterns\"],t);this._changedImages={};}},i.prototype._updateWorkerLayers=function(t,e){this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeLayers(t),removedIds:e});},i.prototype._resetUpdates=function(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={};},i.prototype.setState=function(e){var i=this;if(this._checkLoaded(),Be(this,t.validateStyle(e)))return !1;(e=t.clone$1(e)).layers=Ft(e.layers);var o=Xt(this.serialize(),e).filter((function(t){return !(t.command in Fe)}));if(0===o.length)return !1;var r=o.filter((function(t){return !(t.command in Oe)}));if(r.length>0)throw new Error(\"Unimplemented: \"+r.map((function(t){return t.command})).join(\", \")+\".\");return o.forEach((function(t){\"setTransition\"!==t.command&&i[t.command].apply(i,t.args);})),this.stylesheet=e,!0},i.prototype.addImage=function(e,i){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(e,i),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}));},i.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e);},i.prototype.getImage=function(t){return this.imageManager.getImage(t)},i.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(e),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}));},i.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},i.prototype.addSource=function(e,i,o){var r=this;if(void 0===o&&(o={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!i.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(i).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(i.type)>=0)||!this._validate(t.validateStyle.source,\"sources.\"+e,i,null,o)){this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Lt(e,i,this.dispatcher);a.style=this,a.setEventedParent(this,(function(){return {isSourceLoaded:r.loaded(),source:a.serialize(),sourceId:e}})),a.onAdd(this.map),this._changed=!0;}},i.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(var i in this._layers)if(this._layers[i].source===e)return this.fire(new t.ErrorEvent(new Error('Source \"'+e+'\" cannot be removed while layer \"'+i+'\" is using it.')));var o=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],o.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),o.setEventedParent(null),o.clearTiles(),o.onRemove&&o.onRemove(this.map),this._changed=!0;},i.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0;},i.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},i.prototype.addLayer=function(e,i,o){void 0===o&&(o={}),this._checkLoaded();var r=e.id;if(this.getLayer(r))this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" already exists on this map')));else{var a;if(\"custom\"===e.type){if(Be(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e);}else{if(\"object\"==typeof e.source&&(this.addSource(r,e.source),e=t.clone$1(e),e=t.extend(e,{source:r})),this._validate(t.validateStyle.layer,\"layers.\"+r,e,{arrayIndex:-1},o))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:r}});}var n=i?this._order.indexOf(i):this._order.length;if(i&&-1===n)this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" does not exist on this map.')));else{if(this._order.splice(n,0,r),this._layerOrderChanged=!0,this._layers[r]=a,this._removedLayers[r]&&a.source&&\"custom\"!==a.type){var s=this._removedLayers[r];delete this._removedLayers[r],s.type!==a.type?this._updatedSources[a.source]=\"clear\":(this._updatedSources[a.source]=\"reload\",this.sourceCaches[a.source].pause());}this._updateLayer(a),a.onAdd&&a.onAdd(this.map);}}},i.prototype.moveLayer=function(e,i){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==i){var o=this._order.indexOf(e);this._order.splice(o,1);var r=i?this._order.indexOf(i):this._order.length;i&&-1===r?this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" does not exist on this map.'))):(this._order.splice(r,0,e),this._layerOrderChanged=!0);}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")));},i.prototype.removeLayer=function(e){this._checkLoaded();var i=this._layers[e];if(i){i.setEventedParent(null);var o=this._order.indexOf(e);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map);}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")));},i.prototype.getLayer=function(t){return this._layers[t]},i.prototype.setLayerZoomRange=function(e,i,o){this._checkLoaded();var r=this.getLayer(e);r?r.minzoom===i&&r.maxzoom===o||(null!=i&&(r.minzoom=i),null!=o&&(r.maxzoom=o),this._updateLayer(r)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")));},i.prototype.setFilter=function(e,i,o){void 0===o&&(o={}),this._checkLoaded();var r=this.getLayer(e);if(r){if(!t.deepEqual(r.filter,i))return null==i?(r.filter=void 0,void this._updateLayer(r)):void(this._validate(t.validateStyle.filter,\"layers.\"+r.id+\".filter\",i,null,o)||(r.filter=t.clone$1(i),this._updateLayer(r)))}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")));},i.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},i.prototype.setLayoutProperty=function(e,i,o,r){void 0===r&&(r={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getLayoutProperty(i),o)||(a.setLayoutProperty(i,o,r),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")));},i.prototype.getLayoutProperty=function(e,i){var o=this.getLayer(e);if(o)return o.getLayoutProperty(i);this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style.\")));},i.prototype.setPaintProperty=function(e,i,o,r){void 0===r&&(r={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getPaintProperty(i),o)||(a.setPaintProperty(i,o,r)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")));},i.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},i.prototype.setFeatureState=function(e,i){this._checkLoaded();var o=e.source,r=e.sourceLayer,a=this.sourceCaches[o],n=parseInt(e.id,10);if(void 0!==a){var s=a.getSource().type;\"geojson\"===s&&r?this.fire(new t.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==s||r?isNaN(n)||n<0?this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided and non-negative.\"))):a.setFeatureState(r,n,i):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+o+\"' does not exist in the map's style.\")));},i.prototype.removeFeatureState=function(e,i){this._checkLoaded();var o=e.source,r=this.sourceCaches[o];if(void 0!==r){var a=r.getSource().type,n=\"vector\"===a?e.sourceLayer:void 0,s=parseInt(e.id,10);\"vector\"!==a||n?void 0!==e.id&&isNaN(s)||s<0?this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be non-negative.\"))):i&&\"string\"!=typeof e.id&&\"number\"!=typeof e.id?this.fire(new t.ErrorEvent(new Error(\"A feature id is requred to remove its specific state property.\"))):r.removeFeatureState(n,s,i):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+o+\"' does not exist in the map's style.\")));},i.prototype.getFeatureState=function(e){this._checkLoaded();var i=e.source,o=e.sourceLayer,r=this.sourceCaches[i],a=parseInt(e.id,10);if(void 0!==r)if(\"vector\"!==r.getSource().type||o){if(!(isNaN(a)||a<0))return r.getFeatureState(o,a);this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided and non-negative.\")));}else this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));else this.fire(new t.ErrorEvent(new Error(\"The source '\"+i+\"' does not exist in the map's style.\")));},i.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},i.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,(function(t){return t.serialize()})),layers:this._serializeLayers(this._order)},(function(t){return void 0!==t}))},i.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&\"raster\"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0;},i.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,i=function(t){return \"fill-extrusion\"===e._layers[t].type},o={},r=[],a=this._order.length-1;a>=0;a--){var n=this._order[a];if(i(n)){o[n]=a;for(var s=0,l=t;s<l.length;s+=1){var c=l[s][n];if(c)for(var u=0,h=c;u<h.length;u+=1){var p=h[u];r.push(p);}}}}r.sort((function(t,e){return e.intersectionZ-t.intersectionZ}));for(var d=[],_=this._order.length-1;_>=0;_--){var f=this._order[_];if(i(f))for(var m=r.length-1;m>=0;m--){var g=r[m].feature;if(o[g.layer.id]<_)break;d.push(g),r.pop();}else for(var v=0,y=t;v<y.length;v+=1){var x=y[v][f];if(x)for(var b=0,w=x;b<w.length;b+=1){var E=w[b];d.push(E.feature);}}}return d},i.prototype.queryRenderedFeatures=function(e,i,o){i&&i.filter&&this._validate(t.validateStyle.filter,\"queryRenderedFeatures.filter\",i.filter,null,i);var r={};if(i&&i.layers){if(!Array.isArray(i.layers))return this.fire(new t.ErrorEvent(new Error(\"parameters.layers must be an Array.\"))),[];for(var a=0,n=i.layers;a<n.length;a+=1){var s=n[a],l=this._layers[s];if(!l)return this.fire(new t.ErrorEvent(new Error(\"The layer '\"+s+\"' does not exist in the map's style and cannot be queried for features.\"))),[];r[l.source]=!0;}}var c=[];for(var u in this.sourceCaches)i.layers&&!r[u]||c.push(O(this.sourceCaches[u],this._layers,e,i,o));return this.placement&&c.push(function(t,e,i,o,r,a){for(var n={},s=r.queryRenderedSymbols(i),l=[],c=0,u=Object.keys(s).map(Number);c<u.length;c+=1){var h=u[c];l.push(a[h]);}l.sort(F);for(var p=function(){var e=_[d],i=e.featureIndex.lookupSymbolFeatures(s[e.bucketInstanceId],e.bucketIndex,e.sourceLayerIndex,o.filter,o.layers,t);for(var r in i){var a=n[r]=n[r]||[],l=i[r];l.sort((function(t,i){var o=e.featureSortOrder;if(o){var r=o.indexOf(t.featureIndex);return o.indexOf(i.featureIndex)-r}return i.featureIndex-t.featureIndex}));for(var c=0,u=l;c<u.length;c+=1){var h=u[c];a.push(h);}}},d=0,_=l;d<_.length;d+=1)p();var f=function(i){n[i].forEach((function(o){var r=o.feature,a=t[i],n=e[a.source].getFeatureState(r.layer[\"source-layer\"],r.id);r.source=r.layer.source,r.layer[\"source-layer\"]&&(r.sourceLayer=r.layer[\"source-layer\"]),r.state=n;}));};for(var m in n)f(m);return n}(this._layers,this.sourceCaches,e,i,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(c)},i.prototype.querySourceFeatures=function(e,i){i&&i.filter&&this._validate(t.validateStyle.filter,\"querySourceFeatures.filter\",i.filter,null,i);var o=this.sourceCaches[e];return o?function(t,e){for(var i=t.getRenderableIds().map((function(e){return t.getTileByID(e)})),o=[],r={},a=0;a<i.length;a++){var n=i[a],s=n.tileID.canonical.key;r[s]||(r[s]=!0,n.querySourceFeatures(o,e));}return o}(o,i):[]},i.prototype.addSourceType=function(t,e,o){return i.getSourceType(t)?o(new Error('A source type called \"'+t+'\" already exists.')):(i.setSourceType(t,e),e.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:t,url:e.workerSourceURL},o):o(null,null))},i.prototype.getLight=function(){return this.light.getLight()},i.prototype.setLight=function(e,i){void 0===i&&(i={}),this._checkLoaded();var o=this.light.getLight(),r=!1;for(var a in e)if(!t.deepEqual(e[a],o[a])){r=!0;break}if(r){var n={now:t.browser.now(),transition:t.extend({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(e,i),this.light.updateTransitions(n);}},i.prototype._validate=function(e,i,o,r,a){return void 0===a&&(a={}),(!a||!1!==a.validate)&&Be(this,e.call(t.validateStyle,t.extend({key:i,style:this.serialize(),value:o,styleSpec:t.styleSpec},r)))},i.prototype._remove=function(){for(var e in this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),t.evented.off(\"pluginStateChange\",this._rtlTextPluginCallback),this._layers){this._layers[e].setEventedParent(null);}for(var i in this.sourceCaches)this.sourceCaches[i].clearTiles(),this.sourceCaches[i].setEventedParent(null);this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove();},i.prototype._clearSource=function(t){this.sourceCaches[t].clearTiles();},i.prototype._reloadSource=function(t){this.sourceCaches[t].resume(),this.sourceCaches[t].reload();},i.prototype._updateSources=function(t){for(var e in this.sourceCaches)this.sourceCaches[e].update(t);},i.prototype._generateCollisionBoxes=function(){for(var t in this.sourceCaches)this._reloadSource(t);},i.prototype._updatePlacement=function(e,i,o,r){for(var a=!1,n=!1,s={},l=0,c=this._order;l<c.length;l+=1){var u=c[l],h=this._layers[u];if(\"symbol\"===h.type){if(!s[h.source]){var p=this.sourceCaches[h.source];s[h.source]=p.getRenderableIds(!0).map((function(t){return p.getTileByID(t)})).sort((function(t,e){return e.tileID.overscaledZ-t.tileID.overscaledZ||(t.tileID.isLessThan(e.tileID)?-1:1)}));}var d=this.crossTileSymbolIndex.addLayer(h,s[h.source],e.center.lng);a=a||d;}}this.crossTileSymbolIndex.pruneUnusedLayers(this._order);var _=this._layerOrderChanged||0===o;if((_||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(t.browser.now(),e.zoom))&&(this.pauseablePlacement=new Le(e,this._order,_,i,o,r,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,s),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(t.browser.now()),n=!0),a&&this.pauseablePlacement.placement.setStale()),n||a)for(var f=0,m=this._order;f<m.length;f+=1){var g=m[f],v=this._layers[g];\"symbol\"===v.type&&this.placement.updateLayerOpacities(v,s[v.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(t.browser.now())},i.prototype._releaseSymbolFadeTiles=function(){for(var t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles();},i.prototype.getImages=function(t,e,i){this.imageManager.getImages(e.icons,i),this._updateTilesForChangedImages();var o=this.sourceCaches[e.source];o&&o.setDependencies(e.tileID.key,e.type,e.icons);},i.prototype.getGlyphs=function(t,e,i){this.glyphManager.getGlyphs(e.stacks,i);},i.prototype.getResource=function(e,i,o){return t.makeRequest(i,o)},i}(t.Evented);Ue.getSourceType=function(t){return R[t]},Ue.setSourceType=function(t,e){R[t]=e;},Ue.registerForPluginStateChange=t.registerForPluginStateChange;var Ne=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2}]),Ze=di(\"#ifdef GL_ES\\nprecision mediump float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\",\"#ifdef GL_ES\\nprecision highp float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\"),qe=di(\"uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),je=di(\"uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}\"),Ve=di(\"varying vec3 v_data;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main(void) {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,0,1);} else {gl_Position=u_matrix*vec4(circle_center,0,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}\"),Ge=di(\"void main() {gl_FragColor=vec4(1.0);}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),We=di(\"uniform highp float u_intensity;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main() {\\n#pragma mapbox: initialize highp float weight\\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#pragma mapbox: define mediump float radius\\nconst highp float ZERO=1.0/255.0/16.0;\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main(void) {\\n#pragma mapbox: initialize highp float weight\\n#pragma mapbox: initialize mediump float radius\\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}\"),Xe=di(\"uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(0.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}\"),He=di(\"varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),Ke=di(\"uniform float u_overscale_factor;varying float v_placed;varying float v_notUsed;varying float v_radius;varying vec2 v_extrude;varying vec2 v_extrude_scale;void main() {float alpha=0.5;vec4 color=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {color=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {color*=.2;}float extrude_scale_length=length(v_extrude_scale);float extrude_length=length(v_extrude)*extrude_scale_length;float stroke_width=15.0*extrude_scale_length/u_overscale_factor;float radius=v_radius*extrude_scale_length;float distance_to_edge=abs(extrude_length-radius);float opacity_t=smoothstep(-stroke_width,0.0,-distance_to_edge);gl_FragColor=opacity_t*color;}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;varying float v_radius;varying vec2 v_extrude;varying vec2 v_extrude_scale;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);highp float padding_factor=1.2;gl_Position.xy+=a_extrude*u_extrude_scale*padding_factor*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;v_radius=abs(a_extrude.y);v_extrude=a_extrude*padding_factor;v_extrude_scale=u_extrude_scale*u_camera_to_center_distance*collision_perspective_ratio;}\"),Ye=di(\"uniform highp vec4 u_color;void main() {gl_FragColor=u_color;}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),Je=di(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),Qe=di(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),$e=di(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec4 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ti=di(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec4 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileZoomRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),ei=di(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\"),ii=di(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec4 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\"),oi=di(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),ri=di(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),ai=di(\"uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),ni=di(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define MAX_LINE_DISTANCE 32767.0\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),si=di(\"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec4 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileZoomRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x,1.0);float x_b=mod(v_linesofar/pattern_size_b.x,1.0);float y_a=0.5+(v_normal.y*clamp(v_width2.s,0.0,(pattern_size_a.y+2.0)/2.0)/pattern_size_a.y);float y_b=0.5+(v_normal.y*clamp(v_width2.s,0.0,(pattern_size_b.y+2.0)/2.0)/pattern_size_b.y);vec2 pos_a=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,vec2(x_a,y_a));vec2 pos_b=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,vec2(x_b,y_b));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);}\"),li=di(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),ci=di(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),ui=di(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\"),hi=di(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\"),pi=di(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\");function di(t,e){var i=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,o={};return {fragmentSource:t=t.replace(i,(function(t,e,i,r,a){return o[a]=!0,\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nvarying \"+i+\" \"+r+\" \"+a+\";\\n#else\\nuniform \"+i+\" \"+r+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+a+\"\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"})),vertexSource:e=e.replace(i,(function(t,e,i,r,a){var n=\"float\"===r?\"vec2\":\"vec4\",s=a.match(/color/)?\"color\":n;return o[a]?\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+i+\" \"+n+\" a_\"+a+\";\\nvarying \"+i+\" \"+r+\" \"+a+\";\\n#else\\nuniform \"+i+\" \"+r+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = a_\"+a+\";\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+i+\" \"+n+\" a_\"+a+\";\\n#else\\nuniform \"+i+\" \"+r+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+i+\" \"+r+\" \"+a+\" = a_\"+a+\";\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+i+\" \"+r+\" \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"}))}}var _i=Object.freeze({__proto__:null,prelude:Ze,background:qe,backgroundPattern:je,circle:Ve,clippingMask:Ge,heatmap:We,heatmapTexture:Xe,collisionBox:He,collisionCircle:Ke,debug:Ye,fill:Je,fillOutline:Qe,fillOutlinePattern:$e,fillPattern:ti,fillExtrusion:ei,fillExtrusionPattern:ii,hillshadePrepare:oi,hillshade:ri,line:ai,lineGradient:ni,linePattern:si,lineSDF:li,raster:ci,symbolIcon:ui,symbolSDF:hi,symbolTextAndIcon:pi}),fi=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;};fi.prototype.bind=function(t,e,i,o,r,a,n,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==o.length,c=0;!l&&c<o.length;c++)this.boundPaintVertexBuffers[c]!==o[c]&&(l=!0);var u=!this.vao||this.boundProgram!==e||this.boundLayoutVertexBuffer!==i||l||this.boundIndexBuffer!==r||this.boundVertexOffset!==a||this.boundDynamicVertexBuffer!==n||this.boundDynamicVertexBuffer2!==s;!t.extVertexArrayObject||u?this.freshBind(e,i,o,r,a,n,s):(t.bindVertexArrayOES.set(this.vao),n&&n.bind(),r&&r.dynamicDraw&&r.bind(),s&&s.bind());},fi.prototype.freshBind=function(t,e,i,o,r,a,n){var s,l=t.numAttributes,c=this.context,u=c.gl;if(c.extVertexArrayObject)this.vao&&this.destroy(),this.vao=c.extVertexArrayObject.createVertexArrayOES(),c.bindVertexArrayOES.set(this.vao),s=0,this.boundProgram=t,this.boundLayoutVertexBuffer=e,this.boundPaintVertexBuffers=i,this.boundIndexBuffer=o,this.boundVertexOffset=r,this.boundDynamicVertexBuffer=a,this.boundDynamicVertexBuffer2=n;else{s=c.currentNumAttributes||0;for(var h=l;h<s;h++)u.disableVertexAttribArray(h);}e.enableAttributes(u,t);for(var p=0,d=i;p<d.length;p+=1){d[p].enableAttributes(u,t);}a&&a.enableAttributes(u,t),n&&n.enableAttributes(u,t),e.bind(),e.setVertexAttribPointers(u,t,r);for(var _=0,f=i;_<f.length;_+=1){var m=f[_];m.bind(),m.setVertexAttribPointers(u,t,r);}a&&(a.bind(),a.setVertexAttribPointers(u,t,r)),o&&o.bind(),n&&(n.bind(),n.setVertexAttribPointers(u,t,r)),c.currentNumAttributes=l;},fi.prototype.destroy=function(){this.vao&&(this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null);};var mi=function(t,e,i,o,r){var a=t.gl;this.program=a.createProgram();var n=i.defines();r&&n.push(\"#define OVERDRAW_INSPECTOR;\");var s=n.concat(Ze.fragmentSource,e.fragmentSource).join(\"\\n\"),l=n.concat(Ze.vertexSource,e.vertexSource).join(\"\\n\"),c=a.createShader(a.FRAGMENT_SHADER);if(a.isContextLost())this.failedToCreate=!0;else{a.shaderSource(c,s),a.compileShader(c),a.attachShader(this.program,c);var u=a.createShader(a.VERTEX_SHADER);if(a.isContextLost())this.failedToCreate=!0;else{a.shaderSource(u,l),a.compileShader(u),a.attachShader(this.program,u);for(var h=i.layoutAttributes||[],p=0;p<h.length;p++)a.bindAttribLocation(this.program,p,h[p].name);a.linkProgram(this.program),this.numAttributes=a.getProgramParameter(this.program,a.ACTIVE_ATTRIBUTES),this.attributes={};for(var d={},_=0;_<this.numAttributes;_++){var f=a.getActiveAttrib(this.program,_);f&&(this.attributes[f.name]=a.getAttribLocation(this.program,f.name));}for(var m=a.getProgramParameter(this.program,a.ACTIVE_UNIFORMS),g=0;g<m;g++){var v=a.getActiveUniform(this.program,g);v&&(d[v.name]=a.getUniformLocation(this.program,v.name));}this.fixedUniforms=o(t,d),this.binderUniforms=i.getUniforms(t,d);}}};function gi(e,i,o){var r=1/ue(o,1,i.transform.tileZoom),a=Math.pow(2,o.tileID.overscaledZ),n=o.tileSize*Math.pow(2,i.transform.tileZoom)/a,s=n*(o.tileID.canonical.x+o.tileID.wrap*a),l=n*o.tileID.canonical.y;return {u_image:0,u_texsize:o.imageAtlasTexture.size,u_scale:[t.browser.devicePixelRatio,r,e.fromScale,e.toScale],u_fade:e.t,u_pixel_coord_upper:[s>>16,l>>16],u_pixel_coord_lower:[65535&s,65535&l]}}mi.prototype.draw=function(t,e,i,o,r,a,n,s,l,c,u,h,p,d,_,f){var m,g=t.gl;if(!this.failedToCreate){for(var v in t.program.set(this.program),t.setDepthMode(i),t.setStencilMode(o),t.setColorMode(r),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[v].set(n[v]);d&&d.setUniforms(t,this.binderUniforms,h,{zoom:p});for(var y=(m={},m[g.LINES]=2,m[g.TRIANGLES]=3,m[g.LINE_STRIP]=1,m)[e],x=0,b=u.get();x<b.length;x+=1){var w=b[x],E=w.vaos||(w.vaos={});(E[s]||(E[s]=new fi)).bind(t,this,l,d?d.getPaintVertexBuffers():[],c,w.vertexOffset,_,f),g.drawElements(e,w.primitiveLength*y,g.UNSIGNED_SHORT,w.primitiveOffset*y*2);}}};var vi=function(e,i,o,r){var a=i.style.light,n=a.properties.get(\"position\"),s=[n.x,n.y,n.z],l=t.create$1();\"viewport\"===a.properties.get(\"anchor\")&&t.fromRotation(l,-i.transform.angle),t.transformMat3(s,s,l);var c=a.properties.get(\"color\");return {u_matrix:e,u_lightpos:s,u_lightintensity:a.properties.get(\"intensity\"),u_lightcolor:[c.r,c.g,c.b],u_vertical_gradient:+o,u_opacity:r}},yi=function(e,i,o,r,a,n,s){return t.extend(vi(e,i,o,r),gi(n,i,s),{u_height_factor:-Math.pow(2,a.overscaledZ)/s.tileSize/8})},xi=function(t){return {u_matrix:t}},bi=function(e,i,o,r){return t.extend(xi(e),gi(o,i,r))},wi=function(t,e){return {u_matrix:t,u_world:e}},Ei=function(e,i,o,r,a){return t.extend(bi(e,i,o,r),{u_world:a})},Ti=function(e,i,o,r){var a,n,s=e.transform;if(\"map\"===r.paint.get(\"circle-pitch-alignment\")){var l=ue(o,1,s.zoom);a=!0,n=[l,l];}else a=!1,n=s.pixelsToGLUnits;return {u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+(\"map\"===r.paint.get(\"circle-pitch-scale\")),u_matrix:e.translatePosMatrix(i.posMatrix,o,r.paint.get(\"circle-translate\"),r.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+a,u_device_pixel_ratio:t.browser.devicePixelRatio,u_extrude_scale:n}},Ii=function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,i.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,i.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,i.u_overscale_factor)}},Ci=function(t,e,i){var o=ue(i,1,e.zoom),r=Math.pow(2,e.zoom-i.tileID.overscaledZ),a=i.tileID.overscaleFactor();return {u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:o,u_extrude_scale:[e.pixelsToGLUnits[0]/(o*r),e.pixelsToGLUnits[1]/(o*r)],u_overscale_factor:a}},Si=function(t,e){return {u_matrix:t,u_color:e}},Pi=function(t){return {u_matrix:t}},zi=function(t,e,i,o){return {u_matrix:t,u_extrude_scale:ue(e,1,i),u_intensity:o}},Li=function(e,i,o,r){var a=t.create();t.ortho(a,0,e.width,e.height,0,0,1);var n=e.context.gl;return {u_matrix:a,u_world:[n.drawingBufferWidth,n.drawingBufferHeight],u_image:o,u_color_ramp:r,u_opacity:i.paint.get(\"heatmap-opacity\")}},Mi=function(t,e,i){var o=i.paint.get(\"hillshade-shadow-color\"),r=i.paint.get(\"hillshade-highlight-color\"),a=i.paint.get(\"hillshade-accent-color\"),n=i.paint.get(\"hillshade-illumination-direction\")*(Math.PI/180);\"viewport\"===i.paint.get(\"hillshade-illumination-anchor\")&&(n-=t.transform.angle);var s=!t.options.moving;return {u_matrix:t.transform.calculatePosMatrix(e.tileID.toUnwrapped(),s),u_image:0,u_latrange:Ai(t,e.tileID),u_light:[i.paint.get(\"hillshade-exaggeration\"),n],u_shadow:o,u_highlight:r,u_accent:a}},Di=function(e,i,o){var r=i.stride,a=t.create();return t.ortho(a,0,t.EXTENT,-t.EXTENT,0,0,1),t.translate(a,a,[0,-t.EXTENT,0]),{u_matrix:a,u_image:1,u_dimension:[r,r],u_zoom:e.overscaledZ,u_maxzoom:o,u_unpack:i.getUnpackVector()}};function Ai(e,i){var o=Math.pow(2,i.canonical.z),r=i.canonical.y;return [new t.MercatorCoordinate(0,r/o).toLngLat().lat,new t.MercatorCoordinate(0,(r+1)/o).toLngLat().lat]}var Ri=function(e,i,o){var r=e.transform;return {u_matrix:Ui(e,i,o),u_ratio:1/ue(i,1,r.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_units_to_pixels:[1/r.pixelsToGLUnits[0],1/r.pixelsToGLUnits[1]]}},ki=function(e,i,o){return t.extend(Ri(e,i,o),{u_image:0})},Bi=function(e,i,o,r){var a=e.transform,n=Fi(i,a);return {u_matrix:Ui(e,i,o),u_texsize:i.imageAtlasTexture.size,u_ratio:1/ue(i,1,a.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_image:0,u_scale:[t.browser.devicePixelRatio,n,r.fromScale,r.toScale],u_fade:r.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Oi=function(e,i,o,r,a){var n=e.transform,s=e.lineAtlas,l=Fi(i,n),c=\"round\"===o.layout.get(\"line-cap\"),u=s.getDash(r.from,c),h=s.getDash(r.to,c),p=u.width*a.fromScale,d=h.width*a.toScale;return t.extend(Ri(e,i,o),{u_patternscale_a:[l/p,-u.height/2],u_patternscale_b:[l/d,-h.height/2],u_sdfgamma:s.width/(256*Math.min(p,d)*t.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:u.y,u_tex_y_b:h.y,u_mix:a.t})};function Fi(t,e){return 1/ue(t,1,e.tileZoom)}function Ui(t,e,i){return t.translatePosMatrix(e.tileID.posMatrix,e,i.paint.get(\"line-translate\"),i.paint.get(\"line-translate-anchor\"))}var Ni=function(t,e,i,o,r){return {u_matrix:t,u_tl_parent:e,u_scale_parent:i,u_buffer_scale:1,u_fade_t:o.mix,u_opacity:o.opacity*r.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:r.paint.get(\"raster-brightness-min\"),u_brightness_high:r.paint.get(\"raster-brightness-max\"),u_saturation_factor:(n=r.paint.get(\"raster-saturation\"),n>0?1-1/(1.001-n):-n),u_contrast_factor:(a=r.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:Zi(r.paint.get(\"raster-hue-rotate\"))};var a,n;};function Zi(t){t*=Math.PI/180;var e=Math.sin(t),i=Math.cos(t);return [(2*i+1)/3,(-Math.sqrt(3)*e-i+1)/3,(Math.sqrt(3)*e-i+1)/3]}var qi=function(t,e,i,o,r,a,n,s,l,c){var u=r.transform;return {u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:u.cameraToCenterDistance,u_pitch:u.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:u.width/u.height,u_fade_change:r.options.fadeDuration?r.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:n,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+o,u_texsize:c,u_texture:0}},ji=function(e,i,o,r,a,n,s,l,c,u,h){var p=a.transform;return t.extend(qi(e,i,o,r,a,n,s,l,c,u),{u_gamma_scale:r?Math.cos(p._pitch)*p.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+h})},Vi=function(e,i,o,r,a,n,s,l,c,u){return t.extend(ji(e,i,o,r,a,n,s,l,!0,c,!0),{u_texsize_icon:u,u_texture_icon:1})},Gi=function(t,e,i){return {u_matrix:t,u_opacity:e,u_color:i}},Wi=function(e,i,o,r,a,n){return t.extend(function(t,e,i,o){var r=i.imageManager.getPattern(t.from.toString()),a=i.imageManager.getPattern(t.to.toString()),n=i.imageManager.getPixelSize(),s=n.width,l=n.height,c=Math.pow(2,o.tileID.overscaledZ),u=o.tileSize*Math.pow(2,i.transform.tileZoom)/c,h=u*(o.tileID.canonical.x+o.tileID.wrap*c),p=u*o.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:r.tl,u_pattern_br_a:r.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:r.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/ue(o,1,i.transform.tileZoom),u_pixel_coord_upper:[h>>16,p>>16],u_pixel_coord_lower:[65535&h,65535&p]}}(r,n,o,a),{u_matrix:e,u_opacity:i})},Xi={fillExtrusion:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_lightpos:new t.Uniform3f(e,i.u_lightpos),u_lightintensity:new t.Uniform1f(e,i.u_lightintensity),u_lightcolor:new t.Uniform3f(e,i.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,i.u_vertical_gradient),u_opacity:new t.Uniform1f(e,i.u_opacity)}},fillExtrusionPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_lightpos:new t.Uniform3f(e,i.u_lightpos),u_lightintensity:new t.Uniform1f(e,i.u_lightintensity),u_lightcolor:new t.Uniform3f(e,i.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,i.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,i.u_height_factor),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade),u_opacity:new t.Uniform1f(e,i.u_opacity)}},fill:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},fillPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},fillOutline:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world)}},fillOutlinePattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},circle:function(e,i){return {u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,i.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,i.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},collisionBox:Ii,collisionCircle:Ii,debug:function(e,i){return {u_color:new t.UniformColor(e,i.u_color),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},clippingMask:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},heatmap:function(e,i){return {u_extrude_scale:new t.Uniform1f(e,i.u_extrude_scale),u_intensity:new t.Uniform1f(e,i.u_intensity),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},heatmapTexture:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_color_ramp:new t.Uniform1i(e,i.u_color_ramp),u_opacity:new t.Uniform1f(e,i.u_opacity)}},hillshade:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_latrange:new t.Uniform2f(e,i.u_latrange),u_light:new t.Uniform2f(e,i.u_light),u_shadow:new t.UniformColor(e,i.u_shadow),u_highlight:new t.UniformColor(e,i.u_highlight),u_accent:new t.UniformColor(e,i.u_accent)}},hillshadePrepare:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_dimension:new t.Uniform2f(e,i.u_dimension),u_zoom:new t.Uniform1f(e,i.u_zoom),u_maxzoom:new t.Uniform1f(e,i.u_maxzoom),u_unpack:new t.Uniform4f(e,i.u_unpack)}},line:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels)}},lineGradient:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels),u_image:new t.Uniform1i(e,i.u_image)}},linePattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_texsize:new t.Uniform2f(e,i.u_texsize),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_image:new t.Uniform1i(e,i.u_image),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},lineSDF:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,i.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,i.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,i.u_sdfgamma),u_image:new t.Uniform1i(e,i.u_image),u_tex_y_a:new t.Uniform1f(e,i.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,i.u_tex_y_b),u_mix:new t.Uniform1f(e,i.u_mix)}},raster:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_tl_parent:new t.Uniform2f(e,i.u_tl_parent),u_scale_parent:new t.Uniform1f(e,i.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,i.u_buffer_scale),u_fade_t:new t.Uniform1f(e,i.u_fade_t),u_opacity:new t.Uniform1f(e,i.u_opacity),u_image0:new t.Uniform1i(e,i.u_image0),u_image1:new t.Uniform1i(e,i.u_image1),u_brightness_low:new t.Uniform1f(e,i.u_brightness_low),u_brightness_high:new t.Uniform1f(e,i.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,i.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,i.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,i.u_spin_weights)}},symbolIcon:function(e,i){return {u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,i.u_coord_matrix),u_is_text:new t.Uniform1f(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texture:new t.Uniform1i(e,i.u_texture)}},symbolSDF:function(e,i){return {u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,i.u_coord_matrix),u_is_text:new t.Uniform1f(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texture:new t.Uniform1i(e,i.u_texture),u_gamma_scale:new t.Uniform1f(e,i.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_is_halo:new t.Uniform1f(e,i.u_is_halo)}},symbolTextAndIcon:function(e,i){return {u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,i.u_coord_matrix),u_is_text:new t.Uniform1f(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texsize_icon:new t.Uniform2f(e,i.u_texsize_icon),u_texture:new t.Uniform1i(e,i.u_texture),u_texture_icon:new t.Uniform1i(e,i.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,i.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_is_halo:new t.Uniform1f(e,i.u_is_halo)}},background:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_opacity:new t.Uniform1f(e,i.u_opacity),u_color:new t.UniformColor(e,i.u_color)}},backgroundPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_opacity:new t.Uniform1f(e,i.u_opacity),u_image:new t.Uniform1i(e,i.u_image),u_pattern_tl_a:new t.Uniform2f(e,i.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,i.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,i.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,i.u_pattern_br_b),u_texsize:new t.Uniform2f(e,i.u_texsize),u_mix:new t.Uniform1f(e,i.u_mix),u_pattern_size_a:new t.Uniform2f(e,i.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,i.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,i.u_scale_a),u_scale_b:new t.Uniform1f(e,i.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,i.u_tile_units_to_pixels)}}};function Hi(e,i){for(var o=e.sort((function(t,e){return t.tileID.isLessThan(e.tileID)?-1:e.tileID.isLessThan(t.tileID)?1:0})),r=0;r<o.length;r++){var a={},n=o[r],s=o.slice(r+1);Ki(n.tileID.wrapped(),n.tileID,s,new t.OverscaledTileID(0,n.tileID.wrap+1,0,0,0),a),n.setMask(a,i);}}function Ki(e,i,o,r,a){for(var n=0;n<o.length;n++){var s=o[n];if(r.isLessThan(s.tileID))break;if(i.key===s.tileID.key)return;if(s.tileID.isChildOf(i)){for(var l=i.children(1/0),c=0;c<l.length;c++){Ki(e,l[c],o.slice(n),r,a);}return}}var u=i.overscaledZ-e.overscaledZ,h=new t.CanonicalTileID(u,i.canonical.x-(e.canonical.x<<u),i.canonical.y-(e.canonical.y<<u));a[h.key]=a[h.key]||h;}function Yi(t,e,i,o,r,a,n,s){for(var l=t.context,c=l.gl,u=r?t.useProgram(\"collisionCircle\"):t.useProgram(\"collisionBox\"),h=0;h<o.length;h++){var p=o[h],d=e.getTile(p),_=d.getBucket(i);if(_){var f=r?s?_.textCollisionCircle:_.iconCollisionCircle:s?_.textCollisionBox:_.iconCollisionBox;if(f){var m=p.posMatrix;0===a[0]&&0===a[1]||(m=t.translatePosMatrix(p.posMatrix,d,a,n)),u.draw(l,r?c.TRIANGLES:c.LINES,It.disabled,Ct.disabled,t.colorModeForRenderPass(),Pt.disabled,Ci(m,t.transform,d),i.id,f.layoutVertexBuffer,f.indexBuffer,f.segments,null,t.transform.zoom,null,null,f.collisionVertexBuffer);}}}}function Ji(t,e,i,o,r,a,n){Yi(t,e,i,o,!1,r,a,n),Yi(t,e,i,o,!0,r,a,n);}var Qi=t.identity(new Float32Array(16));function $i(e,i,o,r,a,n){var s=t.getAnchorAlignment(e),l=-(s.horizontalAlign-.5)*i,c=-(s.verticalAlign-.5)*o,u=t.evaluateVariableOffset(e,r);return new t.Point((l/a+u[0])*n,(c/a+u[1])*n)}function to(e,i,o,r,a,n,s,l,c,u,h){var p=e.text.placedSymbolArray,d=e.text.dynamicLayoutVertexArray,_=e.icon.dynamicLayoutVertexArray,f={};d.clear();for(var m=0;m<p.length;m++){var g=p.get(m),v=e.allowVerticalPlacement&&!g.placedOrientation,y=g.hidden||!g.crossTileID||v?null:r[g.crossTileID];if(y){var x=new t.Point(g.anchorX,g.anchorY),b=Jt(x,o?l:s),w=.5+n.cameraToCenterDistance/b.signedDistanceFromCamera*.5,E=a.evaluateSizeForFeature(e.textSizeData,u,g)*w/t.ONE_EM;o&&(E*=e.tilePixelRatio/c);for(var T=y.width,I=y.height,C=$i(y.anchor,T,I,y.textOffset,y.textBoxScale,E),S=o?Jt(x.add(C),s).point:b.point.add(i?C.rotate(-n.angle):C),P=e.allowVerticalPlacement&&g.placedOrientation===t.WritingMode.vertical?Math.PI/2:0,z=0;z<g.numGlyphs;z++)t.addDynamicAttributes(d,S,P);h&&g.associatedIconIndex>=0&&(f[g.associatedIconIndex]={shiftedAnchor:S,angle:P});}else ne(g.numGlyphs,d);}if(h){_.clear();for(var L=e.icon.placedSymbolArray,M=0;M<L.length;M++){var D=L.get(M);if(D.hidden)ne(D.numGlyphs,_);else{var A=f[M];if(A)for(var R=0;R<D.numGlyphs;R++)t.addDynamicAttributes(_,A.shiftedAnchor,A.angle);else ne(D.numGlyphs,_);}}e.icon.dynamicLayoutVertexBuffer.updateData(_);}e.text.dynamicLayoutVertexBuffer.updateData(d);}function eo(t,e,i){return i.iconsInText&&e?\"symbolTextAndIcon\":t?\"symbolSDF\":\"symbolIcon\"}function io(e,i,o,r,a,n,s,l,c,u,h,p){for(var d,_,f=e.context,m=f.gl,g=e.transform,v=\"map\"===l,y=\"map\"===c,x=v&&\"point\"!==o.layout.get(\"symbol-placement\"),b=v&&!y&&!x,w=void 0!==o.layout.get(\"symbol-sort-key\").constantOr(1),E=e.depthModeForSublayer(0,It.ReadOnly),T=o.layout.get(\"text-variable-anchor\"),I=[],C=0,S=r;C<S.length;C+=1){var P=S[C],z=i.getTile(P),L=z.getBucket(o);if(L){var M=a?L.text:L.icon;if(M&&M.segments.get().length){var D=M.programConfigurations.get(o.id),A=a||L.sdfIcons,R=a?L.textSizeData:L.iconSizeData,k=y||0!==g.pitch;d||(d=e.useProgram(eo(A,a,L),D),_=t.evaluateSizeForZoom(R,g.zoom));var B=void 0,O=[0,0],F=void 0,U=void 0,N=null,Z=void 0;if(a){if(F=z.glyphAtlasTexture,U=m.LINEAR,B=z.glyphAtlasTexture.size,L.iconsInText){O=z.imageAtlasTexture.size,N=z.imageAtlasTexture;var q=\"composite\"===R.kind||\"camera\"===R.kind;Z=k||e.options.rotating||e.options.zooming||q?m.LINEAR:m.NEAREST;}}else{var j=1!==o.layout.get(\"icon-size\").constantOr(0)||L.iconsNeedLinear;F=z.imageAtlasTexture,U=A||e.options.rotating||e.options.zooming||j||k?m.LINEAR:m.NEAREST,B=z.imageAtlasTexture.size;}var V=ue(z,1,e.transform.zoom),G=Kt(P.posMatrix,y,v,e.transform,V),W=Yt(P.posMatrix,y,v,e.transform,V),X=T&&L.hasTextData(),H=\"none\"!==o.layout.get(\"icon-text-fit\")&&X&&L.hasIconData();x&&$t(L,P.posMatrix,e,a,G,W,y,u);var K=e.translatePosMatrix(P.posMatrix,z,n,s),Y=x||a&&T||H?Qi:G,J=e.translatePosMatrix(W,z,n,s,!0),Q=A&&0!==o.paint.get(a?\"text-halo-width\":\"icon-halo-width\").constantOr(1),$={program:d,buffers:M,uniformValues:A?L.iconsInText?Vi(R.kind,_,b,y,e,K,Y,J,B,O):ji(R.kind,_,b,y,e,K,Y,J,a,B,!0):qi(R.kind,_,b,y,e,K,Y,J,a,B),atlasTexture:F,atlasTextureIcon:N,atlasInterpolation:U,atlasInterpolationIcon:Z,isSDF:A,hasHalo:Q};if(w)for(var tt=0,et=M.segments.get();tt<et.length;tt+=1){var it=et[tt];I.push({segments:new t.SegmentVector([it]),sortKey:it.sortKey,state:$});}else I.push({segments:M.segments,sortKey:0,state:$});}}}w&&I.sort((function(t,e){return t.sortKey-e.sortKey}));for(var ot=0,rt=I;ot<rt.length;ot+=1){var at=rt[ot],nt=at.state;if(f.activeTexture.set(m.TEXTURE0),nt.atlasTexture.bind(nt.atlasInterpolation,m.CLAMP_TO_EDGE),nt.atlasTextureIcon&&(f.activeTexture.set(m.TEXTURE1),nt.atlasTextureIcon&&nt.atlasTextureIcon.bind(nt.atlasInterpolationIcon,m.CLAMP_TO_EDGE)),nt.isSDF){var st=nt.uniformValues;nt.hasHalo&&(st.u_is_halo=1,oo(nt.buffers,at.segments,o,e,nt.program,E,h,p,st)),st.u_is_halo=0;}oo(nt.buffers,at.segments,o,e,nt.program,E,h,p,nt.uniformValues);}}function oo(t,e,i,o,r,a,n,s,l){var c=o.context,u=c.gl;r.draw(c,u.TRIANGLES,a,n,s,Pt.disabled,l,i.id,t.layoutVertexBuffer,t.indexBuffer,e,i.paint,o.transform.zoom,t.programConfigurations.get(i.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer);}function ro(t,e,i,o,r,a,n){var s,l,c,u,h,p=t.context.gl,d=i.paint.get(\"fill-pattern\"),_=d&&d.constantOr(1),f=i.getCrossfadeParameters();n?(l=_&&!i.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\",s=p.LINES):(l=_?\"fillPattern\":\"fill\",s=p.TRIANGLES);for(var m=0,g=o;m<g.length;m+=1){var v=g[m],y=e.getTile(v);if(!_||y.patternsLoaded()){var x=y.getBucket(i);if(x){var b=x.programConfigurations.get(i.id),w=t.useProgram(l,b);_&&(t.context.activeTexture.set(p.TEXTURE0),y.imageAtlasTexture.bind(p.LINEAR,p.CLAMP_TO_EDGE),b.updatePatternPaintBuffers(f));var E=d.constantOr(null);if(E&&y.imageAtlas){var T=y.imageAtlas,I=T.patternPositions[E.to.toString()],C=T.patternPositions[E.from.toString()];I&&C&&b.setConstantPatternPositions(I,C);}var S=t.translatePosMatrix(v.posMatrix,y,i.paint.get(\"fill-translate\"),i.paint.get(\"fill-translate-anchor\"));if(n){u=x.indexBuffer2,h=x.segments2;var P=[p.drawingBufferWidth,p.drawingBufferHeight];c=\"fillOutlinePattern\"===l&&_?Ei(S,t,f,y,P):wi(S,P);}else u=x.indexBuffer,h=x.segments,c=_?bi(S,t,f,y):xi(S);w.draw(t.context,s,r,t.stencilModeForClipping(v),a,Pt.disabled,c,i.id,x.layoutVertexBuffer,u,h,i.paint,t.transform.zoom,b);}}}}function ao(t,e,i,o,r,a,n){for(var s=t.context,l=s.gl,c=i.paint.get(\"fill-extrusion-pattern\"),u=c.constantOr(1),h=i.getCrossfadeParameters(),p=i.paint.get(\"fill-extrusion-opacity\"),d=0,_=o;d<_.length;d+=1){var f=_[d],m=e.getTile(f),g=m.getBucket(i);if(g){var v=g.programConfigurations.get(i.id),y=t.useProgram(u?\"fillExtrusionPattern\":\"fillExtrusion\",v);u&&(t.context.activeTexture.set(l.TEXTURE0),m.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),v.updatePatternPaintBuffers(h));var x=c.constantOr(null);if(x&&m.imageAtlas){var b=m.imageAtlas,w=b.patternPositions[x.to.toString()],E=b.patternPositions[x.from.toString()];w&&E&&v.setConstantPatternPositions(w,E);}var T=t.translatePosMatrix(f.posMatrix,m,i.paint.get(\"fill-extrusion-translate\"),i.paint.get(\"fill-extrusion-translate-anchor\")),I=i.paint.get(\"fill-extrusion-vertical-gradient\"),C=u?yi(T,t,I,p,f,h,m):vi(T,t,I,p);y.draw(s,s.gl.TRIANGLES,r,a,n,Pt.backCCW,C,i.id,g.layoutVertexBuffer,g.indexBuffer,g.segments,i.paint,t.transform.zoom,v);}}}function no(t,e,i,o,r,a){var n=t.context,s=n.gl,l=e.fbo;if(l){var c=t.useProgram(\"hillshade\");n.activeTexture.set(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,l.colorAttachment.get());var u=Mi(t,e,i);e.maskedBoundsBuffer&&e.maskedIndexBuffer&&e.segments?c.draw(n,s.TRIANGLES,o,r,a,Pt.disabled,u,i.id,e.maskedBoundsBuffer,e.maskedIndexBuffer,e.segments):c.draw(n,s.TRIANGLES,o,r,a,Pt.disabled,u,i.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments);}}function so(e,i,o,r,a,n,s){var l=e.context,c=l.gl,u=i.dem;if(u&&u.data){var h=u.dim,p=u.stride,d=u.getPixels();if(l.activeTexture.set(c.TEXTURE1),l.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||e.getTileTexture(p),i.demTexture){var _=i.demTexture;_.update(d,{premultiply:!1}),_.bind(c.NEAREST,c.CLAMP_TO_EDGE);}else i.demTexture=new t.Texture(l,d,c.RGBA,{premultiply:!1}),i.demTexture.bind(c.NEAREST,c.CLAMP_TO_EDGE);l.activeTexture.set(c.TEXTURE0);var f=i.fbo;if(!f){var m=new t.Texture(l,{width:h,height:h,data:null},c.RGBA);m.bind(c.LINEAR,c.CLAMP_TO_EDGE),(f=i.fbo=l.createFramebuffer(h,h)).colorAttachment.set(m.texture);}l.bindFramebuffer.set(f.framebuffer),l.viewport.set([0,0,h,h]),e.useProgram(\"hillshadePrepare\").draw(l,c.TRIANGLES,a,n,s,Pt.disabled,Di(i.tileID,u,r),o.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments),i.needsHillshadePrepare=!1;}}function lo(e,i,o,r,a){var n=r.paint.get(\"raster-fade-duration\");if(n>0){var s=t.browser.now(),l=(s-e.timeAdded)/n,c=i?(s-i.timeAdded)/n:-1,u=o.getSource(),h=a.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),p=!i||Math.abs(i.tileID.overscaledZ-h)>Math.abs(e.tileID.overscaledZ-h),d=p&&e.refreshedUponExpiration?1:t.clamp(p?l:1-c,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),i?{opacity:1,mix:1-d}:{opacity:d,mix:0}}return {opacity:1,mix:0}}function co(e,i,o){var r=e.context,a=r.gl,n=o.posMatrix,s=e.useProgram(\"debug\"),l=It.disabled,c=Ct.disabled,u=e.colorModeForRenderPass(),h=\"$debug\";s.draw(r,a.LINE_STRIP,l,c,u,Pt.disabled,Si(n,t.Color.red),h,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var p=i.getTileByID(o.key).latestRawTileData,d=p&&p.byteLength||0,_=Math.floor(d/1024),f=i.getTile(o).tileSize,m=512/Math.min(f,512),g=o.canonical.toString();o.overscaledZ!==o.canonical.z&&(g+=\" => \"+o.overscaledZ);for(var v=function(t,e,i,o){o=o||1;var r,a,n,s,l,c,u,h,p=[];for(r=0,a=t.length;r<a;r++)if(l=uo[t[r]]){for(h=null,n=0,s=l[1].length;n<s;n+=2)-1===l[1][n]&&-1===l[1][n+1]?h=null:(c=e+l[1][n]*o,u=i-l[1][n+1]*o,h&&p.push(h.x,h.y,c,u),h={x:c,y:u});e+=l[0]*o;}return p}(g+\" \"+_+\"kb\",50,200*m,5*m),y=new t.StructArrayLayout2i4,x=new t.StructArrayLayout2ui4,b=0;b<v.length;b+=2)y.emplaceBack(v[b],v[b+1]),x.emplaceBack(b,b+1);for(var w=r.createVertexBuffer(y,Ne.members),E=r.createIndexBuffer(x),T=t.SegmentVector.simpleSegment(0,0,y.length/2,y.length/2),I=t.EXTENT/(Math.pow(2,e.transform.zoom-o.overscaledZ)*f*m),C=[],S=-1;S<=1;S++)for(var P=-1;P<=1&&(0!==S||0!==P);P++)C.push([S,P]);for(var z=0;z<C.length;z++){var L=C[z];s.draw(r,a.LINES,l,c,u,Pt.disabled,Si(t.translate([],n,[I*L[0],I*L[1],0]),t.Color.white),h,w,E,T);}s.draw(r,a.LINES,l,c,u,Pt.disabled,Si(n,t.Color.black),h,w,E,T),w.destroy(),E.destroy(),T.destroy();}var uo={\" \":[16,[]],\"!\":[10,[5,21,5,7,-1,-1,5,2,4,1,5,0,6,1,5,2]],'\"':[16,[4,21,4,14,-1,-1,12,21,12,14]],\"#\":[21,[11,25,4,-7,-1,-1,17,25,10,-7,-1,-1,4,12,18,12,-1,-1,3,6,17,6]],$:[20,[8,25,8,-4,-1,-1,12,25,12,-4,-1,-1,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],\"%\":[24,[21,21,3,0,-1,-1,8,21,10,19,10,17,9,15,7,14,5,14,3,16,3,18,4,20,6,21,8,21,10,20,13,19,16,19,19,20,21,21,-1,-1,17,7,15,6,14,4,14,2,16,0,18,0,20,1,21,3,21,5,19,7,17,7]],\"&\":[26,[23,12,23,13,22,14,21,14,20,13,19,11,17,6,15,3,13,1,11,0,7,0,5,1,4,2,3,4,3,6,4,8,5,9,12,13,13,14,14,16,14,18,13,20,11,21,9,20,8,18,8,16,9,13,11,10,16,3,18,1,20,0,22,0,23,1,23,2]],\"'\":[10,[5,19,4,20,5,21,6,20,6,18,5,16,4,15]],\"(\":[14,[11,25,9,23,7,20,5,16,4,11,4,7,5,2,7,-2,9,-5,11,-7]],\")\":[14,[3,25,5,23,7,20,9,16,10,11,10,7,9,2,7,-2,5,-5,3,-7]],\"*\":[16,[8,21,8,9,-1,-1,3,18,13,12,-1,-1,13,18,3,12]],\"+\":[26,[13,18,13,0,-1,-1,4,9,22,9]],\",\":[10,[6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],\"-\":[26,[4,9,22,9]],\".\":[10,[5,2,4,1,5,0,6,1,5,2]],\"/\":[22,[20,25,2,-7]],0:[20,[9,21,6,20,4,17,3,12,3,9,4,4,6,1,9,0,11,0,14,1,16,4,17,9,17,12,16,17,14,20,11,21,9,21]],1:[20,[6,17,8,18,11,21,11,0]],2:[20,[4,16,4,17,5,19,6,20,8,21,12,21,14,20,15,19,16,17,16,15,15,13,13,10,3,0,17,0]],3:[20,[5,21,16,21,10,13,13,13,15,12,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],4:[20,[13,21,3,7,18,7,-1,-1,13,21,13,0]],5:[20,[15,21,5,21,4,12,5,13,8,14,11,14,14,13,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],6:[20,[16,18,15,20,12,21,10,21,7,20,5,17,4,12,4,7,5,3,7,1,10,0,11,0,14,1,16,3,17,6,17,7,16,10,14,12,11,13,10,13,7,12,5,10,4,7]],7:[20,[17,21,7,0,-1,-1,3,21,17,21]],8:[20,[8,21,5,20,4,18,4,16,5,14,7,13,11,12,14,11,16,9,17,7,17,4,16,2,15,1,12,0,8,0,5,1,4,2,3,4,3,7,4,9,6,11,9,12,13,13,15,14,16,16,16,18,15,20,12,21,8,21]],9:[20,[16,14,15,11,13,9,10,8,9,8,6,9,4,11,3,14,3,15,4,18,6,20,9,21,10,21,13,20,15,18,16,14,16,9,15,4,13,1,10,0,8,0,5,1,4,3]],\":\":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,5,2,4,1,5,0,6,1,5,2]],\";\":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],\"<\":[24,[20,18,4,9,20,0]],\"=\":[26,[4,12,22,12,-1,-1,4,6,22,6]],\">\":[24,[4,18,20,9,4,0]],\"?\":[18,[3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,-1,-1,9,2,8,1,9,0,10,1,9,2]],\"@\":[27,[18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,-1,-1,12,16,10,14,9,11,9,8,10,6,11,5,-1,-1,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,-1,-1,19,16,18,8,18,6,19,5]],A:[18,[9,21,1,0,-1,-1,9,21,17,0,-1,-1,4,7,14,7]],B:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,-1,-1,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0]],C:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5]],D:[21,[4,21,4,0,-1,-1,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0]],E:[19,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11,-1,-1,4,0,17,0]],F:[18,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11]],G:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,-1,-1,13,8,18,8]],H:[22,[4,21,4,0,-1,-1,18,21,18,0,-1,-1,4,11,18,11]],I:[8,[4,21,4,0]],J:[16,[12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7]],K:[21,[4,21,4,0,-1,-1,18,21,4,7,-1,-1,9,12,18,0]],L:[17,[4,21,4,0,-1,-1,4,0,16,0]],M:[24,[4,21,4,0,-1,-1,4,21,12,0,-1,-1,20,21,12,0,-1,-1,20,21,20,0]],N:[22,[4,21,4,0,-1,-1,4,21,18,0,-1,-1,18,21,18,0]],O:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21]],P:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10]],Q:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,-1,-1,12,4,18,-2]],R:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,-1,-1,11,11,18,0]],S:[20,[17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],T:[16,[8,21,8,0,-1,-1,1,21,15,21]],U:[22,[4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21]],V:[18,[1,21,9,0,-1,-1,17,21,9,0]],W:[24,[2,21,7,0,-1,-1,12,21,7,0,-1,-1,12,21,17,0,-1,-1,22,21,17,0]],X:[20,[3,21,17,0,-1,-1,17,21,3,0]],Y:[18,[1,21,9,11,9,0,-1,-1,17,21,9,11]],Z:[20,[17,21,3,0,-1,-1,3,21,17,21,-1,-1,3,0,17,0]],\"[\":[14,[4,25,4,-7,-1,-1,5,25,5,-7,-1,-1,4,25,11,25,-1,-1,4,-7,11,-7]],\"\\\\\":[14,[0,21,14,-3]],\"]\":[14,[9,25,9,-7,-1,-1,10,25,10,-7,-1,-1,3,25,10,25,-1,-1,3,-7,10,-7]],\"^\":[16,[6,15,8,18,10,15,-1,-1,3,12,8,17,13,12,-1,-1,8,17,8,0]],_:[16,[0,-2,16,-2]],\"`\":[10,[6,21,5,20,4,18,4,16,5,15,6,16,5,17]],a:[19,[15,14,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],b:[19,[4,21,4,0,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],c:[18,[15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],d:[19,[15,21,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],e:[18,[3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],f:[12,[10,21,8,21,6,20,5,17,5,0,-1,-1,2,14,9,14]],g:[19,[15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],h:[19,[4,21,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],i:[8,[3,21,4,20,5,21,4,22,3,21,-1,-1,4,14,4,0]],j:[10,[5,21,6,20,7,21,6,22,5,21,-1,-1,6,14,6,-3,5,-6,3,-7,1,-7]],k:[17,[4,21,4,0,-1,-1,14,14,4,4,-1,-1,8,8,15,0]],l:[8,[4,21,4,0]],m:[30,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0,-1,-1,15,10,18,13,20,14,23,14,25,13,26,10,26,0]],n:[19,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],o:[19,[8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14]],p:[19,[4,14,4,-7,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],q:[19,[15,14,15,-7,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],r:[13,[4,14,4,0,-1,-1,4,8,5,11,7,13,9,14,12,14]],s:[17,[14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3]],t:[12,[5,21,5,4,6,1,8,0,10,0,-1,-1,2,14,9,14]],u:[19,[4,14,4,4,5,1,7,0,10,0,12,1,15,4,-1,-1,15,14,15,0]],v:[16,[2,14,8,0,-1,-1,14,14,8,0]],w:[22,[3,14,7,0,-1,-1,11,14,7,0,-1,-1,11,14,15,0,-1,-1,19,14,15,0]],x:[17,[3,14,14,0,-1,-1,14,14,3,0]],y:[16,[2,14,8,0,-1,-1,14,14,8,0,6,-4,4,-6,2,-7,1,-7]],z:[17,[14,14,3,0,-1,-1,3,14,14,14,-1,-1,3,0,14,0]],\"{\":[14,[9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,-1,-1,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,-1,-1,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7]],\"|\":[8,[4,25,4,-7]],\"}\":[14,[5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,-1,-1,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,-1,-1,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7]],\"~\":[24,[3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,-1,-1,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]]};var ho={symbol:function(e,i,o,r,a){if(\"translucent\"===e.renderPass){var n=Ct.disabled,s=e.colorModeForRenderPass();o.layout.get(\"text-variable-anchor\")&&function(e,i,o,r,a,n,s){for(var l=i.transform,c=\"map\"===a,u=\"map\"===n,h=0,p=e;h<p.length;h+=1){var d=p[h],_=r.getTile(d),f=_.getBucket(o);if(f&&f.text&&f.text.segments.get().length){var m=f.textSizeData,g=t.evaluateSizeForZoom(m,l.zoom),v=ue(_,1,i.transform.zoom),y=Kt(d.posMatrix,u,c,i.transform,v),x=\"none\"!==o.layout.get(\"icon-text-fit\")&&f.hasIconData();if(g){var b=Math.pow(2,l.zoom-_.tileID.overscaledZ);to(f,c,u,s,t.symbolSize,l,y,d.posMatrix,b,g,x);}}}}(r,e,o,i,o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),a),0!==o.paint.get(\"icon-opacity\").constantOr(1)&&io(e,i,o,r,!1,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),o.layout.get(\"icon-rotation-alignment\"),o.layout.get(\"icon-pitch-alignment\"),o.layout.get(\"icon-keep-upright\"),n,s),0!==o.paint.get(\"text-opacity\").constantOr(1)&&io(e,i,o,r,!0,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),o.layout.get(\"text-keep-upright\"),n,s),i.map.showCollisionBoxes&&(Ji(e,i,o,r,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),!0),Ji(e,i,o,r,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),!1));}},circle:function(e,i,o,r){if(\"translucent\"===e.renderPass){var a=o.paint.get(\"circle-opacity\"),n=o.paint.get(\"circle-stroke-width\"),s=o.paint.get(\"circle-stroke-opacity\"),l=void 0!==o.layout.get(\"circle-sort-key\").constantOr(1);if(0!==a.constantOr(1)||0!==n.constantOr(1)&&0!==s.constantOr(1)){for(var c=e.context,u=c.gl,h=e.depthModeForSublayer(0,It.ReadOnly),p=Ct.disabled,d=e.colorModeForRenderPass(),_=[],f=0;f<r.length;f++){var m=r[f],g=i.getTile(m),v=g.getBucket(o);if(v){var y=v.programConfigurations.get(o.id),x={programConfiguration:y,program:e.useProgram(\"circle\",y),layoutVertexBuffer:v.layoutVertexBuffer,indexBuffer:v.indexBuffer,uniformValues:Ti(e,m,g,o)};if(l)for(var b=0,w=v.segments.get();b<w.length;b+=1){var E=w[b];_.push({segments:new t.SegmentVector([E]),sortKey:E.sortKey,state:x});}else _.push({segments:v.segments,sortKey:0,state:x});}}l&&_.sort((function(t,e){return t.sortKey-e.sortKey}));for(var T=0,I=_;T<I.length;T+=1){var C=I[T],S=C.state,P=S.programConfiguration,z=S.program,L=S.layoutVertexBuffer,M=S.indexBuffer,D=S.uniformValues,A=C.segments;z.draw(c,u.TRIANGLES,h,p,d,Pt.disabled,D,o.id,L,M,A,o.paint,e.transform.zoom,P);}}}},heatmap:function(e,i,o,r){if(0!==o.paint.get(\"heatmap-opacity\"))if(\"offscreen\"===e.renderPass){var a=e.context,n=a.gl,s=e.depthModeForSublayer(0,It.ReadOnly),l=Ct.disabled,c=new St([n.ONE,n.ONE],t.Color.transparent,[!0,!0,!0,!0]);!function(t,e,i){var o=t.gl;t.activeTexture.set(o.TEXTURE1),t.viewport.set([0,0,e.width/4,e.height/4]);var r=i.heatmapFbo;if(r)o.bindTexture(o.TEXTURE_2D,r.colorAttachment.get()),t.bindFramebuffer.set(r.framebuffer);else{var a=o.createTexture();o.bindTexture(o.TEXTURE_2D,a),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),r=i.heatmapFbo=t.createFramebuffer(e.width/4,e.height/4),function t(e,i,o,r){var a=e.gl;a.texImage2D(a.TEXTURE_2D,0,a.RGBA,i.width/4,i.height/4,0,a.RGBA,e.extTextureHalfFloat?e.extTextureHalfFloat.HALF_FLOAT_OES:a.UNSIGNED_BYTE,null);r.colorAttachment.set(o);e.extTextureHalfFloat&&a.checkFramebufferStatus(a.FRAMEBUFFER)!==a.FRAMEBUFFER_COMPLETE&&(e.extTextureHalfFloat=null,r.colorAttachment.setDirty(),t(e,i,o,r));}(t,e,a,r);}}(a,e,o),a.clear({color:t.Color.transparent});for(var u=0;u<r.length;u++){var h=r[u];if(!i.hasRenderableParent(h)){var p=i.getTile(h),d=p.getBucket(o);if(d){var _=d.programConfigurations.get(o.id),f=e.useProgram(\"heatmap\",_),m=e.transform.zoom;f.draw(a,n.TRIANGLES,s,l,c,Pt.disabled,zi(h.posMatrix,p,m,o.paint.get(\"heatmap-intensity\")),o.id,d.layoutVertexBuffer,d.indexBuffer,d.segments,o.paint,e.transform.zoom,_);}}}a.viewport.set([0,0,e.width,e.height]);}else\"translucent\"===e.renderPass&&(e.context.setColorMode(e.colorModeForRenderPass()),function(e,i){var o=e.context,r=o.gl,a=i.heatmapFbo;if(!a)return;o.activeTexture.set(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,a.colorAttachment.get()),o.activeTexture.set(r.TEXTURE1);var n=i.colorRampTexture;n||(n=i.colorRampTexture=new t.Texture(o,i.colorRamp,r.RGBA));n.bind(r.LINEAR,r.CLAMP_TO_EDGE),e.useProgram(\"heatmapTexture\").draw(o,r.TRIANGLES,It.disabled,Ct.disabled,e.colorModeForRenderPass(),Pt.disabled,Li(e,i,0,1),i.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,i.paint,e.transform.zoom);}(e,o));},line:function(e,i,o,r){if(\"translucent\"===e.renderPass){var a=o.paint.get(\"line-opacity\"),n=o.paint.get(\"line-width\");if(0!==a.constantOr(1)&&0!==n.constantOr(1)){var s=e.depthModeForSublayer(0,It.ReadOnly),l=e.colorModeForRenderPass(),c=o.paint.get(\"line-dasharray\"),u=o.paint.get(\"line-pattern\"),h=u.constantOr(1),p=o.paint.get(\"line-gradient\"),d=o.getCrossfadeParameters(),_=c?\"lineSDF\":h?\"linePattern\":p?\"lineGradient\":\"line\",f=e.context,m=f.gl,g=!0;if(p){f.activeTexture.set(m.TEXTURE0);var v=o.gradientTexture;if(!o.gradient)return;v||(v=o.gradientTexture=new t.Texture(f,o.gradient,m.RGBA)),v.bind(m.LINEAR,m.CLAMP_TO_EDGE);}for(var y=0,x=r;y<x.length;y+=1){var b=x[y],w=i.getTile(b);if(!h||w.patternsLoaded()){var E=w.getBucket(o);if(E){var T=E.programConfigurations.get(o.id),I=e.context.program.get(),C=e.useProgram(_,T),S=g||C.program!==I,P=u.constantOr(null);if(P&&w.imageAtlas){var z=w.imageAtlas,L=z.patternPositions[P.to.toString()],M=z.patternPositions[P.from.toString()];L&&M&&T.setConstantPatternPositions(L,M);}var D=c?Oi(e,w,o,c,d):h?Bi(e,w,o,d):p?ki(e,w,o):Ri(e,w,o);c&&(S||e.lineAtlas.dirty)?(f.activeTexture.set(m.TEXTURE0),e.lineAtlas.bind(f)):h&&(f.activeTexture.set(m.TEXTURE0),w.imageAtlasTexture.bind(m.LINEAR,m.CLAMP_TO_EDGE),T.updatePatternPaintBuffers(d)),C.draw(f,m.TRIANGLES,s,e.stencilModeForClipping(b),l,Pt.disabled,D,o.id,E.layoutVertexBuffer,E.indexBuffer,E.segments,o.paint,e.transform.zoom,T),g=!1;}}}}}},fill:function(e,i,o,r){var a=o.paint.get(\"fill-color\"),n=o.paint.get(\"fill-opacity\");if(0!==n.constantOr(1)){var s=e.colorModeForRenderPass(),l=o.paint.get(\"fill-pattern\"),c=e.opaquePassEnabledForLayer()&&!l.constantOr(1)&&1===a.constantOr(t.Color.transparent).a&&1===n.constantOr(0)?\"opaque\":\"translucent\";if(e.renderPass===c){var u=e.depthModeForSublayer(1,\"opaque\"===e.renderPass?It.ReadWrite:It.ReadOnly);ro(e,i,o,r,u,s,!1);}if(\"translucent\"===e.renderPass&&o.paint.get(\"fill-antialias\")){var h=e.depthModeForSublayer(o.getPaintProperty(\"fill-outline-color\")?2:0,It.ReadOnly);ro(e,i,o,r,h,s,!0);}}},\"fill-extrusion\":function(t,e,i,o){var r=i.paint.get(\"fill-extrusion-opacity\");if(0!==r&&\"translucent\"===t.renderPass){var a=new It(t.context.gl.LEQUAL,It.ReadWrite,t.depthRangeFor3D);if(1!==r||i.paint.get(\"fill-extrusion-pattern\").constantOr(1))ao(t,e,i,o,a,Ct.disabled,St.disabled),ao(t,e,i,o,a,t.stencilModeFor3D(),t.colorModeForRenderPass());else{var n=t.colorModeForRenderPass();ao(t,e,i,o,a,Ct.disabled,n);}}},hillshade:function(t,e,i,o){if(\"offscreen\"===t.renderPass||\"translucent\"===t.renderPass){for(var r=t.context,a=e.getSource().maxzoom,n=t.depthModeForSublayer(0,It.ReadOnly),s=Ct.disabled,l=t.colorModeForRenderPass(),c=0,u=o;c<u.length;c+=1){var h=u[c],p=e.getTile(h);p.needsHillshadePrepare&&\"offscreen\"===t.renderPass?so(t,p,i,a,n,s,l):\"translucent\"===t.renderPass&&no(t,p,i,n,s,l);}r.viewport.set([0,0,t.width,t.height]);}},raster:function(t,e,i,o){if(\"translucent\"===t.renderPass&&0!==i.paint.get(\"raster-opacity\"))for(var r=t.context,a=r.gl,n=e.getSource(),s=t.useProgram(\"raster\"),l=Ct.disabled,c=t.colorModeForRenderPass(),u=o.length&&o[0].overscaledZ,h=!t.options.moving,p=0,d=o;p<d.length;p+=1){var _=d[p],f=t.depthModeForSublayer(_.overscaledZ-u,1===i.paint.get(\"raster-opacity\")?It.ReadWrite:It.ReadOnly,a.LESS),m=e.getTile(_),g=t.transform.calculatePosMatrix(_.toUnwrapped(),h);m.registerFadeDuration(i.paint.get(\"raster-fade-duration\"));var v=e.findLoadedParent(_,0),y=lo(m,v,e,i,t.transform),x=void 0,b=void 0,w=\"nearest\"===i.paint.get(\"raster-resampling\")?a.NEAREST:a.LINEAR;r.activeTexture.set(a.TEXTURE0),m.texture.bind(w,a.CLAMP_TO_EDGE,a.LINEAR_MIPMAP_NEAREST),r.activeTexture.set(a.TEXTURE1),v?(v.texture.bind(w,a.CLAMP_TO_EDGE,a.LINEAR_MIPMAP_NEAREST),x=Math.pow(2,v.tileID.overscaledZ-m.tileID.overscaledZ),b=[m.tileID.canonical.x*x%1,m.tileID.canonical.y*x%1]):m.texture.bind(w,a.CLAMP_TO_EDGE,a.LINEAR_MIPMAP_NEAREST);var E=Ni(g,b||[0,0],x||1,y,i);n instanceof M?s.draw(r,a.TRIANGLES,f,l,c,Pt.disabled,E,i.id,n.boundsBuffer,t.quadTriangleIndexBuffer,n.boundsSegments):m.maskedBoundsBuffer&&m.maskedIndexBuffer&&m.segments?s.draw(r,a.TRIANGLES,f,l,c,Pt.disabled,E,i.id,m.maskedBoundsBuffer,m.maskedIndexBuffer,m.segments,i.paint,t.transform.zoom):s.draw(r,a.TRIANGLES,f,l,c,Pt.disabled,E,i.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments);}},background:function(t,e,i){var o=i.paint.get(\"background-color\"),r=i.paint.get(\"background-opacity\");if(0!==r){var a=t.context,n=a.gl,s=t.transform,l=s.tileSize,c=i.paint.get(\"background-pattern\");if(!t.isPatternMissing(c)){var u=!c&&1===o.a&&1===r&&t.opaquePassEnabledForLayer()?\"opaque\":\"translucent\";if(t.renderPass===u){var h=Ct.disabled,p=t.depthModeForSublayer(0,\"opaque\"===u?It.ReadWrite:It.ReadOnly),d=t.colorModeForRenderPass(),_=t.useProgram(c?\"backgroundPattern\":\"background\"),f=s.coveringTiles({tileSize:l});c&&(a.activeTexture.set(n.TEXTURE0),t.imageManager.bind(t.context));for(var m=i.getCrossfadeParameters(),g=0,v=f;g<v.length;g+=1){var y=v[g],x=t.transform.calculatePosMatrix(y.toUnwrapped()),b=c?Wi(x,r,t,c,{tileID:y,tileSize:l},m):Gi(x,r,o);_.draw(a,n.TRIANGLES,p,h,d,Pt.disabled,b,i.id,t.tileExtentBuffer,t.quadTriangleIndexBuffer,t.tileExtentSegments);}}}}},debug:function(t,e,i){for(var o=0;o<i.length;o++)co(t,e,i[o]);},custom:function(t,e,i){var o=t.context,r=i.implementation;if(\"offscreen\"===t.renderPass){var a=r.prerender;a&&(t.setCustomLayerDefaults(),o.setColorMode(t.colorModeForRenderPass()),a.call(r,o.gl,t.transform.customLayerMatrix()),o.setDirty(),t.setBaseState());}else if(\"translucent\"===t.renderPass){t.setCustomLayerDefaults(),o.setColorMode(t.colorModeForRenderPass()),o.setStencilMode(Ct.disabled);var n=\"3d\"===r.renderingMode?new It(t.context.gl.LEQUAL,It.ReadWrite,t.depthRangeFor3D):t.depthModeForSublayer(0,It.ReadOnly);o.setDepthMode(n),r.render(o.gl,t.transform.customLayerMatrix()),o.setDirty(),t.setBaseState(),o.bindFramebuffer.set(null);}}},po=function(e,i){this.context=new zt(e),this.transform=i,this._tileTextures={},this.setup(),this.numSublayers=Lt.maxUnderzooming+Lt.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.depthRboNeedsClear=!0,this.emptyProgramConfiguration=new t.ProgramConfiguration,this.crossTileSymbolIndex=new ke,this.gpuTimers={};};function _o(t,e){if(t.y>e.y){var i=t;t=e,e=i;}return {x0:t.x,y0:t.y,x1:e.x,y1:e.y,dx:e.x-t.x,dy:e.y-t.y}}function fo(t,e,i,o,r){var a=Math.max(i,Math.floor(e.y0)),n=Math.min(o,Math.ceil(e.y1));if(t.x0===e.x0&&t.y0===e.y0?t.x0+e.dy/t.dy*t.dx<e.x1:t.x1-e.dy/t.dy*t.dx<e.x0){var s=t;t=e,e=s;}for(var l=t.dx/t.dy,c=e.dx/e.dy,u=t.dx>0,h=e.dx<0,p=a;p<n;p++){var d=l*Math.max(0,Math.min(t.dy,p+u-t.y0))+t.x0,_=c*Math.max(0,Math.min(e.dy,p+h-e.y0))+e.x0;r(Math.floor(_),Math.ceil(d),p);}}function mo(t,e,i,o,r,a){var n,s=_o(t,e),l=_o(e,i),c=_o(i,t);s.dy>l.dy&&(n=s,s=l,l=n),s.dy>c.dy&&(n=s,s=c,c=n),l.dy>c.dy&&(n=l,l=c,c=n),s.dy&&fo(c,s,o,r,a),l.dy&&fo(c,l,o,r,a);}po.prototype.resize=function(e,i){var o=this.context.gl;if(this.width=e*t.browser.devicePixelRatio,this.height=i*t.browser.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var r=0,a=this.style._order;r<a.length;r+=1){var n=a[r];this.style._layers[n].resize();}this.depthRbo&&(o.deleteRenderbuffer(this.depthRbo),this.depthRbo=null);},po.prototype.setup=function(){var e=this.context,i=new t.StructArrayLayout2i4;i.emplaceBack(0,0),i.emplaceBack(t.EXTENT,0),i.emplaceBack(0,t.EXTENT),i.emplaceBack(t.EXTENT,t.EXTENT),this.tileExtentBuffer=e.createVertexBuffer(i,Ne.members),this.tileExtentSegments=t.SegmentVector.simpleSegment(0,0,4,2);var o=new t.StructArrayLayout2i4;o.emplaceBack(0,0),o.emplaceBack(t.EXTENT,0),o.emplaceBack(0,t.EXTENT),o.emplaceBack(t.EXTENT,t.EXTENT),this.debugBuffer=e.createVertexBuffer(o,Ne.members),this.debugSegments=t.SegmentVector.simpleSegment(0,0,4,5);var r=new t.StructArrayLayout4i8;r.emplaceBack(0,0,0,0),r.emplaceBack(t.EXTENT,0,t.EXTENT,0),r.emplaceBack(0,t.EXTENT,0,t.EXTENT),r.emplaceBack(t.EXTENT,t.EXTENT,t.EXTENT,t.EXTENT),this.rasterBoundsBuffer=e.createVertexBuffer(r,t.rasterBoundsAttributes.members),this.rasterBoundsSegments=t.SegmentVector.simpleSegment(0,0,4,2);var a=new t.StructArrayLayout2i4;a.emplaceBack(0,0),a.emplaceBack(1,0),a.emplaceBack(0,1),a.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(a,Ne.members),this.viewportSegments=t.SegmentVector.simpleSegment(0,0,4,2);var n=new t.StructArrayLayout1ui2;n.emplaceBack(0),n.emplaceBack(1),n.emplaceBack(3),n.emplaceBack(2),n.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(n);var s=new t.StructArrayLayout3ui6;s.emplaceBack(0,1,2),s.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(s);var l=this.context.gl;this.stencilClearMode=new Ct({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO);},po.prototype.clearStencil=function(){var e=this.context,i=e.gl;this.nextStencilID=1,this.currentStencilSource=void 0;var o=t.create();t.ortho(o,0,this.width,this.height,0,0,1),t.scale(o,o,[i.drawingBufferWidth,i.drawingBufferHeight,0]),this.useProgram(\"clippingMask\").draw(e,i.TRIANGLES,It.disabled,this.stencilClearMode,St.disabled,Pt.disabled,Pi(o),\"$clipping\",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments);},po.prototype._renderTileClippingMasks=function(t,e){if(this.currentStencilSource!==t.source&&t.isTileClipped()&&e&&e.length){this.currentStencilSource=t.source;var i=this.context,o=i.gl;this.nextStencilID+e.length>256&&this.clearStencil(),i.setColorMode(St.disabled),i.setDepthMode(It.disabled);var r=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(var a=0,n=e;a<n.length;a+=1){var s=n[a],l=this._tileClippingMaskIDs[s.key]=this.nextStencilID++;r.draw(i,o.TRIANGLES,It.disabled,new Ct({func:o.ALWAYS,mask:0},l,255,o.KEEP,o.KEEP,o.REPLACE),St.disabled,Pt.disabled,Pi(s.posMatrix),\"$clipping\",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments);}}},po.prototype.stencilModeFor3D=function(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new Ct({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},po.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Ct({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},po.prototype.colorModeForRenderPass=function(){var e=this.context.gl;if(this._showOverdrawInspector){return new St([e.CONSTANT_COLOR,e.ONE],new t.Color(1/8,1/8,1/8,0),[!0,!0,!0,!0])}return \"opaque\"===this.renderPass?St.unblended:St.alphaBlended},po.prototype.depthModeForSublayer=function(t,e,i){if(!this.opaquePassEnabledForLayer())return It.disabled;var o=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new It(i||this.context.gl.LEQUAL,e,[o,o])},po.prototype.opaquePassEnabledForLayer=function(){return this.currentLayer<this.opaquePassCutoff},po.prototype.render=function(e,i){var o=this;this.style=e,this.options=i,this.lineAtlas=e.lineAtlas,this.imageManager=e.imageManager,this.glyphManager=e.glyphManager,this.symbolFadeChange=e.placement.symbolFadeChange(t.browser.now()),this.imageManager.beginFrame();var r=this.style._order,a=this.style.sourceCaches;for(var n in a){var s=a[n];s.used&&s.prepare(this.context);}var l,c,u={},h={},p={};for(var d in a){var _=a[d];u[d]=_.getVisibleCoordinates(),h[d]=u[d].slice().reverse(),p[d]=_.getVisibleCoordinates(!0).reverse();}for(var f in a){var m=a[f],g=m.getSource();if(\"raster\"===g.type||\"raster-dem\"===g.type){for(var v=[],y=0,x=u[f];y<x.length;y+=1){var b=x[y];v.push(m.getTile(b));}Hi(v,this.context);}}this.opaquePassCutoff=1/0;for(var w=0;w<r.length;w++){var E=r[w];if(this.style._layers[E].is3D()){this.opaquePassCutoff=w;break}}this.renderPass=\"offscreen\",this.depthRboNeedsClear=!0;for(var T=0,I=r;T<I.length;T+=1){var C=I[T],S=this.style._layers[C];if(S.hasOffscreenPass()&&!S.isHidden(this.transform.zoom)){var P=h[S.source];(\"custom\"===S.type||P.length)&&this.renderLayer(this,a[S.source],S,P);}}for(this.context.bindFramebuffer.set(null),this.context.clear({color:i.showOverdrawInspector?t.Color.black:t.Color.transparent,depth:1}),this.clearStencil(),this._showOverdrawInspector=i.showOverdrawInspector,this.depthRangeFor3D=[0,1-(e._order.length+2)*this.numSublayers*this.depthEpsilon],this.renderPass=\"opaque\",this.currentLayer=r.length-1;this.currentLayer>=0;this.currentLayer--){var z=this.style._layers[r[this.currentLayer]],L=a[z.source],M=u[z.source];this._renderTileClippingMasks(z,M),this.renderLayer(this,L,z,M);}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer<r.length;this.currentLayer++){var D=this.style._layers[r[this.currentLayer]],A=a[D.source],R=(\"symbol\"===D.type?p:h)[D.source];this._renderTileClippingMasks(D,u[D.source]),this.renderLayer(this,A,D,R);}this.options.showTileBoundaries&&(t.values(this.style._layers).forEach((function(t){t.source&&!t.isHidden(o.transform.zoom)&&(t.source!==(c&&c.id)&&(c=o.style.sourceCaches[t.source]),(!l||l.getSource().maxzoom<c.getSource().maxzoom)&&(l=c));})),l&&ho.debug(this,l,l.getVisibleCoordinates()));this.context.setDefault();},po.prototype.setupOffscreenDepthRenderbuffer=function(){var t=this.context;this.depthRbo||(this.depthRbo=t.createRenderbuffer(t.gl.DEPTH_COMPONENT16,this.width,this.height));},po.prototype.renderLayer=function(t,e,i,o){i.isHidden(this.transform.zoom)||(\"background\"===i.type||\"custom\"===i.type||o.length)&&(this.id=i.id,this.gpuTimingStart(i),ho[i.type](t,e,i,o,this.style.placement.variableOffsets),this.gpuTimingEnd());},po.prototype.gpuTimingStart=function(t){if(this.options.gpuTiming){var e=this.context.extTimerQuery,i=this.gpuTimers[t.id];i||(i=this.gpuTimers[t.id]={calls:0,cpuTime:0,query:e.createQueryEXT()}),i.calls++,e.beginQueryEXT(e.TIME_ELAPSED_EXT,i.query);}},po.prototype.gpuTimingEnd=function(){if(this.options.gpuTiming){var t=this.context.extTimerQuery;t.endQueryEXT(t.TIME_ELAPSED_EXT);}},po.prototype.collectGpuTimers=function(){var t=this.gpuTimers;return this.gpuTimers={},t},po.prototype.queryGpuTimers=function(t){var e={};for(var i in t){var o=t[i],r=this.context.extTimerQuery,a=r.getQueryObjectEXT(o.query,r.QUERY_RESULT_EXT)/1e6;r.deleteQueryEXT(o.query),e[i]=a;}return e},po.prototype.translatePosMatrix=function(e,i,o,r,a){if(!o[0]&&!o[1])return e;var n=a?\"map\"===r?this.transform.angle:0:\"viewport\"===r?-this.transform.angle:0;if(n){var s=Math.sin(n),l=Math.cos(n);o=[o[0]*l-o[1]*s,o[0]*s+o[1]*l];}var c=[a?o[0]:ue(i,o[0],this.transform.zoom),a?o[1]:ue(i,o[1],this.transform.zoom),0],u=new Float32Array(16);return t.translate(u,e,c),u},po.prototype.saveTileTexture=function(t){var e=this._tileTextures[t.size[0]];e?e.push(t):this._tileTextures[t.size[0]]=[t];},po.prototype.getTileTexture=function(t){var e=this._tileTextures[t];return e&&e.length>0?e.pop():null},po.prototype.isPatternMissing=function(t){if(!t)return !1;var e=this.imageManager.getPattern(t.from.toString()),i=this.imageManager.getPattern(t.to.toString());return !e||!i},po.prototype.useProgram=function(t,e){void 0===e&&(e=this.emptyProgramConfiguration),this.cache=this.cache||{};var i=\"\"+t+(e.cacheKey||\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[i]||(this.cache[i]=new mi(this.context,_i[t],e,Xi[t],this._showOverdrawInspector)),this.cache[i]},po.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();},po.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD);};var go=function(e,i,o,r,a){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===a||a,this._minZoom=e||0,this._maxZoom=i||22,this._minPitch=null==o?0:o,this._maxPitch=null==r?60:r,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._posMatrixCache={},this._alignedPosMatrixCache={};},vo={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerPoint:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};go.prototype.clone=function(){var t=new go(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._calcMatrices(),t},vo.minZoom.get=function(){return this._minZoom},vo.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t));},vo.maxZoom.get=function(){return this._maxZoom},vo.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t));},vo.minPitch.get=function(){return this._minPitch},vo.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t));},vo.maxPitch.get=function(){return this._maxPitch},vo.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t));},vo.renderWorldCopies.get=function(){return this._renderWorldCopies},vo.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t;},vo.worldSize.get=function(){return this.tileSize*this.scale},vo.centerPoint.get=function(){return this.size._div(2)},vo.size.get=function(){return new t.Point(this.width,this.height)},vo.bearing.get=function(){return -this.angle/Math.PI*180},vo.bearing.set=function(e){var i=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle));},vo.pitch.get=function(){return this._pitch/Math.PI*180},vo.pitch.set=function(e){var i=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices());},vo.fov.get=function(){return this._fov/Math.PI*180},vo.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices());},vo.zoom.get=function(){return this._zoom},vo.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices());},vo.center.get=function(){return this._center},vo.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices());},go.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},go.prototype.getVisibleUnwrappedCoordinates=function(e){var i=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var o=this.pointCoordinate(new t.Point(0,0)),r=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),n=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(o.x,r.x,a.x,n.x)),l=Math.floor(Math.max(o.x,r.x,a.x,n.x)),c=s-1;c<=l+1;c++)0!==c&&i.push(new t.UnwrappedTileID(c,e));return i},go.prototype.coveringTiles=function(e){var i=this.coveringZoomLevel(e),o=i;if(void 0!==e.minzoom&&i<e.minzoom)return [];void 0!==e.maxzoom&&i>e.maxzoom&&(i=e.maxzoom);var r=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,i),n=new t.Point(a*r.x-.5,a*r.y-.5);return function(e,i,o,r){void 0===r&&(r=!0);var a=1<<e,n={};function s(i,s,l){var c,u,h,p;if(l>=0&&l<=a)for(c=i;c<s;c++)u=Math.floor(c/a),h=(c%a+a)%a,0!==u&&!0!==r||(p=new t.OverscaledTileID(o,u,e,h,l),n[p.key]=p);}var l=i.map((function(e){return new t.Point(e.x,e.y)._mult(a)}));return mo(l[0],l[1],l[2],0,a,s),mo(l[2],l[3],l[0],0,a,s),Object.keys(n).map((function(t){return n[t]}))}(i,[this.pointCoordinate(new t.Point(0,0)),this.pointCoordinate(new t.Point(this.width,0)),this.pointCoordinate(new t.Point(this.width,this.height)),this.pointCoordinate(new t.Point(0,this.height))],e.reparseOverscaled?o:i,this._renderWorldCopies).sort((function(t,e){return n.dist(t.canonical)-n.dist(e.canonical)}))},go.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices();},vo.unmodified.get=function(){return this._unmodified},go.prototype.zoomScale=function(t){return Math.pow(2,t)},go.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},go.prototype.project=function(e){var i=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(i)*this.worldSize)},go.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},vo.point.get=function(){return this.project(this.center)},go.prototype.setLocationAtPoint=function(e,i){var o=this.pointCoordinate(i),r=this.pointCoordinate(this.centerPoint),a=this.locationCoordinate(e),n=new t.MercatorCoordinate(a.x-(o.x-r.x),a.y-(o.y-r.y));this.center=this.coordinateLocation(n),this._renderWorldCopies&&(this.center=this.center.wrap());},go.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},go.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},go.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},go.prototype.coordinateLocation=function(t){return t.toLngLat()},go.prototype.pointCoordinate=function(e){var i=[e.x,e.y,0,1],o=[e.x,e.y,1,1];t.transformMat4(i,i,this.pixelMatrixInverse),t.transformMat4(o,o,this.pixelMatrixInverse);var r=i[3],a=o[3],n=i[0]/r,s=o[0]/a,l=i[1]/r,c=o[1]/a,u=i[2]/r,h=o[2]/a,p=u===h?0:(0-u)/(h-u);return new t.MercatorCoordinate(t.number(n,s,p)/this.worldSize,t.number(l,c,p)/this.worldSize)},go.prototype.coordinatePoint=function(e){var i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(i,i,this.pixelMatrix),new t.Point(i[0]/i[3],i[1]/i[3])},go.prototype.getBounds=function(){return (new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},go.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},go.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude]);},go.prototype.calculatePosMatrix=function(e,i){void 0===i&&(i=!1);var o=e.key,r=i?this._alignedPosMatrixCache:this._posMatrixCache;if(r[o])return r[o];var a=e.canonical,n=this.worldSize/this.zoomScale(a.z),s=a.x+Math.pow(2,a.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*n,a.y*n,0]),t.scale(l,l,[n/t.EXTENT,n/t.EXTENT,1]),t.multiply(l,i?this.alignedProjMatrix:this.projMatrix,l),r[o]=new Float32Array(l),r[o]},go.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},go.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,i,o,r,a=-90,n=90,s=-180,l=180,c=this.size,u=this._unmodified;if(this.latRange){var h=this.latRange;a=t.mercatorYfromLat(h[1])*this.worldSize,e=(n=t.mercatorYfromLat(h[0])*this.worldSize)-a<c.y?c.y/(n-a):0;}if(this.lngRange){var p=this.lngRange;s=t.mercatorXfromLng(p[0])*this.worldSize,i=(l=t.mercatorXfromLng(p[1])*this.worldSize)-s<c.x?c.x/(l-s):0;}var d=this.point,_=Math.max(i||0,e||0);if(_)return this.center=this.unproject(new t.Point(i?(l+s)/2:d.x,e?(n+a)/2:d.y)),this.zoom+=this.scaleZoom(_),this._unmodified=u,void(this._constraining=!1);if(this.latRange){var f=d.y,m=c.y/2;f-m<a&&(r=a+m),f+m>n&&(r=n-m);}if(this.lngRange){var g=d.x,v=c.x/2;g-v<s&&(o=s+v),g+v>l&&(o=l-v);}void 0===o&&void 0===r||(this.center=this.unproject(new t.Point(void 0!==o?o:d.x,void 0!==r?r:d.y))),this._unmodified=u,this._constraining=!1;}},go.prototype._calcMatrices=function(){if(this.height){this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;var e=this._fov/2,i=Math.PI/2+this._pitch,o=Math.sin(e)*this.cameraToCenterDistance/Math.sin(Math.PI-i-e),r=this.point,a=r.x,n=r.y,s=1.01*(Math.cos(Math.PI/2-this._pitch)*o+this.cameraToCenterDistance),l=this.height/50,c=new Float64Array(16);t.perspective(c,this._fov,this.width/this.height,l,s),t.scale(c,c,[1,-1,1]),t.translate(c,c,[0,0,-this.cameraToCenterDistance]),t.rotateX(c,c,this._pitch),t.rotateZ(c,c,this.angle),t.translate(c,c,[-a,-n,0]),this.mercatorMatrix=t.scale([],c,[this.worldSize,this.worldSize,this.worldSize]),t.scale(c,c,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=c;var u=this.width%2/2,h=this.height%2/2,p=Math.cos(this.angle),d=Math.sin(this.angle),_=a-Math.round(a)+p*u+d*h,f=n-Math.round(n)+p*h+d*u,m=new Float64Array(c);if(t.translate(m,m,[_>.5?_-1:_,f>.5?f-1:f,0]),this.alignedProjMatrix=m,c=t.create(),t.scale(c,c,[this.width/2,-this.height/2,1]),t.translate(c,c,[1,-1,0]),this.labelPlaneMatrix=c,c=t.create(),t.scale(c,c,[1,-1,1]),t.translate(c,c,[-1,-1,0]),t.scale(c,c,[2/this.width,2/this.height,1]),this.glCoordMatrix=c,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(c=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=c,this._posMatrixCache={},this._alignedPosMatrixCache={};}},go.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(i,i,this.pixelMatrix)[3]/this.cameraToCenterDistance},go.prototype.getCameraPoint=function(){var e=this._pitch,i=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,i))},go.prototype.getCameraQueryGeometry=function(e){var i=this.getCameraPoint();if(1===e.length)return [e[0],i];for(var o=i.x,r=i.y,a=i.x,n=i.y,s=0,l=e;s<l.length;s+=1){var c=l[s];o=Math.min(o,c.x),r=Math.min(r,c.y),a=Math.max(a,c.x),n=Math.max(n,c.y);}return [new t.Point(o,r),new t.Point(a,r),new t.Point(a,n),new t.Point(o,n),new t.Point(o,r)]},Object.defineProperties(go.prototype,vo);var yo=function(e){var i,o,r,a,n;this._hashName=e&&encodeURIComponent(e),t.bindAll([\"_getCurrentHash\",\"_onHashChange\",\"_updateHash\"],this),this._updateHash=(i=this._updateHashUnthrottled.bind(this),o=300,r=!1,a=null,n=function(){a=null,r&&(i(),a=setTimeout(n,o),r=!1);},function(){return r=!0,a||n(),a});};yo.prototype.addTo=function(e){return this._map=e,t.window.addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this},yo.prototype.remove=function(){return t.window.removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this},yo.prototype.getHashString=function(e){var i=this._map.getCenter(),o=Math.round(100*this._map.getZoom())/100,r=Math.ceil((o*Math.LN2+Math.log(512/360/.5))/Math.LN10),a=Math.pow(10,r),n=Math.round(i.lng*a)/a,s=Math.round(i.lat*a)/a,l=this._map.getBearing(),c=this._map.getPitch(),u=\"\";if(u+=e?\"/\"+n+\"/\"+s+\"/\"+o:o+\"/\"+s+\"/\"+n,(l||c)&&(u+=\"/\"+Math.round(10*l)/10),c&&(u+=\"/\"+Math.round(c)),this._hashName){var h=this._hashName,p=!1,d=t.window.location.hash.slice(1).split(\"&\").map((function(t){var e=t.split(\"=\")[0];return e===h?(p=!0,e+\"=\"+u):t})).filter((function(t){return t}));return p||d.push(h+\"=\"+u),\"#\"+d.join(\"&\")}return \"#\"+u},yo.prototype._getCurrentHash=function(){var e,i=this,o=t.window.location.hash.replace(\"#\",\"\");return this._hashName?(o.split(\"&\").map((function(t){return t.split(\"=\")})).forEach((function(t){t[0]===i._hashName&&(e=t);})),(e&&e[1]||\"\").split(\"/\")):o.split(\"/\")},yo.prototype._onHashChange=function(){var t=this._getCurrentHash();return t.length>=3&&!t.some((function(t){return isNaN(t)}))&&(this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:+(t[3]||0),pitch:+(t[4]||0)}),!0)},yo.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,\"\",e);}catch(t){}};var xo=function(e){function o(o,r,a,n){void 0===n&&(n={});var s=i.mousePos(r.getCanvasContainer(),a),l=r.unproject(s);e.call(this,o,t.extend({point:s,lngLat:l,originalEvent:a},n)),this._defaultPrevented=!1,this.target=r;}e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o;var r={defaultPrevented:{configurable:!0}};return o.prototype.preventDefault=function(){this._defaultPrevented=!0;},r.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(o.prototype,r),o}(t.Event),bo=function(e){function o(o,r,a){var n=i.touchPos(r.getCanvasContainer(),a),s=n.map((function(t){return r.unproject(t)})),l=n.reduce((function(t,e,i,o){return t.add(e.div(o.length))}),new t.Point(0,0)),c=r.unproject(l);e.call(this,o,{points:n,point:l,lngLats:s,lngLat:c,originalEvent:a}),this._defaultPrevented=!1;}e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o;var r={defaultPrevented:{configurable:!0}};return o.prototype.preventDefault=function(){this._defaultPrevented=!0;},r.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(o.prototype,r),o}(t.Event),wo=function(t){function e(e,i,o){t.call(this,e,{originalEvent:o}),this._defaultPrevented=!1;}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var i={defaultPrevented:{configurable:!0}};return e.prototype.preventDefault=function(){this._defaultPrevented=!0;},i.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(e.prototype,i),e}(t.Event),Eo=function(e){this._map=e,this._el=e.getCanvasContainer(),this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=1/450,t.bindAll([\"_onWheel\",\"_onTimeout\",\"_onScrollFrame\",\"_onScrollFinished\"],this);};Eo.prototype.setZoomRate=function(t){this._defaultZoomRate=t;},Eo.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t;},Eo.prototype.isEnabled=function(){return !!this._enabled},Eo.prototype.isActive=function(){return !!this._active},Eo.prototype.isZooming=function(){return !!this._zooming},Eo.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around);},Eo.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1);},Eo.prototype.onWheel=function(e){if(this.isEnabled()){var i=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,o=t.browser.now(),r=o-(this._lastWheelEventTime||0);this._lastWheelEventTime=o,0!==i&&i%4.000244140625==0?this._type=\"wheel\":0!==i&&Math.abs(i)<4?this._type=\"trackpad\":r>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(r*i)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),e.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=e,this._delta-=i,this.isActive()||this._start(e)),e.preventDefault();}},Eo.prototype._onTimeout=function(t){this._type=\"wheel\",this._delta-=this._lastValue,this.isActive()||this._start(t);},Eo.prototype._start=function(e){if(this._delta){this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0,this._map.fire(new t.Event(\"movestart\",{originalEvent:e})),this._map.fire(new t.Event(\"zoomstart\",{originalEvent:e}))),this._finishTimeout&&clearTimeout(this._finishTimeout);var o=i.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(o)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=this._map._requestRenderFrame(this._onScrollFrame));}},Eo.prototype._onScrollFrame=function(){var e=this;if(this._frameId=null,this.isActive()){var i=this._map.transform;if(0!==this._delta){var o=\"wheel\"===this._type&&Math.abs(this._delta)>4.000244140625?this._wheelZoomRate:this._defaultZoomRate,r=2/(1+Math.exp(-Math.abs(this._delta*o)));this._delta<0&&0!==r&&(r=1/r);var a=\"number\"==typeof this._targetZoom?i.zoomScale(this._targetZoom):i.scale;this._targetZoom=Math.min(i.maxZoom,Math.max(i.minZoom,i.scaleZoom(a*r))),\"wheel\"===this._type&&(this._startZoom=i.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0;}var n=\"number\"==typeof this._targetZoom?this._targetZoom:i.zoom,s=this._startZoom,l=this._easing,c=!1;if(\"wheel\"===this._type&&s&&l){var u=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=l(u);i.zoom=t.number(s,n,h),u<1?this._frameId||(this._frameId=this._map._requestRenderFrame(this._onScrollFrame)):c=!0;}else i.zoom=n,c=!0;i.setLocationAtPoint(this._around,this._aroundPoint),this._map.fire(new t.Event(\"move\",{originalEvent:this._lastWheelEvent})),this._map.fire(new t.Event(\"zoom\",{originalEvent:this._lastWheelEvent})),c&&(this._active=!1,this._finishTimeout=setTimeout((function(){e._zooming=!1,e._map.fire(new t.Event(\"zoomend\",{originalEvent:e._lastWheelEvent})),e._map.fire(new t.Event(\"moveend\",{originalEvent:e._lastWheelEvent})),delete e._targetZoom;}),200));}},Eo.prototype._smoothOutEasing=function(e){var i=t.ease;if(this._prevEase){var o=this._prevEase,r=(t.browser.now()-o.start)/o.duration,a=o.easing(r+.01)-o.easing(r),n=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-n*n);i=t.bezier(n,s,.25,1);}return this._prevEase={start:t.browser.now(),duration:e,easing:i},i};var To=function(e,i){this._map=e,this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=i.clickTolerance||1,t.bindAll([\"_onMouseMove\",\"_onMouseUp\",\"_onKeyDown\"],this);};To.prototype.isEnabled=function(){return !!this._enabled},To.prototype.isActive=function(){return !!this._active},To.prototype.enable=function(){this.isEnabled()||(this._enabled=!0);},To.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1);},To.prototype.onMouseDown=function(e){this.isEnabled()&&e.shiftKey&&0===e.button&&(t.window.document.addEventListener(\"mousemove\",this._onMouseMove,!1),t.window.document.addEventListener(\"keydown\",this._onKeyDown,!1),t.window.document.addEventListener(\"mouseup\",this._onMouseUp,!1),i.disableDrag(),this._startPos=this._lastPos=i.mousePos(this._el,e),this._active=!0);},To.prototype._onMouseMove=function(t){var e=i.mousePos(this._el,t);if(!(this._lastPos.equals(e)||!this._box&&e.dist(this._startPos)<this._clickTolerance)){var o=this._startPos;this._lastPos=e,this._box||(this._box=i.create(\"div\",\"mapboxgl-boxzoom\",this._container),this._container.classList.add(\"mapboxgl-crosshair\"),this._fireEvent(\"boxzoomstart\",t));var r=Math.min(o.x,e.x),a=Math.max(o.x,e.x),n=Math.min(o.y,e.y),s=Math.max(o.y,e.y);i.setTransform(this._box,\"translate(\"+r+\"px,\"+n+\"px)\"),this._box.style.width=a-r+\"px\",this._box.style.height=s-n+\"px\";}},To.prototype._onMouseUp=function(e){if(0===e.button){var o=this._startPos,r=i.mousePos(this._el,e);this._finish(),i.suppressClick(),o.x===r.x&&o.y===r.y?this._fireEvent(\"boxzoomcancel\",e):this._map.fitScreenCoordinates(o,r,this._map.getBearing(),{linear:!0}).fire(new t.Event(\"boxzoomend\",{originalEvent:e}));}},To.prototype._onKeyDown=function(t){27===t.keyCode&&(this._finish(),this._fireEvent(\"boxzoomcancel\",t));},To.prototype._finish=function(){this._active=!1,t.window.document.removeEventListener(\"mousemove\",this._onMouseMove,!1),t.window.document.removeEventListener(\"keydown\",this._onKeyDown,!1),t.window.document.removeEventListener(\"mouseup\",this._onMouseUp,!1),this._container.classList.remove(\"mapboxgl-crosshair\"),this._box&&(i.remove(this._box),this._box=null),i.enableDrag(),delete this._startPos,delete this._lastPos;},To.prototype._fireEvent=function(e,i){return this._map.fire(new t.Event(e,{originalEvent:i}))};var Io=t.bezier(0,0,.25,1),Co=function(e,i){this._map=e,this._el=i.element||e.getCanvasContainer(),this._state=\"disabled\",this._button=i.button||\"right\",this._bearingSnap=i.bearingSnap||0,this._pitchWithRotate=!1!==i.pitchWithRotate,t.bindAll([\"onMouseDown\",\"_onMouseMove\",\"_onMouseUp\",\"_onBlur\",\"_onDragFrame\"],this);};Co.prototype.isEnabled=function(){return \"disabled\"!==this._state},Co.prototype.isActive=function(){return \"active\"===this._state},Co.prototype.enable=function(){this.isEnabled()||(this._state=\"enabled\");},Co.prototype.disable=function(){if(this.isEnabled())switch(this._state){case\"active\":this._state=\"disabled\",this._unbind(),this._deactivate(),this._fireEvent(\"rotateend\"),this._pitchWithRotate&&this._fireEvent(\"pitchend\"),this._fireEvent(\"moveend\");break;case\"pending\":this._state=\"disabled\",this._unbind();break;default:this._state=\"disabled\";}},Co.prototype.onMouseDown=function(e){if(\"enabled\"===this._state){var o=\"touchstart\"===e.type;if(o)this._startTime=Date.now();else if(\"right\"===this._button){if(this._eventButton=i.mouseButton(e),this._eventButton!==(e.ctrlKey?0:2))return}else{if(e.ctrlKey||0!==i.mouseButton(e))return;this._eventButton=0;}i.disableDrag(),o?(t.window.document.addEventListener(\"touchmove\",this._onMouseMove,{capture:!0}),t.window.document.addEventListener(\"touchend\",this._onMouseUp)):(t.window.document.addEventListener(\"mousemove\",this._onMouseMove,{capture:!0}),t.window.document.addEventListener(\"mouseup\",this._onMouseUp)),t.window.addEventListener(\"blur\",this._onBlur),this._state=\"pending\",this._inertia=[[t.browser.now(),this._map.getBearing()]],this._startPos=this._prevPos=this._lastPos=i.mousePos(this._el,e),this._center=this._map.transform.centerPoint,e.preventDefault();}},Co.prototype._onMouseMove=function(t){var e=i.mousePos(this._el,t);this._lastPos.equals(e)||(this._lastMoveEvent=t,this._lastPos=e,\"pending\"===this._state&&(this._state=\"active\",this._fireEvent(\"rotatestart\",t),this._fireEvent(\"movestart\",t),this._pitchWithRotate&&this._fireEvent(\"pitchstart\",t)),this._frameId||(this._frameId=this._map._requestRenderFrame(this._onDragFrame)));},Co.prototype._onDragFrame=function(){this._frameId=null;var e=this._lastMoveEvent;if(e){var i=this._map.transform,o=this._prevPos,r=this._lastPos,a=.8*(o.x-r.x),n=-.5*(o.y-r.y),s=i.bearing-a,l=i.pitch-n,c=this._inertia,u=c[c.length-1];this._drainInertiaBuffer(),c.push([t.browser.now(),this._map._normalizeBearing(s,u[1])]);var h=i.bearing;if(i.bearing=s,this._pitchWithRotate){var p=i.pitch;i.pitch=l,i.pitch!==p&&this._fireEvent(\"pitch\",e);}i.bearing!==h&&this._fireEvent(\"rotate\",e),this._fireEvent(\"move\",e),delete this._lastMoveEvent,this._prevPos=this._lastPos;}},Co.prototype._onMouseUp=function(t){if(\"touchend\"===t.type&&this._startPos===this._lastPos&&Date.now()-this._startTime<300&&this._el.click(),i.mouseButton(t)===this._eventButton)switch(this._state){case\"active\":this._state=\"enabled\",i.suppressClick(),this._unbind(),this._deactivate(),this._inertialRotate(t);break;case\"pending\":this._state=\"enabled\",this._unbind();}},Co.prototype._onBlur=function(t){switch(this._state){case\"active\":this._state=\"enabled\",this._unbind(),this._deactivate(),this._fireEvent(\"rotateend\",t),this._pitchWithRotate&&this._fireEvent(\"pitchend\",t),this._fireEvent(\"moveend\",t);break;case\"pending\":this._state=\"enabled\",this._unbind();}},Co.prototype._unbind=function(){t.window.document.removeEventListener(\"mousemove\",this._onMouseMove,{capture:!0}),t.window.document.removeEventListener(\"mouseup\",this._onMouseUp),t.window.document.removeEventListener(\"touchmove\",this._onMouseMove,{capture:!0}),t.window.document.removeEventListener(\"touchend\",this._onMouseUp),t.window.removeEventListener(\"blur\",this._onBlur),i.enableDrag();},Co.prototype._deactivate=function(){this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),delete this._lastMoveEvent,delete this._startPos,delete this._prevPos,delete this._lastPos;},Co.prototype._inertialRotate=function(t){var e=this;this._fireEvent(\"rotateend\",t),this._drainInertiaBuffer();var i=this._map,o=i.getBearing(),r=this._inertia,a=function(){Math.abs(o)<e._bearingSnap?i.resetNorth({noMoveStart:!0},{originalEvent:t}):e._fireEvent(\"moveend\",t),e._pitchWithRotate&&e._fireEvent(\"pitchend\",t);};if(r.length<2)a();else{var n=r[0],s=r[r.length-1],l=r[r.length-2],c=i._normalizeBearing(o,l[1]),u=s[1]-n[1],h=u<0?-1:1,p=(s[0]-n[0])/1e3;if(0!==u&&0!==p){var d=Math.abs(u*(.25/p));d>180&&(d=180);var _=d/180;c+=h*d*(_/2),Math.abs(i._normalizeBearing(c,0))<this._bearingSnap&&(c=i._normalizeBearing(0,c)),i.rotateTo(c,{duration:1e3*_,easing:Io,noMoveStart:!0},{originalEvent:t});}else a();}},Co.prototype._fireEvent=function(e,i){return this._map.fire(new t.Event(e,i?{originalEvent:i}:{}))},Co.prototype._drainInertiaBuffer=function(){for(var e=this._inertia,i=t.browser.now();e.length>0&&i-e[0][0]>160;)e.shift();};var So={linearity:.3,easing:t.bezier(0,0,.3,1),maxSpeed:1400,deceleration:2500},Po=function(e,i){this._map=e,this._el=e.getCanvasContainer(),this._state=\"disabled\",this._clickTolerance=i.clickTolerance||1,this._inertiaOptions=So,t.bindAll([\"_onMove\",\"_onMouseUp\",\"_onTouchEnd\",\"_onBlur\",\"_onDragFrame\"],this);};Po.prototype.isEnabled=function(){return \"disabled\"!==this._state},Po.prototype.isActive=function(){return \"active\"===this._state},Po.prototype.enable=function(e){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-drag-pan\"),this._state=\"enabled\",this._inertiaOptions=t.extend(So,e));},Po.prototype.disable=function(){if(this.isEnabled())switch(this._el.classList.remove(\"mapboxgl-touch-drag-pan\"),this._state){case\"active\":this._state=\"disabled\",this._unbind(),this._deactivate(),this._fireEvent(\"dragend\"),this._fireEvent(\"moveend\");break;case\"pending\":this._state=\"disabled\",this._unbind();break;default:this._state=\"disabled\";}},Po.prototype.onMouseDown=function(e){\"enabled\"===this._state&&(e.ctrlKey||0!==i.mouseButton(e)||(i.addEventListener(t.window.document,\"mousemove\",this._onMove,{capture:!0}),i.addEventListener(t.window.document,\"mouseup\",this._onMouseUp),this._start(e)));},Po.prototype.onTouchStart=function(e){this.isEnabled()&&(e.touches&&e.touches.length>1&&(\"pending\"===this._state||\"active\"===this._state)||(i.addEventListener(t.window.document,\"touchmove\",this._onMove,{capture:!0,passive:!1}),i.addEventListener(t.window.document,\"touchend\",this._onTouchEnd),this._start(e)));},Po.prototype._start=function(e){t.window.addEventListener(\"blur\",this._onBlur),this._state=\"pending\",this._startPos=this._mouseDownPos=this._prevPos=this._lastPos=i.mousePos(this._el,e),this._startTouch=this._lastTouch=t.window.TouchEvent&&e instanceof t.window.TouchEvent?i.touchPos(this._el,e):null,this._inertia=[[t.browser.now(),this._startPos]];},Po.prototype._touchesMatch=function(t,e){return !(!t||!e||t.length!==e.length)&&t.every((function(t,i){return e[i]===t}))},Po.prototype._onMove=function(e){e.preventDefault();var o=t.window.TouchEvent&&e instanceof t.window.TouchEvent?i.touchPos(this._el,e):null,r=i.mousePos(this._el,e);(o?this._touchesMatch(this._lastTouch,o):this._lastPos.equals(r))||\"pending\"===this._state&&r.dist(this._mouseDownPos)<this._clickTolerance||(this._lastMoveEvent=e,this._lastPos=r,this._lastTouch=o,this._drainInertiaBuffer(),this._inertia.push([t.browser.now(),this._lastPos]),\"pending\"===this._state&&(this._state=\"active\",this._shouldStart=!0),this._frameId||(this._frameId=this._map._requestRenderFrame(this._onDragFrame)));},Po.prototype._onDragFrame=function(){this._frameId=null;var t=this._lastMoveEvent;if(t)if(this._map.touchZoomRotate.isActive())this._abort(t);else if(this._shouldStart&&(this._fireEvent(\"dragstart\",t),this._fireEvent(\"movestart\",t),this._shouldStart=!1),this.isActive()){var e=this._map.transform;e.setLocationAtPoint(e.pointLocation(this._prevPos),this._lastPos),this._fireEvent(\"drag\",t),this._fireEvent(\"move\",t),this._prevPos=this._lastPos,delete this._lastMoveEvent;}},Po.prototype._onMouseUp=function(t){if(0===i.mouseButton(t))switch(this._state){case\"active\":this._state=\"enabled\",i.suppressClick(),this._unbind(),this._deactivate(),this._inertialPan(t);break;case\"pending\":this._state=\"enabled\",this._unbind();}},Po.prototype._onTouchEnd=function(t){if(t.touches&&0!==t.touches.length)switch(this._state){case\"pending\":case\"active\":break;case\"enabled\":this.onTouchStart(t);}else switch(this._state){case\"active\":this._state=\"enabled\",this._unbind(),this._deactivate(),this._inertialPan(t);break;case\"pending\":this._state=\"enabled\",this._unbind();break;case\"enabled\":this._unbind();}},Po.prototype._abort=function(e){switch(this._state){case\"active\":this._state=\"enabled\",this._shouldStart||(this._fireEvent(\"dragend\",e),this._fireEvent(\"moveend\",e)),this._unbind(),this._deactivate(),t.window.TouchEvent&&e instanceof t.window.TouchEvent&&e.touches.length>1&&i.addEventListener(t.window.document,\"touchend\",this._onTouchEnd);break;case\"pending\":this._state=\"enabled\",this._unbind();break;case\"enabled\":this._unbind();}},Po.prototype._onBlur=function(t){this._abort(t);},Po.prototype._unbind=function(){i.removeEventListener(t.window.document,\"touchmove\",this._onMove,{capture:!0,passive:!1}),i.removeEventListener(t.window.document,\"touchend\",this._onTouchEnd),i.removeEventListener(t.window.document,\"mousemove\",this._onMove,{capture:!0}),i.removeEventListener(t.window.document,\"mouseup\",this._onMouseUp),i.removeEventListener(t.window,\"blur\",this._onBlur);},Po.prototype._deactivate=function(){this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),delete this._lastMoveEvent,delete this._startPos,delete this._prevPos,delete this._mouseDownPos,delete this._lastPos,delete this._startTouch,delete this._lastTouch,delete this._shouldStart;},Po.prototype._inertialPan=function(t){this._fireEvent(\"dragend\",t),this._drainInertiaBuffer();var e=this._inertia;if(e.length<2)this._fireEvent(\"moveend\",t);else{var i=e[e.length-1],o=e[0],r=i[1].sub(o[1]),a=(i[0]-o[0])/1e3;if(0===a||i[1].equals(o[1]))this._fireEvent(\"moveend\",t);else{var n=this._inertiaOptions,s=n.linearity,l=n.easing,c=n.maxSpeed,u=n.deceleration,h=r.mult(s/a),p=h.mag();p>c&&(p=c,h._unit()._mult(p));var d=p/(u*s),_=h.mult(-d/2);this._map.panBy(_,{duration:1e3*d,easing:l,noMoveStart:!0},{originalEvent:t});}}},Po.prototype._fireEvent=function(e,i){return this._map.fire(new t.Event(e,i?{originalEvent:i}:{}))},Po.prototype._drainInertiaBuffer=function(){for(var e=this._inertia,i=t.browser.now();e.length>0&&i-e[0][0]>160;)e.shift();};var zo=function(e){this._map=e,this._el=e.getCanvasContainer(),t.bindAll([\"_onKeyDown\"],this);};function Lo(t){return t*(2-t)}zo.prototype.isEnabled=function(){return !!this._enabled},zo.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener(\"keydown\",this._onKeyDown,!1),this._enabled=!0);},zo.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"keydown\",this._onKeyDown),this._enabled=!1);},zo.prototype._onKeyDown=function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var e=0,i=0,o=0,r=0,a=0;switch(t.keyCode){case 61:case 107:case 171:case 187:e=1;break;case 189:case 109:case 173:e=-1;break;case 37:t.shiftKey?i=-1:(t.preventDefault(),r=-1);break;case 39:t.shiftKey?i=1:(t.preventDefault(),r=1);break;case 38:t.shiftKey?o=1:(t.preventDefault(),a=-1);break;case 40:t.shiftKey?o=-1:(a=1,t.preventDefault());break;default:return}var n=this._map,s=n.getZoom(),l={duration:300,delayEndEvents:500,easing:Lo,zoom:e?Math.round(s)+e*(t.shiftKey?2:1):s,bearing:n.getBearing()+15*i,pitch:n.getPitch()+10*o,offset:[100*-r,100*-a],center:n.getCenter()};n.easeTo(l,{originalEvent:t});}};var Mo=function(e){this._map=e,t.bindAll([\"_onDblClick\",\"_onZoomEnd\"],this);};Mo.prototype.isEnabled=function(){return !!this._enabled},Mo.prototype.isActive=function(){return !!this._active},Mo.prototype.enable=function(){this.isEnabled()||(this._enabled=!0);},Mo.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1);},Mo.prototype.onTouchStart=function(t){var e=this;if(this.isEnabled()&&!(t.points.length>1))if(this._tapped){var i=t.points[0],o=this._tappedPoint;if(o&&o.dist(i)<=30){t.originalEvent.preventDefault();var r=function(){e._tapped&&e._zoom(t),e._map.off(\"touchcancel\",a),e._resetTapped();},a=function(){e._map.off(\"touchend\",r),e._resetTapped();};this._map.once(\"touchend\",r),this._map.once(\"touchcancel\",a);}else this._resetTapped();}else this._tappedPoint=t.points[0],this._tapped=setTimeout((function(){e._tapped=null,e._tappedPoint=null;}),300);},Mo.prototype._resetTapped=function(){clearTimeout(this._tapped),this._tapped=null,this._tappedPoint=null;},Mo.prototype.onDblClick=function(t){this.isEnabled()&&(t.originalEvent.preventDefault(),this._zoom(t));},Mo.prototype._zoom=function(t){this._active=!0,this._map.on(\"zoomend\",this._onZoomEnd),this._map.zoomTo(this._map.getZoom()+(t.originalEvent.shiftKey?-1:1),{around:t.lngLat},t);},Mo.prototype._onZoomEnd=function(){this._active=!1,this._map.off(\"zoomend\",this._onZoomEnd);};var Do=t.bezier(0,0,.15,1),Ao=function(e){this._map=e,this._el=e.getCanvasContainer(),t.bindAll([\"_onMove\",\"_onEnd\",\"_onTouchFrame\"],this);};Ao.prototype.isEnabled=function(){return !!this._enabled},Ao.prototype.enable=function(t){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-zoom-rotate\"),this._enabled=!0,this._aroundCenter=!!t&&\"center\"===t.around);},Ao.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\"),this._enabled=!1);},Ao.prototype.disableRotation=function(){this._rotationDisabled=!0;},Ao.prototype.enableRotation=function(){this._rotationDisabled=!1;},Ao.prototype.isActive=function(){return this.isEnabled()&&!!this._gestureIntent},Ao.prototype.onStart=function(e){if(this.isEnabled()&&2===e.touches.length){var o=i.mousePos(this._el,e.touches[0]),r=i.mousePos(this._el,e.touches[1]),a=o.add(r).div(2);this._startVec=o.sub(r),this._startAround=this._map.transform.pointLocation(a),this._gestureIntent=void 0,this._inertia=[],i.addEventListener(t.window.document,\"touchmove\",this._onMove,{passive:!1}),i.addEventListener(t.window.document,\"touchend\",this._onEnd);}},Ao.prototype._getTouchEventData=function(t){var e=i.mousePos(this._el,t.touches[0]),o=i.mousePos(this._el,t.touches[1]),r=e.sub(o);return {vec:r,center:e.add(o).div(2),scale:r.mag()/this._startVec.mag(),bearing:this._rotationDisabled?0:180*r.angleWith(this._startVec)/Math.PI}},Ao.prototype._onMove=function(e){if(2===e.touches.length){var i=this._getTouchEventData(e),o=i.vec,r=i.scale,a=i.bearing;if(!this._gestureIntent){var n=this._rotationDisabled&&1!==r||Math.abs(1-r)>.15;Math.abs(a)>10?this._gestureIntent=\"rotate\":n&&(this._gestureIntent=\"zoom\"),this._gestureIntent&&(this._map.fire(new t.Event(this._gestureIntent+\"start\",{originalEvent:e})),this._map.fire(new t.Event(\"movestart\",{originalEvent:e})),this._startVec=o);}this._lastTouchEvent=e,this._frameId||(this._frameId=this._map._requestRenderFrame(this._onTouchFrame)),e.preventDefault();}},Ao.prototype._onTouchFrame=function(){this._frameId=null;var e=this._gestureIntent;if(e){var i=this._map.transform;this._startScale||(this._startScale=i.scale,this._startBearing=i.bearing);var o=this._getTouchEventData(this._lastTouchEvent),r=o.center,a=o.bearing,n=o.scale,s=i.pointLocation(r),l=i.locationPoint(s);\"rotate\"===e&&(i.bearing=this._startBearing+a),i.zoom=i.scaleZoom(this._startScale*n),i.setLocationAtPoint(this._startAround,l),this._map.fire(new t.Event(e,{originalEvent:this._lastTouchEvent})),this._map.fire(new t.Event(\"move\",{originalEvent:this._lastTouchEvent})),this._drainInertiaBuffer(),this._inertia.push([t.browser.now(),n,r]);}},Ao.prototype._onEnd=function(e){i.removeEventListener(t.window.document,\"touchmove\",this._onMove,{passive:!1}),i.removeEventListener(t.window.document,\"touchend\",this._onEnd);var o=this._gestureIntent,r=this._startScale;if(this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),delete this._gestureIntent,delete this._startScale,delete this._startBearing,delete this._lastTouchEvent,o){this._map.fire(new t.Event(o+\"end\",{originalEvent:e})),this._drainInertiaBuffer();var a=this._inertia,n=this._map;if(a.length<2)n.snapToNorth({},{originalEvent:e});else{var s=a[a.length-1],l=a[0],c=n.transform.scaleZoom(r*s[1]),u=n.transform.scaleZoom(r*l[1]),h=c-u,p=(s[0]-l[0])/1e3,d=s[2];if(0!==p&&c!==u){var _=.15*h/p;Math.abs(_)>2.5&&(_=_>0?2.5:-2.5);var f=1e3*Math.abs(_/(12*.15)),m=c+_*f/2e3;n.easeTo({zoom:m,duration:f,easing:Do,around:this._aroundCenter?n.getCenter():n.unproject(d),noMoveStart:!0},{originalEvent:e});}else n.snapToNorth({},{originalEvent:e});}}},Ao.prototype._drainInertiaBuffer=function(){for(var e=this._inertia,i=t.browser.now();e.length>2&&i-e[0][0]>160;)e.shift();};var Ro={scrollZoom:Eo,boxZoom:To,dragRotate:Co,dragPan:Po,keyboard:zo,doubleClickZoom:Mo,touchZoomRotate:Ao};var ko=function(e){function i(i,o){e.call(this),this._moving=!1,this._zooming=!1,this.transform=i,this._bearingSnap=o.bearingSnap,t.bindAll([\"_renderFrameCallback\"],this);}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.getCenter=function(){return new t.LngLat(this.transform.center.lng,this.transform.center.lat)},i.prototype.setCenter=function(t,e){return this.jumpTo({center:t},e)},i.prototype.panBy=function(e,i,o){return e=t.Point.convert(e).mult(-1),this.panTo(this.transform.center,t.extend({offset:e},i),o)},i.prototype.panTo=function(e,i,o){return this.easeTo(t.extend({center:e},i),o)},i.prototype.getZoom=function(){return this.transform.zoom},i.prototype.setZoom=function(t,e){return this.jumpTo({zoom:t},e),this},i.prototype.zoomTo=function(e,i,o){return this.easeTo(t.extend({zoom:e},i),o)},i.prototype.zoomIn=function(t,e){return this.zoomTo(this.getZoom()+1,t,e),this},i.prototype.zoomOut=function(t,e){return this.zoomTo(this.getZoom()-1,t,e),this},i.prototype.getBearing=function(){return this.transform.bearing},i.prototype.setBearing=function(t,e){return this.jumpTo({bearing:t},e),this},i.prototype.rotateTo=function(e,i,o){return this.easeTo(t.extend({bearing:e},i),o)},i.prototype.resetNorth=function(e,i){return this.rotateTo(0,t.extend({duration:1e3},e),i),this},i.prototype.resetNorthPitch=function(e,i){return this.easeTo(t.extend({bearing:0,pitch:0,duration:1e3},e),i),this},i.prototype.snapToNorth=function(t,e){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,e):this},i.prototype.getPitch=function(){return this.transform.pitch},i.prototype.setPitch=function(t,e){return this.jumpTo({pitch:t},e),this},i.prototype.cameraForBounds=function(e,i){return e=t.LngLatBounds.convert(e),this._cameraForBoxAndBearing(e.getNorthWest(),e.getSouthEast(),0,i)},i.prototype._cameraForBoxAndBearing=function(e,i,o,r){if(\"number\"==typeof(r=t.extend({padding:{top:0,bottom:0,right:0,left:0},offset:[0,0],maxZoom:this.transform.maxZoom},r)).padding){var a=r.padding;r.padding={top:a,bottom:a,right:a,left:a};}if(t.deepEqual(Object.keys(r.padding).sort((function(t,e){return t<e?-1:t>e?1:0})),[\"bottom\",\"left\",\"right\",\"top\"])){var n=this.transform,s=n.project(t.LngLat.convert(e)),l=n.project(t.LngLat.convert(i)),c=s.rotate(-o*Math.PI/180),u=l.rotate(-o*Math.PI/180),h=new t.Point(Math.max(c.x,u.x),Math.max(c.y,u.y)),p=new t.Point(Math.min(c.x,u.x),Math.min(c.y,u.y)),d=h.sub(p),_=(n.width-r.padding.left-r.padding.right)/d.x,f=(n.height-r.padding.top-r.padding.bottom)/d.y;if(!(f<0||_<0)){var m=Math.min(n.scaleZoom(n.scale*Math.min(_,f)),r.maxZoom),g=t.Point.convert(r.offset),v=(r.padding.left-r.padding.right)/2,y=(r.padding.top-r.padding.bottom)/2,x=new t.Point(g.x+v,g.y+y).mult(n.scale/n.zoomScale(m));return {center:n.unproject(s.add(l).div(2).sub(x)),zoom:m,bearing:o}}t.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");}else t.warnOnce(\"options.padding must be a positive number, or an Object with keys 'bottom', 'left', 'right', 'top'\");},i.prototype.fitBounds=function(t,e,i){return this._fitInternal(this.cameraForBounds(t,e),e,i)},i.prototype.fitScreenCoordinates=function(e,i,o,r,a){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(t.Point.convert(e)),this.transform.pointLocation(t.Point.convert(i)),o,r),r,a)},i.prototype._fitInternal=function(e,i,o){return e?(i=t.extend(e,i)).linear?this.easeTo(i,o):this.flyTo(i,o):this},i.prototype.jumpTo=function(e,i){this.stop();var o=this.transform,r=!1,a=!1,n=!1;return \"zoom\"in e&&o.zoom!==+e.zoom&&(r=!0,o.zoom=+e.zoom),void 0!==e.center&&(o.center=t.LngLat.convert(e.center)),\"bearing\"in e&&o.bearing!==+e.bearing&&(a=!0,o.bearing=+e.bearing),\"pitch\"in e&&o.pitch!==+e.pitch&&(n=!0,o.pitch=+e.pitch),this.fire(new t.Event(\"movestart\",i)).fire(new t.Event(\"move\",i)),r&&this.fire(new t.Event(\"zoomstart\",i)).fire(new t.Event(\"zoom\",i)).fire(new t.Event(\"zoomend\",i)),a&&this.fire(new t.Event(\"rotatestart\",i)).fire(new t.Event(\"rotate\",i)).fire(new t.Event(\"rotateend\",i)),n&&this.fire(new t.Event(\"pitchstart\",i)).fire(new t.Event(\"pitch\",i)).fire(new t.Event(\"pitchend\",i)),this.fire(new t.Event(\"moveend\",i))},i.prototype.easeTo=function(e,i){var o=this;this.stop(),(!1===(e=t.extend({offset:[0,0],duration:500,easing:t.ease},e)).animate||!e.essential&&t.browser.prefersReducedMotion)&&(e.duration=0);var r=this.transform,a=this.getZoom(),n=this.getBearing(),s=this.getPitch(),l=\"zoom\"in e?+e.zoom:a,c=\"bearing\"in e?this._normalizeBearing(e.bearing,n):n,u=\"pitch\"in e?+e.pitch:s,h=r.centerPoint.add(t.Point.convert(e.offset)),p=r.pointLocation(h),d=t.LngLat.convert(e.center||p);this._normalizeCenter(d);var _,f,m=r.project(p),g=r.project(d).sub(m),v=r.zoomScale(l-a);return e.around&&(_=t.LngLat.convert(e.around),f=r.locationPoint(_)),this._zooming=l!==a,this._rotating=n!==c,this._pitching=u!==s,this._prepareEase(i,e.noMoveStart),clearTimeout(this._easeEndTimeoutID),this._ease((function(e){if(o._zooming&&(r.zoom=t.number(a,l,e)),o._rotating&&(r.bearing=t.number(n,c,e)),o._pitching&&(r.pitch=t.number(s,u,e)),_)r.setLocationAtPoint(_,f);else{var p=r.zoomScale(r.zoom-a),d=l>a?Math.min(2,v):Math.max(.5,v),y=Math.pow(d,1-e),x=r.unproject(m.add(g.mult(e*y)).mult(p));r.setLocationAtPoint(r.renderWorldCopies?x.wrap():x,h);}o._fireMoveEvents(i);}),(function(){e.delayEndEvents?o._easeEndTimeoutID=setTimeout((function(){return o._afterEase(i)}),e.delayEndEvents):o._afterEase(i);}),e),this},i.prototype._prepareEase=function(e,i){this._moving=!0,i||this.fire(new t.Event(\"movestart\",e)),this._zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&this.fire(new t.Event(\"pitchstart\",e));},i.prototype._fireMoveEvents=function(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e));},i.prototype._afterEase=function(e){var i=this._zooming,o=this._rotating,r=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,i&&this.fire(new t.Event(\"zoomend\",e)),o&&this.fire(new t.Event(\"rotateend\",e)),r&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e));},i.prototype.flyTo=function(e,i){var o=this;if(!e.essential&&t.browser.prefersReducedMotion){var r=t.pick(e,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(r,i)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var a=this.transform,n=this.getZoom(),s=this.getBearing(),l=this.getPitch(),c=\"zoom\"in e?t.clamp(+e.zoom,a.minZoom,a.maxZoom):n,u=\"bearing\"in e?this._normalizeBearing(e.bearing,s):s,h=\"pitch\"in e?+e.pitch:l,p=a.zoomScale(c-n),d=a.centerPoint.add(t.Point.convert(e.offset)),_=a.pointLocation(d),f=t.LngLat.convert(e.center||_);this._normalizeCenter(f);var m=a.project(_),g=a.project(f).sub(m),v=e.curve,y=Math.max(a.width,a.height),x=y/p,b=g.mag();if(\"minZoom\"in e){var w=t.clamp(Math.min(e.minZoom,n,c),a.minZoom,a.maxZoom),E=y/a.zoomScale(w-n);v=Math.sqrt(E/b*2);}var T=v*v;function I(t){var e=(x*x-y*y+(t?-1:1)*T*T*b*b)/(2*(t?x:y)*T*b);return Math.log(Math.sqrt(e*e+1)-e)}function C(t){return (Math.exp(t)-Math.exp(-t))/2}function S(t){return (Math.exp(t)+Math.exp(-t))/2}var P=I(0),z=function(t){return S(P)/S(P+v*t)},L=function(t){return y*((S(P)*(C(e=P+v*t)/S(e))-C(P))/T)/b;var e;},M=(I(1)-P)/v;if(Math.abs(b)<1e-6||!isFinite(M)){if(Math.abs(y-x)<1e-6)return this.easeTo(e,i);var D=x<y?-1:1;M=Math.abs(Math.log(x/y))/v,L=function(){return 0},z=function(t){return Math.exp(D*v*t)};}if(\"duration\"in e)e.duration=+e.duration;else{var A=\"screenSpeed\"in e?+e.screenSpeed/v:+e.speed;e.duration=1e3*M/A;}return e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==u,this._pitching=h!==l,this._prepareEase(i,!1),this._ease((function(e){var r=e*M,p=1/z(r);a.zoom=1===e?c:n+a.scaleZoom(p),o._rotating&&(a.bearing=t.number(s,u,e)),o._pitching&&(a.pitch=t.number(l,h,e));var _=1===e?f:a.unproject(m.add(g.mult(L(r))).mult(p));a.setLocationAtPoint(a.renderWorldCopies?_.wrap():_,d),o._fireMoveEvents(i);}),(function(){return o._afterEase(i)}),e),this},i.prototype.isEasing=function(){return !!this._easeFrameId},i.prototype.stop=function(){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var t=this._onEaseEnd;delete this._onEaseEnd,t.call(this);}return this},i.prototype._ease=function(e,i,o){!1===o.animate||0===o.duration?(e(1),i()):(this._easeStart=t.browser.now(),this._easeOptions=o,this._onEaseFrame=e,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));},i.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();},i.prototype._normalizeBearing=function(e,i){e=t.wrap(e,-180,180);var o=Math.abs(e-i);return Math.abs(e-360-i)<o&&(e-=360),Math.abs(e+360-i)<o&&(e+=360),e},i.prototype._normalizeCenter=function(t){var e=this.transform;if(e.renderWorldCopies&&!e.lngRange){var i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0;}},i}(t.Evented),Bo=function(e){void 0===e&&(e={}),this.options=e,t.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this);};Bo.prototype.getDefaultPosition=function(){return \"bottom-right\"},Bo.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._innerContainer=i.create(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),e&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===e&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},Bo.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._attribHTML=void 0;},Bo.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var i=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var o=i.reduce((function(t,e,o){return e.value&&(t+=e.key+\"=\"+e.value+(o<i.length-1?\"&\":\"\")),t}),\"?\");e.href=t.config.FEEDBACK_URL+\"/\"+o+(this._map._hash?this._map._hash.getHashString(!0):\"\"),e.rel=\"noopener nofollow\";}},Bo.prototype._updateData=function(t){!t||\"metadata\"!==t.sourceDataType&&\"style\"!==t.dataType||(this._updateAttributions(),this._updateEditLink());},Bo.prototype._updateAttributions=function(){if(this._map.style){var t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map((function(t){return \"string\"!=typeof t?\"\":t}))):\"string\"==typeof this.options.customAttribution&&t.push(this.options.customAttribution)),this._map.style.stylesheet){var e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id;}var i=this._map.style.sourceCaches;for(var o in i){var r=i[o];if(r.used){var a=r.getSource();a.attribution&&t.indexOf(a.attribution)<0&&t.push(a.attribution);}}t.sort((function(t,e){return t.length-e.length}));var n=(t=t.filter((function(e,i){for(var o=i+1;o<t.length;o++)if(t[o].indexOf(e)>=0)return !1;return !0}))).join(\" | \");n!==this._attribHTML&&(this._attribHTML=n,t.length?(this._innerContainer.innerHTML=n,this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null);}},Bo.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\");};var Oo=function(){t.bindAll([\"_updateLogo\"],this),t.bindAll([\"_updateCompact\"],this);};Oo.prototype.onAdd=function(t){this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl\");var e=i.create(\"a\",\"mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.rel=\"noopener nofollow\",e.href=\"https://www.mapbox.com/\",e.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),e.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(e),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container},Oo.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact);},Oo.prototype.getDefaultPosition=function(){return \"bottom-left\"},Oo.prototype._updateLogo=function(t){t&&\"metadata\"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\");},Oo.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t){if(t[e].getSource().mapbox_logo)return !0}return !1}},Oo.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add(\"mapboxgl-compact\"):e.classList.remove(\"mapboxgl-compact\");}};var Fo=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;};Fo.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},Fo.prototype.remove=function(t){for(var e=this._currentlyRunning,i=0,o=e?this._queue.concat(e):this._queue;i<o.length;i+=1){var r=o[i];if(r.id===t)return void(r.cancelled=!0)}},Fo.prototype.run=function(){var t=this._currentlyRunning=this._queue;this._queue=[];for(var e=0,i=t;e<i.length;e+=1){var o=i[e];if(!o.cancelled&&(o.callback(),this._cleared))break}this._cleared=!1,this._currentlyRunning=!1;},Fo.prototype.clear=function(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];};var Uo={\"FullscreenControl.Enter\":\"Enter fullscreen\",\"FullscreenControl.Exit\":\"Exit fullscreen\",\"GeolocateControl.FindMyLocation\":\"Find my location\",\"GeolocateControl.LocationNotAvailable\":\"Location not available\",\"LogoControl.Title\":\"Mapbox logo\",\"NavigationControl.ResetBearing\":\"Reset bearing to north\",\"NavigationControl.ZoomIn\":\"Zoom in\",\"NavigationControl.ZoomOut\":\"Zoom out\",\"ScaleControl.Feet\":\"ft\",\"ScaleControl.Meters\":\"m\",\"ScaleControl.Kilometers\":\"km\",\"ScaleControl.Miles\":\"mi\",\"ScaleControl.NauticalMiles\":\"nm\"},No=t.window.HTMLImageElement,Zo=t.window.HTMLElement,qo=0,jo=60,Vo={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:qo,maxPitch:jo,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,bearingSnap:7,clickTolerance:3,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,localIdeographFontFamily:\"sans-serif\",transformRequest:null,accessToken:null,fadeDuration:300,crossSourceCollisions:!0},Go=function(o){function r(e){var r=this;if(null!=(e=t.extend({},Vo,e)).minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=e.minPitch&&e.minPitch<qo)throw new Error(\"minPitch must be greater than or equal to \"+qo);if(null!=e.maxPitch&&e.maxPitch>jo)throw new Error(\"maxPitch must be less than or equal to \"+jo);var a=new go(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(o.call(this,a,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new Fo,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},Uo,e.locale),this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),\"string\"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error(\"Container '\"+e.container+\"' not found.\")}else{if(!(e.container instanceof Zo))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container;}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(function(){return r._update(!1)})),this.on(\"moveend\",(function(){return r._update(!1)})),this.on(\"zoom\",(function(){return r._update(!0)})),void 0!==t.window&&(t.window.addEventListener(\"online\",this._onWindowOnline,!1),t.window.addEventListener(\"resize\",this._onWindowResize,!1)),function(t,e){var o=t.getCanvasContainer(),r=null,a=!1,n=null;for(var s in Ro)t[s]=new Ro[s](t,e),e.interactive&&e[s]&&t[s].enable(e[s]);i.addEventListener(o,\"mouseout\",(function(e){t.fire(new xo(\"mouseout\",t,e));})),i.addEventListener(o,\"mousedown\",(function(r){a=!0,n=i.mousePos(o,r);var s=new xo(\"mousedown\",t,r);if(t.fire(s),s.defaultPrevented)return;e.interactive&&!t.doubleClickZoom.isActive()&&t.stop();t.boxZoom.onMouseDown(r),t.boxZoom.isActive()||t.dragPan.isActive()||t.dragRotate.onMouseDown(r);t.boxZoom.isActive()||t.dragRotate.isActive()||t.dragPan.onMouseDown(r);})),i.addEventListener(o,\"mouseup\",(function(e){var i=t.dragRotate.isActive();r&&!i&&t.fire(new xo(\"contextmenu\",t,r));r=null,a=!1,t.fire(new xo(\"mouseup\",t,e));})),i.addEventListener(o,\"mousemove\",(function(e){if(t.dragPan.isActive())return;if(t.dragRotate.isActive())return;var i=e.target;for(;i&&i!==o;)i=i.parentNode;if(i!==o)return;t.fire(new xo(\"mousemove\",t,e));})),i.addEventListener(o,\"mouseover\",(function(e){var i=e.target;for(;i&&i!==o;)i=i.parentNode;if(i!==o)return;t.fire(new xo(\"mouseover\",t,e));})),i.addEventListener(o,\"touchstart\",(function(i){var o=new bo(\"touchstart\",t,i);if(t.fire(o),o.defaultPrevented)return;e.interactive&&t.stop();t.boxZoom.isActive()||t.dragRotate.isActive()||t.dragPan.onTouchStart(i);t.touchZoomRotate.onStart(i),t.doubleClickZoom.onTouchStart(o);}),{passive:!1}),i.addEventListener(o,\"touchmove\",(function(e){t.fire(new bo(\"touchmove\",t,e));}),{passive:!1}),i.addEventListener(o,\"touchend\",(function(e){t.fire(new bo(\"touchend\",t,e));})),i.addEventListener(o,\"touchcancel\",(function(e){t.fire(new bo(\"touchcancel\",t,e));})),i.addEventListener(o,\"click\",(function(r){var a=i.mousePos(o,r);(!n||a.equals(n)||a.dist(n)<e.clickTolerance)&&t.fire(new xo(\"click\",t,r));})),i.addEventListener(o,\"dblclick\",(function(e){var i=new xo(\"dblclick\",t,e);if(t.fire(i),i.defaultPrevented)return;t.doubleClickZoom.onDblClick(i);})),i.addEventListener(o,\"contextmenu\",(function(e){var i=t.dragRotate.isActive();a||i?a&&(r=e):t.fire(new xo(\"contextmenu\",t,e));(t.dragRotate.isEnabled()||t.listens(\"contextmenu\"))&&e.preventDefault();})),i.addEventListener(o,\"wheel\",(function(i){e.interactive&&t.stop();var o=new wo(\"wheel\",t,i);if(t.fire(o),o.defaultPrevented)return;t.scrollZoom.onWheel(i);}),{passive:!1});}(this,e);var n=\"string\"==typeof e.hash&&e.hash||void 0;this._hash=e.hash&&new yo(n).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new Bo({customAttribution:e.customAttribution})),this.addControl(new Oo,e.logoPosition),this.on(\"style.load\",(function(){r.transform.unmodified&&r.jumpTo(r.style.stylesheet);})),this.on(\"data\",(function(e){r._update(\"style\"===e.dataType),r.fire(new t.Event(e.dataType+\"data\",e));})),this.on(\"dataloading\",(function(e){r.fire(new t.Event(e.dataType+\"dataloading\",e));}));}o&&(r.__proto__=o),r.prototype=Object.create(o&&o.prototype),r.prototype.constructor=r;var a={showTileBoundaries:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return r.prototype._getMapId=function(){return this._mapId},r.prototype.addControl=function(e,i){if(void 0===i&&e.getDefaultPosition&&(i=e.getDefaultPosition()),void 0===i&&(i=\"top-right\"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));var o=e.onAdd(this);this._controls.push(e);var r=this._controlPositions[i];return -1!==i.indexOf(\"bottom\")?r.insertBefore(o,r.firstChild):r.appendChild(o),this},r.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));var i=this._controls.indexOf(e);return i>-1&&this._controls.splice(i,1),e.onRemove(this),this},r.prototype.resize=function(e){var i=this._containerDimensions(),o=i[0],r=i[1];return this._resizeCanvas(o,r),this.transform.resize(o,r),this.painter.resize(o,r),this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e)).fire(new t.Event(\"resize\",e)).fire(new t.Event(\"moveend\",e)),this},r.prototype.getBounds=function(){return this.transform.getBounds()},r.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},r.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},r.prototype.setMinZoom=function(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t&&this.setZoom(t),this;throw new Error(\"minZoom must be between -2 and the current maxZoom, inclusive\")},r.prototype.getMinZoom=function(){return this.transform.minZoom},r.prototype.setMaxZoom=function(t){if((t=null==t?22:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},r.prototype.getMaxZoom=function(){return this.transform.maxZoom},r.prototype.setMinPitch=function(t){if((t=null==t?qo:t)<qo)throw new Error(\"minPitch must be greater than or equal to \"+qo);if(t>=qo&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()<t&&this.setPitch(t),this;throw new Error(\"minPitch must be between \"+qo+\" and the current maxPitch, inclusive\")},r.prototype.getMinPitch=function(){return this.transform.minPitch},r.prototype.setMaxPitch=function(t){if((t=null==t?jo:t)>jo)throw new Error(\"maxPitch must be less than or equal to \"+jo);if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error(\"maxPitch must be greater than the current minPitch\")},r.prototype.getMaxPitch=function(){return this.transform.maxPitch},r.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},r.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},r.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},r.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},r.prototype.isMoving=function(){return this._moving||this.dragPan.isActive()||this.dragRotate.isActive()||this.scrollZoom.isActive()},r.prototype.isZooming=function(){return this._zooming||this.scrollZoom.isZooming()},r.prototype.isRotating=function(){return this._rotating||this.dragRotate.isActive()},r.prototype.on=function(t,e,i){var r=this;if(void 0===i)return o.prototype.on.call(this,t,e);var a=function(){var o;if(\"mouseenter\"===t||\"mouseover\"===t){var a=!1;return {layer:e,listener:i,delegates:{mousemove:function(o){var n=r.getLayer(e)?r.queryRenderedFeatures(o.point,{layers:[e]}):[];n.length?a||(a=!0,i.call(r,new xo(t,r,o.originalEvent,{features:n}))):a=!1;},mouseout:function(){a=!1;}}}}if(\"mouseleave\"===t||\"mouseout\"===t){var n=!1;return {layer:e,listener:i,delegates:{mousemove:function(o){(r.getLayer(e)?r.queryRenderedFeatures(o.point,{layers:[e]}):[]).length?n=!0:n&&(n=!1,i.call(r,new xo(t,r,o.originalEvent)));},mouseout:function(e){n&&(n=!1,i.call(r,new xo(t,r,e.originalEvent)));}}}}return {layer:e,listener:i,delegates:(o={},o[t]=function(t){var o=r.getLayer(e)?r.queryRenderedFeatures(t.point,{layers:[e]}):[];o.length&&(t.features=o,i.call(r,t),delete t.features);},o)}}();for(var n in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(a),a.delegates)this.on(n,a.delegates[n]);return this},r.prototype.off=function(t,e,i){if(void 0===i)return o.prototype.off.call(this,t,e);if(this._delegatedListeners&&this._delegatedListeners[t])for(var r=this._delegatedListeners[t],a=0;a<r.length;a++){var n=r[a];if(n.layer===e&&n.listener===i){for(var s in n.delegates)this.off(s,n.delegates[s]);return r.splice(a,1),this}}return this},r.prototype.queryRenderedFeatures=function(e,i){if(!this.style)return [];var o;if(void 0!==i||void 0===e||e instanceof t.Point||Array.isArray(e)||(i=e,e=void 0),i=i||{},(e=e||[[0,0],[this.transform.width,this.transform.height]])instanceof t.Point||\"number\"==typeof e[0])o=[t.Point.convert(e)];else{var r=t.Point.convert(e[0]),a=t.Point.convert(e[1]);o=[r,new t.Point(a.x,r.y),a,new t.Point(r.x,a.y),r];}return this.style.queryRenderedFeatures(o,i,this.transform)},r.prototype.querySourceFeatures=function(t,e){return this.style.querySourceFeatures(t,e)},r.prototype.setStyle=function(e,i){return !1!==(i=t.extend({},{localIdeographFontFamily:this._localIdeographFontFamily},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._updateStyle(e,i))},r.prototype._getUIString=function(t){var e=this._locale[t];if(null==e)throw new Error(\"Missing UI string '\"+t+\"'\");return e},r.prototype._updateStyle=function(t,e){return this.style&&(this.style.setEventedParent(null),this.style._remove()),t?(this.style=new Ue(this,e||{}),this.style.setEventedParent(this,{style:this.style}),\"string\"==typeof t?this.style.loadURL(t):this.style.loadJSON(t),this):(delete this.style,this)},r.prototype._diffStyle=function(e,i){var o=this;if(\"string\"==typeof e){var r=this._requestManager.normalizeStyleURL(e),a=this._requestManager.transformRequest(r,t.ResourceType.Style);t.getJSON(a,(function(e,r){e?o.fire(new t.ErrorEvent(e)):r&&o._updateDiff(r,i);}));}else\"object\"==typeof e&&this._updateDiff(e,i);},r.prototype._updateDiff=function(e,i){try{this.style.setState(e)&&this._update(!0);}catch(o){t.warnOnce(\"Unable to perform style diff: \"+(o.message||o.error||o)+\". Rebuilding the style from scratch.\"),this._updateStyle(e,i);}},r.prototype.getStyle=function(){if(this.style)return this.style.serialize()},r.prototype.isStyleLoaded=function(){return this.style?this.style.loaded():t.warnOnce(\"There is no style added to the map.\")},r.prototype.addSource=function(t,e){return this.style.addSource(t,e),this._update(!0)},r.prototype.isSourceLoaded=function(e){var i=this.style&&this.style.sourceCaches[e];if(void 0!==i)return i.loaded();this.fire(new t.ErrorEvent(new Error(\"There is no source with ID '\"+e+\"'\")));},r.prototype.areTilesLoaded=function(){var t=this.style&&this.style.sourceCaches;for(var e in t){var i=t[e]._tiles;for(var o in i){var r=i[o];if(\"loaded\"!==r.state&&\"errored\"!==r.state)return !1}}return !0},r.prototype.addSourceType=function(t,e,i){return this.style.addSourceType(t,e,i)},r.prototype.removeSource=function(t){return this.style.removeSource(t),this._update(!0)},r.prototype.getSource=function(t){return this.style.getSource(t)},r.prototype.addImage=function(e,i,o){void 0===o&&(o={});var r=o.pixelRatio;void 0===r&&(r=1);var a=o.sdf;void 0===a&&(a=!1);var n=o.stretchX,s=o.stretchY,l=o.content;if(i instanceof No){var c=t.browser.getImageData(i),u=c.width,h=c.height,p=c.data;this.style.addImage(e,{data:new t.RGBAImage({width:u,height:h},p),pixelRatio:r,stretchX:n,stretchY:s,content:l,sdf:a,version:0});}else{if(void 0===i.width||void 0===i.height)return this.fire(new t.ErrorEvent(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));var d=i.width,_=i.height,f=i.data,m=i;this.style.addImage(e,{data:new t.RGBAImage({width:d,height:_},new Uint8Array(f)),pixelRatio:r,stretchX:n,stretchY:s,content:l,sdf:a,version:0,userImage:m}),m.onAdd&&m.onAdd(this,e);}},r.prototype.updateImage=function(e,i){var o=this.style.getImage(e);if(!o)return this.fire(new t.ErrorEvent(new Error(\"The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.\")));var r=i instanceof No?t.browser.getImageData(i):i,a=r.width,n=r.height,s=r.data;if(void 0===a||void 0===n)return this.fire(new t.ErrorEvent(new Error(\"Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));if(a!==o.data.width||n!==o.data.height)return this.fire(new t.ErrorEvent(new Error(\"The width and height of the updated image must be that same as the previous version of the image\")));var l=!(i instanceof No);o.data.replace(s,l),this.style.updateImage(e,o);},r.prototype.hasImage=function(e){return e?!!this.style.getImage(e):(this.fire(new t.ErrorEvent(new Error(\"Missing required image id\"))),!1)},r.prototype.removeImage=function(t){this.style.removeImage(t);},r.prototype.loadImage=function(e,i){t.getImage(this._requestManager.transformRequest(e,t.ResourceType.Image),i);},r.prototype.listImages=function(){return this.style.listImages()},r.prototype.addLayer=function(t,e){return this.style.addLayer(t,e),this._update(!0)},r.prototype.moveLayer=function(t,e){return this.style.moveLayer(t,e),this._update(!0)},r.prototype.removeLayer=function(t){return this.style.removeLayer(t),this._update(!0)},r.prototype.getLayer=function(t){return this.style.getLayer(t)},r.prototype.setLayerZoomRange=function(t,e,i){return this.style.setLayerZoomRange(t,e,i),this._update(!0)},r.prototype.setFilter=function(t,e,i){return void 0===i&&(i={}),this.style.setFilter(t,e,i),this._update(!0)},r.prototype.getFilter=function(t){return this.style.getFilter(t)},r.prototype.setPaintProperty=function(t,e,i,o){return void 0===o&&(o={}),this.style.setPaintProperty(t,e,i,o),this._update(!0)},r.prototype.getPaintProperty=function(t,e){return this.style.getPaintProperty(t,e)},r.prototype.setLayoutProperty=function(t,e,i,o){return void 0===o&&(o={}),this.style.setLayoutProperty(t,e,i,o),this._update(!0)},r.prototype.getLayoutProperty=function(t,e){return this.style.getLayoutProperty(t,e)},r.prototype.setLight=function(t,e){return void 0===e&&(e={}),this.style.setLight(t,e),this._update(!0)},r.prototype.getLight=function(){return this.style.getLight()},r.prototype.setFeatureState=function(t,e){return this.style.setFeatureState(t,e),this._update()},r.prototype.removeFeatureState=function(t,e){return this.style.removeFeatureState(t,e),this._update()},r.prototype.getFeatureState=function(t){return this.style.getFeatureState(t)},r.prototype.getContainer=function(){return this._container},r.prototype.getCanvasContainer=function(){return this._canvasContainer},r.prototype.getCanvas=function(){return this._canvas},r.prototype._containerDimensions=function(){var t=0,e=0;return this._container&&(t=this._container.clientWidth||400,e=this._container.clientHeight||300),[t,e]},r.prototype._detectMissingCSS=function(){\"rgb(250, 128, 114)\"!==t.window.getComputedStyle(this._missingCSSCanary).getPropertyValue(\"background-color\")&&t.warnOnce(\"This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described in https://www.mapbox.com/mapbox-gl-js/api/.\");},r.prototype._setupContainer=function(){var t=this._container;t.classList.add(\"mapboxgl-map\"),(this._missingCSSCanary=i.create(\"div\",\"mapboxgl-canary\",t)).style.visibility=\"hidden\",this._detectMissingCSS();var e=this._canvasContainer=i.create(\"div\",\"mapboxgl-canvas-container\",t);this._interactive&&e.classList.add(\"mapboxgl-interactive\"),this._canvas=i.create(\"canvas\",\"mapboxgl-canvas\",e),this._canvas.style.position=\"absolute\",this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\");var o=this._containerDimensions();this._resizeCanvas(o[0],o[1]);var r=this._controlContainer=i.create(\"div\",\"mapboxgl-control-container\",t),a=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach((function(t){a[t]=i.create(\"div\",\"mapboxgl-ctrl-\"+t,r);}));},r.prototype._resizeCanvas=function(e,i){var o=t.window.devicePixelRatio||1;this._canvas.width=o*e,this._canvas.height=o*i,this._canvas.style.width=e+\"px\",this._canvas.style.height=i+\"px\";},r.prototype._setupPainter=function(){var i=t.extend({},e.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),o=this._canvas.getContext(\"webgl\",i)||this._canvas.getContext(\"experimental-webgl\",i);o?(this.painter=new po(o,this.transform),t.webpSupported.testSupport(o)):this.fire(new t.ErrorEvent(new Error(\"Failed to initialize WebGL\")));},r.prototype._contextLost=function(e){e.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new t.Event(\"webglcontextlost\",{originalEvent:e}));},r.prototype._contextRestored=function(e){this._setupPainter(),this.resize(),this._update(),this.fire(new t.Event(\"webglcontextrestored\",{originalEvent:e}));},r.prototype.loaded=function(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()},r.prototype._update=function(t){return this.style?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this.triggerRepaint(),this):this},r.prototype._requestRenderFrame=function(t){return this._update(),this._renderTaskQueue.add(t)},r.prototype._cancelRenderFrame=function(t){this._renderTaskQueue.remove(t);},r.prototype._render=function(){var e,i=this,o=0,r=this.painter.context.extTimerQuery;this.listens(\"gpu-timing-frame\")&&(e=r.createQueryEXT(),r.beginQueryEXT(r.TIME_ELAPSED_EXT,e),o=t.browser.now()),this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run();var a=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;var n=this.transform.zoom,s=t.browser.now();this.style.zoomHistory.update(n,s);var l=new t.EvaluationParameters(n,{now:s,fadeDuration:this._fadeDuration,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),c=l.crossFadingFactor();1===c&&c===this._crossFadingFactor||(a=!0,this._crossFadingFactor=c),this.style.update(l);}if(this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,this._fadeDuration,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),gpuTiming:!!this.listens(\"gpu-timing-layer\"),fadeDuration:this._fadeDuration}),this.fire(new t.Event(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new t.Event(\"load\"))),this.style&&(this.style.hasTransitions()||a)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),this.listens(\"gpu-timing-frame\")){var u=t.browser.now()-o;r.endQueryEXT(r.TIME_ELAPSED_EXT,e),setTimeout((function(){var o=r.getQueryObjectEXT(e,r.QUERY_RESULT_EXT)/1e6;r.deleteQueryEXT(e),i.fire(new t.Event(\"gpu-timing-frame\",{cpuTime:u,gpuTime:o}));}),50);}if(this.listens(\"gpu-timing-layer\")){var h=this.painter.collectGpuTimers();setTimeout((function(){var e=i.painter.queryGpuTimers(h);i.fire(new t.Event(\"gpu-timing-layer\",{layerTimes:e}));}),50);}return this._sourcesDirty||this._repaint||this._styleDirty||this._placementDirty?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.Event(\"idle\")),this},r.prototype.remove=function(){this._hash&&this._hash.remove();for(var e=0,i=this._controls;e<i.length;e+=1){i[e].onRemove(this);}this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.setStyle(null),void 0!==t.window&&(t.window.removeEventListener(\"resize\",this._onWindowResize,!1),t.window.removeEventListener(\"online\",this._onWindowOnline,!1));var o=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");o&&o.loseContext(),Wo(this._canvasContainer),Wo(this._controlContainer),Wo(this._missingCSSCanary),this._container.classList.remove(\"mapboxgl-map\"),this.fire(new t.Event(\"remove\"));},r.prototype.triggerRepaint=function(){var e=this;this.style&&!this._frame&&(this._frame=t.browser.frame((function(){e._frame=null,e._render();})));},r.prototype._onWindowOnline=function(){this._update();},r.prototype._onWindowResize=function(t){this._trackResize&&this.resize({originalEvent:t})._update();},a.showTileBoundaries.get=function(){return !!this._showTileBoundaries},a.showTileBoundaries.set=function(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update());},a.showCollisionBoxes.get=function(){return !!this._showCollisionBoxes},a.showCollisionBoxes.set=function(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,t?this.style._generateCollisionBoxes():this._update());},a.showOverdrawInspector.get=function(){return !!this._showOverdrawInspector},a.showOverdrawInspector.set=function(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update());},a.repaint.get=function(){return !!this._repaint},a.repaint.set=function(t){this._repaint!==t&&(this._repaint=t,this.triggerRepaint());},a.vertices.get=function(){return !!this._vertices},a.vertices.set=function(t){this._vertices=t,this._update();},r.prototype._setCacheLimits=function(e,i){t.setCacheLimits(e,i);},a.version.get=function(){return t.version},Object.defineProperties(r.prototype,a),r}(ko);function Wo(t){t.parentNode&&t.parentNode.removeChild(t);}var Xo={showCompass:!0,showZoom:!0,visualizePitch:!1},Ho=function(e){var o=this;this.options=t.extend({},Xo,e),this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",(function(t){return t.preventDefault()})),this.options.showZoom&&(t.bindAll([\"_setButtonTitle\",\"_updateZoomButtons\"],this),this._zoomInButton=this._createButton(\"mapboxgl-ctrl-zoom-in\",(function(t){return o._map.zoomIn({},{originalEvent:t})})),i.create(\"span\",\"mapboxgl-ctrl-icon\",this._zoomInButton).setAttribute(\"aria-hidden\",!0),this._zoomOutButton=this._createButton(\"mapboxgl-ctrl-zoom-out\",(function(t){return o._map.zoomOut({},{originalEvent:t})})),i.create(\"span\",\"mapboxgl-ctrl-icon\",this._zoomOutButton).setAttribute(\"aria-hidden\",!0)),this.options.showCompass&&(t.bindAll([\"_rotateCompassArrow\"],this),this._compass=this._createButton(\"mapboxgl-ctrl-compass\",(function(t){o.options.visualizePitch?o._map.resetNorthPitch({},{originalEvent:t}):o._map.resetNorth({},{originalEvent:t});})),this._compassIcon=i.create(\"span\",\"mapboxgl-ctrl-icon\",this._compass),this._compassIcon.setAttribute(\"aria-hidden\",!0));};function Ko(e,i,o){if(e=new t.LngLat(e.lng,e.lat),i){var r=new t.LngLat(e.lng-360,e.lat),a=new t.LngLat(e.lng+360,e.lat),n=o.locationPoint(e).distSqr(i);o.locationPoint(r).distSqr(i)<n?e=r:o.locationPoint(a).distSqr(i)<n&&(e=a);}for(;Math.abs(e.lng-o.center.lng)>180;){var s=o.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=o.width&&s.y<=o.height)break;e.lng>o.center.lng?e.lng-=360:e.lng+=360;}return e}Ho.prototype._updateZoomButtons=function(){var t=this._map.getZoom();this._zoomInButton.disabled=t===this._map.getMaxZoom(),this._zoomOutButton.disabled=t===this._map.getMinZoom();},Ho.prototype._rotateCompassArrow=function(){var t=this.options.visualizePitch?\"scale(\"+1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)+\") rotateX(\"+this._map.transform.pitch+\"deg) rotateZ(\"+this._map.transform.angle*(180/Math.PI)+\"deg)\":\"rotate(\"+this._map.transform.angle*(180/Math.PI)+\"deg)\";this._compassIcon.style.transform=t;},Ho.prototype.onAdd=function(t){return this._map=t,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,\"ZoomIn\"),this._setButtonTitle(this._zoomOutButton,\"ZoomOut\"),this._map.on(\"zoom\",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,\"ResetBearing\"),this.options.visualizePitch&&this._map.on(\"pitch\",this._rotateCompassArrow),this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Co(t,{button:\"left\",element:this._compass}),i.addEventListener(this._compass,\"mousedown\",this._handler.onMouseDown),i.addEventListener(this._compass,\"touchstart\",this._handler.onMouseDown,{passive:!1}),this._handler.enable()),this._container},Ho.prototype.onRemove=function(){i.remove(this._container),this.options.showZoom&&this._map.off(\"zoom\",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off(\"pitch\",this._rotateCompassArrow),this._map.off(\"rotate\",this._rotateCompassArrow),i.removeEventListener(this._compass,\"mousedown\",this._handler.onMouseDown),i.removeEventListener(this._compass,\"touchstart\",this._handler.onMouseDown,{passive:!1}),this._handler.disable(),delete this._handler),delete this._map;},Ho.prototype._createButton=function(t,e){var o=i.create(\"button\",t,this._container);return o.type=\"button\",o.addEventListener(\"click\",e),o},Ho.prototype._setButtonTitle=function(t,e){var i=this._map._getUIString(\"NavigationControl.\"+e);t.title=i,t.setAttribute(\"aria-label\",i);};var Yo={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};function Jo(t,e,i){var o=t.classList;for(var r in Yo)o.remove(\"mapboxgl-\"+i+\"-anchor-\"+r);o.add(\"mapboxgl-\"+i+\"-anchor-\"+e);}var Qo,$o=function(e){function o(o,r){var a=this;if(e.call(this),(o instanceof t.window.HTMLElement||r)&&(o=t.extend({element:o},r)),t.bindAll([\"_update\",\"_onMove\",\"_onUp\",\"_addDragHandler\",\"_onMapClick\",\"_onKeyPress\"],this),this._anchor=o&&o.anchor||\"center\",this._color=o&&o.color||\"#3FB1CE\",this._draggable=o&&o.draggable||!1,this._state=\"inactive\",this._rotation=o&&o.rotation||0,this._rotationAlignment=o&&o.rotationAlignment||\"auto\",this._pitchAlignment=o&&o.pitchAlignment&&\"auto\"!==o.pitchAlignment?o.pitchAlignment:this._rotationAlignment,o&&o.element)this._element=o.element,this._offset=t.Point.convert(o&&o.offset||[0,0]);else{this._defaultMarker=!0,this._element=i.create(\"div\"),this._element.setAttribute(\"aria-label\",\"Map marker\");var n=i.createNS(\"http://www.w3.org/2000/svg\",\"svg\");n.setAttributeNS(null,\"display\",\"block\"),n.setAttributeNS(null,\"height\",\"41px\"),n.setAttributeNS(null,\"width\",\"27px\"),n.setAttributeNS(null,\"viewBox\",\"0 0 27 41\");var s=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");s.setAttributeNS(null,\"stroke\",\"none\"),s.setAttributeNS(null,\"stroke-width\",\"1\"),s.setAttributeNS(null,\"fill\",\"none\"),s.setAttributeNS(null,\"fill-rule\",\"evenodd\");var l=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");l.setAttributeNS(null,\"fill-rule\",\"nonzero\");var c=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");c.setAttributeNS(null,\"transform\",\"translate(3.0, 29.0)\"),c.setAttributeNS(null,\"fill\",\"#000000\");for(var u=0,h=[{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"9.5\",ry:\"4.77275007\"},{rx:\"8.5\",ry:\"4.29549936\"},{rx:\"7.5\",ry:\"3.81822308\"},{rx:\"6.5\",ry:\"3.34094679\"},{rx:\"5.5\",ry:\"2.86367051\"},{rx:\"4.5\",ry:\"2.38636864\"}];u<h.length;u+=1){var p=h[u],d=i.createNS(\"http://www.w3.org/2000/svg\",\"ellipse\");d.setAttributeNS(null,\"opacity\",\"0.04\"),d.setAttributeNS(null,\"cx\",\"10.5\"),d.setAttributeNS(null,\"cy\",\"5.80029008\"),d.setAttributeNS(null,\"rx\",p.rx),d.setAttributeNS(null,\"ry\",p.ry),c.appendChild(d);}var _=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");_.setAttributeNS(null,\"fill\",this._color);var f=i.createNS(\"http://www.w3.org/2000/svg\",\"path\");f.setAttributeNS(null,\"d\",\"M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z\"),_.appendChild(f);var m=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");m.setAttributeNS(null,\"opacity\",\"0.25\"),m.setAttributeNS(null,\"fill\",\"#000000\");var g=i.createNS(\"http://www.w3.org/2000/svg\",\"path\");g.setAttributeNS(null,\"d\",\"M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z\"),m.appendChild(g);var v=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");v.setAttributeNS(null,\"transform\",\"translate(6.0, 7.0)\"),v.setAttributeNS(null,\"fill\",\"#FFFFFF\");var y=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");y.setAttributeNS(null,\"transform\",\"translate(8.0, 8.0)\");var x=i.createNS(\"http://www.w3.org/2000/svg\",\"circle\");x.setAttributeNS(null,\"fill\",\"#000000\"),x.setAttributeNS(null,\"opacity\",\"0.25\"),x.setAttributeNS(null,\"cx\",\"5.5\"),x.setAttributeNS(null,\"cy\",\"5.5\"),x.setAttributeNS(null,\"r\",\"5.4999962\");var b=i.createNS(\"http://www.w3.org/2000/svg\",\"circle\");b.setAttributeNS(null,\"fill\",\"#FFFFFF\"),b.setAttributeNS(null,\"cx\",\"5.5\"),b.setAttributeNS(null,\"cy\",\"5.5\"),b.setAttributeNS(null,\"r\",\"5.4999962\"),y.appendChild(x),y.appendChild(b),l.appendChild(c),l.appendChild(_),l.appendChild(m),l.appendChild(v),l.appendChild(y),n.appendChild(l),this._element.appendChild(n),this._offset=t.Point.convert(o&&o.offset||[0,-14]);}this._element.classList.add(\"mapboxgl-marker\"),this._element.addEventListener(\"dragstart\",(function(t){t.preventDefault();})),this._element.addEventListener(\"mousedown\",(function(t){t.preventDefault();})),this._element.addEventListener(\"focus\",(function(){var t=a._map.getContainer();t.scrollTop=0,t.scrollLeft=0;})),Jo(this._element,this._anchor,\"marker\"),this._popup=null;}return e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o,o.prototype.addTo=function(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on(\"move\",this._update),t.on(\"moveend\",this._update),this.setDraggable(this._draggable),this._update(),this._map.on(\"click\",this._onMapClick),this},o.prototype.remove=function(){return this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler),this._map.off(\"mouseup\",this._onUp),this._map.off(\"touchend\",this._onUp),this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),delete this._map),i.remove(this._element),this._popup&&this._popup.remove(),this},o.prototype.getLngLat=function(){return this._lngLat},o.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this},o.prototype.getElement=function(){return this._element},o.prototype.setPopup=function(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener(\"keypress\",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute(\"tabindex\")),t){if(!(\"offset\"in t.options)){var e=Math.sqrt(Math.pow(13.5,2)/2);t.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-38.1],\"bottom-left\":[e,-1*(24.6+e)],\"bottom-right\":[-e,-1*(24.6+e)],left:[13.5,-24.6],right:[-13.5,-24.6]}:this._offset;}this._popup=t,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute(\"tabindex\"),this._originalTabIndex||this._element.setAttribute(\"tabindex\",\"0\"),this._element.addEventListener(\"keypress\",this._onKeyPress);}return this},o.prototype._onKeyPress=function(t){var e=t.code,i=t.charCode||t.keyCode;\"Space\"!==e&&\"Enter\"!==e&&32!==i&&13!==i||this.togglePopup();},o.prototype._onMapClick=function(t){var e=t.originalEvent.target,i=this._element;this._popup&&(e===i||i.contains(e))&&this.togglePopup();},o.prototype.getPopup=function(){return this._popup},o.prototype.togglePopup=function(){var t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this},o.prototype._update=function(t){if(this._map){this._map.transform.renderWorldCopies&&(this._lngLat=Ko(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);var e=\"\";\"viewport\"===this._rotationAlignment||\"auto\"===this._rotationAlignment?e=\"rotateZ(\"+this._rotation+\"deg)\":\"map\"===this._rotationAlignment&&(e=\"rotateZ(\"+(this._rotation-this._map.getBearing())+\"deg)\");var o=\"\";\"viewport\"===this._pitchAlignment||\"auto\"===this._pitchAlignment?o=\"rotateX(0deg)\":\"map\"===this._pitchAlignment&&(o=\"rotateX(\"+this._map.getPitch()+\"deg)\"),t&&\"moveend\"!==t.type||(this._pos=this._pos.round()),i.setTransform(this._element,Yo[this._anchor]+\" translate(\"+this._pos.x+\"px, \"+this._pos.y+\"px) \"+o+\" \"+e);}},o.prototype.getOffset=function(){return this._offset},o.prototype.setOffset=function(e){return this._offset=t.Point.convert(e),this._update(),this},o.prototype._onMove=function(e){this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=\"none\",\"pending\"===this._state&&(this._state=\"active\",this.fire(new t.Event(\"dragstart\"))),this.fire(new t.Event(\"drag\"));},o.prototype._onUp=function(){this._element.style.pointerEvents=\"auto\",this._positionDelta=null,this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),\"active\"===this._state&&this.fire(new t.Event(\"dragend\")),this._state=\"inactive\";},o.prototype._addDragHandler=function(t){this._element.contains(t.originalEvent.target)&&(t.preventDefault(),this._positionDelta=t.point.sub(this._pos).add(this._offset),this._state=\"pending\",this._map.on(\"mousemove\",this._onMove),this._map.on(\"touchmove\",this._onMove),this._map.once(\"mouseup\",this._onUp),this._map.once(\"touchend\",this._onUp));},o.prototype.setDraggable=function(t){return this._draggable=!!t,this._map&&(t?(this._map.on(\"mousedown\",this._addDragHandler),this._map.on(\"touchstart\",this._addDragHandler)):(this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler))),this},o.prototype.isDraggable=function(){return this._draggable},o.prototype.setRotation=function(t){return this._rotation=t||0,this._update(),this},o.prototype.getRotation=function(){return this._rotation},o.prototype.setRotationAlignment=function(t){return this._rotationAlignment=t||\"auto\",this._update(),this},o.prototype.getRotationAlignment=function(){return this._rotationAlignment},o.prototype.setPitchAlignment=function(t){return this._pitchAlignment=t&&\"auto\"!==t?t:this._rotationAlignment,this._update(),this},o.prototype.getPitchAlignment=function(){return this._pitchAlignment},o}(t.Evented),tr={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showUserLocation:!0};var er=function(e){function o(i){e.call(this),this.options=t.extend({},tr,i),t.bindAll([\"_onSuccess\",\"_onError\",\"_finish\",\"_setupUI\",\"_updateCamera\",\"_updateMarker\"],this);}return e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o,o.prototype.onAdd=function(e){var o;return this._map=e,this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),o=this._setupUI,void 0!==Qo?o(Qo):void 0!==t.window.navigator.permissions?t.window.navigator.permissions.query({name:\"geolocation\"}).then((function(t){Qo=\"denied\"!==t.state,o(Qo);})):(Qo=!!t.window.navigator.geolocation,o(Qo)),this._container},o.prototype.onRemove=function(){void 0!==this._geolocationWatchID&&(t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),i.remove(this._container),this._map=void 0;},o.prototype._isOutOfMapMaxBounds=function(t){var e=this._map.getMaxBounds(),i=t.coords;return e&&(i.longitude<e.getWest()||i.longitude>e.getEast()||i.latitude<e.getSouth()||i.latitude>e.getNorth())},o.prototype._setErrorState=function(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");}},o.prototype._onSuccess=function(e){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event(\"outofmaxbounds\",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"geolocate\",e)),this._finish();},o.prototype._updateCamera=function(e){var i=new t.LngLat(e.coords.longitude,e.coords.latitude),o=e.coords.accuracy,r=this._map.getBearing(),a=t.extend({bearing:r},this.options.fitBoundsOptions);this._map.fitBounds(i.toBounds(o),a,{geolocateSource:!0});},o.prototype._updateMarker=function(t){t?this._userLocationDotMarker.setLngLat([t.coords.longitude,t.coords.latitude]).addTo(this._map):this._userLocationDotMarker.remove();},o.prototype._onError=function(e){if(this.options.trackUserLocation)if(1===e.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;var i=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=i,this._geolocateButton.setAttribute(\"aria-label\",i),void 0!==this._geolocationWatchID&&this._clearWatch();}else this._setErrorState();\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"error\",e)),this._finish();},o.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;},o.prototype._setupUI=function(e){var o=this;if(this._container.addEventListener(\"contextmenu\",(function(t){return t.preventDefault()})),this._geolocateButton=i.create(\"button\",\"mapboxgl-ctrl-geolocate\",this._container),i.create(\"span\",\"mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",!0),this._geolocateButton.type=\"button\",!1===e){t.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");var r=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=r,this._geolocateButton.setAttribute(\"aria-label\",r);}else{var a=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=a,this._geolocateButton.setAttribute(\"aria-label\",a);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=i.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new $o(this._dotElement),this.options.trackUserLocation&&(this._watchState=\"OFF\")),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(function(e){var i=e.originalEvent&&\"resize\"===e.originalEvent.type;e.geolocateSource||\"ACTIVE_LOCK\"!==o._watchState||i||(o._watchState=\"BACKGROUND\",o._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),o._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),o.fire(new t.Event(\"trackuserlocationend\")));}));},o.prototype.trigger=function(){if(!this._setup)return t.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new t.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event(\"trackuserlocationstart\"));}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\");}\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID?this._clearWatch():void 0===this._geolocationWatchID&&(this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,this.options.positionOptions));}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0},o.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null);},o}(t.Evented),ir={maxWidth:100,unit:\"metric\"},or=function(e){this.options=t.extend({},ir,e),t.bindAll([\"_onMove\",\"setUnit\"],this);};function rr(t,e,i){var o,r,a,n,s,l,c=i&&i.maxWidth||100,u=t._container.clientHeight/2,h=(o=t.unproject([0,u]),r=t.unproject([c,u]),a=Math.PI/180,n=o.lat*a,s=r.lat*a,l=Math.sin(n)*Math.sin(s)+Math.cos(n)*Math.cos(s)*Math.cos((r.lng-o.lng)*a),6371e3*Math.acos(Math.min(l,1)));if(i&&\"imperial\"===i.unit){var p=3.2808*h;if(p>5280)ar(e,c,p/5280,t._getUIString(\"ScaleControl.Miles\"));else ar(e,c,p,t._getUIString(\"ScaleControl.Feet\"));}else if(i&&\"nautical\"===i.unit){ar(e,c,h/1852,t._getUIString(\"ScaleControl.NauticalMiles\"));}else h>=1e3?ar(e,c,h/1e3,t._getUIString(\"ScaleControl.Kilometers\")):ar(e,c,h,t._getUIString(\"ScaleControl.Meters\"));}function ar(t,e,i,o){var r,a,n,s=(r=i,a=Math.pow(10,(\"\"+Math.floor(r)).length-1),n=(n=r/a)>=10?10:n>=5?5:n>=3?3:n>=2?2:n>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(n),a*n),l=s/i;t.style.width=e*l+\"px\",t.innerHTML=s+o;}or.prototype.getDefaultPosition=function(){return \"bottom-left\"},or.prototype._onMove=function(){rr(this._map,this._container,this.options);},or.prototype.onAdd=function(t){return this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},or.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0;},or.prototype.setUnit=function(t){this.options.unit=t,rr(this._map,this._container,this.options);};var nr=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce(\"Full screen control 'container' must be a DOM element.\")),t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in t.window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in t.window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in t.window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in t.window.document&&(this._fullscreenchange=\"MSFullscreenChange\");};nr.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer},nr.prototype.onRemove=function(){i.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon);},nr.prototype._checkFullscreenSupport=function(){return !!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},nr.prototype._setupUI=function(){var e=this._fullscreenButton=i.create(\"button\",\"mapboxgl-ctrl-fullscreen\",this._controlContainer);i.create(\"span\",\"mapboxgl-ctrl-icon\",e).setAttribute(\"aria-hidden\",!0),e.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon);},nr.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",t),this._fullscreenButton.title=t;},nr.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")},nr.prototype._isFullscreen=function(){return this._fullscreen},nr.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle());},nr.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen();};var sr={closeButton:!0,closeOnClick:!0,className:\"\",maxWidth:\"240px\"},lr=function(e){function o(i){e.call(this),this.options=t.extend(Object.create(sr),i),t.bindAll([\"_update\",\"_onClickClose\",\"remove\"],this);}return e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o,o.prototype.addTo=function(e){var i=this;return this._map=e,this.options.closeOnClick&&this._map.on(\"click\",this._onClickClose),this._map.on(\"remove\",this.remove),this._update(),this._trackPointer?(this._map.on(\"mousemove\",(function(t){i._update(t.point);})),this._map.on(\"mouseup\",(function(t){i._update(t.point);})),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new t.Event(\"open\")),this},o.prototype.isOpen=function(){return !!this._map},o.prototype.remove=function(){return this._content&&i.remove(this._content),this._container&&(i.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"click\",this._onClickClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\"),delete this._map),this.fire(new t.Event(\"close\")),this},o.prototype.getLngLat=function(){return this._lngLat},o.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\"),this._container&&this._container.classList.remove(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"mapboxgl-track-pointer\")),this},o.prototype.trackPointer=function(){var t=this;return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",(function(e){t._update(e.point);})),this._map.on(\"drag\",(function(e){t._update(e.point);})),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")),this},o.prototype.getElement=function(){return this._container},o.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},o.prototype.setHTML=function(e){var i,o=t.window.document.createDocumentFragment(),r=t.window.document.createElement(\"body\");for(r.innerHTML=e;i=r.firstChild;)o.appendChild(i);return this.setDOMContent(o)},o.prototype.getMaxWidth=function(){return this._container.style.maxWidth},o.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},o.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},o.prototype.addClassName=function(t){this._container.classList.add(t);},o.prototype.removeClassName=function(t){this._container.classList.remove(t);},o.prototype.toggleClassName=function(t){return this._container.classList.toggle(t)},o.prototype._createContent=function(){this._content&&i.remove(this._content),this._content=i.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=i.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClickClose));},o.prototype._update=function(e){var o=this,r=this._lngLat||this._trackPointer;if(this._map&&r&&this._content&&(this._container||(this._container=i.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=i.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(\" \").forEach((function(t){return o._container.classList.add(t)})),this._trackPointer&&this._container.classList.add(\"mapboxgl-popup-track-pointer\")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Ko(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||e)){var a=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat),n=this.options.anchor,s=function e(i){if(i){if(\"number\"==typeof i){var o=Math.round(Math.sqrt(.5*Math.pow(i,2)));return {center:new t.Point(0,0),top:new t.Point(0,i),\"top-left\":new t.Point(o,o),\"top-right\":new t.Point(-o,o),bottom:new t.Point(0,-i),\"bottom-left\":new t.Point(o,-o),\"bottom-right\":new t.Point(-o,-o),left:new t.Point(i,0),right:new t.Point(-i,0)}}if(i instanceof t.Point||Array.isArray(i)){var r=t.Point.convert(i);return {center:r,top:r,\"top-left\":r,\"top-right\":r,bottom:r,\"bottom-left\":r,\"bottom-right\":r,left:r,right:r}}return {center:t.Point.convert(i.center||[0,0]),top:t.Point.convert(i.top||[0,0]),\"top-left\":t.Point.convert(i[\"top-left\"]||[0,0]),\"top-right\":t.Point.convert(i[\"top-right\"]||[0,0]),bottom:t.Point.convert(i.bottom||[0,0]),\"bottom-left\":t.Point.convert(i[\"bottom-left\"]||[0,0]),\"bottom-right\":t.Point.convert(i[\"bottom-right\"]||[0,0]),left:t.Point.convert(i.left||[0,0]),right:t.Point.convert(i.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!n){var l,c=this._container.offsetWidth,u=this._container.offsetHeight;l=a.y+s.bottom.y<u?[\"top\"]:a.y>this._map.transform.height-u?[\"bottom\"]:[],a.x<c/2?l.push(\"left\"):a.x>this._map.transform.width-c/2&&l.push(\"right\"),n=0===l.length?\"bottom\":l.join(\"-\");}var h=a.add(s[n]).round();i.setTransform(this._container,Yo[n]+\" translate(\"+h.x+\"px,\"+h.y+\"px)\"),Jo(this._container,n,\"popup\");}},o.prototype._onClickClose=function(){this.remove();},o}(t.Evented);var cr={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:Go,NavigationControl:Ho,GeolocateControl:er,AttributionControl:Bo,ScaleControl:or,FullscreenControl:nr,Popup:lr,Marker:$o,Style:Ue,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e;},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e;},get workerCount(){return Rt.workerCount},set workerCount(t){Rt.workerCount=t;},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e;},clearStorage:function(e){t.clearTileCache(e);},workerUrl:\"\"};return cr}));\n\n//\n\nreturn mapboxgl;\n\n})));\n//# sourceMappingURL=mapbox-gl.js.map\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\nexports.blobConstructor = false\ntry {\n\tnew Blob([new ArrayBuffer(1)])\n\texports.blobConstructor = true\n} catch (e) {}\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n// Safari 7.1 appears to have fixed this bug.\nvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'\nvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || (haveArrayBuffer && checkTypeSupport('arraybuffer'))\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer &&\n\tcheckTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nexports.vbArray = isFunction(global.VBArray)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, fetchTimer) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(new Buffer(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tif (result.done) {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(new Buffer(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text:vbarray': // For IE9\n\t\t\tif (xhr.readyState !== rStates.DONE)\n\t\t\t\tbreak\n\t\t\ttry {\n\t\t\t\t// This fails in IE8\n\t\t\t\tresponse = new global.VBArray(xhr.responseBody).toArray()\n\t\t\t} catch (e) {}\n\t\t\tif (response !== null) {\n\t\t\t\tself.push(new Buffer(response))\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Falls through in IE8\t\n\t\tcase 'text':\n\t\t\ttry { // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4\n\t\t\t\tresponse = xhr.responseText\n\t\t\t} catch (e) {\n\t\t\t\tself._mode = 'text:vbarray'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = new Buffer(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tself.push(null)\n\t}\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\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\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\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// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\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\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\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// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport project from '../project/project';\n\nconst vs = `\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition\n) {\n vec3 projectedPosition = project_position(position, position64Low);\n commonPosition = vec4(projectedPosition + offset, 1.0);\n return project_common_position_to_clipspace(commonPosition);\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset\n) {\n vec4 commonPosition;\n return project_position_to_clipspace(position, position64Low, offset, commonPosition);\n}\n`;\n\nexport default {\n name: 'project32',\n dependencies: [project],\n vs\n};\n","// WebGL1/WebGL2 extension polyfill support\n//\n// Provides a function that creates polyfills for WebGL2 functions based\n// on available extensions and installs them on a supplied target (could be\n// the WebGLContext or its prototype, or a separate object).\n//\n// This is intended to be a stand-alone file with minimal dependencies,\n// easy to reuse or repurpose in other projects.\n\n/* eslint-disable camelcase, brace-style */\nimport {assert} from '../utils';\n\nimport {WEBGL2_CONTEXT_POLYFILLS, WEBGL2_CONTEXT_OVERRIDES} from './polyfill-table';\n\n// Registers extensions, polyfills or mock functions for extensions in the polyfills list\n// TODO - remove use of name `luma`.\nexport default function polyfillContext(gl) {\n gl.luma = gl.luma || {};\n initializeExtensions(gl);\n if (!gl.luma.polyfilled) {\n installPolyfills(gl, WEBGL2_CONTEXT_POLYFILLS);\n installOverrides(gl, {target: gl.luma, target2: gl});\n gl.luma.polyfilled = true;\n }\n return gl;\n}\n\n// TODO - is this still required?\n/* global window, global */\nconst global_ = typeof global !== 'undefined' ? global : window;\nglobal_.polyfillContext = polyfillContext;\n\nfunction initializeExtensions(gl) {\n gl.luma.extensions = {};\n // `getSupportedExtensions` can return null when context is lost.\n const EXTENSIONS = gl.getSupportedExtensions() || [];\n for (const extension of EXTENSIONS) {\n gl.luma[extension] = gl.getExtension(extension);\n }\n}\n\n// Install simple overrides (mostly get* functions)\nfunction installOverrides(gl, {target, target2}) {\n Object.keys(WEBGL2_CONTEXT_OVERRIDES).forEach(key => {\n if (typeof WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {\n // install an override, if no implementation was detected\n const originalFunc = gl[key] ? gl[key].bind(gl) : () => {};\n const polyfill = WEBGL2_CONTEXT_OVERRIDES[key].bind(null, gl, originalFunc);\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n });\n}\n\nfunction installPolyfills(gl, polyfills) {\n for (const extension of Object.getOwnPropertyNames(polyfills)) {\n if (extension !== 'overrides') {\n polyfillExtension(gl, {extension, target: gl.luma, target2: gl});\n }\n }\n}\n\n// Polyfills a single WebGL extension into the `target` object\nfunction polyfillExtension(gl, {extension, target, target2}) {\n const defaults = WEBGL2_CONTEXT_POLYFILLS[extension];\n assert(defaults);\n\n const {meta = {}} = defaults;\n const {suffix = ''} = meta;\n\n const ext = gl.getExtension(extension);\n\n for (const key of Object.keys(defaults)) {\n const extKey = `${key}${suffix}`;\n\n let polyfill = null;\n if (key === 'meta') {\n // ignore\n } else if (typeof gl[key] === 'function') {\n // WebGL2 implementation is already\n } else if (ext && typeof ext[extKey] === 'function') {\n // pick extension implemenentation,if available\n polyfill = (...args) => ext[extKey](...args);\n } else if (typeof defaults[key] === 'function') {\n // pick the mock implementation, if no implementation was detected\n polyfill = defaults[key].bind(target);\n }\n\n if (polyfill) {\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n }\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.4',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var log = Math.log;\n\n// `Math.log1p` method implementation\n// https://tc39.github.io/ecma262/#sec-math.log1p\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log(1 + x);\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `Number.isInteger` method implementation\n// https://tc39.github.io/ecma262/#sec-number.isinteger\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `<Transition>` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","/*! decimal.js-light v2.5.0 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.0\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2018 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n var MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n Decimal = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\n P.exponent = function () {\r\n return getBase10Exponent(this);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return this.s === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '1e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n };\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\n function add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\n function exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\n function ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(Decimal);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Internal constant.\r\n ONE = new Decimal(1);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self\r\n ? self : Function('return this')();\r\n }\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.memoize = exports.reverse = exports.compose = exports.map = exports.range = exports.curry = exports.PLACE_HOLDER = void 0;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar identity = function identity(i) {\n return i;\n};\n\nvar PLACE_HOLDER = {\n '@@functional/placeholder': true\n};\nexports.PLACE_HOLDER = PLACE_HOLDER;\n\nvar isPlaceHolder = function isPlaceHolder(val) {\n return val === PLACE_HOLDER;\n};\n\nvar curry0 = function curry0(fn) {\n return function _curried() {\n if (arguments.length === 0 || arguments.length === 1 && isPlaceHolder(arguments.length <= 0 ? undefined : arguments[0])) {\n return _curried;\n }\n\n return fn.apply(void 0, arguments);\n };\n};\n\nvar curryN = function curryN(n, fn) {\n if (n === 1) {\n return fn;\n }\n\n return curry0(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var argsLength = args.filter(function (arg) {\n return arg !== PLACE_HOLDER;\n }).length;\n\n if (argsLength >= n) {\n return fn.apply(void 0, args);\n }\n\n return curryN(n - argsLength, curry0(function () {\n for (var _len2 = arguments.length, restArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n restArgs[_key2] = arguments[_key2];\n }\n\n var newArgs = args.map(function (arg) {\n return isPlaceHolder(arg) ? restArgs.shift() : arg;\n });\n return fn.apply(void 0, _toConsumableArray(newArgs).concat(restArgs));\n }));\n });\n};\n\nvar curry = function curry(fn) {\n return curryN(fn.length, fn);\n};\n\nexports.curry = curry;\n\nvar range = function range(begin, end) {\n var arr = [];\n\n for (var i = begin; i < end; ++i) {\n arr[i - begin] = i;\n }\n\n return arr;\n};\n\nexports.range = range;\nvar map = curry(function (fn, arr) {\n if (Array.isArray(arr)) {\n return arr.map(fn);\n }\n\n return Object.keys(arr).map(function (key) {\n return arr[key];\n }).map(fn);\n});\nexports.map = map;\n\nvar compose = function compose() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\n\nexports.compose = compose;\n\nvar reverse = function reverse(arr) {\n if (Array.isArray(arr)) {\n return arr.reverse();\n } // can be string\n\n\n return arr.split('').reverse.join('');\n};\n\nexports.reverse = reverse;\n\nvar memoize = function memoize(fn) {\n var lastArgs = null;\n var lastResult = null;\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n if (lastArgs && args.every(function (val, i) {\n return val === lastArgs[i];\n })) {\n return lastResult;\n }\n\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n return lastResult;\n };\n};\n\nexports.memoize = memoize;","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n // Only Node.JS has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach([\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',\n 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',\n 'socketPath'\n ], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport {config} from '../../lib/common';\n\nexport default class Matrix extends MathArray {\n // fromObject(object) {\n // const array = object.elements;\n // return this.fromRowMajor(array);\n // }\n\n // toObject(object) {\n // const array = object.elements;\n // this.toRowMajor(array);\n // return object;\n // }\n\n toString() {\n let string = '[';\n if (config.printRowMajor) {\n string += 'row-major:';\n for (let row = 0; row < this.RANK; ++row) {\n for (let col = 0; col < this.RANK; ++col) {\n string += ` ${this[col * this.RANK + row]}`;\n }\n }\n } else {\n string += 'column-major:';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += ` ${this[i]}`;\n }\n }\n string += ']';\n return string;\n }\n\n getElementIndex(row, col) {\n return col * this.RANK + row;\n }\n\n // By default assumes row major indices\n getElement(row, col) {\n return this[col * this.RANK + row];\n }\n\n // By default assumes row major indices\n setElement(row, col, value) {\n this[col * this.RANK + row] = checkNumber(value);\n return this;\n }\n\n getColumn(columnIndex, result = new Array(this.RANK).fill(-0)) {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n result[i] = this[firstIndex + i];\n }\n return result;\n }\n\n setColumn(columnIndex, columnVector) {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n this[firstIndex + i] = columnVector[i];\n }\n return this;\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {checkVector, deprecated} from '../lib/validators';\nimport Matrix from './base/matrix';\n\nimport {vec2_transformMat4AsVector, vec3_transformMat4AsVector} from '../lib/gl-matrix-extras';\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport * as vec4 from 'gl-matrix/vec4';\n\nconst IDENTITY = Object.freeze([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\nconst ZERO = Object.freeze([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n\nconst INDICES = Object.freeze({\n COL0ROW0: 0,\n COL0ROW1: 1,\n COL0ROW2: 2,\n COL0ROW3: 3,\n COL1ROW0: 4,\n COL1ROW1: 5,\n COL1ROW2: 6,\n COL1ROW3: 7,\n COL2ROW0: 8,\n COL2ROW1: 9,\n COL2ROW2: 10,\n COL2ROW3: 11,\n COL3ROW0: 12,\n COL3ROW1: 13,\n COL3ROW2: 14,\n COL3ROW3: 15\n});\n\nconst constants = {};\n\nexport default class Matrix4 extends Matrix {\n static get IDENTITY() {\n constants.IDENTITY = constants.IDENTITY || Object.freeze(new Matrix4(IDENTITY));\n return constants.IDENTITY;\n }\n\n static get ZERO() {\n constants.ZERO = constants.ZERO || Object.freeze(new Matrix4(ZERO));\n return constants.ZERO;\n }\n\n get INDICES() {\n return INDICES;\n }\n\n get ELEMENTS() {\n return 16;\n }\n\n get RANK() {\n return 4;\n }\n\n constructor(array) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0);\n if (arguments.length === 1 && Array.isArray(array)) {\n this.copy(array);\n } else {\n this.identity();\n }\n }\n\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n this[4] = array[4];\n this[5] = array[5];\n this[6] = array[6];\n this[7] = array[7];\n this[8] = array[8];\n this[9] = array[9];\n this[10] = array[10];\n this[11] = array[11];\n this[12] = array[12];\n this[13] = array[13];\n this[14] = array[14];\n this[15] = array[15];\n return this.check();\n }\n\n // eslint-disable-next-line max-params\n set(m00, m10, m20, m30, m01, m11, m21, m31, m02, m12, m22, m32, m03, m13, m23, m33) {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n // accepts row major order, stores as column major\n // eslint-disable-next-line max-params\n setRowMajor(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n toRowMajor(result) {\n result[0] = this[0];\n result[1] = this[4];\n result[2] = this[8];\n result[3] = this[12];\n result[4] = this[1];\n result[5] = this[5];\n result[6] = this[9];\n result[7] = this[13];\n result[8] = this[2];\n result[9] = this[6];\n result[10] = this[10];\n result[11] = this[14];\n result[12] = this[3];\n result[13] = this[7];\n result[14] = this[11];\n result[15] = this[15];\n return result;\n }\n\n // Constructors\n\n identity() {\n return this.copy(IDENTITY);\n }\n\n // Calculates a 4x4 matrix from the given quaternion\n // q quat Quaternion to create matrix from\n fromQuaternion(q) {\n mat4.fromQuat(this, q);\n return this.check();\n }\n\n // Generates a frustum matrix with the given bounds\n // left Number Left bound of the frustum\n // right Number Right bound of the frustum\n // bottom Number Bottom bound of the frustum\n // top Number Top bound of the frustum\n // near Number Near bound of the frustum\n // far Number Far bound of the frustum\n frustum({left, right, bottom, top, near, far}) {\n if (far === Infinity) {\n Matrix4._computeInfinitePerspectiveOffCenter(this, left, right, bottom, top, near);\n } else {\n mat4.frustum(this, left, right, bottom, top, near, far);\n }\n return this.check();\n }\n\n // eslint-disable-next-line max-params\n static _computeInfinitePerspectiveOffCenter(result, left, right, bottom, top, near) {\n const column0Row0 = (2.0 * near) / (right - left);\n const column1Row1 = (2.0 * near) / (top - bottom);\n const column2Row0 = (right + left) / (right - left);\n const column2Row1 = (top + bottom) / (top - bottom);\n const column2Row2 = -1.0;\n const column2Row3 = -1.0;\n const column3Row2 = -2.0 * near;\n\n result[0] = column0Row0;\n result[1] = 0.0;\n result[2] = 0.0;\n result[3] = 0.0;\n result[4] = 0.0;\n result[5] = column1Row1;\n result[6] = 0.0;\n result[7] = 0.0;\n result[8] = column2Row0;\n result[9] = column2Row1;\n result[10] = column2Row2;\n result[11] = column2Row3;\n result[12] = 0.0;\n result[13] = 0.0;\n result[14] = column3Row2;\n result[15] = 0.0;\n return result;\n }\n\n // Generates a look-at matrix with the given eye position, focal point,\n // and up axis\n // eye vec3 Position of the viewer\n // center vec3 Point the viewer is looking at\n // up vec3 vec3 pointing up\n lookAt(eye, center, up) {\n // Signature: lookAt({eye, center = [0, 0, 0], up = [0, 1, 0]}))\n if (arguments.length === 1) {\n ({eye, center, up} = eye);\n }\n\n center = center || [0, 0, 0];\n up = up || [0, 1, 0];\n\n mat4.lookAt(this, eye, center, up);\n return this.check();\n }\n\n // Generates a orthogonal projection matrix with the given bounds\n // from \"traditional\" view space parameters\n // left number Left bound of the frustum\n // right number Right bound of the frustum\n // bottom number Bottom bound of the frustum\n // top number Top bound of the frustum\n // near number Near bound of the frustum\n // far number Far bound of the frustum\n ortho({left, right, bottom, top, near = 0.1, far = 500}) {\n mat4.ortho(this, left, right, bottom, top, near, far);\n return this.check();\n }\n\n // Generates an orthogonal projection matrix with the same parameters\n // as a perspective matrix (plus focalDistance)\n // fovy number Vertical field of view in radians\n // aspect number Aspect ratio. typically viewport width/height\n // focalDistance distance in the view frustum used for extent calculations\n // near number Near bound of the frustum\n // far number Far bound of the frustum\n orthographic({\n fovy = (45 * Math.PI) / 180,\n aspect = 1,\n focalDistance = 1,\n near = 0.1,\n far = 500\n }) {\n if (fovy > Math.PI * 2) {\n throw Error('radians');\n }\n const halfY = fovy / 2;\n const top = focalDistance * Math.tan(halfY); // focus_plane is the distance from the camera\n const right = top * aspect;\n\n return new Matrix4().ortho({\n left: -right,\n right,\n bottom: -top,\n top,\n near,\n far\n });\n }\n\n // Generates a perspective projection matrix with the given bounds\n // fovy number Vertical field of view in radians\n // aspect number Aspect ratio. typically viewport width/height\n // near number Near bound of the frustum\n // far number Far bound of the frustum\n perspective({\n fovy,\n fov = (45 * Math.PI) / 180, // DEPRECATED\n aspect = 1,\n near = 0.1,\n far = 500\n } = {}) {\n fovy = fovy || fov;\n if (fovy > Math.PI * 2) {\n throw Error('radians');\n }\n mat4.perspective(this, fovy, aspect, near, far);\n return this.check();\n }\n\n // Accessors\n\n determinant() {\n return mat4.determinant(this);\n }\n\n // Extracts the non-uniform scale assuming the matrix is an affine transformation.\n // The scales are the \"lengths\" of the column vectors in the upper-left 3x3 matrix.\n getScale(result = [-0, -0, -0]) {\n // explicit is faster than hypot...\n result[0] = Math.sqrt(this[0] * this[0] + this[1] * this[1] + this[2] * this[2]);\n result[1] = Math.sqrt(this[4] * this[4] + this[5] * this[5] + this[6] * this[6]);\n result[2] = Math.sqrt(this[8] * this[8] + this[9] * this[9] + this[10] * this[10]);\n // result[0] = Math.hypot(this[0], this[1], this[2]);\n // result[1] = Math.hypot(this[4], this[5], this[6]);\n // result[2] = Math.hypot(this[8], this[9], this[10]);\n return result;\n }\n\n // Gets the translation portion, assuming the matrix is a affine transformation matrix.\n getTranslation(result = [-0, -0, -0]) {\n result[0] = this[12];\n result[1] = this[13];\n result[2] = this[14];\n return result;\n }\n\n // Gets upper left 3x3 pure rotation matrix (non-scaling), assume affine transformation matrix\n getRotation(\n result = [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0],\n scaleResult = null\n ) {\n const scale = this.getScale(scaleResult || [-0, -0, -0]);\n\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = 0;\n result[4] = this[4] * inverseScale0;\n result[5] = this[5] * inverseScale1;\n result[6] = this[6] * inverseScale2;\n result[7] = 0;\n result[8] = this[8] * inverseScale0;\n result[9] = this[9] * inverseScale1;\n result[10] = this[10] * inverseScale2;\n result[11] = 0;\n result[12] = 0;\n result[13] = 0;\n result[14] = 0;\n result[15] = 1;\n return result;\n }\n\n getRotationMatrix3(result = [-0, -0, -0, -0, -0, -0, -0, -0, -0], scaleResult = null) {\n const scale = this.getScale(scaleResult || [-0, -0, -0]);\n\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = this[4] * inverseScale0;\n result[4] = this[5] * inverseScale1;\n result[5] = this[6] * inverseScale2;\n result[6] = this[8] * inverseScale0;\n result[7] = this[9] * inverseScale1;\n result[8] = this[10] * inverseScale2;\n return result;\n }\n\n // Modifiers\n\n transpose() {\n mat4.transpose(this, this);\n return this.check();\n }\n\n invert() {\n mat4.invert(this, this);\n return this.check();\n }\n\n // Operations\n\n multiplyLeft(a) {\n mat4.multiply(this, a, this);\n return this.check();\n }\n\n multiplyRight(a) {\n mat4.multiply(this, this, a);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the X axis\n rotateX(radians) {\n mat4.rotateX(this, this, radians);\n // mat4.rotate(this, this, radians, [1, 0, 0]);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the Y axis.\n rotateY(radians) {\n mat4.rotateY(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 1, 0]);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the Z axis.\n rotateZ(radians) {\n mat4.rotateZ(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 0, 1]);\n return this.check();\n }\n\n rotateXYZ([rx, ry, rz]) {\n return this.rotateX(rx)\n .rotateY(ry)\n .rotateZ(rz);\n }\n\n rotateAxis(radians, axis) {\n mat4.rotate(this, this, radians, axis);\n return this.check();\n }\n\n scale(factor) {\n if (Array.isArray(factor)) {\n mat4.scale(this, this, factor);\n } else {\n mat4.scale(this, this, [factor, factor, factor]);\n }\n\n return this.check();\n }\n\n translate(vec) {\n mat4.translate(this, this, vec);\n return this.check();\n }\n\n // Transforms\n\n // Transforms any 2, 3 or 4 element vector. 2 and 3 elements are treated as points\n transform(vector, result) {\n if (vector.length === 4) {\n result = vec4.transformMat4(result || [-0, -0, -0, -0], vector, this);\n checkVector(result, 4);\n return result;\n }\n return this.transformAsPoint(vector, result);\n }\n\n // Transforms any 2 or 3 element array as point (w implicitly 1)\n transformAsPoint(vector, result) {\n const {length} = vector;\n switch (length) {\n case 2:\n result = vec2.transformMat4(result || [-0, -0], vector, this);\n break;\n case 3:\n result = vec3.transformMat4(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(result, vector.length);\n return result;\n }\n\n // Transforms any 2 or 3 element array as vector (w implicitly 0)\n transformAsVector(vector, result) {\n switch (vector.length) {\n case 2:\n result = vec2_transformMat4AsVector(result || [-0, -0], vector, this);\n break;\n case 3:\n result = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(result, vector.length);\n return result;\n }\n\n // three.js math API compatibility\n makeRotationX(radians) {\n return this.identity().rotateX(radians);\n }\n\n makeTranslation(x, y, z) {\n return this.identity().translate([x, y, z]);\n }\n\n // DEPRECATED in 3.0\n\n transformPoint(vector, result) {\n deprecated('Matrix4.transformPoint', '3.0');\n return this.transformAsPoint(vector, result);\n }\n\n transformVector(vector, result) {\n deprecated('Matrix4.transformVector', '3.0');\n return this.transformAsPoint(vector, result);\n }\n\n transformDirection(vector, result) {\n deprecated('Matrix4.transformDirection', '3.0');\n return this.transformAsVector(vector, result);\n }\n}\n","const DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([0, 255, 255, 255]);\n\nconst DEFAULT_MODULE_OPTIONS = {\n pickingSelectedColor: null, // Set to a picking color to visually highlight that item\n pickingHighlightColor: DEFAULT_HIGHLIGHT_COLOR, // Color of visual highlight of \"selected\" item\n pickingActive: false, // Set to true when rendering to off-screen \"picking\" buffer\n pickingAttribute: false // Set to true when picking an attribute value instead of object index\n};\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS) {\n const uniforms = {};\n if (opts.pickingSelectedColor !== undefined) {\n if (!opts.pickingSelectedColor) {\n uniforms.picking_uSelectedColorValid = 0;\n } else {\n const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n uniforms.picking_uSelectedColorValid = 1;\n uniforms.picking_uSelectedColor = selectedColor;\n }\n }\n if (opts.pickingHighlightColor) {\n uniforms.picking_uHighlightColor = opts.pickingHighlightColor.map(x => x / 255);\n }\n if (opts.pickingActive !== undefined) {\n uniforms.picking_uActive = Boolean(opts.pickingActive);\n uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n }\n return uniforms;\n}\n\nconst vs = `\\\nuniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n // Use alpha as the validity flag. If pickingColor is [0, 0, 0] fragment is non-pickable\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n // Stores the picking color so that the fragment shader can render it during picking\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n // Do the comparison with selected item color in vertex shader as it should mean fewer compares\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n`;\n\nconst fs = `\\\nuniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\n\n/*\n * Returns highlight color if this item is selected.\n */\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\n\n/*\n * Returns picking color if picking enabled else unmodified argument.\n */\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\n\n/*\n * Returns picking color if picking is enabled if not\n * highlight color if this item is selected, otherwise unmodified argument.\n */\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n`;\n\nexport default {\n name: 'picking',\n vs,\n fs,\n getUniforms\n};\n","import {picking} from '@luma.gl/core';\n\nexport default Object.assign(\n {\n inject: {\n 'vs:DECKGL_FILTER_COLOR': `\n picking_setPickingColor(geometry.pickingColor);\n // for picking depth values\n picking_setPickingAttribute(geometry.position.z);\n `,\n 'fs:DECKGL_FILTER_COLOR': {\n order: 99,\n injection: `\n // use highlight color if this fragment belongs to the selected object.\n color = picking_filterHighlightColor(color);\n\n // use picking color if rendering to picking FBO.\n color = picking_filterPickingColor(color);\n `\n }\n }\n },\n picking\n);\n","import MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport assert from '../../lib/assert';\n\nexport default class Vector extends MathArray {\n // ACCESSORS\n\n get x() {\n return this[0];\n }\n set x(value) {\n return (this[0] = checkNumber(value));\n }\n\n get y() {\n return this[1];\n }\n set y(value) {\n return (this[1] = checkNumber(value));\n }\n\n // NOTE: `length` is a reserved word for Arrays, so we can't use `v.length()`\n // Offer `len` and `magnitude`\n len() {\n return Math.sqrt(this.lengthSquared());\n }\n\n magnitude() {\n return this.len();\n }\n\n lengthSquared() {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n length += this[i] * this[i];\n }\n return length;\n }\n\n magnitudeSquared() {\n return this.lengthSquared();\n }\n\n distance(mathArray) {\n return Math.sqrt(this.distanceSquared(mathArray));\n }\n\n distanceSquared(mathArray) {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const dist = this[i] - mathArray[i];\n length += dist * dist;\n }\n return checkNumber(length);\n }\n\n dot(mathArray) {\n let product = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n product += this[i] * mathArray[i];\n }\n return checkNumber(product);\n }\n\n // MODIFIERS\n\n normalize() {\n const length = this.magnitude();\n if (length !== 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= length;\n }\n }\n return this.check();\n }\n\n // negate() {\n // for (let i = 0; i < this.ELEMENTS; ++i) {\n // this[i] = -this[i];\n // }\n // return this.check();\n // }\n\n // inverse() {\n // for (let i = 0; i < this.ELEMENTS; ++i) {\n // this[i] = 1 / this[i];\n // }\n // return this.check();\n // }\n\n multiply(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= vector[i];\n }\n }\n return this.check();\n }\n\n divide(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= vector[i];\n }\n }\n return this.check();\n }\n\n // THREE.js compatibility\n lengthSq() {\n return this.lengthSquared();\n }\n\n distanceTo(vector) {\n return this.distance(vector);\n }\n\n distanceToSquared(vector) {\n return this.distanceSquared(vector);\n }\n\n getComponent(i) {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n return checkNumber(this[i]);\n }\n\n setComponent(i, value) {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n this[i] = value;\n return this.check();\n }\n\n addVectors(a, b) {\n return this.copy(a).add(b);\n }\n\n subVectors(a, b) {\n return this.copy(a).subtract(b);\n }\n\n multiplyVectors(a, b) {\n return this.copy(a).multiply(b);\n }\n\n addScaledVector(a, b) {\n return this.add(new this.constructor(a).multiplyScalar(b));\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Vector from './base/vector';\nimport {config, isArray} from '../lib/common';\nimport {checkNumber} from '../lib/validators';\n\nimport * as vec3 from 'gl-matrix/vec3';\nimport {vec3_transformMat2, vec3_transformMat4AsVector} from '../lib/gl-matrix-extras';\n\nconst ORIGIN = [0, 0, 0];\n\nexport default class Vector3 extends Vector {\n constructor(x = 0, y = 0, z = 0) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0);\n if (arguments.length === 1 && isArray(x)) {\n this.copy(x);\n } else {\n // this.set(x, y, z);\n if (config.debug) {\n checkNumber(x);\n checkNumber(y);\n checkNumber(z);\n }\n this[0] = x;\n this[1] = y;\n this[2] = z;\n }\n }\n\n set(x, y, z) {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n return this.check();\n }\n\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n return this.check();\n }\n\n fromObject(object) {\n if (config.debug) {\n checkNumber(object.x);\n checkNumber(object.y);\n checkNumber(object.z);\n }\n this[0] = object.x;\n this[1] = object.y;\n this[2] = object.z;\n return this.check();\n }\n\n toObject(object) {\n object.x = this[0];\n object.y = this[1];\n object.z = this[2];\n return object;\n }\n\n // Getters/setters\n /* eslint-disable no-multi-spaces, brace-style, no-return-assign */\n get ELEMENTS() {\n return 3;\n }\n\n // x,y inherited from Vector\n\n get z() {\n return this[2];\n }\n set z(value) {\n return (this[2] = checkNumber(value));\n }\n /* eslint-enable no-multi-spaces, brace-style, no-return-assign */\n\n angle(vector) {\n return vec3.angle(this, vector);\n }\n\n // MODIFIERS\n\n cross(vector) {\n vec3.cross(this, this, vector);\n return this.check();\n }\n\n rotateX({radians, origin = ORIGIN}) {\n vec3.rotateX(this, this, origin, radians);\n return this.check();\n }\n\n rotateY({radians, origin = ORIGIN}) {\n vec3.rotateY(this, this, origin, radians);\n return this.check();\n }\n\n rotateZ({radians, origin = ORIGIN}) {\n vec3.rotateZ(this, this, origin, radians);\n return this.check();\n }\n\n // Transforms\n\n // transforms as point (4th component is implicitly 1)\n transform(matrix4) {\n return this.transformAsPoint(matrix4);\n }\n\n // transforms as point (4th component is implicitly 1)\n transformAsPoint(matrix4) {\n vec3.transformMat4(this, this, matrix4);\n return this.check();\n }\n\n // transforms as vector (4th component is implicitly 0, ignores translation. slightly faster)\n transformAsVector(matrix4) {\n vec3_transformMat4AsVector(this, this, matrix4);\n return this.check();\n }\n\n transformByMatrix3(matrix3) {\n vec3.transformMat3(this, this, matrix3);\n return this.check();\n }\n\n transformByMatrix2(matrix2) {\n vec3_transformMat2(this, this, matrix2);\n return this.check();\n }\n\n transformByQuaternion(quaternion) {\n vec3.transformQuat(this, this, quaternion);\n return this.check();\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.4',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\n\nvar call = Function.call;\n\nmodule.exports = function (CONSTRUCTOR, METHOD, length) {\n return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","require('../../modules/es.string.starts-with');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'startsWith');\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","module.exports = {};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n // @ts-ignore\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n","require('../../modules/es.array.includes');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","require('../../modules/es.string.includes');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'includes');\n","import promiseFinally from './finally';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction isArray(x) {\n return Boolean(x && typeof x.length !== 'undefined');\n}\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array<!Function>} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (var i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n // @ts-ignore\n (typeof setImmediate === 'function' &&\n function(fn) {\n // @ts-ignore\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","import Promise from './index';\nimport promiseFinally from './finally';\n\n/** @suppress {undefinedVars} */\nvar globalNS = (function() {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n})();\n\nif (!('Promise' in globalNS)) {\n globalNS['Promise'] = Promise;\n} else if (!globalNS.Promise.prototype['finally']) {\n globalNS.Promise.prototype['finally'] = promiseFinally;\n}\n","(function(l){function m(){}function k(b,a){b=void 0===b?\"utf-8\":b;a=void 0===a?{fatal:!1}:a;if(-1==n.indexOf(b.toLowerCase()))throw new RangeError(\"Failed to construct 'TextDecoder': The encoding label provided ('\"+b+\"') is invalid.\");if(a.fatal)throw Error(\"Failed to construct 'TextDecoder': the 'fatal' option is unsupported.\");}if(l.TextEncoder&&l.TextDecoder)return!1;var n=[\"utf-8\",\"utf8\",\"unicode-1-1-utf-8\"];Object.defineProperty(m.prototype,\"encoding\",{value:\"utf-8\"});m.prototype.encode=function(b,\na){a=void 0===a?{stream:!1}:a;if(a.stream)throw Error(\"Failed to encode: the 'stream' option is unsupported.\");a=0;for(var g=b.length,f=0,c=Math.max(32,g+(g>>1)+7),e=new Uint8Array(c>>3<<3);a<g;){var d=b.charCodeAt(a++);if(55296<=d&&56319>=d){if(a<g){var h=b.charCodeAt(a);56320===(h&64512)&&(++a,d=((d&1023)<<10)+(h&1023)+65536)}if(55296<=d&&56319>=d)continue}f+4>e.length&&(c+=8,c*=1+a/b.length*2,c=c>>3<<3,h=new Uint8Array(c),h.set(e),e=h);if(0===(d&4294967168))e[f++]=d;else{if(0===(d&4294965248))e[f++]=\nd>>6&31|192;else if(0===(d&4294901760))e[f++]=d>>12&15|224,e[f++]=d>>6&63|128;else if(0===(d&4292870144))e[f++]=d>>18&7|240,e[f++]=d>>12&63|128,e[f++]=d>>6&63|128;else continue;e[f++]=d&63|128}}return e.slice?e.slice(0,f):e.subarray(0,f)};Object.defineProperty(k.prototype,\"encoding\",{value:\"utf-8\"});Object.defineProperty(k.prototype,\"fatal\",{value:!1});Object.defineProperty(k.prototype,\"ignoreBOM\",{value:!1});k.prototype.decode=function(b,a){a=void 0===a?{stream:!1}:a;if(a.stream)throw Error(\"Failed to decode: the 'stream' option is unsupported.\");\nb.buffer instanceof ArrayBuffer&&(b=b.buffer);b=new Uint8Array(b);a=0;for(var g=[],f=[];;){var c=a<b.length;if(!c||a&65536){f.push(String.fromCharCode.apply(null,g));if(!c)return f.join(\"\");g=[];b=b.subarray(a);a=0}c=b[a++];if(0===c)g.push(0);else if(0===(c&128))g.push(c);else if(192===(c&224)){var e=b[a++]&63;g.push((c&31)<<6|e)}else if(224===(c&240)){e=b[a++]&63;var d=b[a++]&63;g.push((c&31)<<12|e<<6|d)}else if(240===(c&248)){e=b[a++]&63;d=b[a++]&63;var h=b[a++]&63;c=(c&7)<<18|e<<12|d<<6|h;65535<\nc&&(c-=65536,g.push(c>>>10&1023|55296),c=56320|c&1023);g.push(c)}}};l.TextEncoder=m;l.TextDecoder=k})(\"undefined\"!==typeof window?window:\"undefined\"!==typeof global?global:this);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ProcessLocking = /** @class */ (function () {\n function ProcessLocking() {\n var _this = this;\n this.locked = new Map();\n this.addToLocked = function (key, toAdd) {\n var callbacks = _this.locked.get(key);\n if (callbacks === undefined) {\n if (toAdd === undefined) {\n _this.locked.set(key, []);\n }\n else {\n _this.locked.set(key, [toAdd]);\n }\n }\n else {\n if (toAdd !== undefined) {\n callbacks.unshift(toAdd);\n _this.locked.set(key, callbacks);\n }\n }\n };\n this.isLocked = function (key) {\n return _this.locked.has(key);\n };\n this.lock = function (key) {\n return new Promise(function (resolve, reject) {\n if (_this.isLocked(key)) {\n _this.addToLocked(key, resolve);\n }\n else {\n _this.addToLocked(key);\n resolve();\n }\n });\n };\n this.unlock = function (key) {\n var callbacks = _this.locked.get(key);\n if (callbacks === undefined || callbacks.length === 0) {\n _this.locked.delete(key);\n return;\n }\n var toCall = callbacks.pop();\n _this.locked.set(key, callbacks);\n if (toCall !== undefined) {\n setTimeout(toCall, 0);\n }\n };\n }\n ProcessLocking.getInstance = function () {\n if (ProcessLocking.instance === undefined) {\n ProcessLocking.instance = new ProcessLocking();\n }\n return ProcessLocking.instance;\n };\n return ProcessLocking;\n}());\nfunction getLock() {\n return ProcessLocking.getInstance();\n}\nexports.default = getLock;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar processLock_1 = require(\"./processLock\");\n/**\n * @author: SuperTokens (https://github.com/supertokens)\n * This library was created as a part of a larger project, SuperTokens(https://supertokens.io) - the best session management solution.\n * You can also check out our other projects on https://github.com/supertokens\n *\n * To contribute to this package visit https://github.com/supertokens/browser-tabs-lock\n * If you face any problems you can file an issue on https://github.com/supertokens/browser-tabs-lock/issues\n *\n * If you have any questions or if you just want to say hi visit https://supertokens.io/discord\n */\n/**\n * @constant\n * @type {string}\n * @default\n * @description All the locks taken by this package will have this as prefix\n*/\nvar LOCK_STORAGE_KEY = 'browser-tabs-lock-key';\n/**\n * @function delay\n * @param {number} milliseconds - How long the delay should be in terms of milliseconds\n * @returns {Promise<void>}\n */\nfunction delay(milliseconds) {\n return new Promise(function (resolve) { return setTimeout(resolve, milliseconds); });\n}\n/**\n * @function generateRandomString\n * @params {number} length - How long the random string should be\n * @returns {string}\n * @description returns random string whose length is equal to the length passed as parameter\n */\nfunction generateRandomString(length) {\n var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';\n var randomstring = '';\n for (var i = 0; i < length; i++) {\n var INDEX = Math.floor(Math.random() * CHARS.length);\n randomstring += CHARS[INDEX];\n }\n return randomstring;\n}\n/**\n * @function getLockId\n * @returns {string}\n * @description Generates an id which will be unique for the browser tab\n */\nfunction getLockId() {\n return Date.now().toString() + generateRandomString(15);\n}\nvar SuperTokensLock = /** @class */ (function () {\n function SuperTokensLock() {\n this.acquiredIatSet = new Set();\n this.id = getLockId();\n this.acquireLock = this.acquireLock.bind(this);\n this.releaseLock = this.releaseLock.bind(this);\n this.releaseLock__private__ = this.releaseLock__private__.bind(this);\n this.waitForSomethingToChange = this.waitForSomethingToChange.bind(this);\n this.refreshLockWhileAcquired = this.refreshLockWhileAcquired.bind(this);\n if (SuperTokensLock.waiters === undefined) {\n SuperTokensLock.waiters = [];\n }\n }\n /**\n * @async\n * @memberOf Lock\n * @function acquireLock\n * @param {string} lockKey - Key for which the lock is being acquired\n * @param {number} [timeout=5000] - Maximum time for which the function will wait to acquire the lock\n * @returns {Promise<boolean>}\n * @description Will return true if lock is being acquired, else false.\n * Also the lock can be acquired for maximum 10 secs\n */\n SuperTokensLock.prototype.acquireLock = function (lockKey, timeout) {\n if (timeout === void 0) { timeout = 5000; }\n return __awaiter(this, void 0, void 0, function () {\n var iat, MAX_TIME, STORAGE_KEY, STORAGE, lockObj, TIMEOUT_KEY, lockObjPostDelay;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n iat = Date.now() + generateRandomString(4);\n MAX_TIME = Date.now() + timeout;\n STORAGE_KEY = LOCK_STORAGE_KEY + \"-\" + lockKey;\n STORAGE = window.localStorage;\n _a.label = 1;\n case 1:\n if (!(Date.now() < MAX_TIME)) return [3 /*break*/, 8];\n return [4 /*yield*/, delay(30)];\n case 2:\n _a.sent();\n lockObj = STORAGE.getItem(STORAGE_KEY);\n if (!(lockObj === null)) return [3 /*break*/, 5];\n TIMEOUT_KEY = this.id + \"-\" + lockKey + \"-\" + iat;\n // there is a problem if setItem happens at the exact same time for 2 different processes.. so we add some random delay here.\n return [4 /*yield*/, delay(Math.floor(Math.random() * 25))];\n case 3:\n // there is a problem if setItem happens at the exact same time for 2 different processes.. so we add some random delay here.\n _a.sent();\n STORAGE.setItem(STORAGE_KEY, JSON.stringify({\n id: this.id,\n iat: iat,\n timeoutKey: TIMEOUT_KEY,\n timeAcquired: Date.now(),\n timeRefreshed: Date.now()\n }));\n return [4 /*yield*/, delay(30)];\n case 4:\n _a.sent(); // this is to prevent race conditions. This time must be more than the time it takes for storage.setItem\n lockObjPostDelay = STORAGE.getItem(STORAGE_KEY);\n if (lockObjPostDelay !== null) {\n lockObjPostDelay = JSON.parse(lockObjPostDelay);\n if (lockObjPostDelay.id === this.id && lockObjPostDelay.iat === iat) {\n this.acquiredIatSet.add(iat);\n this.refreshLockWhileAcquired(STORAGE_KEY, iat);\n return [2 /*return*/, true];\n }\n }\n return [3 /*break*/, 7];\n case 5:\n SuperTokensLock.lockCorrector();\n return [4 /*yield*/, this.waitForSomethingToChange(MAX_TIME)];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7:\n iat = Date.now() + generateRandomString(4);\n return [3 /*break*/, 1];\n case 8: return [2 /*return*/, false];\n }\n });\n });\n };\n SuperTokensLock.prototype.refreshLockWhileAcquired = function (storageKey, iat) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\n var STORAGE, lockObj;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, processLock_1.default().lock(iat)];\n case 1:\n _a.sent();\n if (!this.acquiredIatSet.has(iat)) {\n processLock_1.default().unlock(iat);\n return [2 /*return*/];\n }\n STORAGE = window.localStorage;\n lockObj = STORAGE.getItem(storageKey);\n if (lockObj !== null) {\n lockObj = JSON.parse(lockObj);\n lockObj.timeRefreshed = Date.now();\n STORAGE.setItem(storageKey, JSON.stringify(lockObj));\n processLock_1.default().unlock(iat);\n }\n else {\n processLock_1.default().unlock(iat);\n return [2 /*return*/];\n }\n this.refreshLockWhileAcquired(storageKey, iat);\n return [2 /*return*/];\n }\n });\n }); }, 1000);\n return [2 /*return*/];\n });\n });\n };\n SuperTokensLock.prototype.waitForSomethingToChange = function (MAX_TIME) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new Promise(function (resolve) {\n var resolvedCalled = false;\n var startedAt = Date.now();\n var MIN_TIME_TO_WAIT = 50; // ms\n var removedListeners = false;\n function stopWaiting() {\n if (!removedListeners) {\n window.removeEventListener('storage', stopWaiting);\n SuperTokensLock.removeFromWaiting(stopWaiting);\n clearTimeout(timeOutId);\n removedListeners = true;\n }\n if (!resolvedCalled) {\n resolvedCalled = true;\n var timeToWait = MIN_TIME_TO_WAIT - (Date.now() - startedAt);\n if (timeToWait > 0) {\n setTimeout(resolve, timeToWait);\n }\n else {\n resolve();\n }\n }\n }\n window.addEventListener('storage', stopWaiting);\n SuperTokensLock.addToWaiting(stopWaiting);\n var timeOutId = setTimeout(stopWaiting, Math.max(0, MAX_TIME - Date.now()));\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n SuperTokensLock.addToWaiting = function (func) {\n this.removeFromWaiting(func);\n if (SuperTokensLock.waiters === undefined) {\n return;\n }\n SuperTokensLock.waiters.push(func);\n };\n SuperTokensLock.removeFromWaiting = function (func) {\n if (SuperTokensLock.waiters === undefined) {\n return;\n }\n SuperTokensLock.waiters = SuperTokensLock.waiters.filter(function (i) { return i !== func; });\n };\n SuperTokensLock.notifyWaiters = function () {\n if (SuperTokensLock.waiters === undefined) {\n return;\n }\n var waiters = SuperTokensLock.waiters.slice(); // so that if Lock.waiters is changed it's ok.\n waiters.forEach(function (i) { return i(); });\n };\n /**\n * @function releaseLock\n * @memberOf Lock\n * @param {string} lockKey - Key for which lock is being released\n * @returns {void}\n * @description Release a lock.\n */\n SuperTokensLock.prototype.releaseLock = function (lockKey) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.releaseLock__private__(lockKey)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * @function releaseLock\n * @memberOf Lock\n * @param {string} lockKey - Key for which lock is being released\n * @returns {void}\n * @description Release a lock.\n */\n SuperTokensLock.prototype.releaseLock__private__ = function (lockKey) {\n return __awaiter(this, void 0, void 0, function () {\n var STORAGE, STORAGE_KEY, lockObj;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n STORAGE = window.localStorage;\n STORAGE_KEY = LOCK_STORAGE_KEY + \"-\" + lockKey;\n lockObj = STORAGE.getItem(STORAGE_KEY);\n if (lockObj === null) {\n return [2 /*return*/];\n }\n lockObj = JSON.parse(lockObj);\n if (!(lockObj.id === this.id)) return [3 /*break*/, 2];\n return [4 /*yield*/, processLock_1.default().lock(lockObj.iat)];\n case 1:\n _a.sent();\n this.acquiredIatSet.delete(lockObj.iat);\n STORAGE.removeItem(STORAGE_KEY);\n processLock_1.default().unlock(lockObj.iat);\n SuperTokensLock.notifyWaiters();\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @function lockCorrector\n * @returns {void}\n * @description If a lock is acquired by a tab and the tab is closed before the lock is\n * released, this function will release those locks\n */\n SuperTokensLock.lockCorrector = function () {\n var MIN_ALLOWED_TIME = Date.now() - 5000;\n var STORAGE = window.localStorage;\n var KEYS = Object.keys(STORAGE);\n var notifyWaiters = false;\n for (var i = 0; i < KEYS.length; i++) {\n var LOCK_KEY = KEYS[i];\n if (LOCK_KEY.includes(LOCK_STORAGE_KEY)) {\n var lockObj = STORAGE.getItem(LOCK_KEY);\n if (lockObj !== null) {\n lockObj = JSON.parse(lockObj);\n if ((lockObj.timeRefreshed === undefined && lockObj.timeAcquired < MIN_ALLOWED_TIME) ||\n (lockObj.timeRefreshed !== undefined && lockObj.timeRefreshed < MIN_ALLOWED_TIME)) {\n STORAGE.removeItem(LOCK_KEY);\n notifyWaiters = true;\n }\n }\n }\n }\n if (notifyWaiters) {\n SuperTokensLock.notifyWaiters();\n }\n };\n SuperTokensLock.waiters = undefined;\n return SuperTokensLock;\n}());\nexports.default = SuperTokensLock;\n","export default function(url, options) {\n\toptions = options || {};\n\treturn new Promise( (resolve, reject) => {\n\t\tconst request = new XMLHttpRequest();\n\t\tconst keys = [];\n\t\tconst all = [];\n\t\tconst headers = {};\n\n\t\tconst response = () => ({\n\t\t\tok: (request.status/100|0) == 2,\t\t// 200-299\n\t\t\tstatusText: request.statusText,\n\t\t\tstatus: request.status,\n\t\t\turl: request.responseURL,\n\t\t\ttext: () => Promise.resolve(request.responseText),\n\t\t\tjson: () => Promise.resolve(JSON.parse(request.responseText)),\n\t\t\tblob: () => Promise.resolve(new Blob([request.response])),\n\t\t\tclone: response,\n\t\t\theaders: {\n\t\t\t\tkeys: () => keys,\n\t\t\t\tentries: () => all,\n\t\t\t\tget: n => headers[n.toLowerCase()],\n\t\t\t\thas: n => n.toLowerCase() in headers\n\t\t\t}\n\t\t});\n\n\t\trequest.open(options.method || 'get', url, true);\n\n\t\trequest.onload = () => {\n\t\t\trequest.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, (m, key, value) => {\n\t\t\t\tkeys.push(key = key.toLowerCase());\n\t\t\t\tall.push([key, value]);\n\t\t\t\theaders[key] = headers[key] ? `${headers[key]},${value}` : value;\n\t\t\t});\n\t\t\tresolve(response());\n\t\t};\n\n\t\trequest.onerror = reject;\n\n\t\trequest.withCredentials = options.credentials=='include';\n\n\t\tfor (const i in options.headers) {\n\t\t\trequest.setRequestHeader(i, options.headers[i]);\n\t\t}\n\n\t\trequest.send(options.body || null);\n\t});\n}\n","/**\n * @ignore\n */\nexport const DEFAULT_AUTHORIZE_TIMEOUT_IN_SECONDS = 60;\n\n/**\n * @ignore\n */\nexport const CLEANUP_IFRAME_TIMEOUT_IN_SECONDS = 2;\n\n/**\n * @ignore\n */\nexport const DEFAULT_POPUP_CONFIG_OPTIONS: PopupConfigOptions = {};\n","import fetch from 'unfetch';\n\nimport {\n DEFAULT_AUTHORIZE_TIMEOUT_IN_SECONDS,\n CLEANUP_IFRAME_TIMEOUT_IN_SECONDS\n} from './constants';\n\nconst dedupe = arr => arr.filter((x, i) => arr.indexOf(x) === i);\n\nconst TIMEOUT_ERROR = { error: 'timeout', error_description: 'Timeout' };\nexport const getUniqueScopes = (...scopes: string[]) => {\n const scopeString = scopes.filter(Boolean).join();\n return dedupe(scopeString.replace(/\\s/g, ',').split(','))\n .join(' ')\n .trim();\n};\n\nexport const parseQueryResult = (queryString: string) => {\n if (queryString.indexOf('#') > -1) {\n queryString = queryString.substr(0, queryString.indexOf('#'));\n }\n\n let queryParams = queryString.split('&');\n\n let parsedQuery: any = {};\n queryParams.forEach(qp => {\n let [key, val] = qp.split('=');\n parsedQuery[key] = decodeURIComponent(val);\n });\n\n return <AuthenticationResult>{\n ...parsedQuery,\n expires_in: parseInt(parsedQuery.expires_in)\n };\n};\n\nexport const runIframe = (\n authorizeUrl: string,\n eventOrigin: string,\n timeoutInSeconds: number = DEFAULT_AUTHORIZE_TIMEOUT_IN_SECONDS\n) => {\n return new Promise<AuthenticationResult>((res, rej) => {\n var iframe = window.document.createElement('iframe');\n iframe.setAttribute('width', '0');\n iframe.setAttribute('height', '0');\n iframe.style.display = 'none';\n\n const timeoutSetTimeoutId = setTimeout(() => {\n rej(TIMEOUT_ERROR);\n window.document.body.removeChild(iframe);\n }, timeoutInSeconds * 1000);\n\n const iframeEventHandler = function(e: MessageEvent) {\n if (e.origin != eventOrigin) return;\n if (!e.data || e.data.type !== 'authorization_response') return;\n (<any>e.source).close();\n e.data.response.error ? rej(e.data.response) : res(e.data.response);\n clearTimeout(timeoutSetTimeoutId);\n window.removeEventListener('message', iframeEventHandler, false);\n // Delay the removal of the iframe to prevent hanging loading status\n // in Chrome: https://github.com/auth0/auth0-spa-js/issues/240\n setTimeout(\n () => window.document.body.removeChild(iframe),\n CLEANUP_IFRAME_TIMEOUT_IN_SECONDS * 1000\n );\n };\n window.addEventListener('message', iframeEventHandler, false);\n window.document.body.appendChild(iframe);\n iframe.setAttribute('src', authorizeUrl);\n });\n};\n\nconst openPopup = url => {\n const width = 400;\n const height = 600;\n const left = window.screenX + (window.innerWidth - width) / 2;\n const top = window.screenY + (window.innerHeight - height) / 2;\n\n return window.open(\n url,\n 'auth0:authorize:popup',\n `left=${left},top=${top},width=${width},height=${height},resizable,scrollbars=yes,status=1`\n );\n};\n\nexport const runPopup = (authorizeUrl: string, config: PopupConfigOptions) => {\n let popup = config.popup;\n\n if (popup) {\n popup.location.href = authorizeUrl;\n } else {\n popup = openPopup(authorizeUrl);\n }\n\n if (!popup) {\n throw new Error('Could not open popup');\n }\n\n return new Promise<AuthenticationResult>((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject({ ...TIMEOUT_ERROR, popup });\n }, (config.timeoutInSeconds || DEFAULT_AUTHORIZE_TIMEOUT_IN_SECONDS) * 1000);\n window.addEventListener('message', e => {\n if (!e.data || e.data.type !== 'authorization_response') {\n return;\n }\n clearTimeout(timeoutId);\n popup.close();\n if (e.data.response.error) {\n return reject(e.data.response);\n }\n resolve(e.data.response);\n });\n });\n};\n\nexport const createRandomString = () => {\n const charset =\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_~.';\n let random = '';\n const randomValues = Array.from(\n getCrypto().getRandomValues(new Uint8Array(43))\n );\n randomValues.forEach(v => (random += charset[v % charset.length]));\n return random;\n};\n\nexport const encodeState = (state: string) => btoa(state);\nexport const decodeState = (state: string) => atob(state);\n\nexport const createQueryParams = (params: any) => {\n return Object.keys(params)\n .filter(k => typeof params[k] !== 'undefined')\n .map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))\n .join('&');\n};\n\nexport const sha256 = async (s: string) => {\n const digestOp = getCryptoSubtle().digest(\n { name: 'SHA-256' },\n new TextEncoder().encode(s)\n );\n\n // msCrypto (IE11) uses the old spec, which is not Promise based\n // https://msdn.microsoft.com/en-us/expression/dn904640(v=vs.71)\n // Instead of returning a promise, it returns a CryptoOperation\n // with a result property in it.\n // As a result, the various events need to be handled in the event that we're\n // working in IE11 (hence the msCrypto check). These events just call resolve\n // or reject depending on their intention.\n if ((<any>window).msCrypto) {\n return new Promise((res, rej) => {\n digestOp.oncomplete = e => {\n res(e.target.result);\n };\n\n digestOp.onerror = (e: ErrorEvent) => {\n rej(e.error);\n };\n\n digestOp.onabort = () => {\n rej('The digest operation was aborted');\n };\n });\n }\n\n return await digestOp;\n};\n\nconst urlEncodeB64 = (input: string) => {\n const b64Chars = { '+': '-', '/': '_', '=': '' };\n return input.replace(/[\\+\\/=]/g, (m: string) => b64Chars[m]);\n};\n\n// https://stackoverflow.com/questions/30106476/\nconst decodeB64 = input =>\n decodeURIComponent(\n atob(input)\n .split('')\n .map(c => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join('')\n );\n\nexport const urlDecodeB64 = (input: string) =>\n decodeB64(input.replace(/_/g, '/').replace(/-/g, '+'));\n\nexport const bufferToBase64UrlEncoded = input => {\n const ie11SafeInput = new Uint8Array(input);\n return urlEncodeB64(\n window.btoa(String.fromCharCode(...Array.from(ie11SafeInput)))\n );\n};\n\nconst getJSON = async (url, options) => {\n const response = await fetch(url, options);\n const { error, error_description, ...success } = await response.json();\n if (!response.ok) {\n const errorMessage =\n error_description || `HTTP error. Unable to fetch ${url}`;\n const e = <any>new Error(errorMessage);\n e.error = error || 'request_error';\n e.error_description = errorMessage;\n throw e;\n }\n return success;\n};\n\nexport const oauthToken = async ({ baseUrl, ...options }: OAuthTokenOptions) =>\n await getJSON(`${baseUrl}/oauth/token`, {\n method: 'POST',\n body: JSON.stringify({\n grant_type: 'authorization_code',\n redirect_uri: window.location.origin,\n ...options\n }),\n headers: {\n 'Content-type': 'application/json'\n }\n });\n\nexport const getCrypto = () => {\n //ie 11.x uses msCrypto\n return <Crypto>(window.crypto || (<any>window).msCrypto);\n};\n\nexport const getCryptoSubtle = () => {\n const crypto = getCrypto();\n //safari 10.x uses webkitSubtle\n return crypto.subtle || (<any>crypto).webkitSubtle;\n};\n\nexport const validateCrypto = () => {\n if (!getCrypto()) {\n throw new Error(\n 'For security reasons, `window.crypto` is required to run `auth0-spa-js`.'\n );\n }\n if (typeof getCryptoSubtle() === 'undefined') {\n throw new Error(`\n auth0-spa-js must run on a secure origin.\n See https://github.com/auth0/auth0-spa-js/blob/master/FAQ.md#why-do-i-get-auth0-spa-js-must-run-on-a-secure-origin \n for more information.\n `);\n }\n};\n","interface CacheKeyData {\n audience: string;\n scope: string;\n}\n\ninterface DecodedToken {\n claims: IdToken;\n user: any;\n}\n\ninterface CacheEntry extends CacheKeyData {\n id_token: string;\n access_token: string;\n expires_in: number;\n decodedToken: DecodedToken;\n}\n\ninterface CachedTokens {\n [key: string]: CacheEntry;\n}\n\nconst createKey = (e: CacheKeyData) => `${e.audience}::${e.scope}`;\n\nconst getExpirationTimeoutInMilliseconds = (expiresIn: number, exp: number) => {\n const expTime =\n (new Date(exp * 1000).getTime() - new Date().getTime()) / 1000;\n return Math.min(expiresIn, expTime) * 1000 * 0.8;\n};\n\nexport default class Cache {\n cache: CachedTokens = {};\n public save(entry: CacheEntry) {\n const key = createKey(entry);\n this.cache[key] = entry;\n const timeout = getExpirationTimeoutInMilliseconds(\n entry.expires_in,\n entry.decodedToken.claims.exp\n );\n setTimeout(() => {\n delete this.cache[key];\n }, timeout);\n }\n public get(key: CacheKeyData) {\n return this.cache[createKey(key)];\n }\n}\n","\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nexports.__esModule = true;\r\nfunction stringifyAttribute(name, value) {\r\n if (!value) {\r\n return '';\r\n }\r\n var stringified = '; ' + name;\r\n if (value === true) {\r\n return stringified; // boolean attributes shouldn't have a value\r\n }\r\n return stringified + '=' + value;\r\n}\r\nfunction stringifyAttributes(attributes) {\r\n if (typeof attributes.expires === 'number') {\r\n var expires = new Date();\r\n expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\r\n attributes.expires = expires;\r\n }\r\n return stringifyAttribute('Expires', attributes.expires ? attributes.expires.toUTCString() : '')\r\n + stringifyAttribute('Domain', attributes.domain)\r\n + stringifyAttribute('Path', attributes.path)\r\n + stringifyAttribute('Secure', attributes.secure)\r\n + stringifyAttribute('SameSite', attributes.sameSite);\r\n}\r\nfunction encode(name, value, attributes) {\r\n return encodeURIComponent(name)\r\n .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent) // allowed special characters\r\n .replace(/\\(/g, '%28').replace(/\\)/g, '%29') // replace opening and closing parens\r\n + '=' + encodeURIComponent(value)\r\n // allowed special characters\r\n .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent)\r\n + stringifyAttributes(attributes);\r\n}\r\nexports.encode = encode;\r\nfunction parse(cookieString) {\r\n var result = {};\r\n var cookies = cookieString ? cookieString.split('; ') : [];\r\n var rdecode = /(%[\\dA-F]{2})+/gi;\r\n for (var i = 0; i < cookies.length; i++) {\r\n var parts = cookies[i].split('=');\r\n var cookie = parts.slice(1).join('=');\r\n if (cookie.charAt(0) === '\"') {\r\n cookie = cookie.slice(1, -1);\r\n }\r\n try {\r\n var name_1 = parts[0].replace(rdecode, decodeURIComponent);\r\n result[name_1] = cookie.replace(rdecode, decodeURIComponent);\r\n }\r\n catch (e) {\r\n // ignore cookies with invalid name/value encoding\r\n }\r\n }\r\n return result;\r\n}\r\nexports.parse = parse;\r\nfunction getAll() {\r\n return parse(document.cookie);\r\n}\r\nexports.getAll = getAll;\r\nfunction get(name) {\r\n return getAll()[name];\r\n}\r\nexports.get = get;\r\nfunction set(name, value, attributes) {\r\n document.cookie = encode(name, value, __assign({ path: '/' }, attributes));\r\n}\r\nexports.set = set;\r\nfunction remove(name, attributes) {\r\n set(name, '', __assign(__assign({}, attributes), { expires: -1 }));\r\n}\r\nexports.remove = remove;\r\n","import * as Cookies from 'es-cookie';\n\ninterface ClientStorageOptions {\n daysUntilExpire: number;\n}\n\nexport const getAllKeys = () => Object.keys(Cookies.getAll() || {});\n\nexport const get = <T extends Object>(key: string) => {\n const value = Cookies.get(key);\n if (typeof value === 'undefined') {\n return;\n }\n return <T>JSON.parse(value);\n};\nexport const save = (\n key: string,\n value: any,\n options: ClientStorageOptions\n) => {\n Cookies.set(key, JSON.stringify(value), {\n expires: options.daysUntilExpire\n });\n};\nexport const remove = (key: string) => {\n Cookies.remove(key);\n};\n","import * as ClientStorage from './storage';\n\nconst COOKIE_KEY = 'a0.spajs.txs.';\nconst getTransactionKey = (state: string) => `${COOKIE_KEY}${state}`;\n\ninterface Transaction {\n nonce: string;\n scope: string;\n audience: string;\n appState?: any;\n code_verifier: string;\n redirect_uri: string;\n}\ninterface Transactions {\n [key: string]: Transaction;\n}\nexport default class TransactionManager {\n private transactions: Transactions;\n constructor() {\n this.transactions = {};\n ClientStorage.getAllKeys()\n .filter(k => k.startsWith(COOKIE_KEY))\n .forEach(k => {\n const state = k.replace(COOKIE_KEY, '');\n this.transactions[state] = ClientStorage.get<Transaction>(k);\n });\n }\n public create(state: string, transaction: Transaction) {\n this.transactions[state] = transaction;\n ClientStorage.save(getTransactionKey(state), transaction, {\n daysUntilExpire: 1\n });\n }\n public get(state: string): Transaction {\n return this.transactions[state];\n }\n public remove(state: string) {\n delete this.transactions[state];\n ClientStorage.remove(getTransactionKey(state));\n }\n}\n","import { urlDecodeB64 } from './utils';\n\nconst isNumber = n => typeof n === 'number';\n\nconst idTokendecoded = [\n 'iss',\n 'aud',\n 'exp',\n 'nbf',\n 'iat',\n 'jti',\n 'azp',\n 'nonce',\n 'auth_time',\n 'at_hash',\n 'c_hash',\n 'acr',\n 'amr',\n 'sub_jwk',\n 'cnf',\n 'sip_from_tag',\n 'sip_date',\n 'sip_callid',\n 'sip_cseq_num',\n 'sip_via_branch',\n 'orig',\n 'dest',\n 'mky',\n 'events',\n 'toe',\n 'txn',\n 'rph',\n 'sid',\n 'vot',\n 'vtm'\n];\n\nexport const decode = (token: string) => {\n const parts = token.split('.');\n const [header, payload, signature] = parts;\n\n if (parts.length !== 3 || !header || !payload || !signature) {\n throw new Error('ID token could not be decoded');\n }\n const payloadJSON = JSON.parse(urlDecodeB64(payload));\n const claims: IdToken = { __raw: token };\n const user: any = {};\n Object.keys(payloadJSON).forEach(k => {\n claims[k] = payloadJSON[k];\n if (!idTokendecoded.includes(k)) {\n user[k] = payloadJSON[k];\n }\n });\n return {\n encoded: { header, payload, signature },\n header: JSON.parse(urlDecodeB64(header)),\n claims,\n user\n };\n};\n\nexport const verify = (options: JWTVerifyOptions) => {\n if (!options.id_token) {\n throw new Error('ID token is required but missing');\n }\n\n const decoded = decode(options.id_token);\n\n if (!decoded.claims.iss) {\n throw new Error(\n 'Issuer (iss) claim must be a string present in the ID token'\n );\n }\n\n if (decoded.claims.iss !== options.iss) {\n throw new Error(\n `Issuer (iss) claim mismatch in the ID token; expected \"${options.iss}\", found \"${decoded.claims.iss}\"`\n );\n }\n\n if (!decoded.user.sub) {\n throw new Error(\n 'Subject (sub) claim must be a string present in the ID token'\n );\n }\n\n if (decoded.header.alg !== 'RS256') {\n throw new Error(\n `Signature algorithm of \"${decoded.header.alg}\" is not supported. Expected the ID token to be signed with \"RS256\".`\n );\n }\n\n if (\n !decoded.claims.aud ||\n !(\n typeof decoded.claims.aud === 'string' ||\n Array.isArray(decoded.claims.aud)\n )\n ) {\n throw new Error(\n 'Audience (aud) claim must be a string or array of strings present in the ID token'\n );\n }\n if (Array.isArray(decoded.claims.aud)) {\n if (!decoded.claims.aud.includes(options.aud)) {\n throw new Error(\n `Audience (aud) claim mismatch in the ID token; expected \"${\n options.aud\n }\" but was not one of \"${decoded.claims.aud.join(', ')}\"`\n );\n }\n if (decoded.claims.aud.length > 1) {\n if (!decoded.claims.azp) {\n throw new Error(\n 'Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values'\n );\n }\n if (decoded.claims.azp !== options.aud) {\n throw new Error(\n `Authorized Party (azp) claim mismatch in the ID token; expected \"${options.aud}\", found \"${decoded.claims.azp}\"`\n );\n }\n }\n } else if (decoded.claims.aud !== options.aud) {\n throw new Error(\n `Audience (aud) claim mismatch in the ID token; expected \"${options.aud}\" but found \"${decoded.claims.aud}\"`\n );\n }\n if (options.nonce) {\n if (!decoded.claims.nonce) {\n throw new Error(\n 'Nonce (nonce) claim must be a string present in the ID token'\n );\n }\n if (decoded.claims.nonce !== options.nonce) {\n throw new Error(\n `Nonce (nonce) claim mismatch in the ID token; expected \"${options.nonce}\", found \"${decoded.claims.nonce}\"`\n );\n }\n }\n\n if (options.max_age && !isNumber(decoded.claims.auth_time)) {\n throw new Error(\n 'Authentication Time (auth_time) claim must be a number present in the ID token when Max Age (max_age) is specified'\n );\n }\n\n /* istanbul ignore next */\n if (!isNumber(decoded.claims.exp)) {\n throw new Error(\n 'Expiration Time (exp) claim must be a number present in the ID token'\n );\n }\n if (!isNumber(decoded.claims.iat)) {\n throw new Error(\n 'Issued At (iat) claim must be a number present in the ID token'\n );\n }\n\n const leeway = options.leeway || 60;\n const now = new Date();\n const expDate = new Date(0);\n const nbfDate = new Date(0);\n const authTimeDate = new Date(0);\n authTimeDate.setUTCSeconds(\n (parseInt(decoded.claims.auth_time) + options.max_age) / 1000 + leeway\n );\n expDate.setUTCSeconds(decoded.claims.exp + leeway);\n nbfDate.setUTCSeconds(decoded.claims.nbf - leeway);\n\n if (now > expDate) {\n throw new Error(\n `Expiration Time (exp) claim error in the ID token; current time (${now}) is after expiration time (${expDate})`\n );\n }\n if (isNumber(decoded.claims.nbf) && now < nbfDate) {\n throw new Error(\n `Not Before time (nbf) claim in the ID token indicates that this token can't be used just yet. Currrent time (${now}) is before ${nbfDate}`\n );\n }\n if (isNumber(decoded.claims.auth_time) && now > authTimeDate) {\n throw new Error(\n `Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Currrent time (${now}) is after last auth at ${authTimeDate}`\n );\n }\n return decoded;\n};\n","export class AuthenticationError extends Error {\n constructor(\n public error: string,\n public error_description: string,\n public state: string,\n public appState: any = null\n ) {\n super(error_description);\n //https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, AuthenticationError.prototype);\n }\n}\n","import Lock from 'browser-tabs-lock';\n\nimport {\n getUniqueScopes,\n createQueryParams,\n runPopup,\n parseQueryResult,\n encodeState,\n createRandomString,\n runIframe,\n sha256,\n bufferToBase64UrlEncoded,\n oauthToken\n} from './utils';\n\nimport Cache from './cache';\nimport TransactionManager from './transaction-manager';\nimport { verify as verifyIdToken } from './jwt';\nimport { AuthenticationError } from './errors';\nimport * as ClientStorage from './storage';\nimport { DEFAULT_POPUP_CONFIG_OPTIONS } from './constants';\nimport version from './version';\n\nconst lock = new Lock();\nconst GET_TOKEN_SILENTLY_LOCK_KEY = 'auth0.lock.getTokenSilently';\n\n/**\n * Auth0 SDK for Single Page Applications using [Authorization Code Grant Flow with PKCE](https://auth0.com/docs/api-auth/tutorials/authorization-code-grant-pkce).\n */\nexport default class Auth0Client {\n private cache: Cache;\n private transactionManager: TransactionManager;\n private domainUrl: string;\n private tokenIssuer: string;\n private readonly DEFAULT_SCOPE = 'openid profile email';\n\n constructor(private options: Auth0ClientOptions) {\n this.cache = new Cache();\n this.transactionManager = new TransactionManager();\n this.domainUrl = `https://${this.options.domain}`;\n this.tokenIssuer = this.options.issuer\n ? `https://${this.options.issuer}/`\n : `${this.domainUrl}/`;\n }\n private _url(path) {\n const telemetry = encodeURIComponent(\n btoa(\n JSON.stringify({\n name: 'auth0-spa-js',\n version: version\n })\n )\n );\n return `${this.domainUrl}${path}&auth0Client=${telemetry}`;\n }\n private _getParams(\n authorizeOptions: BaseLoginOptions,\n state: string,\n nonce: string,\n code_challenge: string,\n redirect_uri: string\n ): AuthorizeOptions {\n const { domain, leeway, ...withoutDomain } = this.options;\n return {\n ...withoutDomain,\n ...authorizeOptions,\n scope: getUniqueScopes(\n this.DEFAULT_SCOPE,\n this.options.scope,\n authorizeOptions.scope\n ),\n response_type: 'code',\n response_mode: 'query',\n state,\n nonce,\n redirect_uri: redirect_uri || this.options.redirect_uri,\n code_challenge,\n code_challenge_method: 'S256'\n };\n }\n private _authorizeUrl(authorizeOptions: AuthorizeOptions) {\n return this._url(`/authorize?${createQueryParams(authorizeOptions)}`);\n }\n private _verifyIdToken(id_token: string, nonce?: string) {\n return verifyIdToken({\n iss: this.tokenIssuer,\n aud: this.options.client_id,\n id_token,\n nonce,\n leeway: this.options.leeway,\n max_age: this._parseNumber(this.options.max_age)\n });\n }\n private _parseNumber(value: any): number {\n if (typeof value !== 'string') {\n return value;\n }\n return parseInt(value, 10) || undefined;\n }\n\n /**\n * ```js\n * await auth0.buildAuthorizeUrl(options);\n * ```\n *\n * Builds an `/authorize` URL for loginWithRedirect using the parameters\n * provided as arguments. Random and secure `state` and `nonce`\n * parameters will be auto-generated.\n *\n * @param options\n */\n\n public async buildAuthorizeUrl(\n options: RedirectLoginOptions = {}\n ): Promise<string> {\n const { redirect_uri, appState, ...authorizeOptions } = options;\n const stateIn = encodeState(createRandomString());\n const nonceIn = createRandomString();\n const code_verifier = createRandomString();\n const code_challengeBuffer = await sha256(code_verifier);\n const code_challenge = bufferToBase64UrlEncoded(code_challengeBuffer);\n const fragment = options.fragment ? `#${options.fragment}` : '';\n const params = this._getParams(\n authorizeOptions,\n stateIn,\n nonceIn,\n code_challenge,\n redirect_uri\n );\n const url = this._authorizeUrl(params);\n this.transactionManager.create(stateIn, {\n nonce: nonceIn,\n code_verifier,\n appState,\n scope: params.scope,\n audience: params.audience || 'default',\n redirect_uri: params.redirect_uri\n });\n return url + fragment;\n }\n\n /**\n * ```js\n * await auth0.loginWithPopup(options);\n * ```\n *\n * Opens a popup with the `/authorize` URL using the parameters\n * provided as arguments. Random and secure `state` and `nonce`\n * parameters will be auto-generated. If the response is successful,\n * results will be valid according to their expiration times.\n *\n * IMPORTANT: This method has to be called from an event handler\n * that was started by the user like a button click, for example,\n * otherwise the popup will be blocked in most browsers.\n *\n * @param options\n */\n public async loginWithPopup(\n options: PopupLoginOptions = {},\n config: PopupConfigOptions = DEFAULT_POPUP_CONFIG_OPTIONS\n ) {\n const { ...authorizeOptions } = options;\n const stateIn = encodeState(createRandomString());\n const nonceIn = createRandomString();\n const code_verifier = createRandomString();\n const code_challengeBuffer = await sha256(code_verifier);\n const code_challenge = bufferToBase64UrlEncoded(code_challengeBuffer);\n const params = this._getParams(\n authorizeOptions,\n stateIn,\n nonceIn,\n code_challenge,\n this.options.redirect_uri || window.location.origin\n );\n const url = this._authorizeUrl({\n ...params,\n response_mode: 'web_message'\n });\n const codeResult = await runPopup(url, {\n ...config,\n timeoutInSeconds:\n config.timeoutInSeconds || this.options.authorizeTimeoutInSeconds\n });\n if (stateIn !== codeResult.state) {\n throw new Error('Invalid state');\n }\n const authResult = await oauthToken({\n baseUrl: this.domainUrl,\n audience: options.audience || this.options.audience,\n client_id: this.options.client_id,\n code_verifier,\n code: codeResult.code,\n redirect_uri: params.redirect_uri\n });\n const decodedToken = this._verifyIdToken(authResult.id_token, nonceIn);\n const cacheEntry = {\n ...authResult,\n decodedToken,\n scope: params.scope,\n audience: params.audience || 'default'\n };\n this.cache.save(cacheEntry);\n ClientStorage.save('auth0.is.authenticated', true, { daysUntilExpire: 1 });\n }\n\n /**\n * ```js\n * const user = await auth0.getUser();\n * ```\n *\n * Returns the user information if available (decoded\n * from the `id_token`).\n *\n * @param options\n */\n public async getUser(\n options: GetUserOptions = {\n audience: this.options.audience || 'default',\n scope: this.options.scope || this.DEFAULT_SCOPE\n }\n ) {\n options.scope = getUniqueScopes(this.DEFAULT_SCOPE, options.scope);\n const cache = this.cache.get(options);\n return cache && cache.decodedToken.user;\n }\n\n /**\n * ```js\n * const claims = await auth0.getIdTokenClaims();\n * ```\n *\n * Returns all claims from the id_token if available.\n *\n * @param options\n */\n public async getIdTokenClaims(\n options: getIdTokenClaimsOptions = {\n audience: this.options.audience || 'default',\n scope: this.options.scope || this.DEFAULT_SCOPE\n }\n ) {\n options.scope = getUniqueScopes(this.DEFAULT_SCOPE, options.scope);\n const cache = this.cache.get(options);\n return cache && cache.decodedToken.claims;\n }\n\n /**\n * ```js\n * await auth0.loginWithRedirect(options);\n * ```\n *\n * Performs a redirect to `/authorize` using the parameters\n * provided as arguments. Random and secure `state` and `nonce`\n * parameters will be auto-generated.\n *\n * @param options\n */\n public async loginWithRedirect(options: RedirectLoginOptions = {}) {\n const url = await this.buildAuthorizeUrl(options);\n window.location.assign(url);\n }\n\n /**\n * After the browser redirects back to the callback page,\n * call `handleRedirectCallback` to handle success and error\n * responses from Auth0. If the response is successful, results\n * will be valid according to their expiration times.\n */\n public async handleRedirectCallback(\n url: string = window.location.href\n ): Promise<RedirectLoginResult> {\n const queryStringFragments = url.split('?').slice(1);\n if (queryStringFragments.length === 0) {\n throw new Error('There are no query params available for parsing.');\n }\n const { state, code, error, error_description } = parseQueryResult(\n queryStringFragments.join('')\n );\n\n const transaction = this.transactionManager.get(state);\n\n if (!transaction) {\n throw new Error('Invalid state');\n }\n\n if (error) {\n this.transactionManager.remove(state);\n\n throw new AuthenticationError(\n error,\n error_description,\n state,\n transaction.appState\n );\n }\n\n this.transactionManager.remove(state);\n\n const tokenOptions = {\n baseUrl: this.domainUrl,\n audience: this.options.audience,\n client_id: this.options.client_id,\n code_verifier: transaction.code_verifier,\n code\n } as OAuthTokenOptions;\n\n // some old versions of the SDK might not have added redirect_uri to the\n // transaction, we dont want the key to be set to undefined.\n if (undefined !== transaction.redirect_uri) {\n tokenOptions.redirect_uri = transaction.redirect_uri;\n }\n\n const authResult = await oauthToken(tokenOptions);\n\n const decodedToken = this._verifyIdToken(\n authResult.id_token,\n transaction.nonce\n );\n const cacheEntry = {\n ...authResult,\n decodedToken,\n audience: transaction.audience,\n scope: transaction.scope\n };\n this.cache.save(cacheEntry);\n ClientStorage.save('auth0.is.authenticated', true, { daysUntilExpire: 1 });\n return {\n appState: transaction.appState\n };\n }\n\n /**\n * ```js\n * const token = await auth0.getTokenSilently(options);\n * ```\n *\n * If there's a valid token stored, return it. Otherwise, opens an\n * iframe with the `/authorize` URL using the parameters provided\n * as arguments. Random and secure `state` and `nonce` parameters\n * will be auto-generated. If the response is successful, results\n * will be valid according to their expiration times.\n *\n * @param options\n */\n public async getTokenSilently(\n options: GetTokenSilentlyOptions = {\n audience: this.options.audience,\n scope: this.options.scope || this.DEFAULT_SCOPE,\n ignoreCache: false\n }\n ) {\n options.scope = getUniqueScopes(this.DEFAULT_SCOPE, options.scope);\n\n try {\n const {\n audience,\n scope,\n ignoreCache,\n timeoutInSeconds,\n ...additionalQueryParams\n } = options;\n\n if (!ignoreCache) {\n const cache = this.cache.get({\n scope,\n audience: audience || 'default'\n });\n\n if (cache) {\n return cache.access_token;\n }\n }\n\n await lock.acquireLock(GET_TOKEN_SILENTLY_LOCK_KEY, 5000);\n\n const stateIn = encodeState(createRandomString());\n const nonceIn = createRandomString();\n const code_verifier = createRandomString();\n const code_challengeBuffer = await sha256(code_verifier);\n const code_challenge = bufferToBase64UrlEncoded(code_challengeBuffer);\n\n const authorizeOptions = {\n audience,\n scope,\n ...additionalQueryParams\n };\n\n const params = this._getParams(\n authorizeOptions,\n stateIn,\n nonceIn,\n code_challenge,\n this.options.redirect_uri || window.location.origin\n );\n\n const url = this._authorizeUrl({\n ...params,\n prompt: 'none',\n response_mode: 'web_message'\n });\n\n const codeResult = await runIframe(\n url,\n this.domainUrl,\n timeoutInSeconds || this.options.authorizeTimeoutInSeconds\n );\n\n if (stateIn !== codeResult.state) {\n throw new Error('Invalid state');\n }\n\n const authResult = await oauthToken({\n baseUrl: this.domainUrl,\n audience: options.audience || this.options.audience,\n client_id: this.options.client_id,\n code_verifier,\n code: codeResult.code,\n redirect_uri: params.redirect_uri\n });\n\n const decodedToken = this._verifyIdToken(authResult.id_token, nonceIn);\n\n const cacheEntry = {\n ...authResult,\n decodedToken,\n scope: params.scope,\n audience: params.audience || 'default'\n };\n\n this.cache.save(cacheEntry);\n\n ClientStorage.save('auth0.is.authenticated', true, {\n daysUntilExpire: 1\n });\n\n return authResult.access_token;\n } catch (e) {\n throw e;\n } finally {\n await lock.releaseLock(GET_TOKEN_SILENTLY_LOCK_KEY);\n }\n }\n\n /**\n * ```js\n * const token = await auth0.getTokenWithPopup(options);\n * ```\n * Opens a popup with the `/authorize` URL using the parameters\n * provided as arguments. Random and secure `state` and `nonce`\n * parameters will be auto-generated. If the response is successful,\n * results will be valid according to their expiration times.\n *\n * @param options\n */\n public async getTokenWithPopup(\n options: GetTokenWithPopupOptions = {\n audience: this.options.audience,\n scope: this.options.scope || this.DEFAULT_SCOPE\n },\n config: PopupConfigOptions = DEFAULT_POPUP_CONFIG_OPTIONS\n ) {\n options.scope = getUniqueScopes(\n this.DEFAULT_SCOPE,\n this.options.scope,\n options.scope\n );\n await this.loginWithPopup(options, config);\n const cache = this.cache.get({\n scope: options.scope,\n audience: options.audience || 'default'\n });\n return cache.access_token;\n }\n\n /**\n * ```js\n * const isAuthenticated = await auth0.isAuthenticated();\n * ```\n *\n * Returns `true` if there's valid information stored,\n * otherwise returns `false`.\n *\n */\n public async isAuthenticated() {\n const user = await this.getUser();\n return !!user;\n }\n\n /**\n * ```js\n * auth0.logout();\n * ```\n *\n * Clears the application session and performs a redirect to `/v2/logout`, using\n * the parameters provided as arguments, to clear the Auth0 session.\n * If the `federated` option is specified it also clears the Identity Provider session.\n * If the `localOnly` option is specified, it only clears the application session.\n * It is invalid to set both the `federated` and `localOnly` options to `true`,\n * and an error will be thrown if you do.\n * [Read more about how Logout works at Auth0](https://auth0.com/docs/logout).\n *\n * @param options\n */\n public logout(options: LogoutOptions = {}) {\n if (options.client_id !== null) {\n options.client_id = options.client_id || this.options.client_id;\n } else {\n delete options.client_id;\n }\n\n const { federated, localOnly, ...logoutOptions } = options;\n\n if (localOnly && federated) {\n throw new Error(\n 'It is invalid to set both the `federated` and `localOnly` options to `true`'\n );\n }\n\n ClientStorage.remove('auth0.is.authenticated');\n\n if (localOnly) {\n return;\n }\n\n const federatedQuery = federated ? `&federated` : '';\n const url = this._url(`/v2/logout?${createQueryParams(logoutOptions)}`);\n\n window.location.assign(`${url}${federatedQuery}`);\n }\n}\n","export default '1.6.5';\n","import 'core-js/es/string/starts-with';\nimport 'core-js/es/array/from';\nimport 'core-js/es/typed-array/slice';\nimport 'core-js/es/array/includes';\nimport 'core-js/es/string/includes';\nimport 'promise-polyfill/src/polyfill';\nimport 'fast-text-encoding';\n\nimport Auth0Client from './Auth0Client';\nimport * as ClientStorage from './storage';\n\n//this is necessary to export the type definitions used in this file\nimport './global';\nimport { validateCrypto } from './utils';\n\nexport default async function createAuth0Client(options: Auth0ClientOptions) {\n validateCrypto();\n\n const auth0 = new Auth0Client(options);\n\n if (!ClientStorage.get('auth0.is.authenticated')) {\n return auth0;\n }\n try {\n await auth0.getTokenSilently({\n audience: options.audience,\n scope: options.scope,\n ignoreCache: true\n });\n } catch (error) {\n if (error.error !== 'login_required') {\n throw error;\n }\n }\n return auth0;\n}\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","import { createElement, PureComponent } from 'react';\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n **/\n\nfunction createDetectElementResize(nonce) {\n // Check `document` and `window` in case of server-side rendering\n var _window;\n if (typeof window !== 'undefined') {\n _window = window;\n } else if (typeof self !== 'undefined') {\n _window = self;\n } else {\n _window = global;\n }\n\n var attachEvent = typeof document !== 'undefined' && document.attachEvent;\n\n if (!attachEvent) {\n var requestFrame = function () {\n var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n return _window.setTimeout(fn, 20);\n };\n return function (fn) {\n return raf(fn);\n };\n }();\n\n var cancelFrame = function () {\n var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n return function (id) {\n return cancel(id);\n };\n }();\n\n var resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n var checkTriggers = function checkTriggers(element) {\n return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n };\n\n var scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n this.__resizeRAF__ = requestFrame(function () {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function (fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n var animation = false,\n keyframeprefix = '',\n animationstartevent = 'animationstart',\n domPrefixes = 'Webkit Moz O ms'.split(' '),\n startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n pfx = '';\n {\n var elm = document.createElement('fakeelement');\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationstartevent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n\n var animationName = 'resizeanim';\n var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n var elementStyle = _window.getComputedStyle(element);\n if (elementStyle && elementStyle.position == 'static') {\n element.style.position = 'relative';\n }\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n element.__resizeTriggers__.innerHTML = '<div class=\"expand-trigger\"><div></div></div>' + '<div class=\"contract-trigger\"></div>';\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n if (animationstartevent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName == animationName) {\n resetTriggers(element);\n }\n };\n element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n }\n }\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n element.__resizeTriggers__.__animationListener__ = null;\n }\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {\n // Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar AutoSizer = function (_React$PureComponent) {\n inherits(AutoSizer, _React$PureComponent);\n\n function AutoSizer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = AutoSizer.__proto__ || Object.getPrototypeOf(AutoSizer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n }, _this._onResize = function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n var _height = _this._parentNode.offsetHeight || 0;\n var _width = _this._parentNode.offsetWidth || 0;\n\n var _style = window.getComputedStyle(_this._parentNode) || {};\n var paddingLeft = parseInt(_style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(_style.paddingRight, 10) || 0;\n var paddingTop = parseInt(_style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(_style.paddingBottom, 10) || 0;\n\n var newHeight = _height - paddingTop - paddingBottom;\n var newWidth = _width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: _height - paddingTop - paddingBottom,\n width: _width - paddingLeft - paddingRight\n });\n\n onResize({ height: _height, width: _width });\n }\n }\n }, _this._setRef = function (autoSizer) {\n _this._autoSizer = autoSizer;\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n createClass(AutoSizer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(nonce);\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n disableHeight = _props.disableHeight,\n disableWidth = _props.disableWidth,\n style = _props.style;\n var _state = this.state,\n height = _state.height,\n width = _state.width;\n\n // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = { overflow: 'visible' };\n var childParams = {};\n\n // Avoid rendering children before the initial measurements have been collected.\n // At best this would just be wasting cycles.\n var bailoutOnChildren = false;\n\n if (!disableHeight) {\n if (height === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n if (width === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.width = 0;\n childParams.width = width;\n }\n\n return createElement(\n 'div',\n {\n className: className,\n ref: this._setRef,\n style: _extends({}, outerStyle, style) },\n !bailoutOnChildren && children(childParams)\n );\n }\n }]);\n return AutoSizer;\n}(PureComponent);\n\nAutoSizer.defaultProps = {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n};\n\nexport default AutoSizer;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M28 21H12V19H28V21Z\",\n fill: \"#0B4566\"\n});\n\nvar SvgMinus = function SvgMinus(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgMinus, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Minus.f72f5ea8.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21 21V28H19V21H12V19H19V12H21V19H28V21H21Z\",\n fill: \"#0B4566\"\n});\n\nvar SvgPlus = function SvgPlus(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgPlus, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Plus.fcfe0f75.svg\";\nexport { ForwardRef as ReactComponent };","/*\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/*\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","\nmodule.exports.DEFAULT_ENDPOINT = 'https://api.mapbox.com';\n","/*\n * Copyright 2014-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\n/**\n * Plain JS Object containing properties that represent an HTTP request.\n *\n * Depending on the capabilities of the underlying client, a request\n * may be cancelable. If a request may be canceled, the client will add\n * a canceled flag and cancel function to the request object. Canceling\n * the request will put the response into an error state.\n *\n * @field {string} [method='GET'] HTTP method, commonly GET, POST, PUT, DELETE or HEAD\n * @field {string|UrlBuilder} [path=''] path template with optional path variables\n * @field {Object} [params] parameters for the path template and query string\n * @field {Object} [headers] custom HTTP headers to send, in addition to the clients default headers\n * @field [entity] the HTTP entity, common for POST or PUT requests\n * @field {boolean} [canceled] true if the request has been canceled, set by the client\n * @field {Function} [cancel] cancels the request if invoked, provided by the client\n * @field {Client} [originator] the client that first handled this request, provided by the interceptor\n *\n * @class Request\n */\n\n/**\n * Plain JS Object containing properties that represent an HTTP response\n *\n * @field {Object} [request] the request object as received by the root client\n * @field {Object} [raw] the underlying request object, like XmlHttpRequest in a browser\n * @field {number} [status.code] status code of the response (i.e. 200, 404)\n * @field {string} [status.text] status phrase of the response\n * @field {Object] [headers] response headers hash of normalized name, value pairs\n * @field [entity] the response body\n *\n * @class Response\n */\n\n/**\n * HTTP client particularly suited for RESTful operations.\n *\n * @field {function} wrap wraps this client with a new interceptor returning the wrapped client\n *\n * @param {Request} the HTTP request\n * @returns {ResponsePromise<Response>} a promise the resolves to the HTTP response\n *\n * @class Client\n */\n\n /**\n * Extended when.js Promises/A+ promise with HTTP specific helpers\n *q\n * @method entity promise for the HTTP entity\n * @method status promise for the HTTP status code\n * @method headers promise for the HTTP response headers\n * @method header promise for a specific HTTP response header\n *\n * @class ResponsePromise\n * @extends Promise\n */\n\nvar client, target, platformDefault;\n\nclient = require('../client');\n\nif (typeof Promise !== 'function' && console && console.log) {\n\tconsole.log('An ES6 Promise implementation is required to use rest.js. See https://github.com/cujojs/when/blob/master/docs/es6-promise-shim.md for using when.js as a Promise polyfill.');\n}\n\n/**\n * Make a request with the default client\n * @param {Request} the HTTP request\n * @returns {Promise<Response>} a promise the resolves to the HTTP response\n */\nfunction defaultClient() {\n\treturn target.apply(void 0, arguments);\n}\n\n/**\n * Change the default client\n * @param {Client} client the new default client\n */\ndefaultClient.setDefaultClient = function setDefaultClient(client) {\n\ttarget = client;\n};\n\n/**\n * Obtain a direct reference to the current default client\n * @returns {Client} the default client\n */\ndefaultClient.getDefaultClient = function getDefaultClient() {\n\treturn target;\n};\n\n/**\n * Reset the default client to the platform default\n */\ndefaultClient.resetDefaultClient = function resetDefaultClient() {\n\ttarget = platformDefault;\n};\n\n/**\n * @private\n */\ndefaultClient.setPlatformDefaultClient = function setPlatformDefaultClient(client) {\n\tif (platformDefault) {\n\t\tthrow new Error('Unable to redefine platformDefaultClient');\n\t}\n\ttarget = platformDefault = client;\n};\n\nmodule.exports = client(defaultClient);\n","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.5+7f2b526d\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","/*\n * Copyright 2014-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\n/**\n * Add common helper methods to a client impl\n *\n * @param {function} impl the client implementation\n * @param {Client} [target] target of this client, used when wrapping other clients\n * @returns {Client} the client impl with additional methods\n */\nmodule.exports = function client(impl, target) {\n\n\tif (target) {\n\n\t\t/**\n\t\t * @returns {Client} the target client\n\t\t */\n\t\timpl.skip = function skip() {\n\t\t\treturn target;\n\t\t};\n\n\t}\n\n\t/**\n\t * Allow a client to easily be wrapped by an interceptor\n\t *\n\t * @param {Interceptor} interceptor the interceptor to wrap this client with\n\t * @param [config] configuration for the interceptor\n\t * @returns {Client} the newly wrapped client\n\t */\n\timpl.wrap = function wrap(interceptor, config) {\n\t\treturn interceptor(impl, config);\n\t};\n\n\t/**\n\t * @deprecated\n\t */\n\timpl.chain = function chain() {\n\t\tif (typeof console !== 'undefined') {\n\t\t\tconsole.log('rest.js: client.chain() is deprecated, use client.wrap() instead');\n\t\t}\n\n\t\treturn impl.wrap.apply(this, arguments);\n\t};\n\n\treturn impl;\n\n};\n","'use strict';\n\n// Installs ES6 Promise polyfill if a native Promise is not available\n\nif (typeof Promise === 'undefined') {\n require('es6-promise').polyfill();\n}\n\nmodule.export = Promise;\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar empty = {};\n\n/**\n * Mix the properties from the source object into the destination object.\n * When the same property occurs in more then one object, the right most\n * value wins.\n *\n * @param {Object} dest the object to copy properties to\n * @param {Object} sources the objects to copy properties from. May be 1 to N arguments, but not an Array.\n * @return {Object} the destination object\n */\nfunction mixin(dest /*, sources... */) {\n\tvar i, l, source, name;\n\n\tif (!dest) { dest = {}; }\n\tfor (i = 1, l = arguments.length; i < l; i += 1) {\n\t\tsource = arguments[i];\n\t\tfor (name in source) {\n\t\t\tif (!(name in dest) || (dest[name] !== source[name] && (!(name in empty) || empty[name] !== source[name]))) {\n\t\t\t\tdest[name] = source[name];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dest; // Object\n}\n\nmodule.exports = mixin;\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\n/**\n * Normalize HTTP header names using the pseudo camel case.\n *\n * For example:\n * content-type -> Content-Type\n * accepts -> Accepts\n * x-custom-header-name -> X-Custom-Header-Name\n *\n * @param {string} name the raw header name\n * @return {string} the normalized header name\n */\nfunction normalizeHeaderName(name) {\n\treturn name.toLowerCase()\n\t\t.split('-')\n\t\t.map(function (chunk) { return chunk.charAt(0).toUpperCase() + chunk.slice(1); })\n\t\t.join('-');\n}\n\nmodule.exports = normalizeHeaderName;\n","/*\n * Copyright 2014-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\n/*jshint latedef: nofunc */\n\nvar normalizeHeaderName = require('./normalizeHeaderName');\n\nfunction property(promise, name) {\n\treturn promise.then(\n\t\tfunction (value) {\n\t\t\treturn value && value[name];\n\t\t},\n\t\tfunction (value) {\n\t\t\treturn Promise.reject(value && value[name]);\n\t\t}\n\t);\n}\n\n/**\n * Obtain the response entity\n *\n * @returns {Promise} for the response entity\n */\nfunction entity() {\n\t/*jshint validthis:true */\n\treturn property(this, 'entity');\n}\n\n/**\n * Obtain the response status\n *\n * @returns {Promise} for the response status\n */\nfunction status() {\n\t/*jshint validthis:true */\n\treturn property(property(this, 'status'), 'code');\n}\n\n/**\n * Obtain the response headers map\n *\n * @returns {Promise} for the response headers map\n */\nfunction headers() {\n\t/*jshint validthis:true */\n\treturn property(this, 'headers');\n}\n\n/**\n * Obtain a specific response header\n *\n * @param {String} headerName the header to retrieve\n * @returns {Promise} for the response header's value\n */\nfunction header(headerName) {\n\t/*jshint validthis:true */\n\theaderName = normalizeHeaderName(headerName);\n\treturn property(this.headers(), headerName);\n}\n\n/**\n * Follow a related resource\n *\n * The relationship to follow may be define as a plain string, an object\n * with the rel and params, or an array containing one or more entries\n * with the previous forms.\n *\n * Examples:\n * response.follow('next')\n *\n * response.follow({ rel: 'next', params: { pageSize: 100 } })\n *\n * response.follow([\n * { rel: 'items', params: { projection: 'noImages' } },\n * 'search',\n * { rel: 'findByGalleryIsNull', params: { projection: 'noImages' } },\n * 'items'\n * ])\n *\n * @param {String|Object|Array} rels one, or more, relationships to follow\n * @returns ResponsePromise<Response> related resource\n */\nfunction follow(rels) {\n\t/*jshint validthis:true */\n\trels = [].concat(rels);\n\n\treturn make(rels.reduce(function (response, rel) {\n\t\treturn response.then(function (response) {\n\t\t\tif (typeof rel === 'string') {\n\t\t\t\trel = { rel: rel };\n\t\t\t}\n\t\t\tif (typeof response.entity.clientFor !== 'function') {\n\t\t\t\tthrow new Error('Hypermedia response expected');\n\t\t\t}\n\t\t\tvar client = response.entity.clientFor(rel.rel);\n\t\t\treturn client({ params: rel.params });\n\t\t});\n\t}, this));\n}\n\n/**\n * Wrap a Promise as an ResponsePromise\n *\n * @param {Promise<Response>} promise the promise for an HTTP Response\n * @returns {ResponsePromise<Response>} wrapped promise for Response with additional helper methods\n */\nfunction make(promise) {\n\tpromise.status = status;\n\tpromise.headers = headers;\n\tpromise.header = header;\n\tpromise.entity = entity;\n\tpromise.follow = follow;\n\treturn promise;\n}\n\nfunction responsePromise(obj, callback, errback) {\n\treturn make(Promise.resolve(obj).then(callback, errback));\n}\n\nresponsePromise.make = make;\nresponsePromise.reject = function (val) {\n\treturn make(Promise.reject(val));\n};\nresponsePromise.promise = function (func) {\n\treturn make(new Promise(func));\n};\n\nmodule.exports = responsePromise;\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Jeremy Grelle\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar parser, http, https, mixin, normalizeHeaderName, responsePromise, client, httpsExp;\n\nparser = require('url');\nhttp = require('http');\nhttps = require('https');\nmixin = require('../util/mixin');\nnormalizeHeaderName = require('../util/normalizeHeaderName');\nresponsePromise = require('../util/responsePromise');\nclient = require('../client');\n\nhttpsExp = /^https/i;\n\n// TODO remove once Node 0.6 is no longer supported\nBuffer.concat = Buffer.concat || function (list, length) {\n\t/*jshint plusplus:false, shadow:true */\n\t// from https://github.com/joyent/node/blob/v0.8.21/lib/buffer.js\n\tif (!Array.isArray(list)) {\n\t\tthrow new Error('Usage: Buffer.concat(list, [length])');\n\t}\n\n\tif (list.length === 0) {\n\t\treturn new Buffer(0);\n\t} else if (list.length === 1) {\n\t\treturn list[0];\n\t}\n\n\tif (typeof length !== 'number') {\n\t\tlength = 0;\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tvar buf = list[i];\n\t\t\tlength += buf.length;\n\t\t}\n\t}\n\n\tvar buffer = new Buffer(length);\n\tvar pos = 0;\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar buf = list[i];\n\t\tbuf.copy(buffer, pos);\n\t\tpos += buf.length;\n\t}\n\treturn buffer;\n};\n\nmodule.exports = client(function node(request) {\n\t/*jshint maxcomplexity:20 */\n\treturn responsePromise.promise(function (resolve, reject) {\n\n\t\tvar options, clientRequest, client, url, headers, entity, response;\n\n\t\trequest = typeof request === 'string' ? { path: request } : request || {};\n\t\tresponse = { request: request };\n\n\t\tif (request.canceled) {\n\t\t\tresponse.error = 'precanceled';\n\t\t\treject(response);\n\t\t\treturn;\n\t\t}\n\n\t\turl = response.url = request.path || '';\n\t\tclient = url.match(httpsExp) ? https : http;\n\n\t\toptions = mixin({}, request.mixin, parser.parse(url));\n\n\t\tentity = request.entity;\n\t\trequest.method = request.method || (entity ? 'POST' : 'GET');\n\t\toptions.method = request.method;\n\t\theaders = options.headers = {};\n\t\tObject.keys(request.headers || {}).forEach(function (name) {\n\t\t\theaders[normalizeHeaderName(name)] = request.headers[name];\n\t\t});\n\t\tif (!headers['Content-Length']) {\n\t\t\theaders['Content-Length'] = entity ? Buffer.byteLength(entity, 'utf8') : 0;\n\t\t}\n\n\t\trequest.canceled = false;\n\t\trequest.cancel = function cancel() {\n\t\t\trequest.canceled = true;\n\t\t\tclientRequest.abort();\n\t\t};\n\n\t\tclientRequest = client.request(options, function (clientResponse) {\n\t\t\t// Array of Buffers to collect response chunks\n\t\t\tvar buffers = [];\n\n\t\t\tresponse.raw = {\n\t\t\t\trequest: clientRequest,\n\t\t\t\tresponse: clientResponse\n\t\t\t};\n\t\t\tresponse.status = {\n\t\t\t\tcode: clientResponse.statusCode\n\t\t\t\t// node doesn't provide access to the status text\n\t\t\t};\n\t\t\tresponse.headers = {};\n\t\t\tObject.keys(clientResponse.headers).forEach(function (name) {\n\t\t\t\tresponse.headers[normalizeHeaderName(name)] = clientResponse.headers[name];\n\t\t\t});\n\n\t\t\tclientResponse.on('data', function (data) {\n\t\t\t\t// Collect the next Buffer chunk\n\t\t\t\tbuffers.push(data);\n\t\t\t});\n\n\t\t\tclientResponse.on('end', function () {\n\t\t\t\t// Create the final response entity\n\t\t\t\tresponse.entity = buffers.length > 0 ? Buffer.concat(buffers).toString() : '';\n\t\t\t\tbuffers = null;\n\n\t\t\t\tresolve(response);\n\t\t\t});\n\t\t});\n\n\t\tclientRequest.on('error', function (e) {\n\t\t\tresponse.error = e;\n\t\t\treject(response);\n\t\t});\n\n\t\tif (entity) {\n\t\t\tclientRequest.write(entity);\n\t\t}\n\t\tclientRequest.end();\n\n\t});\n});\n","/*\n * Copyright 2014-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar rest = require('./client/default'),\n node = require('./client/node');\n\nrest.setPlatformDefaultClient(node);\n\nmodule.exports = rest;\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar defaultClient, mixin, responsePromise, client;\n\ndefaultClient = require('./client/default');\nmixin = require('./util/mixin');\nresponsePromise = require('./util/responsePromise');\nclient = require('./client');\n\n/**\n * Interceptors have the ability to intercept the request and/org response\n * objects. They may augment, prune, transform or replace the\n * request/response as needed. Clients may be composed by wrapping\n * together multiple interceptors.\n *\n * Configured interceptors are functional in nature. Wrapping a client in\n * an interceptor will not affect the client, merely the data that flows in\n * and out of that client. A common configuration can be created once and\n * shared; specialization can be created by further wrapping that client\n * with custom interceptors.\n *\n * @param {Client} [target] client to wrap\n * @param {Object} [config] configuration for the interceptor, properties will be specific to the interceptor implementation\n * @returns {Client} A client wrapped with the interceptor\n *\n * @class Interceptor\n */\n\nfunction defaultInitHandler(config) {\n\treturn config;\n}\n\nfunction defaultRequestHandler(request /*, config, meta */) {\n\treturn request;\n}\n\nfunction defaultResponseHandler(response /*, config, meta */) {\n\treturn response;\n}\n\n/**\n * Alternate return type for the request handler that allows for more complex interactions.\n *\n * @param properties.request the traditional request return object\n * @param {Promise} [properties.abort] promise that resolves if/when the request is aborted\n * @param {Client} [properties.client] override the defined client with an alternate client\n * @param [properties.response] response for the request, short circuit the request\n */\nfunction ComplexRequest(properties) {\n\tif (!(this instanceof ComplexRequest)) {\n\t\t// in case users forget the 'new' don't mix into the interceptor\n\t\treturn new ComplexRequest(properties);\n\t}\n\tmixin(this, properties);\n}\n\n/**\n * Create a new interceptor for the provided handlers.\n *\n * @param {Function} [handlers.init] one time intialization, must return the config object\n * @param {Function} [handlers.request] request handler\n * @param {Function} [handlers.response] response handler regardless of error state\n * @param {Function} [handlers.success] response handler when the request is not in error\n * @param {Function} [handlers.error] response handler when the request is in error, may be used to 'unreject' an error state\n * @param {Function} [handlers.client] the client to use if otherwise not specified, defaults to platform default client\n *\n * @returns {Interceptor}\n */\nfunction interceptor(handlers) {\n\n\tvar initHandler, requestHandler, successResponseHandler, errorResponseHandler;\n\n\thandlers = handlers || {};\n\n\tinitHandler = handlers.init || defaultInitHandler;\n\trequestHandler = handlers.request || defaultRequestHandler;\n\tsuccessResponseHandler = handlers.success || handlers.response || defaultResponseHandler;\n\terrorResponseHandler = handlers.error || function () {\n\t\t// Propagate the rejection, with the result of the handler\n\t\treturn Promise.resolve((handlers.response || defaultResponseHandler).apply(this, arguments))\n\t\t\t.then(Promise.reject.bind(Promise));\n\t};\n\n\treturn function (target, config) {\n\n\t\tif (typeof target === 'object') {\n\t\t\tconfig = target;\n\t\t}\n\t\tif (typeof target !== 'function') {\n\t\t\ttarget = handlers.client || defaultClient;\n\t\t}\n\n\t\tconfig = initHandler(config || {});\n\n\t\tfunction interceptedClient(request) {\n\t\t\tvar context, meta;\n\t\t\tcontext = {};\n\t\t\tmeta = { 'arguments': Array.prototype.slice.call(arguments), client: interceptedClient };\n\t\t\trequest = typeof request === 'string' ? { path: request } : request || {};\n\t\t\trequest.originator = request.originator || interceptedClient;\n\t\t\treturn responsePromise(\n\t\t\t\trequestHandler.call(context, request, config, meta),\n\t\t\t\tfunction (request) {\n\t\t\t\t\tvar response, abort, next;\n\t\t\t\t\tnext = target;\n\t\t\t\t\tif (request instanceof ComplexRequest) {\n\t\t\t\t\t\t// unpack request\n\t\t\t\t\t\tabort = request.abort;\n\t\t\t\t\t\tnext = request.client || next;\n\t\t\t\t\t\tresponse = request.response;\n\t\t\t\t\t\t// normalize request, must be last\n\t\t\t\t\t\trequest = request.request;\n\t\t\t\t\t}\n\t\t\t\t\tresponse = response || Promise.resolve(request).then(function (request) {\n\t\t\t\t\t\treturn Promise.resolve(next(request)).then(\n\t\t\t\t\t\t\tfunction (response) {\n\t\t\t\t\t\t\t\treturn successResponseHandler.call(context, response, config, meta);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction (response) {\n\t\t\t\t\t\t\t\treturn errorResponseHandler.call(context, response, config, meta);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t\treturn abort ? Promise.race([response, abort]) : response;\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\treturn Promise.reject({ request: request, error: error });\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\treturn client(interceptedClient, target);\n\t};\n}\n\ninterceptor.ComplexRequest = ComplexRequest;\n\nmodule.exports = interceptor;\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar encodedSpaceRE, urlEncodedSpaceRE;\n\nencodedSpaceRE = /%20/g;\nurlEncodedSpaceRE = /\\+/g;\n\nfunction urlEncode(str) {\n\tstr = encodeURIComponent(str);\n\t// spec says space should be encoded as '+'\n\treturn str.replace(encodedSpaceRE, '+');\n}\n\nfunction urlDecode(str) {\n\t// spec says space should be encoded as '+'\n\tstr = str.replace(urlEncodedSpaceRE, ' ');\n\treturn decodeURIComponent(str);\n}\n\nfunction append(str, name, value) {\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach(function (value) {\n\t\t\tstr = append(str, name, value);\n\t\t});\n\t}\n\telse {\n\t\tif (str.length > 0) {\n\t\t\tstr += '&';\n\t\t}\n\t\tstr += urlEncode(name);\n\t\tif (value !== undefined && value !== null) {\n\t\t\tstr += '=' + urlEncode(value);\n\t\t}\n\t}\n\treturn str;\n}\n\nmodule.exports = {\n\n\tread: function (str) {\n\t\tvar obj = {};\n\t\tstr.split('&').forEach(function (entry) {\n\t\t\tvar pair, name, value;\n\t\t\tpair = entry.split('=');\n\t\t\tname = urlDecode(pair[0]);\n\t\t\tif (pair.length === 2) {\n\t\t\t\tvalue = urlDecode(pair[1]);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvalue = null;\n\t\t\t}\n\t\t\tif (name in obj) {\n\t\t\t\tif (!Array.isArray(obj[name])) {\n\t\t\t\t\t// convert to an array, perserving currnent value\n\t\t\t\t\tobj[name] = [obj[name]];\n\t\t\t\t}\n\t\t\t\tobj[name].push(value);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tobj[name] = value;\n\t\t\t}\n\t\t});\n\t\treturn obj;\n\t},\n\n\twrite: function (obj) {\n\t\tvar str = '';\n\t\tObject.keys(obj).forEach(function (name) {\n\t\t\tstr = append(str, name, obj[name]);\n\t\t});\n\t\treturn str;\n\t}\n\n};\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar interceptor;\n\ninterceptor = require('../interceptor');\n\n/**\n * Rejects the response promise based on the status code.\n *\n * Codes greater than or equal to the provided value are rejected. Default\n * value 400.\n *\n * @param {Client} [client] client to wrap\n * @param {number} [config.code=400] code to indicate a rejection\n *\n * @returns {Client}\n */\nmodule.exports = interceptor({\n\tinit: function (config) {\n\t\tconfig.code = config.code || 400;\n\t\treturn config;\n\t},\n\tresponse: function (response, config) {\n\t\tif (response.status && response.status.code >= config.code) {\n\t\t\treturn Promise.reject(response);\n\t\t}\n\t\treturn response;\n\t}\n});\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar mixin, xWWWFormURLEncoder, origin, urlRE, absoluteUrlRE, fullyQualifiedUrlRE;\n\nmixin = require('./util/mixin');\nxWWWFormURLEncoder = require('./mime/type/application/x-www-form-urlencoded');\n\nurlRE = /([a-z][a-z0-9\\+\\-\\.]*:)\\/\\/([^@]+@)?(([^:\\/]+)(:([0-9]+))?)?(\\/[^?#]*)?(\\?[^#]*)?(#\\S*)?/i;\nabsoluteUrlRE = /^([a-z][a-z0-9\\-\\+\\.]*:\\/\\/|\\/)/i;\nfullyQualifiedUrlRE = /([a-z][a-z0-9\\+\\-\\.]*:)\\/\\/([^@]+@)?(([^:\\/]+)(:([0-9]+))?)?\\//i;\n\n/**\n * Apply params to the template to create a URL.\n *\n * Parameters that are not applied directly to the template, are appended\n * to the URL as query string parameters.\n *\n * @param {string} template the URI template\n * @param {Object} params parameters to apply to the template\n * @return {string} the resulting URL\n */\nfunction buildUrl(template, params) {\n\t// internal builder to convert template with params.\n\tvar url, name, queryStringParams, queryString, re;\n\n\turl = template;\n\tqueryStringParams = {};\n\n\tif (params) {\n\t\tfor (name in params) {\n\t\t\t/*jshint forin:false */\n\t\t\tre = new RegExp('\\\\{' + name + '\\\\}');\n\t\t\tif (re.test(url)) {\n\t\t\t\turl = url.replace(re, encodeURIComponent(params[name]), 'g');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tqueryStringParams[name] = params[name];\n\t\t\t}\n\t\t}\n\n\t\tqueryString = xWWWFormURLEncoder.write(queryStringParams);\n\t\tif (queryString) {\n\t\t\turl += url.indexOf('?') === -1 ? '?' : '&';\n\t\t\turl += queryString;\n\t\t}\n\t}\n\treturn url;\n}\n\nfunction startsWith(str, test) {\n\treturn str.indexOf(test) === 0;\n}\n\n/**\n * Create a new URL Builder\n *\n * @param {string|UrlBuilder} template the base template to build from, may be another UrlBuilder\n * @param {Object} [params] base parameters\n * @constructor\n */\nfunction UrlBuilder(template, params) {\n\tif (!(this instanceof UrlBuilder)) {\n\t\t// invoke as a constructor\n\t\treturn new UrlBuilder(template, params);\n\t}\n\n\tif (template instanceof UrlBuilder) {\n\t\tthis._template = template.template;\n\t\tthis._params = mixin({}, this._params, params);\n\t}\n\telse {\n\t\tthis._template = (template || '').toString();\n\t\tthis._params = params || {};\n\t}\n}\n\nUrlBuilder.prototype = {\n\n\t/**\n\t * Create a new UrlBuilder instance that extends the current builder.\n\t * The current builder is unmodified.\n\t *\n\t * @param {string} [template] URL template to append to the current template\n\t * @param {Object} [params] params to combine with current params. New params override existing params\n\t * @return {UrlBuilder} the new builder\n\t */\n\tappend: function (template, params) {\n\t\t// TODO consider query strings and fragments\n\t\treturn new UrlBuilder(this._template + template, mixin({}, this._params, params));\n\t},\n\n\t/**\n\t * Create a new UrlBuilder with a fully qualified URL based on the\n\t * window's location or base href and the current templates relative URL.\n\t *\n\t * Path variables are preserved.\n\t *\n\t * *Browser only*\n\t *\n\t * @return {UrlBuilder} the fully qualified URL template\n\t */\n\tfullyQualify: function () {\n\t\tif (typeof location === 'undefined') { return this; }\n\t\tif (this.isFullyQualified()) { return this; }\n\n\t\tvar template = this._template;\n\n\t\tif (startsWith(template, '//')) {\n\t\t\ttemplate = origin.protocol + template;\n\t\t}\n\t\telse if (startsWith(template, '/')) {\n\t\t\ttemplate = origin.origin + template;\n\t\t}\n\t\telse if (!this.isAbsolute()) {\n\t\t\ttemplate = origin.origin + origin.pathname.substring(0, origin.pathname.lastIndexOf('/') + 1);\n\t\t}\n\n\t\tif (template.indexOf('/', 8) === -1) {\n\t\t\t// default the pathname to '/'\n\t\t\ttemplate = template + '/';\n\t\t}\n\n\t\treturn new UrlBuilder(template, this._params);\n\t},\n\n\t/**\n\t * True if the URL is absolute\n\t *\n\t * @return {boolean}\n\t */\n\tisAbsolute: function () {\n\t\treturn absoluteUrlRE.test(this.build());\n\t},\n\n\t/**\n\t * True if the URL is fully qualified\n\t *\n\t * @return {boolean}\n\t */\n\tisFullyQualified: function () {\n\t\treturn fullyQualifiedUrlRE.test(this.build());\n\t},\n\n\t/**\n\t * True if the URL is cross origin. The protocol, host and port must not be\n\t * the same in order to be cross origin,\n\t *\n\t * @return {boolean}\n\t */\n\tisCrossOrigin: function () {\n\t\tif (!origin) {\n\t\t\treturn true;\n\t\t}\n\t\tvar url = this.parts();\n\t\treturn url.protocol !== origin.protocol ||\n\t\t url.hostname !== origin.hostname ||\n\t\t url.port !== origin.port;\n\t},\n\n\t/**\n\t * Split a URL into its consituent parts following the naming convention of\n\t * 'window.location'. One difference is that the port will contain the\n\t * protocol default if not specified.\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/DOM/window.location\n\t *\n\t * @returns {Object} a 'window.location'-like object\n\t */\n\tparts: function () {\n\t\t/*jshint maxcomplexity:20 */\n\t\tvar url, parts;\n\t\turl = this.fullyQualify().build().match(urlRE);\n\t\tparts = {\n\t\t\thref: url[0],\n\t\t\tprotocol: url[1],\n\t\t\thost: url[3] || '',\n\t\t\thostname: url[4] || '',\n\t\t\tport: url[6],\n\t\t\tpathname: url[7] || '',\n\t\t\tsearch: url[8] || '',\n\t\t\thash: url[9] || ''\n\t\t};\n\t\tparts.origin = parts.protocol + '//' + parts.host;\n\t\tparts.port = parts.port || (parts.protocol === 'https:' ? '443' : parts.protocol === 'http:' ? '80' : '');\n\t\treturn parts;\n\t},\n\n\t/**\n\t * Expand the template replacing path variables with parameters\n\t *\n\t * @param {Object} [params] params to combine with current params. New params override existing params\n\t * @return {string} the expanded URL\n\t */\n\tbuild: function (params) {\n\t\treturn buildUrl(this._template, mixin({}, this._params, params));\n\t},\n\n\t/**\n\t * @see build\n\t */\n\ttoString: function () {\n\t\treturn this.build();\n\t}\n\n};\n\norigin = typeof location !== 'undefined' ? new UrlBuilder(location.href).parts() : void 0;\n\nmodule.exports = UrlBuilder;\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar interceptor, UrlBuilder;\n\ninterceptor = require('../interceptor');\nUrlBuilder = require('../UrlBuilder');\n\nfunction startsWith(str, prefix) {\n\treturn str.indexOf(prefix) === 0;\n}\n\nfunction endsWith(str, suffix) {\n\treturn str.lastIndexOf(suffix) + suffix.length === str.length;\n}\n\n/**\n * Prefixes the request path with a common value.\n *\n * @param {Client} [client] client to wrap\n * @param {number} [config.prefix] path prefix\n *\n * @returns {Client}\n */\nmodule.exports = interceptor({\n\trequest: function (request, config) {\n\t\tvar path;\n\n\t\tif (config.prefix && !(new UrlBuilder(request.path).isFullyQualified())) {\n\t\t\tpath = config.prefix;\n\t\t\tif (request.path) {\n\t\t\t\tif (!endsWith(path, '/') && !startsWith(request.path, '/')) {\n\t\t\t\t\t// add missing '/' between path sections\n\t\t\t\t\tpath += '/';\n\t\t\t\t}\n\t\t\t\tpath += request.path;\n\t\t\t}\n\t\t\trequest.path = path;\n\t\t}\n\n\t\treturn request;\n\t}\n});\n","/*\n* Copyright 2014-2016 the original author or authors\n* @license MIT, see LICENSE.txt for details\n*\n* @author Scott Andrews\n*/\n\n'use strict';\n\n/**\n * Parse a MIME type into it's constituent parts\n *\n * @param {string} mime MIME type to parse\n * @return {{\n * {string} raw the original MIME type\n * {string} type the type and subtype\n * {string} [suffix] mime suffix, including the plus, if any\n * {Object} params key/value pair of attributes\n * }}\n */\nfunction parse(mime) {\n\tvar params, type;\n\n\tparams = mime.split(';');\n\ttype = params[0].trim().split('+');\n\n\treturn {\n\t\traw: mime,\n\t\ttype: type[0],\n\t\tsuffix: type[1] ? '+' + type[1] : '',\n\t\tparams: params.slice(1).reduce(function (params, pair) {\n\t\t\tpair = pair.split('=');\n\t\t\tparams[pair[0].trim()] = pair[1] ? pair[1].trim() : void 0;\n\t\t\treturn params;\n\t\t}, {})\n\t};\n}\n\nmodule.exports = {\n\tparse: parse\n};\n","/*\n * Copyright 2015-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar charMap;\n\ncharMap = (function () {\n\tvar strings = {\n\t\talpha: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\t\tdigit: '0123456789'\n\t};\n\n\tstrings.genDelims = ':/?#[]@';\n\tstrings.subDelims = '!$&\\'()*+,;=';\n\tstrings.reserved = strings.genDelims + strings.subDelims;\n\tstrings.unreserved = strings.alpha + strings.digit + '-._~';\n\tstrings.url = strings.reserved + strings.unreserved;\n\tstrings.scheme = strings.alpha + strings.digit + '+-.';\n\tstrings.userinfo = strings.unreserved + strings.subDelims + ':';\n\tstrings.host = strings.unreserved + strings.subDelims;\n\tstrings.port = strings.digit;\n\tstrings.pchar = strings.unreserved + strings.subDelims + ':@';\n\tstrings.segment = strings.pchar;\n\tstrings.path = strings.segment + '/';\n\tstrings.query = strings.pchar + '/?';\n\tstrings.fragment = strings.pchar + '/?';\n\n\treturn Object.keys(strings).reduce(function (charMap, set) {\n\t\tcharMap[set] = strings[set].split('').reduce(function (chars, myChar) {\n\t\t\tchars[myChar] = true;\n\t\t\treturn chars;\n\t\t}, {});\n\t\treturn charMap;\n\t}, {});\n}());\n\nfunction encode(str, allowed) {\n\tif (typeof str !== 'string') {\n\t\tthrow new Error('String required for URL encoding');\n\t}\n\treturn str.split('').map(function (myChar) {\n\t\tif (allowed.hasOwnProperty(myChar)) {\n\t\t\treturn myChar;\n\t\t}\n\t\tvar code = myChar.charCodeAt(0);\n\t\tif (code <= 127) {\n\t\t\tvar encoded = code.toString(16).toUpperCase();\n \t\t\treturn '%' + (encoded.length % 2 === 1 ? '0' : '') + encoded;\n\t\t}\n\t\telse {\n\t\t\treturn encodeURIComponent(myChar).toUpperCase();\n\t\t}\n\t}).join('');\n}\n\nfunction makeEncoder(allowed) {\n\tallowed = allowed || charMap.unreserved;\n\treturn function (str) {\n\t\treturn encode(str, allowed);\n\t};\n}\n\nfunction decode(str) {\n\treturn decodeURIComponent(str);\n}\n\nmodule.exports = {\n\n\t/*\n\t * Decode URL encoded strings\n\t *\n\t * @param {string} URL encoded string\n\t * @returns {string} URL decoded string\n\t */\n\tdecode: decode,\n\n\t/*\n\t * URL encode a string\n\t *\n\t * All but alpha-numerics and a very limited set of punctuation - . _ ~ are\n\t * encoded.\n\t *\n\t * @param {string} string to encode\n\t * @returns {string} URL encoded string\n\t */\n\tencode: makeEncoder(),\n\n\t/*\n\t* URL encode a URL\n\t*\n\t* All character permitted anywhere in a URL are left unencoded even\n\t* if that character is not permitted in that portion of a URL.\n\t*\n\t* Note: This method is typically not what you want.\n\t*\n\t* @param {string} string to encode\n\t* @returns {string} URL encoded string\n\t*/\n\tencodeURL: makeEncoder(charMap.url),\n\n\t/*\n\t * URL encode the scheme portion of a URL\n\t *\n\t * @param {string} string to encode\n\t * @returns {string} URL encoded string\n\t */\n\tencodeScheme: makeEncoder(charMap.scheme),\n\n\t/*\n\t * URL encode the user info portion of a URL\n\t *\n\t * @param {string} string to encode\n\t * @returns {string} URL encoded string\n\t */\n\tencodeUserInfo: makeEncoder(charMap.userinfo),\n\n\t/*\n\t * URL encode the host portion of a URL\n\t *\n\t * @param {string} string to encode\n\t * @returns {string} URL encoded string\n\t */\n\tencodeHost: makeEncoder(charMap.host),\n\n\t/*\n\t * URL encode the port portion of a URL\n\t *\n\t * @param {string} string to encode\n\t * @returns {string} URL encoded string\n\t */\n\tencodePort: makeEncoder(charMap.port),\n\n\t/*\n\t * URL encode a path segment portion of a URL\n\t *\n\t * @param {string} string to encode\n\t * @returns {string} URL encoded string\n\t */\n\tencodePathSegment: makeEncoder(charMap.segment),\n\n\t/*\n\t * URL encode the path portion of a URL\n\t *\n\t * @param {string} string to encode\n\t * @returns {string} URL encoded string\n\t */\n\tencodePath: makeEncoder(charMap.path),\n\n\t/*\n\t * URL encode the query portion of a URL\n\t *\n\t * @param {string} string to encode\n\t * @returns {string} URL encoded string\n\t */\n\tencodeQuery: makeEncoder(charMap.query),\n\n\t/*\n\t * URL encode the fragment portion of a URL\n\t *\n\t * @param {string} string to encode\n\t * @returns {string} URL encoded string\n\t */\n\tencodeFragment: makeEncoder(charMap.fragment)\n\n};\n","/*\n * Copyright 2015-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar uriEncoder, operations, prefixRE;\n\nuriEncoder = require('./uriEncoder');\n\nprefixRE = /^([^:]*):([0-9]+)$/;\noperations = {\n\t'': { first: '', separator: ',', named: false, empty: '', encoder: uriEncoder.encode },\n\t'+': { first: '', separator: ',', named: false, empty: '', encoder: uriEncoder.encodeURL },\n\t'#': { first: '#', separator: ',', named: false, empty: '', encoder: uriEncoder.encodeURL },\n\t'.': { first: '.', separator: '.', named: false, empty: '', encoder: uriEncoder.encode },\n\t'/': { first: '/', separator: '/', named: false, empty: '', encoder: uriEncoder.encode },\n\t';': { first: ';', separator: ';', named: true, empty: '', encoder: uriEncoder.encode },\n\t'?': { first: '?', separator: '&', named: true, empty: '=', encoder: uriEncoder.encode },\n\t'&': { first: '&', separator: '&', named: true, empty: '=', encoder: uriEncoder.encode },\n\t'=': { reserved: true },\n\t',': { reserved: true },\n\t'!': { reserved: true },\n\t'@': { reserved: true },\n\t'|': { reserved: true }\n};\n\nfunction apply(operation, expression, params) {\n\t/*jshint maxcomplexity:11 */\n\treturn expression.split(',').reduce(function (result, variable) {\n\t\tvar opts, value;\n\n\t\topts = {};\n\t\tif (variable.slice(-1) === '*') {\n\t\t\tvariable = variable.slice(0, -1);\n\t\t\topts.explode = true;\n\t\t}\n\t\tif (prefixRE.test(variable)) {\n\t\t\tvar prefix = prefixRE.exec(variable);\n\t\t\tvariable = prefix[1];\n\t\t\topts.maxLength = parseInt(prefix[2]);\n\t\t}\n\n\t\tvariable = uriEncoder.decode(variable);\n\t\tvalue = params[variable];\n\n\t\tif (value === void 0 || value === null) {\n\t\t\treturn result;\n\t\t}\n\t\tif (Array.isArray(value)) {\n\t\t\tresult = value.reduce(function (result, value) {\n\t\t\t\tif (result.length) {\n\t\t\t\t\tresult += opts.explode ? operation.separator : ',';\n\t\t\t\t\tif (operation.named && opts.explode) {\n\t\t\t\t\t\tresult += operation.encoder(variable);\n\t\t\t\t\t\tresult += value.length ? '=' : operation.empty;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresult += operation.first;\n\t\t\t\t\tif (operation.named) {\n\t\t\t\t\t\tresult += operation.encoder(variable);\n\t\t\t\t\t\tresult += value.length ? '=' : operation.empty;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult += operation.encoder(value);\n\t\t\t\treturn result;\n\t\t\t}, result);\n\t\t}\n\t\telse if (typeof value === 'object') {\n\t\t\tresult = Object.keys(value).reduce(function (result, name) {\n\t\t\t\tif (result.length) {\n\t\t\t\t\tresult += opts.explode ? operation.separator : ',';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresult += operation.first;\n\t\t\t\t\tif (operation.named && !opts.explode) {\n\t\t\t\t\t\tresult += operation.encoder(variable);\n\t\t\t\t\t\tresult += value[name].length ? '=' : operation.empty;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult += operation.encoder(name);\n\t\t\t\tresult += opts.explode ? '=' : ',';\n\t\t\t\tresult += operation.encoder(value[name]);\n\t\t\t\treturn result;\n\t\t\t}, result);\n\t\t}\n\t\telse {\n\t\t\tvalue = String(value);\n\t\t\tif (opts.maxLength) {\n\t\t\t\tvalue = value.slice(0, opts.maxLength);\n\t\t\t}\n\t\t\tresult += result.length ? operation.separator : operation.first;\n\t\t\tif (operation.named) {\n\t\t\t\tresult += operation.encoder(variable);\n\t\t\t\tresult += value.length ? '=' : operation.empty;\n\t\t\t}\n\t\t\tresult += operation.encoder(value);\n\t\t}\n\n\t\treturn result;\n\t}, '');\n}\n\nfunction expandExpression(expression, params) {\n\tvar operation;\n\n\toperation = operations[expression.slice(0,1)];\n\tif (operation) {\n\t\texpression = expression.slice(1);\n\t}\n\telse {\n\t\toperation = operations[''];\n\t}\n\n\tif (operation.reserved) {\n\t\tthrow new Error('Reserved expression operations are not supported');\n\t}\n\n\treturn apply(operation, expression, params);\n}\n\nfunction expandTemplate(template, params) {\n\tvar start, end, uri;\n\n\turi = '';\n\tend = 0;\n\twhile (true) {\n\t\tstart = template.indexOf('{', end);\n\t\tif (start === -1) {\n\t\t\t// no more expressions\n\t\t\turi += template.slice(end);\n\t\t\tbreak;\n\t\t}\n\t\turi += template.slice(end, start);\n\t\tend = template.indexOf('}', start) + 1;\n\t\turi += expandExpression(template.slice(start + 1, end - 1), params);\n\t}\n\n\treturn uri;\n}\n\nmodule.exports = {\n\n\t/**\n\t * Expand a URI Template with parameters to form a URI.\n\t *\n\t * Full implementation (level 4) of rfc6570.\n\t * @see https://tools.ietf.org/html/rfc6570\n\t *\n\t * @param {string} template URI template\n\t * @param {Object} [params] params to apply to the template durring expantion\n\t * @returns {string} expanded URI\n\t */\n\texpand: expandTemplate\n\n};\n","/*\n * Copyright 2015-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar interceptor, uriTemplate, mixin;\n\ninterceptor = require('../interceptor');\nuriTemplate = require('../util/uriTemplate');\nmixin = require('../util/mixin');\n\n/**\n * Applies request params to the path as a URI Template\n *\n * Params are removed from the request object, as they have been consumed.\n *\n * @see https://tools.ietf.org/html/rfc6570\n *\n * @param {Client} [client] client to wrap\n * @param {Object} [config.params] default param values\n * @param {string} [config.template] default template\n *\n * @returns {Client}\n */\nmodule.exports = interceptor({\n\tinit: function (config) {\n\t\tconfig.params = config.params || {};\n\t\tconfig.template = config.template || '';\n\t\treturn config;\n\t},\n\trequest: function (request, config) {\n\t\tvar template, params;\n\n\t\ttemplate = request.path || config.template;\n\t\tparams = mixin({}, request.params, config.params);\n\n\t\trequest.path = uriTemplate.expand(template, params);\n\t\tdelete request.params;\n\n\t\treturn request;\n\t}\n});\n","/*\n * Copyright 2015-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\n/**\n * Attempt to invoke a function capturing the resulting value as a Promise\n *\n * If the method throws, the caught value used to reject the Promise.\n *\n * @param {function} work function to invoke\n * @returns {Promise} Promise for the output of the work function\n */\nfunction attempt(work) {\n\ttry {\n\t\treturn Promise.resolve(work());\n\t}\n\tcatch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\nmodule.exports = attempt;\n","/*\n * Copyright 2013-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar pathPrefix, template, find, lazyPromise, responsePromise;\n\npathPrefix = require('../../../interceptor/pathPrefix');\ntemplate = require('../../../interceptor/template');\nfind = require('../../../util/find');\nlazyPromise = require('../../../util/lazyPromise');\nresponsePromise = require('../../../util/responsePromise');\n\nfunction defineProperty(obj, name, value) {\n\tObject.defineProperty(obj, name, {\n\t\tvalue: value,\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\twriteable: true\n\t});\n}\n\n/**\n * Hypertext Application Language serializer\n *\n * Implemented to https://tools.ietf.org/html/draft-kelly-json-hal-06\n *\n * As the spec is still a draft, this implementation will be updated as the\n * spec evolves\n *\n * Objects are read as HAL indexing links and embedded objects on to the\n * resource. Objects are written as plain JSON.\n *\n * Embedded relationships are indexed onto the resource by the relationship\n * as a promise for the related resource.\n *\n * Links are indexed onto the resource as a lazy promise that will GET the\n * resource when a handler is first registered on the promise.\n *\n * A `requestFor` method is added to the entity to make a request for the\n * relationship.\n *\n * A `clientFor` method is added to the entity to get a full Client for a\n * relationship.\n *\n * The `_links` and `_embedded` properties on the resource are made\n * non-enumerable.\n */\nmodule.exports = {\n\n\tread: function (str, opts) {\n\t\tvar client, console;\n\n\t\topts = opts || {};\n\t\tclient = opts.client;\n\t\tconsole = opts.console || console;\n\n\t\tfunction deprecationWarning(relationship, deprecation) {\n\t\t\tif (deprecation && console && console.warn || console.log) {\n\t\t\t\t(console.warn || console.log).call(console, 'Relationship \\'' + relationship + '\\' is deprecated, see ' + deprecation);\n\t\t\t}\n\t\t}\n\n\t\treturn opts.registry.lookup(opts.mime.suffix).then(function (converter) {\n\t\t\treturn converter.read(str, opts);\n\t\t}).then(function (root) {\n\t\t\tfind.findProperties(root, '_embedded', function (embedded, resource, name) {\n\t\t\t\tObject.keys(embedded).forEach(function (relationship) {\n\t\t\t\t\tif (relationship in resource) { return; }\n\t\t\t\t\tvar related = responsePromise({\n\t\t\t\t\t\tentity: embedded[relationship]\n\t\t\t\t\t});\n\t\t\t\t\tdefineProperty(resource, relationship, related);\n\t\t\t\t});\n\t\t\t\tdefineProperty(resource, name, embedded);\n\t\t\t});\n\t\t\tfind.findProperties(root, '_links', function (links, resource, name) {\n\t\t\t\tObject.keys(links).forEach(function (relationship) {\n\t\t\t\t\tvar link = links[relationship];\n\t\t\t\t\tif (relationship in resource) { return; }\n\t\t\t\t\tdefineProperty(resource, relationship, responsePromise.make(lazyPromise(function () {\n\t\t\t\t\t\tif (link.deprecation) { deprecationWarning(relationship, link.deprecation); }\n\t\t\t\t\t\tif (link.templated === true) {\n\t\t\t\t\t\t\treturn template(client)({ path: link.href });\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn client({ path: link.href });\n\t\t\t\t\t})));\n\t\t\t\t});\n\t\t\t\tdefineProperty(resource, name, links);\n\t\t\t\tdefineProperty(resource, 'clientFor', function (relationship, clientOverride) {\n\t\t\t\t\tvar link = links[relationship];\n\t\t\t\t\tif (!link) {\n\t\t\t\t\t\tthrow new Error('Unknown relationship: ' + relationship);\n\t\t\t\t\t}\n\t\t\t\t\tif (link.deprecation) { deprecationWarning(relationship, link.deprecation); }\n\t\t\t\t\tif (link.templated === true) {\n\t\t\t\t\t\treturn template(\n\t\t\t\t\t\t\tclientOverride || client,\n\t\t\t\t\t\t\t{ template: link.href }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn pathPrefix(\n\t\t\t\t\t\tclientOverride || client,\n\t\t\t\t\t\t{ prefix: link.href }\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t\tdefineProperty(resource, 'requestFor', function (relationship, request, clientOverride) {\n\t\t\t\t\tvar client = this.clientFor(relationship, clientOverride);\n\t\t\t\t\treturn client(request);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn root;\n\t\t});\n\n\t},\n\n\twrite: function (obj, opts) {\n\t\treturn opts.registry.lookup(opts.mime.suffix).then(function (converter) {\n\t\t\treturn converter.write(obj, opts);\n\t\t});\n\t}\n\n};\n","/*\n * Copyright 2013-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nmodule.exports = {\n\n\t/**\n\t * Find objects within a graph the contain a property of a certain name.\n\t *\n\t * NOTE: this method will not discover object graph cycles.\n\t *\n\t * @param {*} obj object to search on\n\t * @param {string} prop name of the property to search for\n\t * @param {Function} callback function to receive the found properties and their parent\n\t */\n\tfindProperties: function findProperties(obj, prop, callback) {\n\t\tif (typeof obj !== 'object' || obj === null) { return; }\n\t\tif (prop in obj) {\n\t\t\tcallback(obj[prop], obj, prop);\n\t\t}\n\t\tObject.keys(obj).forEach(function (key) {\n\t\t\tfindProperties(obj[key], prop, callback);\n\t\t});\n\t}\n\n};\n","/*\n * Copyright 2013-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar attempt = require('./attempt');\n\n/**\n * Create a promise whose work is started only when a handler is registered.\n *\n * The work function will be invoked at most once. Thrown values will result\n * in promise rejection.\n *\n * @param {Function} work function whose ouput is used to resolve the\n * returned promise.\n * @returns {Promise} a lazy promise\n */\nfunction lazyPromise(work) {\n\tvar started, resolver, promise, then;\n\n\tstarted = false;\n\n\tpromise = new Promise(function (resolve, reject) {\n\t\tresolver = {\n\t\t\tresolve: resolve,\n\t\t\treject: reject\n\t\t};\n\t});\n\tthen = promise.then;\n\n\tpromise.then = function () {\n\t\tif (!started) {\n\t\t\tstarted = true;\n\t\t\tattempt(work).then(resolver.resolve, resolver.reject);\n\t\t}\n\t\treturn then.apply(promise, arguments);\n\t};\n\n\treturn promise;\n}\n\nmodule.exports = lazyPromise;\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\n/**\n * Create a new JSON converter with custom reviver/replacer.\n *\n * The extended converter must be published to a MIME registry in order\n * to be used. The existing converter will not be modified.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON\n *\n * @param {function} [reviver=undefined] custom JSON.parse reviver\n * @param {function|Array} [replacer=undefined] custom JSON.stringify replacer\n */\nfunction createConverter(reviver, replacer) {\n\treturn {\n\n\t\tread: function (str) {\n\t\t\treturn JSON.parse(str, reviver);\n\t\t},\n\n\t\twrite: function (obj) {\n\t\t\treturn JSON.stringify(obj, replacer);\n\t\t},\n\n\t\textend: createConverter\n\n\t};\n}\n\nmodule.exports = createConverter();\n","/*\n * Copyright 2014-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Michael Jackson\n */\n\n/* global FormData, File, Blob */\n\n'use strict';\n\nfunction isFormElement(object) {\n\treturn object &&\n\t\tobject.nodeType === 1 && // Node.ELEMENT_NODE\n\t\tobject.tagName === 'FORM';\n}\n\nfunction createFormDataFromObject(object) {\n\tvar formData = new FormData();\n\n\tvar value;\n\tfor (var property in object) {\n\t\tif (object.hasOwnProperty(property)) {\n\t\t\tvalue = object[property];\n\n\t\t\tif (value instanceof File) {\n\t\t\t\tformData.append(property, value, value.name);\n\t\t\t} else if (value instanceof Blob) {\n\t\t\t\tformData.append(property, value);\n\t\t\t} else {\n\t\t\t\tformData.append(property, String(value));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn formData;\n}\n\nmodule.exports = {\n\n\twrite: function (object) {\n\t\tif (typeof FormData === 'undefined') {\n\t\t\tthrow new Error('The multipart/form-data mime serializer requires FormData support');\n\t\t}\n\n\t\t// Support FormData directly.\n\t\tif (object instanceof FormData) {\n\t\t\treturn object;\n\t\t}\n\n\t\t// Support <form> elements.\n\t\tif (isFormElement(object)) {\n\t\t\treturn new FormData(object);\n\t\t}\n\n\t\t// Support plain objects, may contain File/Blob as value.\n\t\tif (typeof object === 'object' && object !== null) {\n\t\t\treturn createFormDataFromObject(object);\n\t\t}\n\n\t\tthrow new Error('Unable to create FormData from object ' + object);\n\t}\n\n};\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar mime, registry;\n\nmime = require('../mime');\n\nfunction Registry(mimes) {\n\n\t/**\n\t * Lookup the converter for a MIME type\n\t *\n\t * @param {string} type the MIME type\n\t * @return a promise for the converter\n\t */\n\tthis.lookup = function lookup(type) {\n\t\tvar parsed;\n\n\t\tparsed = typeof type === 'string' ? mime.parse(type) : type;\n\n\t\tif (mimes[parsed.raw]) {\n\t\t\treturn mimes[parsed.raw];\n\t\t}\n\t\tif (mimes[parsed.type + parsed.suffix]) {\n\t\t\treturn mimes[parsed.type + parsed.suffix];\n\t\t}\n\t\tif (mimes[parsed.type]) {\n\t\t\treturn mimes[parsed.type];\n\t\t}\n\t\tif (mimes[parsed.suffix]) {\n\t\t\treturn mimes[parsed.suffix];\n\t\t}\n\n\t\treturn Promise.reject(new Error('Unable to locate converter for mime \"' + parsed.raw + '\"'));\n\t};\n\n\t/**\n\t * Create a late dispatched proxy to the target converter.\n\t *\n\t * Common when a converter is registered under multiple names and\n\t * should be kept in sync if updated.\n\t *\n\t * @param {string} type mime converter to dispatch to\n\t * @returns converter whose read/write methods target the desired mime converter\n\t */\n\tthis.delegate = function delegate(type) {\n\t\treturn {\n\t\t\tread: function () {\n\t\t\t\tvar args = arguments;\n\t\t\t\treturn this.lookup(type).then(function (converter) {\n\t\t\t\t\treturn converter.read.apply(this, args);\n\t\t\t\t}.bind(this));\n\t\t\t}.bind(this),\n\t\t\twrite: function () {\n\t\t\t\tvar args = arguments;\n\t\t\t\treturn this.lookup(type).then(function (converter) {\n\t\t\t\t\treturn converter.write.apply(this, args);\n\t\t\t\t}.bind(this));\n\t\t\t}.bind(this)\n\t\t};\n\t};\n\n\t/**\n\t * Register a custom converter for a MIME type\n\t *\n\t * @param {string} type the MIME type\n\t * @param converter the converter for the MIME type\n\t * @return a promise for the converter\n\t */\n\tthis.register = function register(type, converter) {\n\t\tmimes[type] = Promise.resolve(converter);\n\t\treturn mimes[type];\n\t};\n\n\t/**\n\t * Create a child registry whoes registered converters remain local, while\n\t * able to lookup converters from its parent.\n\t *\n\t * @returns child MIME registry\n\t */\n\tthis.child = function child() {\n\t\treturn new Registry(Object.create(mimes));\n\t};\n\n}\n\nregistry = new Registry({});\n\n// include provided serializers\nregistry.register('application/hal', require('./type/application/hal'));\nregistry.register('application/json', require('./type/application/json'));\nregistry.register('application/x-www-form-urlencoded', require('./type/application/x-www-form-urlencoded'));\nregistry.register('multipart/form-data', require('./type/multipart/form-data'));\nregistry.register('text/plain', require('./type/text/plain'));\n\nregistry.register('+json', registry.delegate('application/json'));\n\nmodule.exports = registry;\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar interceptor, mime, registry, noopConverter, missingConverter, attempt;\n\ninterceptor = require('../interceptor');\nmime = require('../mime');\nregistry = require('../mime/registry');\nattempt = require('../util/attempt');\n\nnoopConverter = {\n\tread: function (obj) { return obj; },\n\twrite: function (obj) { return obj; }\n};\n\nmissingConverter = {\n\tread: function () { throw 'No read method found on converter'; },\n\twrite: function () { throw 'No write method found on converter'; }\n};\n\n/**\n * MIME type support for request and response entities. Entities are\n * (de)serialized using the converter for the MIME type.\n *\n * Request entities are converted using the desired converter and the\n * 'Accept' request header prefers this MIME.\n *\n * Response entities are converted based on the Content-Type response header.\n *\n * @param {Client} [client] client to wrap\n * @param {string} [config.mime='text/plain'] MIME type to encode the request\n * entity\n * @param {string} [config.accept] Accept header for the request\n * @param {Client} [config.client=<request.originator>] client passed to the\n * converter, defaults to the client originating the request\n * @param {Registry} [config.registry] MIME registry, defaults to the root\n * registry\n * @param {boolean} [config.permissive] Allow an unkown request MIME type\n *\n * @returns {Client}\n */\nmodule.exports = interceptor({\n\tinit: function (config) {\n\t\tconfig.registry = config.registry || registry;\n\t\treturn config;\n\t},\n\trequest: function (request, config) {\n\t\tvar type, headers;\n\n\t\theaders = request.headers || (request.headers = {});\n\t\ttype = mime.parse(headers['Content-Type'] || config.mime || 'text/plain');\n\t\theaders.Accept = headers.Accept || config.accept || type.raw + ', application/json;q=0.8, text/plain;q=0.5, */*;q=0.2';\n\n\t\tif (!('entity' in request)) {\n\t\t\treturn request;\n\t\t}\n\n\t\theaders['Content-Type'] = type.raw;\n\n\t\treturn config.registry.lookup(type)['catch'](function () {\n\t\t\t// failed to resolve converter\n\t\t\tif (config.permissive) {\n\t\t\t\treturn noopConverter;\n\t\t\t}\n\t\t\tthrow 'mime-unknown';\n\t\t}).then(function (converter) {\n\t\t\tvar client = config.client || request.originator,\n\t\t\t\twrite = converter.write || missingConverter.write;\n\n\t\t\treturn attempt(write.bind(void 0, request.entity, { client: client, request: request, mime: type, registry: config.registry }))\n\t\t\t\t['catch'](function() {\n\t\t\t\t\tthrow 'mime-serialization';\n\t\t\t\t})\n\t\t\t\t.then(function(entity) {\n\t\t\t\t\trequest.entity = entity;\n\t\t\t\t\treturn request;\n\t\t\t\t});\n\t\t});\n\t},\n\tresponse: function (response, config) {\n\t\tif (!(response.headers && response.headers['Content-Type'] && response.entity)) {\n\t\t\treturn response;\n\t\t}\n\n\t\tvar type = mime.parse(response.headers['Content-Type']);\n\n\t\treturn config.registry.lookup(type)['catch'](function () { return noopConverter; }).then(function (converter) {\n\t\t\tvar client = config.client || response.request && response.request.originator,\n\t\t\t\tread = converter.read || missingConverter.read;\n\n\t\t\treturn attempt(read.bind(void 0, response.entity, { client: client, response: response, mime: type, registry: config.registry }))\n\t\t\t\t['catch'](function (e) {\n\t\t\t\t\tresponse.error = 'mime-deserialization';\n\t\t\t\t\tresponse.cause = e;\n\t\t\t\t\tthrow response;\n\t\t\t\t})\n\t\t\t\t.then(function (entity) {\n\t\t\t\t\tresponse.entity = entity;\n\t\t\t\t\treturn response;\n\t\t\t\t});\n\t\t});\n\t}\n});\n","/*\n * Copyright 2012-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nmodule.exports = {\n\n\tread: function (str) {\n\t\treturn str;\n\t},\n\n\twrite: function (obj) {\n\t\treturn obj.toString();\n\t}\n\n};\n","/*\n * Copyright 2013-2016 the original author or authors\n * @license MIT, see LICENSE.txt for details\n *\n * @author Scott Andrews\n */\n\n'use strict';\n\nvar interceptor, mixinUtil, defaulter;\n\ninterceptor = require('../interceptor');\nmixinUtil = require('../util/mixin');\n\ndefaulter = (function () {\n\n\tfunction mixin(prop, target, defaults) {\n\t\tif (prop in target || prop in defaults) {\n\t\t\ttarget[prop] = mixinUtil({}, defaults[prop], target[prop]);\n\t\t}\n\t}\n\n\tfunction copy(prop, target, defaults) {\n\t\tif (prop in defaults && !(prop in target)) {\n\t\t\ttarget[prop] = defaults[prop];\n\t\t}\n\t}\n\n\tvar mappings = {\n\t\tmethod: copy,\n\t\tpath: copy,\n\t\tparams: mixin,\n\t\theaders: mixin,\n\t\tentity: copy,\n\t\tmixin: mixin\n\t};\n\n\treturn function (target, defaults) {\n\t\tfor (var prop in mappings) {\n\t\t\t/*jshint forin: false */\n\t\t\tmappings[prop](prop, target, defaults);\n\t\t}\n\t\treturn target;\n\t};\n\n}());\n\n/**\n * Provide default values for a request. These values will be applied to the\n * request if the request object does not already contain an explicit value.\n *\n * For 'params', 'headers', and 'mixin', individual values are mixed in with the\n * request's values. The result is a new object representiing the combined\n * request and config values. Neither input object is mutated.\n *\n * @param {Client} [client] client to wrap\n * @param {string} [config.method] the default method\n * @param {string} [config.path] the default path\n * @param {Object} [config.params] the default params, mixed with the request's existing params\n * @param {Object} [config.headers] the default headers, mixed with the request's existing headers\n * @param {Object} [config.mixin] the default \"mixins\" (http/https options), mixed with the request's existing \"mixins\"\n *\n * @returns {Client}\n */\nmodule.exports = interceptor({\n\trequest: function handleRequest(request, config) {\n\t\treturn defaulter(request, config);\n\t}\n});\n","module.exports = (function(){\n /*\n * Generated by PEG.js 0.7.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function quote(s) {\n /*\n * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a\n * string literal except for the closing quote character, backslash,\n * carriage return, line separator, paragraph separator, and line feed.\n * Any character may appear in the form of an escape sequence.\n *\n * For portability, we also escape escape all control and non-ASCII\n * characters. Note that \"\\0\" and \"\\v\" escape sequences are not used\n * because JSHint does not like the first and IE the second.\n */\n return '\"' + s\n .replace(/\\\\/g, '\\\\\\\\') // backslash\n .replace(/\"/g, '\\\\\"') // closing quote character\n .replace(/\\x08/g, '\\\\b') // backspace\n .replace(/\\t/g, '\\\\t') // horizontal tab\n .replace(/\\n/g, '\\\\n') // line feed\n .replace(/\\f/g, '\\\\f') // form feed\n .replace(/\\r/g, '\\\\r') // carriage return\n .replace(/[\\x00-\\x07\\x0B\\x0E-\\x1F\\x80-\\uFFFF]/g, escape)\n + '\"';\n }\n\n var result = {\n /*\n * Parses the input with a generated parser. If the parsing is successfull,\n * returns a value explicitly or implicitly specified by the grammar from\n * which the parser was generated (see |PEG.buildParser|). If the parsing is\n * unsuccessful, throws |PEG.parser.SyntaxError| describing the error.\n */\n parse: function(input, startRule) {\n var parseFunctions = {\n \"start\": parse_start,\n \"LinkValue\": parse_LinkValue,\n \"LinkParams\": parse_LinkParams,\n \"URIReference\": parse_URIReference,\n \"LinkParam\": parse_LinkParam,\n \"LinkParamName\": parse_LinkParamName,\n \"LinkParamValue\": parse_LinkParamValue,\n \"PToken\": parse_PToken,\n \"PTokenChar\": parse_PTokenChar,\n \"OptionalSP\": parse_OptionalSP,\n \"QuotedString\": parse_QuotedString,\n \"QuotedStringInternal\": parse_QuotedStringInternal,\n \"Char\": parse_Char,\n \"UpAlpha\": parse_UpAlpha,\n \"LoAlpha\": parse_LoAlpha,\n \"Alpha\": parse_Alpha,\n \"Digit\": parse_Digit,\n \"SP\": parse_SP,\n \"DQ\": parse_DQ,\n \"QDText\": parse_QDText,\n \"QuotedPair\": parse_QuotedPair\n };\n\n if (startRule !== undefined) {\n if (parseFunctions[startRule] === undefined) {\n throw new Error(\"Invalid rule name: \" + quote(startRule) + \".\");\n }\n } else {\n startRule = \"start\";\n }\n\n var pos = 0;\n var reportFailures = 0;\n var rightmostFailuresPos = 0;\n var rightmostFailuresExpected = [];\n\n function padLeft(input, padding, length) {\n var result = input;\n\n var padLength = length - input.length;\n for (var i = 0; i < padLength; i++) {\n result = padding + result;\n }\n\n return result;\n }\n\n function escape(ch) {\n var charCode = ch.charCodeAt(0);\n var escapeChar;\n var length;\n\n if (charCode <= 0xFF) {\n escapeChar = 'x';\n length = 2;\n } else {\n escapeChar = 'u';\n length = 4;\n }\n\n return '\\\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length);\n }\n\n function matchFailed(failure) {\n if (pos < rightmostFailuresPos) {\n return;\n }\n\n if (pos > rightmostFailuresPos) {\n rightmostFailuresPos = pos;\n rightmostFailuresExpected = [];\n }\n\n rightmostFailuresExpected.push(failure);\n }\n\n function parse_start() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1, pos2, pos3;\n\n pos0 = pos;\n pos1 = pos;\n result0 = [];\n pos2 = pos;\n pos3 = pos;\n result1 = parse_LinkValue();\n if (result1 !== null) {\n result2 = parse_OptionalSP();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 44) {\n result3 = \",\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_OptionalSP();\n if (result4 !== null) {\n result1 = [result1, result2, result3, result4];\n } else {\n result1 = null;\n pos = pos3;\n }\n } else {\n result1 = null;\n pos = pos3;\n }\n } else {\n result1 = null;\n pos = pos3;\n }\n } else {\n result1 = null;\n pos = pos3;\n }\n if (result1 !== null) {\n result1 = (function(offset, i) {return i;})(pos2, result1[0]);\n }\n if (result1 === null) {\n pos = pos2;\n }\n while (result1 !== null) {\n result0.push(result1);\n pos2 = pos;\n pos3 = pos;\n result1 = parse_LinkValue();\n if (result1 !== null) {\n result2 = parse_OptionalSP();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 44) {\n result3 = \",\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_OptionalSP();\n if (result4 !== null) {\n result1 = [result1, result2, result3, result4];\n } else {\n result1 = null;\n pos = pos3;\n }\n } else {\n result1 = null;\n pos = pos3;\n }\n } else {\n result1 = null;\n pos = pos3;\n }\n } else {\n result1 = null;\n pos = pos3;\n }\n if (result1 !== null) {\n result1 = (function(offset, i) {return i;})(pos2, result1[0]);\n }\n if (result1 === null) {\n pos = pos2;\n }\n }\n if (result0 !== null) {\n result1 = parse_LinkValue();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, start, last) { return start.concat([last]) })(pos0, result0[0], result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n\n function parse_LinkValue() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n\n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 60) {\n result0 = \"<\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"<\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_URIReference();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 62) {\n result2 = \">\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\">\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_OptionalSP();\n if (result3 !== null) {\n result4 = [];\n result5 = parse_LinkParams();\n while (result5 !== null) {\n result4.push(result5);\n result5 = parse_LinkParams();\n }\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, href, params) {\n var link = {};\n params.forEach(function (param) {\n link[param[0]] = param[1];\n });\n link.href = href;\n return link;\n })(pos0, result0[1], result0[4]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n\n function parse_LinkParams() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n\n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 59) {\n result0 = \";\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_OptionalSP();\n if (result1 !== null) {\n result2 = parse_LinkParam();\n if (result2 !== null) {\n result3 = parse_OptionalSP();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, param) { return param })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n\n function parse_URIReference() {\n var result0, result1;\n var pos0;\n\n pos0 = pos;\n if (/^[^>]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[^>]\");\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n if (/^[^>]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[^>]\");\n }\n }\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset, url) { return url.join('') })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n\n function parse_LinkParam() {\n var result0, result1;\n var pos0, pos1;\n\n pos0 = pos;\n pos1 = pos;\n result0 = parse_LinkParamName();\n if (result0 !== null) {\n result1 = parse_LinkParamValue();\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, name, value) { return [name, value] })(pos0, result0[0], result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n\n function parse_LinkParamName() {\n var result0, result1;\n var pos0;\n\n pos0 = pos;\n if (/^[a-z]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[a-z]\");\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n if (/^[a-z]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[a-z]\");\n }\n }\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset, name) { return name.join('') })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n\n function parse_LinkParamValue() {\n var result0, result1;\n var pos0, pos1;\n\n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_PToken();\n if (result1 === null) {\n result1 = parse_QuotedString();\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, str) { return str })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n\n function parse_PToken() {\n var result0, result1;\n var pos0;\n\n pos0 = pos;\n result1 = parse_PTokenChar();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_PTokenChar();\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset, token) { return token.join('') })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n\n function parse_PTokenChar() {\n var result0;\n\n if (input.charCodeAt(pos) === 33) {\n result0 = \"!\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 35) {\n result0 = \"#\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"#\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 37) {\n result0 = \"%\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 38) {\n result0 = \"&\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 39) {\n result0 = \"'\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 40) {\n result0 = \"(\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 41) {\n result0 = \")\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 42) {\n result0 = \"*\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 45) {\n result0 = \"-\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 46) {\n result0 = \".\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 124) {\n result0 = \"|\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"|\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_Digit();\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 60) {\n result0 = \"<\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"<\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 62) {\n result0 = \">\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\">\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 64) {\n result0 = \"@\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_Alpha();\n if (result0 === null) {\n if (input.charCodeAt(pos) === 91) {\n result0 = \"[\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 93) {\n result0 = \"]\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 94) {\n result0 = \"^\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"^\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 95) {\n result0 = \"_\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 96) {\n result0 = \"`\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 123) {\n result0 = \"{\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"{\\\"\");\n }\n }\n if (result0 === null) {\n if (/^[\\/\\/]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\/\\\\/]\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 125) {\n result0 = \"}\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"}\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 126) {\n result0 = \"~\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n\n function parse_OptionalSP() {\n var result0, result1;\n\n result0 = [];\n result1 = parse_SP();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_SP();\n }\n return result0;\n }\n\n function parse_QuotedString() {\n var result0, result1, result2;\n var pos0, pos1;\n\n pos0 = pos;\n pos1 = pos;\n result0 = parse_DQ();\n if (result0 !== null) {\n result1 = parse_QuotedStringInternal();\n if (result1 !== null) {\n result2 = parse_DQ();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, str) { return str })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n\n function parse_QuotedStringInternal() {\n var result0, result1;\n var pos0;\n\n pos0 = pos;\n result0 = [];\n result1 = parse_QDText();\n if (result1 === null) {\n result1 = parse_QuotedPair();\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_QDText();\n if (result1 === null) {\n result1 = parse_QuotedPair();\n }\n }\n if (result0 !== null) {\n result0 = (function(offset, str) { return str.join('') })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n\n function parse_Char() {\n var result0;\n\n if (/^[\\0-]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\0-]\");\n }\n }\n return result0;\n }\n\n function parse_UpAlpha() {\n var result0;\n\n if (/^[A-Z]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[A-Z]\");\n }\n }\n return result0;\n }\n\n function parse_LoAlpha() {\n var result0;\n\n if (/^[a-z]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[a-z]\");\n }\n }\n return result0;\n }\n\n function parse_Alpha() {\n var result0;\n\n result0 = parse_UpAlpha();\n if (result0 === null) {\n result0 = parse_LoAlpha();\n }\n return result0;\n }\n\n function parse_Digit() {\n var result0;\n\n if (/^[0-9]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n return result0;\n }\n\n function parse_SP() {\n var result0;\n\n if (/^[ ]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[ ]\");\n }\n }\n return result0;\n }\n\n function parse_DQ() {\n var result0;\n\n if (/^[\"]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\"]\");\n }\n }\n return result0;\n }\n\n function parse_QDText() {\n var result0;\n\n if (/^[^\"]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[^\\\"]\");\n }\n }\n return result0;\n }\n\n function parse_QuotedPair() {\n var result0, result1;\n var pos0;\n\n pos0 = pos;\n if (/^[\\\\]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\\\\\]\");\n }\n }\n if (result0 !== null) {\n result1 = parse_Char();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n\n\n function cleanupExpected(expected) {\n expected.sort();\n\n var lastExpected = null;\n var cleanExpected = [];\n for (var i = 0; i < expected.length; i++) {\n if (expected[i] !== lastExpected) {\n cleanExpected.push(expected[i]);\n lastExpected = expected[i];\n }\n }\n return cleanExpected;\n }\n\n function computeErrorPosition() {\n /*\n * The first idea was to use |String.split| to break the input up to the\n * error position along newlines and derive the line and column from\n * there. However IE's |split| implementation is so broken that it was\n * enough to prevent it.\n */\n\n var line = 1;\n var column = 1;\n var seenCR = false;\n\n for (var i = 0; i < Math.max(pos, rightmostFailuresPos); i++) {\n var ch = input.charAt(i);\n if (ch === \"\\n\") {\n if (!seenCR) { line++; }\n column = 1;\n seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n line++;\n column = 1;\n seenCR = true;\n } else {\n column++;\n seenCR = false;\n }\n }\n\n return { line: line, column: column };\n }\n\n\n var result = parseFunctions[startRule]();\n\n /*\n * The parser is now in one of the following three states:\n *\n * 1. The parser successfully parsed the whole input.\n *\n * - |result !== null|\n * - |pos === input.length|\n * - |rightmostFailuresExpected| may or may not contain something\n *\n * 2. The parser successfully parsed only a part of the input.\n *\n * - |result !== null|\n * - |pos < input.length|\n * - |rightmostFailuresExpected| may or may not contain something\n *\n * 3. The parser did not successfully parse any part of the input.\n *\n * - |result === null|\n * - |pos === 0|\n * - |rightmostFailuresExpected| contains at least one failure\n *\n * All code following this comment (including called functions) must\n * handle these states.\n */\n if (result === null || pos !== input.length) {\n var offset = Math.max(pos, rightmostFailuresPos);\n var found = offset < input.length ? input.charAt(offset) : null;\n var errorPosition = computeErrorPosition();\n\n throw new this.SyntaxError(\n cleanupExpected(rightmostFailuresExpected),\n found,\n offset,\n errorPosition.line,\n errorPosition.column\n );\n }\n\n return result;\n },\n\n /* Returns the parser source code. */\n toSource: function() { return this._source; }\n };\n\n /* Thrown when a parser encounters a syntax error. */\n\n result.SyntaxError = function(expected, found, offset, line, column) {\n function buildMessage(expected, found) {\n var expectedHumanized, foundHumanized;\n\n switch (expected.length) {\n case 0:\n expectedHumanized = \"end of input\";\n break;\n case 1:\n expectedHumanized = expected[0];\n break;\n default:\n expectedHumanized = expected.slice(0, expected.length - 1).join(\", \")\n + \" or \"\n + expected[expected.length - 1];\n }\n\n foundHumanized = found ? quote(found) : \"end of input\";\n\n return \"Expected \" + expectedHumanized + \" but \" + foundHumanized + \" found.\";\n }\n\n this.name = \"SyntaxError\";\n this.expected = expected;\n this.found = found;\n this.message = buildMessage(expected, found);\n this.offset = offset;\n this.line = line;\n this.column = column;\n };\n\n result.SyntaxError.prototype = Error.prototype;\n\n return result;\n})();\n","'use strict';\n\n// install ES6 Promise polyfill\nrequire('./promise');\n\nvar interceptor = require('rest/interceptor');\nvar linkParser = require('rest/parsers/rfc5988');\nvar url = require('url');\nvar querystring = require('querystring');\n\nvar paginator = interceptor({\n success: function (response, config) {\n var link = response && response.headers && response.headers.Link;\n var client = response && response.request && response.request.originator;\n\n if (link) {\n var nextLink = linkParser.parse(link).filter(function (link) {\n return link.rel === 'next';\n })[0];\n\n if (nextLink) {\n response.nextPage = function (callback) {\n var linkParts = url.parse(nextLink.href);\n var linkQuery = querystring.parse(linkParts.query);\n linkQuery.access_token = linkQuery.access_token || config.access_token;\n linkParts.search = querystring.stringify(linkQuery);\n return client({\n path: url.format(linkParts),\n callback: callback\n });\n };\n }\n }\n\n return response;\n }\n});\n\nmodule.exports = paginator;\n","var interceptor = require('rest/interceptor');\n\nvar standardResponse = interceptor({\n response: transform,\n});\n\nfunction transform(response) {\n return {\n url: response.url,\n status: response.status && response.status.code,\n headers: response.headers,\n entity: response.entity,\n error: response.error,\n callback: response.request && response.request.callback,\n nextPage: response.nextPage\n };\n}\n\nmodule.exports = standardResponse;\n","'use strict';\n\n// install ES6 Promise polyfill\nrequire('./promise');\n\nvar interceptor = require('rest/interceptor');\n\nvar callbackify = interceptor({\n success: function (response) {\n var callback = response && response.callback;\n\n if (typeof callback === 'function') {\n callback(null, response.entity, response);\n }\n\n return response;\n },\n error: function (response) {\n var callback = response && response.callback;\n\n if (typeof callback === 'function') {\n var err = response.error || response.entity;\n if (typeof err !== 'object') err = new Error(err);\n callback(err);\n }\n\n return response;\n }\n});\n\nmodule.exports = callbackify;\n","/*\n * Copyright (c) 2009 Nicholas C. Zakas. All rights reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*\n * Base 64 implementation in JavaScript\n * Original source available at https://raw.github.com/nzakas/computer-science-in-javascript/02a2745b4aa8214f2cae1bf0b15b447ca1a91b23/encodings/base64/base64.js\n *\n * Linter refinement by Scott Andrews\n */\n\n'use strict';\n\n/*jshint bitwise: false */\n\nvar digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n/**\n * Base64-encodes a string of text.\n *\n * @param {string} text The text to encode.\n * @return {string} The base64-encoded string.\n */\nfunction base64Encode(text) {\n\n\tif (/([^\\u0000-\\u00ff])/.test(text)) {\n\t\tthrow new Error('Can\\'t base64 encode non-ASCII characters.');\n\t}\n\n\tvar i = 0,\n\t\tcur, prev, byteNum,\n\t\tresult = [];\n\n\twhile (i < text.length) {\n\n\t\tcur = text.charCodeAt(i);\n\t\tbyteNum = i % 3;\n\n\t\tswitch (byteNum) {\n\t\tcase 0: //first byte\n\t\t\tresult.push(digits.charAt(cur >> 2));\n\t\t\tbreak;\n\n\t\tcase 1: //second byte\n\t\t\tresult.push(digits.charAt((prev & 3) << 4 | (cur >> 4)));\n\t\t\tbreak;\n\n\t\tcase 2: //third byte\n\t\t\tresult.push(digits.charAt((prev & 0x0f) << 2 | (cur >> 6)));\n\t\t\tresult.push(digits.charAt(cur & 0x3f));\n\t\t\tbreak;\n\t\t}\n\n\t\tprev = cur;\n\t\ti += 1;\n\t}\n\n\tif (byteNum === 0) {\n\t\tresult.push(digits.charAt((prev & 3) << 4));\n\t\tresult.push('==');\n\t} else if (byteNum === 1) {\n\t\tresult.push(digits.charAt((prev & 0x0f) << 2));\n\t\tresult.push('=');\n\t}\n\n\treturn result.join('');\n}\n\n/**\n * Base64-decodes a string of text.\n *\n * @param {string} text The text to decode.\n * @return {string} The base64-decoded string.\n */\nfunction base64Decode(text) {\n\n\t//ignore white space\n\ttext = text.replace(/\\s/g, '');\n\n\t//first check for any unexpected input\n\tif (!(/^[a-z0-9\\+\\/\\s]+\\={0,2}$/i.test(text)) || text.length % 4 > 0) {\n\t\tthrow new Error('Not a base64-encoded string.');\n\t}\n\n\t//local variables\n\tvar cur, prev, digitNum,\n\t\ti = 0,\n\t\tresult = [];\n\n\t//remove any equals signs\n\ttext = text.replace(/\\=/g, '');\n\n\t//loop over each character\n\twhile (i < text.length) {\n\n\t\tcur = digits.indexOf(text.charAt(i));\n\t\tdigitNum = i % 4;\n\n\t\tswitch (digitNum) {\n\n\t\t//case 0: first digit - do nothing, not enough info to work with\n\n\t\tcase 1: //second digit\n\t\t\tresult.push(String.fromCharCode(prev << 2 | cur >> 4));\n\t\t\tbreak;\n\n\t\tcase 2: //third digit\n\t\t\tresult.push(String.fromCharCode((prev & 0x0f) << 4 | cur >> 2));\n\t\t\tbreak;\n\n\t\tcase 3: //fourth digit\n\t\t\tresult.push(String.fromCharCode((prev & 3) << 6 | cur));\n\t\t\tbreak;\n\t\t}\n\n\t\tprev = cur;\n\t\ti += 1;\n\t}\n\n\t//return a string\n\treturn result.join('');\n\n}\n\nmodule.exports = {\n\tencode: base64Encode,\n\tdecode: base64Decode\n};\n","'use strict';\n\nvar b64 = require('rest/util/base64');\n\n/**\n * Access tokens actually are data, and using them we can derive\n * a user's username. This method attempts to do just that,\n * decoding the part of the token after the first `.` into\n * a username.\n *\n * @private\n * @param {string} token an access token\n * @return {string} username\n */\nfunction getUser(token) {\n var data = token.split('.')[1];\n if (!data) return null;\n data = data.replace(/-/g, '+').replace(/_/g, '/');\n\n var mod = data.length % 4;\n if (mod === 2) data += '==';\n if (mod === 3) data += '=';\n if (mod === 1 || mod > 3) return null;\n\n try {\n return JSON.parse(b64.decode(data)).u;\n } catch(err) {\n return null;\n }\n}\n\nmodule.exports = getUser;\n","'use strict';\n\nvar invariant = require('../vendor/invariant');\nvar constants = require('./constants');\nvar client = require('./client');\nvar getUser = require('./get_user');\n\n/**\n * Services all have the same constructor pattern: you initialize them\n * with an access token and options, and they validate those arguments\n * in a predictable way. This is a constructor-generator that makes\n * it possible to require each service's API individually.\n *\n * @private\n * @param {string} name the name of the Mapbox API this class will access:\n * this is set to the name of the function so it will show up in tracebacks\n * @returns {Function} constructor function\n */\nfunction makeService(name) {\n\n function service(accessToken, options) {\n this.name = name;\n\n invariant(typeof accessToken === 'string',\n 'accessToken required to instantiate Mapbox client');\n\n var endpoint = constants.DEFAULT_ENDPOINT;\n\n if (options !== undefined) {\n invariant(typeof options === 'object', 'options must be an object');\n if (options.endpoint) {\n invariant(typeof options.endpoint === 'string', 'endpoint must be a string');\n endpoint = options.endpoint;\n }\n if (options.account) {\n invariant(typeof options.account === 'string', 'account must be a string');\n this.owner = options.account;\n }\n }\n\n this.client = client({\n endpoint: endpoint,\n accessToken: accessToken\n });\n\n this.accessToken = accessToken;\n this.endpoint = endpoint;\n this.owner = this.owner || getUser(accessToken);\n invariant(!!this.owner, 'could not determine account from provided accessToken');\n\n }\n\n return service;\n}\n\nmodule.exports = makeService;\n","'use strict';\n\n// install ES6 Promise polyfill\nrequire('./promise');\n\nvar rest = require('rest');\n\n// rest.js client with MIME support\nmodule.exports = function(config) {\n return rest\n .wrap(require('rest/interceptor/errorCode'))\n .wrap(require('rest/interceptor/pathPrefix'), { prefix: config.endpoint })\n .wrap(require('rest/interceptor/mime'), { mime: 'application/json' })\n .wrap(require('rest/interceptor/template'))\n .wrap(require('rest/interceptor/defaultRequest'), {\n params: { access_token: config.accessToken }\n })\n .wrap(require('./paginator'), { access_token: config.accessToken })\n .wrap(require('./standard_response'))\n .wrap(require('./callbackify'));\n};\n","/*\n * xtend by Jake Verbaten\n *\n * Licensed under MIT\n * https://github.com/Raynos/xtend\n */\nmodule.exports.extendMutable = extendMutable\nmodule.exports.extend = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extendMutable(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxGeocoding\n */\nvar MapboxGeocoding = makeService('MapboxGeocoding');\n\nvar API_GEOCODING_FORWARD = '/geocoding/v5/{dataset}/{query}.json{?access_token,proximity,country,types,bbox,limit,autocomplete,language}';\nvar API_GEOCODING_REVERSE = '/geocoding/v5/{dataset}/{longitude},{latitude}.json{?access_token,types,limit,language}';\n\nvar REVERSE_GEOCODING_PRECISION = 5;\nvar FORWARD_GEOCODING_PROXIMITY_PRECISION = 3;\n\nfunction roundTo(value, places) {\n var mult = Math.pow(10, places);\n return Math.round(value * mult) / mult;\n}\n\n/**\n * Search for a location with a string, using the\n * [Mapbox Geocoding API](https://www.mapbox.com/api-documentation/#geocoding).\n *\n * The `query` parmeter can be an array of strings only if batch geocoding\n * is used by specifying `mapbox.places-permanent` as the `dataset` option.\n *\n * @param {string|Array<string>} query desired location\n * @param {Object} [options={}] additional options meant to tune\n * the request\n * @param {Object} options.proximity a proximity argument: this is\n * a geographical point given as an object with latitude and longitude\n * properties. Search results closer to this point will be given\n * higher priority.\n * @param {Array} options.bbox a bounding box argument: this is\n * a bounding box given as an array in the format [minX, minY, maxX, maxY].\n * Search results will be limited to the bounding box.\n * @param {Array<string>|string} options.language Specify the language to use for response text and, for forward geocoding, query result weighting. Options are IETF language tags comprised of a mandatory ISO 639-1 language code and optionally one or more IETF subtags for country or script. More than one value can also be specified, as an array or separated by commas.\n * @param {Array<string>|string} options.types an array or comma seperated list of types that filter\n * results to match those specified. See https://www.mapbox.com/developers/api/geocoding/#filter-type\n * for available types.\n * @param {number} [options.limit=5] is the maximum number of results to return, between 1 and 10 inclusive.\n * Some very specific queries may return fewer results than the limit.\n * @param {Array<string>|string} options.country an array or comma separated list of country codes to\n * limit results to specified country or countries.\n * @param {boolean} [options.autocomplete=true] whether to include results that include\n * the query only as a prefix. This is useful for UIs where users type\n * values, but if you have complete addresses as input, you'll want to turn it off\n * @param {string} [options.dataset=mapbox.places] the desired data to be\n * geocoded against. The default, mapbox.places, does not permit unlimited\n * caching. `mapbox.places-permanent` is available on request and does\n * permit permanent caching.\n * @param {Function} callback called with (err, results)\n * @returns {Promise} response\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * mapboxClient.geocodeForward('Paris, France', function(err, res) {\n * // res is a GeoJSON document with geocoding matches\n * });\n * // using the proximity option to weight results closer to texas\n * mapboxClient.geocodeForward('Paris, France', {\n * proximity: { latitude: 33.6875431, longitude: -95.4431142 }\n * }, function(err, res) {\n * // res is a GeoJSON document with geocoding matches\n * });\n * // using the bbox option to limit results to a portion of Washington, D.C.\n * mapboxClient.geocodeForward('Starbucks', {\n * bbox: [-77.083056,38.908611,-76.997778,38.959167]\n * }, function(err, res) {\n * // res is a GeoJSON document with geocoding matches\n * });\n */\nMapboxGeocoding.prototype.geocodeForward = function(query, options, callback) {\n // permit the options argument to be omitted, or the options + callback args to be omitted if using promise syntax\n if (callback === undefined && (options === undefined || typeof options === 'function')) {\n callback = options;\n options = {};\n }\n\n // typecheck arguments\n if (Array.isArray(query)) {\n if (options.dataset !== 'mapbox.places-permanent') {\n throw new Error('Batch geocoding is only available with the mapbox.places-permanent endpoint. See https://mapbox.com/api-documentation/#batch-requests for details');\n } else {\n query = query.join(';');\n }\n }\n invariant(typeof query === 'string', 'query must be a string');\n invariant(typeof options === 'object', 'options must be an object');\n\n var queryOptions = {\n query: query,\n dataset: 'mapbox.places'\n };\n\n var precision = FORWARD_GEOCODING_PROXIMITY_PRECISION;\n if (options.precision) {\n invariant(typeof options.precision === 'number', 'precision option must be number');\n precision = options.precision;\n }\n\n if (options.proximity) {\n invariant(typeof options.proximity.latitude === 'number' &&\n typeof options.proximity.longitude === 'number',\n 'proximity must be an object with numeric latitude & longitude properties');\n queryOptions.proximity = roundTo(options.proximity.longitude, precision) + ',' + roundTo(options.proximity.latitude, precision);\n }\n\n if (options.bbox) {\n invariant(typeof options.bbox[0] === 'number' &&\n typeof options.bbox[1] === 'number' &&\n typeof options.bbox[2] === 'number' &&\n typeof options.bbox[3] === 'number' &&\n options.bbox.length === 4,\n 'bbox must be an array with numeric values in the form [minX, minY, maxX, maxY]');\n queryOptions.bbox = options.bbox[0] + ',' + options.bbox[1] + ',' + options.bbox[2] + ',' + options.bbox[3];\n }\n\n if (options.limit) {\n invariant(typeof options.limit === 'number',\n 'limit must be a number');\n queryOptions.limit = options.limit;\n }\n\n if (options.dataset) {\n invariant(typeof options.dataset === 'string', 'dataset option must be string');\n queryOptions.dataset = options.dataset;\n }\n\n if (options.country) {\n if (Array.isArray(options.country)) {\n queryOptions.country = options.country.join(',');\n } else {\n invariant(typeof options.country === 'string', 'country option must be an array or string');\n queryOptions.country = options.country;\n }\n }\n\n if (options.language) {\n if (Array.isArray(options.language)) {\n queryOptions.language = options.language.join(',');\n } else {\n invariant(typeof options.language === 'string', 'language option must be an array or string');\n queryOptions.language = options.language;\n }\n }\n\n if (options.types) {\n if (Array.isArray(options.types)) {\n queryOptions.types = options.types.join(',');\n } else {\n invariant(typeof options.types === 'string', 'types option must be an array or string');\n queryOptions.types = options.types;\n }\n }\n\n if (typeof options.autocomplete === 'boolean') {\n invariant(typeof options.autocomplete === 'boolean', 'autocomplete must be a boolean');\n queryOptions.autocomplete = options.autocomplete;\n }\n\n return this.client({\n path: API_GEOCODING_FORWARD,\n params: queryOptions,\n callback: callback\n });\n};\n\n/**\n * Given a location, determine what geographical features are located\n * there. This uses the [Mapbox Geocoding API](https://www.mapbox.com/api-documentation/#geocoding).\n *\n * @param {Object} location the geographical point to search\n * @param {number} location.latitude decimal degrees latitude, in range -90 to 90\n * @param {number} location.longitude decimal degrees longitude, in range -180 to 180\n * @param {Object} [options={}] additional options meant to tune\n * the request.\n * @param {Array<string>|string} options.language Specify the language to use for response text and, for forward geocoding, query result weighting. Options are IETF language tags comprised of a mandatory ISO 639-1 language code and optionally one or more IETF subtags for country or script. More than one value can also be specified, separated by commas or as an array.\n * @param {Array<string>|string} options.types an array or comma seperated list of types that filter\n * results to match those specified. See\n * https://www.mapbox.com/api-documentation/#retrieve-places-near-a-location\n * for available types.\n * @param {number} [options.limit=1] is the maximum number of results to return, between 1 and 5\n * inclusive. Requires a single options.types to be specified (see example).\n * @param {string} [options.dataset=mapbox.places] the desired data to be\n * geocoded against. The default, mapbox.places, does not permit unlimited\n * caching. `mapbox.places-permanent` is available on request and does\n * permit permanent caching.\n * @param {Function} callback called with (err, results)\n * @returns {Promise} response\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * mapboxClient.geocodeReverse(\n * { latitude: 33.6875431, longitude: -95.4431142 },\n * function(err, res) {\n * // res is a GeoJSON document with geocoding matches\n * });\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * mapboxClient.geocodeReverse(\n * { latitude: 33.6875431, longitude: -95.4431142, options: { types: 'address', limit: 3 } },\n * function(err, res) {\n * // res is a GeoJSON document with up to 3 geocoding matches\n * });\n */\nMapboxGeocoding.prototype.geocodeReverse = function(location, options, callback) {\n // permit the options argument to be omitted, or the options + callback args to be omitted if using promise syntax\n if (callback === undefined && (options === undefined || typeof options === 'function')) {\n callback = options;\n options = {};\n }\n\n // typecheck arguments\n invariant((typeof location === 'object' && location !== null), 'location must be an object');\n invariant(typeof options === 'object', 'options must be an object');\n\n invariant(typeof location.latitude === 'number' &&\n typeof location.longitude === 'number',\n 'location must be an object with numeric latitude & longitude properties');\n\n var queryOptions = {\n dataset: 'mapbox.places'\n };\n\n if (options.dataset) {\n invariant(typeof options.dataset === 'string', 'dataset option must be string');\n queryOptions.dataset = options.dataset;\n }\n\n var precision = REVERSE_GEOCODING_PRECISION;\n if (options.precision) {\n invariant(typeof options.precision === 'number', 'precision option must be number');\n precision = options.precision;\n }\n\n if (options.language) {\n if (Array.isArray(options.language)) {\n queryOptions.language = options.language.join(',');\n } else {\n invariant(typeof options.language === 'string', 'language option must be an array or string');\n queryOptions.language = options.language;\n }\n }\n\n if (options.types) {\n if (Array.isArray(options.types)) {\n queryOptions.types = options.types.join(',');\n } else {\n invariant(typeof options.types === 'string', 'types option must be an array or string');\n queryOptions.types = options.types;\n }\n }\n\n if (options.limit) {\n invariant(typeof options.limit === 'number', 'limit option must be a number');\n invariant(options.types.split(',').length === 1, 'a single type must be specified to use the limit option');\n queryOptions.limit = options.limit;\n }\n\n queryOptions.longitude = roundTo(location.longitude, precision);\n queryOptions.latitude = roundTo(location.latitude, precision);\n\n return this.client({\n path: API_GEOCODING_REVERSE,\n params: queryOptions,\n callback: callback\n });\n};\n\nmodule.exports = MapboxGeocoding;\n","'use strict';\n\nvar invariant = require('../vendor/invariant');\n\n/**\n * Given an object that should be a location, ensure that it has\n * valid numeric longitude & latitude properties\n *\n * @param {Object} location object with longitude and latitude values\n * @throws {AssertError} if the object is not a valid location\n * @returns {undefined} nothing\n * @private\n */\nfunction invariantLocation(location) {\n invariant(typeof location.latitude === 'number' &&\n typeof location.longitude === 'number',\n 'location must be an object with numeric latitude & longitude properties');\n if (location.zoom !== undefined) {\n invariant(typeof location.zoom === 'number', 'zoom must be numeric');\n }\n}\n\nmodule.exports = invariantLocation;\n","'use strict';\n\nvar invariantLocation = require('./invariant_location');\n\n/**\n * Format waypionts in a way that's friendly to the directions and surface\n * API: comma-separated latitude, longitude pairs with semicolons between\n * them.\n * @private\n * @param {Array<Object>} waypoints array of objects with latitude and longitude\n * properties\n * @returns {string} formatted points\n * @throws {Error} if the input is invalid\n */\nfunction formatPoints(waypoints) {\n return waypoints.map(function(location) {\n invariantLocation(location);\n return location.longitude + ',' + location.latitude;\n }).join(';');\n}\n\nmodule.exports = formatPoints;\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar formatPoints = require('../format_points');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxSurface\n */\nvar MapboxSurface = makeService('MapboxSurface');\n\nvar API_SURFACE = '/v4/surface/{mapid}.json{?access_token,layer,fields,points,geojson,interpolate,encoded_polyline}';\n\n/**\n * Given a list of locations, retrieve vector tiles, find the nearest\n * spatial features, extract their data values, and then absolute values and\n * optionally interpolated values in-between, if the interpolate option is specified.\n *\n * Consult the [Surface API](https://www.mapbox.com/developers/api/surface/)\n * for more documentation.\n *\n * @param {string} mapid a Mapbox mapid containing vector tiles against\n * which we'll query\n * @param {string} layer layer within the given `mapid` for which to pull\n * data\n * @param {Array<string>} fields layer within the given `mapid` for which to pull\n * data\n * @param {Array<Object>|string} path either an encoded polyline,\n * provided as a string, or an array of objects with longitude and latitude\n * properties, similar to waypoints.\n * @param {Object} [options={}] additional options meant to tune\n * the request\n * @param {string} [options.geojson=false] whether to return data as a\n * GeoJSON point\n * @param {string} [options.zoom=maximum] zoom level at which features\n * are queried\n * @param {boolean} [options.interpolate=true] Whether to interpolate\n * between matches in the feature collection.\n * @param {Function} callback called with (err, results)\n * @returns {Promise} response\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n */\nMapboxSurface.prototype.surface = function(mapid, layer, fields, path, options, callback) {\n\n // permit the options argument to be omitted\n if (callback === undefined && typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n // typecheck arguments\n invariant(typeof mapid === 'string', 'mapid must be a string');\n invariant(typeof layer === 'string', 'layer must be a string');\n invariant(Array.isArray(fields), 'fields must be an array of strings');\n invariant(Array.isArray(path) || typeof path === 'string', 'path must be an array of objects or a string');\n invariant(typeof options === 'object', 'options must be an object');\n\n var interpolate = true,\n geojson = false;\n\n if (options.interpolate !== undefined) {\n invariant(typeof options.interpolate === 'boolean', 'interpolate must be a boolean');\n interpolate = options.interpolate;\n }\n\n if (options.geojson !== undefined) {\n invariant(typeof options.geojson === 'boolean', 'geojson option must be boolean');\n geojson = options.geojson;\n }\n\n var surfaceOptions = {\n geojson: geojson,\n layer: layer,\n mapid: mapid,\n fields: fields.join(','),\n interpolate: interpolate\n };\n\n if (Array.isArray(path)) {\n surfaceOptions.points = formatPoints(path);\n } else {\n surfaceOptions.encoded_polyline = path;\n }\n\n if (options.zoom !== undefined) {\n invariant(typeof options.zoom === 'number', 'zoom must be a number');\n surfaceOptions.z = options.zoom;\n }\n\n return this.client({\n path: API_SURFACE,\n params: surfaceOptions,\n callback: callback\n });\n};\n\nmodule.exports = MapboxSurface;\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar formatPoints = require('../format_points');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxDirections\n */\nvar MapboxDirections = makeService('MapboxDirections');\n\nvar API_DIRECTIONS = '/directions/v5/{account}/{profile}/{encodedWaypoints}.json{?access_token,alternatives,geometries,overview,radiuses,steps,continue_straight,bearings}';\n\n/**\n * Find directions from A to B, or between any number of locations.\n * Consult the [Mapbox Directions API](https://www.mapbox.com/api-documentation/#directions)\n * for more documentation.\n *\n * @param {Array<Object>} waypoints an array of objects with `latitude`\n * and `longitude` properties that represent waypoints in order. Up to\n * 25 waypoints can be specified.\n * @param {Object} [options={}] additional options meant to tune\n * the request\n * @param {string} [options.profile=driving] the directions\n * profile, which determines how to prioritize different routes.\n * Options are `'driving-traffic'` for automotive routing which factors\n * in current and historic traffic conditions to avoid slowdowns,\n * `'driving'`, which assumes transportation via an\n * automobile and will use highways, `'walking'`, which avoids\n * streets without sidewalks, and `'cycling'`, which prefers streets\n * with bicycle lanes and lower speed limits for transportation via\n * bicycle.\n * @param {string} [options.account=mapbox] Account for the profile.\n * @param {string} [options.alternatives=true] whether to generate\n * alternative routes along with the preferred route.\n * @param {string} [options.geometries=geojson] format for the returned\n * route. Options are `'geojson'`, `'polyline'`, or `false`: `polyline`\n * yields more compact responses which can be decoded on the client side.\n * [GeoJSON](http://geojson.org/), the default, is compatible with libraries\n * like [Mapbox GL](https://www.mapbox.com/mapbox-gl/),\n * Leaflet and [Mapbox.js](https://www.mapbox.com/mapbox.js/). `false`\n * omits the geometry entirely and only returns instructions.\n * @param {string} [options.overview=simplified] type of returned overview\n * geometry. Can be `full` (the most detailed geometry available), `simplified`\n * (a simplified version of the full geometry), or `false`.\n * @param {Array<number|string>} [options.radiuses] an array of integers in meters\n * indicating the maximum distance each coordinate is allowed to move when\n * snapped to a nearby road segment. There must be as many radiuses as there\n * are coordinates in the request. Values can be any number greater than `0` or\n * they can be the string `unlimited`. If no routable road is found within the\n * radius, a `NoSegment` error is returned.\n * @param {boolean} [options.steps=false] whether to return steps and\n * turn-by-turn instructions. Can be `true` or `false`.\n * @param {boolean} [options.continue_straight] sets allowed direction of travel\n * when departing intermediate waypoints. If `true` the route will continue in\n * the same direction of travel. If `false` the route may continue in the\n * opposite direction of travel. Defaults to `true` for the `driving` profile\n * and `false` for the `walking` and `cycling` profiles.\n * @param {Array<Array>} [options.bearings] used to filter the road\n * segment the waypoint will be placed on by direction and dictates the angle\n * of approach. This option should always be used in conjunction with the\n * `radiuses` option. The parameter takes two values per waypoint: the first is\n * an angle clockwise from true north between `0` and `360`. The second is the\n * range of degrees the angle can deviate by. We recommend a value of `45` or\n * `90` for the range, as bearing measurements tend to be inaccurate. This is\n * useful for making sure we reroute vehicles on new routes that continue\n * traveling in their current direction. A request that does this would provide\n * bearing and radius values for the first waypoint and leave the remaining\n * values empty.If provided, the list of bearings must be the same length as\n * the list of waypoints, but you can skip a coordinate and show its position\n * by providing an empty array.\n * @param {Function} callback called with (err, results)\n * @returns {Promise} response\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * mapboxClient.getDirections(\n * [\n * { latitude: 33.6, longitude: -95.4431 },\n * { latitude: 33.2, longitude: -95.4431 } ],\n * function(err, res) {\n * // res is a document with directions\n * });\n *\n * // With options\n * mapboxClient.getDirections([\n * { latitude: 33.6875431, longitude: -95.4431142 },\n * { latitude: 33.6875431, longitude: -95.4831142 }\n * ], {\n * profile: 'walking',\n * alternatives: false,\n * geometry: 'polyline'\n * }, function(err, results) {\n * console.log(results);\n * });\n */\nMapboxDirections.prototype.getDirections = function(waypoints, options, callback) {\n\n // permit the options argument to be omitted\n if (callback === undefined && typeof options === 'function') {\n callback = options;\n options = {};\n } else if (options === undefined) {\n options = {};\n }\n\n // typecheck arguments\n invariant(Array.isArray(waypoints), 'waypoints must be an array');\n invariant(typeof options === 'object', 'options must be an object');\n\n var encodedWaypoints = formatPoints(waypoints);\n\n var params = {\n encodedWaypoints: encodedWaypoints,\n profile: 'driving',\n account: 'mapbox',\n alternatives: true,\n steps: true,\n geometries: 'geojson'\n };\n\n if (options.profile) {\n invariant(typeof options.profile === 'string', 'profile option must be string');\n params.profile = options.profile;\n }\n\n if (options.account) {\n invariant(typeof options.account === 'string', 'account option must be string');\n params.account = options.account;\n }\n\n if (typeof options.alternatives !== 'undefined') {\n invariant(typeof options.alternatives === 'boolean', 'alternatives option must be boolean');\n params.alternatives = options.alternatives;\n }\n\n if (options.radiuses) {\n invariant(Array.isArray(options.radiuses), 'radiuses must be an array');\n invariant(options.radiuses.length === waypoints.length, 'There must be as many radiuses as there are waypoints in the request');\n params.radiuses = options.radiuses.join(';');\n }\n\n if (typeof options.steps !== 'undefined') {\n invariant(typeof options.steps === 'boolean', 'steps option must be boolean');\n params.steps = options.steps;\n }\n\n var allowedGeometries = ['polyline', 'geojson'];\n if (options.geometries) {\n invariant(allowedGeometries.indexOf(options.geometries) !== -1, 'geometries option must be ' + allowedGeometries);\n params.geometries = options.geometries;\n }\n\n var allowedOverviews = ['simplified', 'full'];\n if (options.overview) {\n invariant(allowedOverviews.indexOf(options.overview) !== -1, 'overview option must be ' + allowedOverviews);\n params.overview = options.overview;\n }\n\n if (typeof options.continue_straight !== 'undefined') {\n invariant(typeof options.continue_straight === 'boolean', 'continue_straight option must be boolean');\n params.continue_straight = options.continue_straight;\n }\n\n if (options.bearings) {\n invariant(Array.isArray(options.radiuses), 'bearings must be an array');\n invariant(options.bearings.length === waypoints.length, 'There must be as many bearings as there are waypoints in the request');\n params.bearings = options.bearings.join(';');\n }\n\n return this.client({\n path: API_DIRECTIONS,\n params: params,\n callback: callback\n });\n};\n\nmodule.exports = MapboxDirections;\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxUploads\n */\nvar MapboxUploads = module.exports = makeService('MapboxUploads');\n\nvar API_UPLOADS = '/uploads/v1/{owner}{?access_token}';\nvar API_UPLOAD = '/uploads/v1/{owner}/{upload}{?access_token}';\nvar API_UPLOAD_CREDENTIALS = '/uploads/v1/{owner}/credentials{?access_token}';\n\n/**\n * Retrieve a listing of uploads for a particular account.\n *\n * This request requires an access token with the uploads:list scope.\n *\n * @param {Function} callback called with (err, uploads)\n * @returns {Promise} response\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * mapboxClient.listUploads(function(err, uploads) {\n * console.log(uploads);\n * // [\n * // {\n * // \"complete\": true,\n * // \"tileset\": \"example.mbtiles\",\n * // \"error\": null,\n * // \"id\": \"abc123\",\n * // \"modified\": \"2014-11-21T19:41:10.000Z\",\n * // \"created\": \"2014-11-21T19:41:10.000Z\",\n * // \"owner\": \"example\",\n * // \"progress\": 1\n * // },\n * // {\n * // \"complete\": false,\n * // \"tileset\": \"example.foo\",\n * // \"error\": null,\n * // \"id\": \"xyz789\",\n * // \"modified\": \"2014-11-21T19:41:10.000Z\",\n * // \"created\": \"2014-11-21T19:41:10.000Z\",\n * // \"owner\": \"example\",\n * // \"progress\": 0\n * // }\n * // ]\n * });\n */\nMapboxUploads.prototype.listUploads = function(callback) {\n return this.client({\n path: API_UPLOADS,\n params: { owner: this.owner },\n callback: callback\n });\n};\n\n/**\n * Retrieve credentials that allow a new file to be staged on Amazon S3\n * while an upload is processed. All uploads must be staged using these\n * credentials before being uploaded to Mapbox.\n *\n * This request requires an access token with the uploads:write scope.\n *\n * @param {Function} callback called with (err, credentials)\n * @returns {Promise} response\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * mapboxClient.createUploadCredentials(function(err, credentials) {\n * console.log(credentials);\n * // {\n * // \"accessKeyId\": \"{accessKeyId}\",\n * // \"bucket\": \"somebucket\",\n * // \"key\": \"hij456\",\n * // \"secretAccessKey\": \"{secretAccessKey}\",\n * // \"sessionToken\": \"{sessionToken}\",\n * // \"url\": \"{s3 url}\"\n * // }\n *\n * // Use aws-sdk to stage the file on Amazon S3\n * var AWS = require('aws-sdk');\n * var s3 = new AWS.S3({\n * accessKeyId: credentials.accessKeyId,\n * secretAccessKey: credentials.secretAccessKey,\n * sessionToken: credentials.sessionToken,\n * region: 'us-east-1'\n * });\n * s3.putObject({\n * Bucket: credentials.bucket,\n * Key: credentials.key,\n * Body: fs.createReadStream('/path/to/file.mbtiles')\n * }, function(err, resp) {\n * });\n * });\n */\nMapboxUploads.prototype.createUploadCredentials = function(callback) {\n return this.client({\n path: API_UPLOAD_CREDENTIALS,\n params: { owner: this.owner },\n method: 'post',\n callback: callback\n });\n};\n\n/**\n * Create an new upload with a file previously staged on Amazon S3.\n *\n * This request requires an access token with the uploads:write scope.\n *\n * @param {Object} options an object that defines the upload's properties\n * @param {String} options.tileset id of the tileset to create or\n * replace. This must consist of an account id and a unique key\n * separated by a period. Reuse of a tileset value will overwrite\n * existing data. To avoid overwriting existing data, you must ensure\n * that you are using unique tileset ids.\n * @param {String} options.url https url of a file staged on Amazon S3.\n * @param {Function} callback called with (err, upload)\n * @returns {Promise} response\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * // Response from a call to createUploadCredentials\n * var credentials = {\n * \"accessKeyId\": \"{accessKeyId}\",\n * \"bucket\": \"somebucket\",\n * \"key\": \"hij456\",\n * \"secretAccessKey\": \"{secretAccessKey}\",\n * \"sessionToken\": \"{sessionToken}\",\n * \"url\": \"{s3 url}\"\n * };\n * mapboxClient.createUpload({\n * tileset: [accountid, 'mytileset'].join('.'),\n * url: credentials.url\n * }, function(err, upload) {\n * console.log(upload);\n * // {\n * // \"complete\": false,\n * // \"tileset\": \"example.markers\",\n * // \"error\": null,\n * // \"id\": \"hij456\",\n * // \"modified\": \"2014-11-21T19:41:10.000Z\",\n * // \"created\": \"2014-11-21T19:41:10.000Z\",\n * // \"owner\": \"example\",\n * // \"progress\": 0\n * // }\n * });\n */\nMapboxUploads.prototype.createUpload = function(options, callback) {\n invariant(typeof options === 'object', 'options must be an object');\n\n return this.client({\n path: API_UPLOADS,\n params: { owner: this.owner },\n entity: options,\n callback: callback\n });\n};\n\n/**\n * Retrieve state of an upload.\n *\n * This request requires an access token with the uploads:read scope.\n *\n * @param {String} upload id of the upload to read\n * @param {Function} callback called with (err, upload)\n * @returns {Promise} response\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * mapboxClient.readUpload('hij456', function(err, upload) {\n * console.log(upload);\n * // {\n * // \"complete\": true,\n * // \"tileset\": \"example.markers\",\n * // \"error\": null,\n * // \"id\": \"hij456\",\n * // \"modified\": \"2014-11-21T19:41:10.000Z\",\n * // \"created\": \"2014-11-21T19:41:10.000Z\",\n * // \"owner\": \"example\",\n * // \"progress\": 1\n * // }\n * });\n */\nMapboxUploads.prototype.readUpload = function(upload, callback) {\n invariant(typeof upload === 'string', 'upload must be a string');\n\n return this.client({\n path: API_UPLOAD,\n params: {\n owner: this.owner,\n upload: upload\n },\n callback: callback\n });\n};\n\n/**\n * Delete a completed upload. In-progress uploads cannot be deleted.\n *\n * This request requires an access token with the uploads:delete scope.\n *\n * @param {string} upload upload identifier\n * @param {Function} callback called with (err)\n * @returns {Promise} response\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * mapboxClient.deleteUpload('hij456', function(err) {\n * });\n */\nMapboxUploads.prototype.deleteUpload = function(upload, callback) {\n invariant(typeof upload === 'string', 'upload must be a string');\n\n return this.client({\n method: 'delete',\n path: API_UPLOAD,\n params: {\n owner: this.owner,\n upload: upload\n },\n callback: callback\n });\n};\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxMatching\n */\nvar MapboxMatching = makeService('MapboxMatching');\n\nvar API_MATCHING = '/matching/v5/{account}/{profile}/{coordinates}.json{?access_token,geometries,radiuses,steps,overview,timestamps,annotations}';\n\n/**\n * Snap recorded location traces to roads and paths from OpenStreetMap.\n * Consult the [Map Matching API](https://www.mapbox.com/api-documentation/#map-matching)\n * for more documentation.\n *\n * @param {Array<Array<number>>} coordinates an array of coordinate pairs\n * in [longitude, latitude] order. Up to 100 coordinates can be specified.\n * @param {Object} [options={}] additional options meant to tune\n * the request\n * @param {string} [options.profile=driving] the directions\n * profile, which determines how to prioritize different routes.\n * Options are `'driving'`, which assumes transportation via an\n * automobile and will use highways, `'walking'`, which avoids\n * streets without sidewalks, and `'cycling'`, which prefers streets\n * with bicycle lanes and lower speed limits for transportation via\n * bicycle.\n * @param {string} [options.geometries=geojson] format of the returned geometry.\n * Allowed values are: `'geojson'` (as LineString), `'polyline'` with\n * precision 5, `'polyline6'`. `'polyline'` yields more compact responses which\n * can be decoded on the client side. [GeoJSON](http://geojson.org/), the\n * default, is compatible with libraries like\n * [Mapbox GL](https://www.mapbox.com/mapbox-gl/), Leaflet and\n * [Mapbox.js](https://www.mapbox.com/mapbox.js/).\n * @param {Array<number>} [options.radiuses] an array of integers in meters\n * indicating the assumed precision of the used tracking device. There must be\n * as many radiuses as there are coordinates in the request. Values can be a\n * number between 0 and 30. Use higher numbers (20-30) for noisy traces and\n * lower numbers (1-10) for clean traces. The default value is 5.\n * @param {boolean} [options.steps=false] Whether to return steps and\n * turn-by-turn instructions. Can be `true` or `false`.\n * @param {string|boolean} [options.overview=simplified] type of returned\n * overview geometry. Can be `'full'` (the most detailed geometry available),\n * `'simplified'` (a simplified version of the full geometry), or `false`.\n * @param {Array<number>} [options.timestamps] an array of timestamps\n * corresponding to each coordinate provided in the request; must be numbers in\n * [Unix time](https://en.wikipedia.org/wiki/Unix_time)\n * (seconds since the Unix epoch). There must be as many timestamps as there\n * are coordinates in the request.\n * @param {Array<string>} [options.annotations] an array of fields that return\n * additional metadata for each coordinate along the match geometry. Can be any\n * of `'duration'`, `'distance'`, or `'nodes'`.\n * @param {Function} callback called with (err, results)\n * @returns {Promise} response\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * mapboxClient.matching([\n * [-95.4431142, 33.6875431],\n * [-95.0431142, 33.6875431],\n * [-95.0431142, 33.0875431],\n * [-95.0431142, 33.0175431],\n * [-95.4831142, 33.6875431]\n * ], {\n * overview: 'full'\n * }, function(err, res) {\n * // res is a match response object\n * });\n */\nMapboxMatching.prototype.matching = function(coordinates, options, callback) {\n\n // permit the options argument to be omitted\n if (callback === undefined && typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n // typecheck arguments\n invariant(Array.isArray(coordinates), 'coordinates must be an array');\n\n var params = {\n profile: 'driving',\n account: 'mapbox',\n geometries: 'geojson',\n coordinates: coordinates.join(';')\n };\n\n if (options.profile) {\n invariant(typeof options.profile === 'string', 'profile option must be string');\n params.profile = options.profile;\n }\n\n var allowedGeometries = ['polyline', 'geojson'];\n if (options.geometries) {\n invariant(allowedGeometries.indexOf(options.geometries) !== -1, 'geometries option must be ' + allowedGeometries);\n params.geometries = options.geometries;\n }\n\n if (options.radiuses) {\n invariant(Array.isArray(options.radiuses), 'radiuses must be an array');\n invariant(options.radiuses.length === coordinates.length, 'There must be as many radiuses as there are coordinates in the request');\n params.radiuses = options.radiuses.join(';');\n }\n\n if (typeof options.steps !== 'undefined') {\n invariant(typeof options.steps === 'boolean', 'steps option must be boolean');\n params.steps = options.steps;\n }\n\n var allowedOverview = ['full', 'simplified'];\n if (typeof options.overview !== 'undefined') {\n invariant(allowedOverview.indexOf(options.overview) !== -1 || options.overview === false, 'overview option must be ' + allowedOverview + ' or false');\n params.overview = options.overview;\n }\n\n if (options.timestamps) {\n invariant(Array.isArray(options.timestamps), 'timestamps must be an array');\n invariant(options.timestamps.length === coordinates.length, 'There must be as many timestamps as there are coordinates in the request');\n params.timestamps = options.timestamps.join(';');\n }\n\n if (options.annotations) {\n invariant(Array.isArray(options.annotations), 'annotations must be an array');\n params.annotations = options.annotations.join();\n }\n\n return this.client({\n path: API_MATCHING,\n params: params,\n method: 'get',\n callback: callback\n });\n};\n\nmodule.exports = MapboxMatching;\n","/* eslint-disable */\n/*\n * hat\n * written by James Halliday, licensed under MIT/X11\n * https://github.com/substack/node-hat\n */\nvar hat = module.exports = function (bits, base) {\n if (!base) base = 16;\n if (bits === undefined) bits = 128;\n if (bits <= 0) return '0';\n \n var digits = Math.log(Math.pow(2, bits)) / Math.log(base);\n for (var i = 2; digits === Infinity; i *= 2) {\n digits = Math.log(Math.pow(2, bits / i)) / Math.log(base) * i;\n }\n \n var rem = digits - Math.floor(digits);\n \n var res = '';\n \n for (var i = 0; i < Math.floor(digits); i++) {\n var x = Math.floor(Math.random() * base).toString(base);\n res = x + res;\n }\n \n if (rem) {\n var b = Math.pow(base, rem);\n var x = Math.floor(Math.random() * b).toString(base);\n res = x + res;\n }\n \n var parsed = parseInt(res, base);\n if (parsed !== Infinity && parsed >= Math.pow(2, bits)) {\n return hat(bits, base)\n }\n else return res;\n};\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar hat = require('../../vendor/hat');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxDatasets\n */\nvar MapboxDatasets = module.exports = makeService('MapboxDatasets');\n\nvar API_DATASET_DATASETS = '/datasets/v1/{owner}{?access_token,limit,fresh}';\nvar API_DATASET_DATASET = '/datasets/v1/{owner}/{dataset}{?access_token}';\nvar API_DATASET_FEATURES = '/datasets/v1/{owner}/{dataset}/features{?access_token,limit}';\nvar API_DATASET_FEATURE = '/datasets/v1/{owner}/{dataset}/features/{id}{?access_token}';\n\n/**\n * To retrieve a listing of datasets for a particular account.\n * This request requires an access token with the datasets:read scope.\n *\n * @param {Object} [opts={}] list options\n * @param {number} opts.limit limit, for paging\n * @param {boolean} opts.fresh whether to request fresh data\n * @param {Function} callback called with (err, datasets)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.listDatasets(function(err, datasets) {\n * console.log(datasets);\n * // [\n * // {\n * // \"owner\": {account},\n * // \"id\": {dataset id},\n * // \"name\": {dataset name},\n * // \"description\": {dataset description},\n * // \"created\": {timestamp},\n * // \"modified\": {timestamp}\n * // },\n * // {\n * // \"owner\": {account},\n * // \"id\": {dataset id},\n * // \"name\": {dataset name},\n * // \"description\": {dataset description},\n * // \"created\": {timestamp},\n * // \"modified\": {timestamp}\n * // }\n * // ]\n * });\n */\nMapboxDatasets.prototype.listDatasets = function(opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return this.client({\n path: API_DATASET_DATASETS,\n params: {\n limit: opts.limit,\n fresh: opts.fresh,\n owner: this.owner\n },\n callback: callback\n });\n};\n\n/**\n * To create a new dataset. Valid properties include title and description (not required).\n * This request requires an access token with the datasets:write scope.\n *\n * @param {object} [options] an object defining a dataset's properties\n * @param {string} [options.name] the dataset's name\n * @param {string} [options.description] the dataset's description\n * @param {Function} callback called with (err, dataset)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.createDataset({ name: 'foo', description: 'bar' }, function(err, dataset) {\n * console.log(dataset);\n * // {\n * // \"owner\": {account},\n * // \"id\": {dataset id},\n * // \"name\": \"foo\",\n * // \"description\": \"description\",\n * // \"created\": {timestamp},\n * // \"modified\": {timestamp}\n * // }\n * });\n */\nMapboxDatasets.prototype.createDataset = function(options, callback) {\n // permit the options argument to be omitted\n if (callback === undefined && typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n invariant(typeof options === 'object', 'options must be an object');\n\n return this.client({\n path: API_DATASET_DATASETS,\n params: {\n owner: this.owner\n },\n entity: options,\n callback: callback\n });\n};\n\n/**\n * To retrieve information about a particular dataset.\n * This request requires an access token with the datasets:read scope.\n *\n * @param {string} dataset the id for an existing dataset\n * @param {Function} callback called with (err, dataset)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.readDataset('dataset-id', function(err, dataset) {\n * console.log(dataset);\n * // {\n * // \"owner\": {account},\n * // \"id\": \"dataset-id\",\n * // \"name\": {dataset name},\n * // \"description\": {dataset description},\n * // \"created\": {timestamp},\n * // \"modified\": {timestamp}\n * // }\n * });\n */\nMapboxDatasets.prototype.readDataset = function(dataset, callback) {\n invariant(typeof dataset === 'string', 'dataset must be a string');\n\n return this.client({\n path: API_DATASET_DATASET,\n params: {\n owner: this.owner,\n dataset: dataset\n },\n callback: callback\n });\n};\n\n/**\n * To make updates to a particular dataset's properties.\n * This request requires an access token with the datasets:write scope.\n *\n * @param {string} dataset the id for an existing dataset\n * @param {object} [options] an object defining updates to the dataset's properties\n * @param {string} [options.name] the updated dataset's name\n * @param {string} [options.description] the updated dataset's description\n * @param {Function} callback called with (err, dataset)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * var options = { name: 'foo' };\n * client.updateDataset('dataset-id', options, function(err, dataset) {\n * console.log(dataset);\n * // {\n * // \"owner\": {account},\n * // \"id\": \"dataset-id\",\n * // \"name\": \"foo\",\n * // \"description\": {dataset description},\n * // \"created\": {timestamp},\n * // \"modified\": {timestamp}\n * // }\n * });\n */\nMapboxDatasets.prototype.updateDataset = function(dataset, options, callback) {\n invariant(typeof dataset === 'string', 'dataset must be a string');\n invariant(typeof options === 'object', 'options must be an object');\n invariant(!!options.name || !!options.description, 'options must include a name or a description');\n\n return this.client({\n path: API_DATASET_DATASET,\n params: {\n owner: this.owner,\n dataset: dataset\n },\n method: 'patch',\n entity: options,\n callback: callback\n });\n};\n\n/**\n * To delete a particular dataset.\n * This request requires an access token with the datasets:write scope.\n *\n * @param {string} dataset the id for an existing dataset\n * @param {Function} callback called with (err)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.deleteDataset('dataset-id', function(err) {\n * if (!err) console.log('deleted!');\n * });\n */\nMapboxDatasets.prototype.deleteDataset = function(dataset, callback) {\n invariant(typeof dataset === 'string', 'dataset must be a string');\n\n return this.client({\n path: API_DATASET_DATASET,\n params: {\n owner: this.owner,\n dataset: dataset\n },\n method: 'delete',\n callback: callback\n });\n};\n\n/**\n * Retrive a list of the features in a particular dataset. The response body will be a GeoJSON FeatureCollection.\n * This request requires an access token with the datasets:read scope.\n *\n * @param {string} dataset the id for an existing dataset\n * @param {object} [options] an object for passing pagination arguments\n * @param {number} [options.limit] The maximum number of objects to return. This value must be between 1 and 100. The API will attempt to return the requested number of objects, but receiving fewer objects does not necessarily signal the end of the collection. Receiving an empty page of results is the only way to determine when you are at the end of a collection.\n * @param {Function} callback called with (err, collection)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.listFeatures('dataset-id', options, function(err, collection) {\n * console.log(collection);\n * {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"id\": {feature id},\n * \"type\": \"Feature\",\n * \"properties\": {feature properties}\n * \"geometry\": {feature geometry}\n * },\n * {\n * \"id\": {feature id},\n * \"type\": \"Feature\",\n * \"properties\": {feature properties}\n * \"geometry\": {feature geometry}\n * }\n * ]\n * }\n * });\n */\nMapboxDatasets.prototype.listFeatures = function(dataset, options, callback) {\n // permit the options argument to be omitted\n if (callback === undefined && typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n invariant(typeof dataset === 'string', 'dataset must be a string');\n invariant(typeof options === 'object', 'options must be a object');\n\n var params = {\n owner: this.owner,\n dataset: dataset\n };\n\n if (options.limit) {\n invariant(typeof options.limit === 'number', 'limit option must be a number');\n params.limit = options.limit;\n }\n\n return this.client({\n path: API_DATASET_FEATURES,\n params: params,\n callback: callback\n });\n};\n\n/**\n * Insert a feature into a dataset. This can be a new feature, or overwrite an existing one.\n * If overwriting an existing feature, make sure that the feature's `id` property correctly identifies\n * the feature you wish to overwrite.\n * For new features, specifying an `id` is optional. If you do not specify an `id`, one will be assigned\n * and returned as part of the response.\n * This request requires an access token with the datasets:write scope.\n * There are a number of limits to consider when making this request:\n * - a single feature cannot be larger than 500 KB\n * - the dataset must not exceed 2000 total features\n * - the dataset must not exceed a total of 5 MB\n *\n * @param {object} feature the feature to insert. Must be a valid GeoJSON feature per http://geojson.org/geojson-spec.html#feature-objects\n * @param {string} dataset the id for an existing dataset\n * @param {Function} callback called with (err, feature)\n * @returns {Promise} response\n * @example\n * // Insert a brand new feature without an id\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * var feature = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"name\": \"Null Island\"\n * },\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [0, 0]\n * }\n * };\n * client.insertFeature(feature, 'dataset-id', function(err, feature) {\n * console.log(feature);\n * // {\n * // \"id\": {feature id},\n * // \"type\": \"Feature\",\n * // \"properties\": {\n * // \"name\": \"Null Island\"\n * // },\n * // \"geometry\": {\n * // \"type\": \"Point\",\n * // \"coordinates\": [0, 0]\n * // }\n * // }\n * });\n * @example\n * // Insert a brand new feature with an id, or overwrite an existing feature at that id\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * var feature = {\n * \"id\": \"feature-id\",\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"name\": \"Null Island\"\n * },\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [0, 0]\n * }\n * };\n * client.insertFeature(feature, 'dataset-id', function(err, feature) {\n * console.log(feature);\n * // {\n * // \"id\": \"feature-id\",\n * // \"type\": \"Feature\",\n * // \"properties\": {\n * // \"name\": \"Null Island\"\n * // },\n * // \"geometry\": {\n * // \"type\": \"Point\",\n * // \"coordinates\": [0, 0]\n * // }\n * // }\n * });\n */\nMapboxDatasets.prototype.insertFeature = function(feature, dataset, callback) {\n invariant(typeof dataset === 'string', 'dataset must be a string');\n\n var id = feature.id || hat();\n invariant(typeof id === 'string', 'The GeoJSON feature\\'s id must be a string');\n\n return this.client({\n path: API_DATASET_FEATURE,\n params: {\n owner: this.owner,\n dataset: dataset,\n id: id\n },\n method: 'put',\n entity: feature,\n callback: callback\n });\n};\n\n/**\n * Read an existing feature from a dataset.\n * This request requires an access token with the datasets:read scope.\n *\n * @param {string} id the `id` of the feature to read\n * @param {string} dataset the id for an existing dataset\n * @param {Function} callback called with (err, feature)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.readFeature('feature-id', 'dataset-id', function(err, feature) {\n * console.log(feature);\n * // {\n * // \"id\": \"feature-id\",\n * // \"type\": \"Feature\",\n * // \"properties\": {\n * // \"name\": \"Null Island\"\n * // },\n * // \"geometry\": {\n * // \"type\": \"Point\",\n * // \"coordinates\": [0, 0]\n * // }\n * // }\n * });\n */\nMapboxDatasets.prototype.readFeature = function(id, dataset, callback) {\n invariant(typeof id === 'string', 'id must be a string');\n invariant(typeof dataset === 'string', 'dataset must be a string');\n\n return this.client({\n path: API_DATASET_FEATURE,\n params: {\n owner: this.owner,\n dataset: dataset,\n id: id\n },\n callback: callback\n });\n};\n\n/**\n * Delete an existing feature from a dataset.\n * This request requires an access token with the datasets:write scope.\n *\n * @param {string} id the `id` of the feature to delete\n * @param {string} dataset the id for an existing dataset\n * @param {Function} callback called with (err)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.deleteFeature('feature-id', 'dataset-id', function(err, feature) {\n * if (!err) console.log('deleted!');\n * });\n */\nMapboxDatasets.prototype.deleteFeature = function(id, dataset, callback) {\n invariant(typeof id === 'string', 'id must be a string');\n invariant(typeof dataset === 'string', 'dataset must be a string');\n\n return this.client({\n path: API_DATASET_FEATURE,\n params: {\n owner: this.owner,\n dataset: dataset,\n id: id\n },\n method: 'delete',\n callback: callback\n })};\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar formatPoints = require('../format_points');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxMatrix\n */\nvar MapboxMatrix = makeService('MapboxMatrix');\n\nvar API_MATRIX = '/directions-matrix/v1/mapbox/{profile}/{encodedWaypoints}.json{?access_token}';\n\n/**\n * Compute a table of travel-time estimates between a set of waypoints.\n * Consult the [Mapbox Matrix API](https://www.mapbox.com/api-documentation/#matrix)\n * for more documentation and limits.\n *\n * @param {Array<Object>} waypoints an array of coordinate objects\n * in the form `{longitude: 0, latitude: 0}`.\n * @param {Object} [options={}] additional options meant to tune\n * the request\n * @param {string} [options.profile=driving] the directions\n * profile, which determines how to prioritize different routes.\n * Options are `'driving'`, which assumes transportation via an\n * automobile and will use highways, `'walking'`, which avoids\n * streets without sidewalks, and `'cycling'`, which prefers streets\n * with bicycle lanes and lower speed limits for transportation via\n * bicycle. The `'driving-traffic'` profile is not supported.\n * @param {Function} callback called with (err, results)\n * @returns {Promise} response\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * // Without options\n * mapboxClient.getMatrix([{\n * longitude: -122.42,\n * latitude: 37.78\n * },\n * {\n * longitude: -122.45,\n * latitude: 37.91\n * },\n * {\n * longitude: -122.48,\n * latitude: 37.73\n * }], {\n * }, function(err, results) {\n * console.log(results);\n * });\n *\n * // With options\n * mapboxClient.getMatrix([{\n * longitude: -122.42,\n * latitude: 37.78\n * },\n * {\n * longitude: -122.45,\n * latitude: 37.91\n * },\n * {\n * longitude: -122.48,\n * latitude: 37.73\n * }], { profile: 'walking' }, {\n * }, function(err, results) {\n * console.log(results);\n * });\n *\n * // Results is an object like:\n * { durations:\n * [ [ 0, 1196, 3977, 3415, 5196 ],\n * [ 1207, 0, 3775, 3213, 4993 ],\n * [ 3976, 3774, 0, 2650, 2579 ],\n * [ 3415, 3212, 2650, 0, 3869 ],\n * [ 5208, 5006, 2579, 3882, 0 ] ] }\n *\n * // If the coordinates include an un-routable place, then\n * // the table may contain 'null' values to indicate this, like\n * { durations:\n * [ [ 0, 11642, 57965, null, 72782 ],\n * [ 11642, 0, 56394, null, 69918 ],\n * [ 57965, 56394, 0, null, 19284 ],\n * [ null, null, null, 0, null ],\n * [ 72782, 69918, 19284, null, 0 ] ] }\n */\n\nMapboxMatrix.prototype.getMatrix = function(waypoints, options, callback) {\n\n // permit the options argument to be omitted\n if (callback === undefined && typeof options === 'function') {\n callback = options;\n options = {};\n } else if (options === undefined) {\n options = {};\n }\n\n // typecheck arguments\n invariant(Array.isArray(waypoints), 'waypoints must be an array');\n invariant(typeof options === 'object', 'options must be an object');\n\n var encodedWaypoints = formatPoints(waypoints);\n\n var params = {\n encodedWaypoints: encodedWaypoints,\n profile: 'driving'\n };\n\n if (options.profile) {\n invariant(typeof options.profile === 'string', 'profile option must be string');\n params.profile = options.profile;\n }\n\n return this.client({\n path: API_MATRIX,\n params: params,\n callback: callback\n });\n};\n\nmodule.exports = MapboxMatrix;\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxTilestats\n */\nvar MapboxTilestats = module.exports = makeService('MapboxTilestats');\n\nvar API_TILESTATS_STATISTICS = '/tilestats/v1/{owner}/{tileset}{?access_token}';\n\n/**\n * To retrieve statistics about a specific tileset.\n *\n * @param {String} tileset - the id for the tileset\n * @param {Function} callback called with (err, tilestats)\n * @returns {Promise} response\n * @example\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.getTilestats('tileset-id', function(err, info) {\n * console.log(info);\n * // {\n * // \"layerCount\": {layer count},\n * // \"layers\": [\n * // {\n * // \"layer\": {layer name},\n * // \"geometry\": {dominant geometry},\n * // \"count\": {feature count},\n * // \"attributeCount\": {attribute count}\n * // \"attributes\": [\n * // {\n * // \"attribute\": {attribute name},\n * // \"type\": {attribute type},\n * // \"count\": {unique value count},\n * // \"min\": {minimum value if type is number},\n * // \"max\": {maximum value if type is number},\n * // \"values\": [{...unique values}]\n * // }\n * // ]\n * // }\n * // ]\n * // }\n * });\n */\nMapboxTilestats.prototype.getTilestats = function(tileset, callback) {\n invariant(typeof tileset === 'string', 'tileset must be a string');\n\n var owner = tileset.split('.')[0];\n if (owner === tileset) owner = this.owner;\n\n return this.client({\n path: API_TILESTATS_STATISTICS,\n params: {\n owner: owner,\n tileset: tileset\n },\n callback: callback\n });\n};\n\n\n/**\n * To create or update statistics about a specific tileset.\n *\n * @param {String} tileset - the id for the tileset\n * @param {object} statistics - the statistics to upload\n * @param {Function} callback called with (err, tilestats)\n * @returns {Promise} response\n * @example\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.getTilestats('tileset-id', function(err, stats) {\n * console.log(stats);\n * // {\n * // \"account\": {account}\n * // ... see stats example above (for Tilestats#getTilestats)\n * // }\n * });\n */\nMapboxTilestats.prototype.putTilestats = function(tileset, statistics, callback) {\n invariant(typeof tileset === 'string', 'tileset must be a string');\n\n var owner = tileset.split('.')[0];\n if (owner === tileset) owner = this.owner;\n\n return this.client({\n path: API_TILESTATS_STATISTICS,\n params: {\n owner: owner,\n tileset: tileset\n },\n entity: statistics,\n method: 'put',\n callback: callback\n });\n};\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar uriTemplate = require('rest/util/uriTemplate');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxStyles\n */\nvar MapboxStyles = module.exports = makeService('MapboxStyles');\n\nvar API_STYLES_LIST = '/styles/v1/{owner}{?access_token}';\nvar API_STYLES_CREATE = '/styles/v1/{owner}{?access_token}';\nvar API_STYLES_READ = '/styles/v1/{owner}/{styleid}{?access_token}';\nvar API_STYLES_UPDATE = '/styles/v1/{owner}/{styleid}{?access_token}';\nvar API_STYLES_DELETE = '/styles/v1/{owner}/{styleid}{?access_token}';\nvar API_STYLES_EMBED = '/styles/v1/{owner}/{styleid}.html{?access_token,zoomwheel,title}';\nvar API_STYLES_SPRITE = '/styles/v1/{owner}/{styleid}/sprite{+retina}{.format}{?access_token}';\nvar API_STYLES_SPRITE_ICON = '/styles/v1/{owner}/{styleid}/sprite/{iconName}{?access_token}';\nvar API_STYLES_FONT_GLYPH_RANGES = '/fonts/v1/{owner}/{font}/{start}-{end}.pbf{?access_token}';\n\n/**\n * To retrieve a listing of styles for a particular account.\n *\n * @param {Function} callback called with (err, styles)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.listStyles(function(err, styles) {\n * console.log(styles);\n * // [{ version: 8,\n * // name: 'Light',\n * // center: [ -77.0469979435026, 38.898634927602814 ],\n * // zoom: 12.511766533145998,\n * // bearing: 0,\n * // pitch: 0,\n * // created: '2016-02-09T14:26:15.059Z',\n * // id: 'STYLEID',\n * // modified: '2016-02-09T14:28:31.253Z',\n * // owner: '{username}' },\n * // { version: 8,\n * // name: 'Dark',\n * // created: '2015-08-28T18:05:22.517Z',\n * // id: 'STYILEID',\n * // modified: '2015-08-28T18:05:22.517Z',\n * // owner: '{username}' }]\n * });\n */\nMapboxStyles.prototype.listStyles = function(callback) {\n return this.client({\n path: API_STYLES_LIST,\n params: {\n owner: this.owner\n },\n callback: callback\n });\n};\n\n/**\n * Create a style, given the style as a JSON object.\n *\n * @param {Object} style Mapbox GL Style Spec object\n * @param {Function} callback called with (err, createdStyle)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * var style = {\n * 'version': 8,\n * 'name': 'My Awesome Style',\n * 'metadata': {},\n * 'sources': {},\n * 'layers': [],\n * 'glyphs': 'mapbox://fonts/{owner}/{fontstack}/{range}.pbf'\n * };\n * client.createStyle(style, function(err, createdStyle) {\n * console.log(createdStyle);\n * });\n */\nMapboxStyles.prototype.createStyle = function(style, callback) {\n return this.client({\n path: API_STYLES_CREATE,\n params: {\n owner: this.owner\n },\n entity: style,\n callback: callback\n });\n};\n\n/**\n * Update a style, given the style as a JSON object.\n *\n * @param {Object} style Mapbox GL Style Spec object\n * @param {string} styleid style id\n * @param {Function} callback called with (err, createdStyle)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * var style = {\n * 'version': 8,\n * 'name': 'My Awesome Style',\n * 'metadata': {},\n * 'sources': {},\n * 'layers': [],\n * 'glyphs': 'mapbox://fonts/{owner}/{fontstack}/{range}.pbf'\n * };\n * client.updateStyle(style, 'style-id', function(err, createdStyle) {\n * console.log(createdStyle);\n * });\n */\nMapboxStyles.prototype.updateStyle = function(style, styleid, callback) {\n invariant(typeof styleid === 'string', 'style id must be a string');\n return this.client({\n path: API_STYLES_UPDATE,\n params: {\n owner: this.owner,\n styleid: styleid\n },\n entity: style,\n method: 'patch',\n callback: callback\n });\n};\n\n/**\n * Deletes a particular style.\n *\n * @param {string} styleid the id for an existing style\n * @param {Function} callback called with (err)\n * @returns {Promise} a promise with the response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.deleteStyle('style-id', function(err) {\n * if (!err) console.log('deleted!');\n * });\n */\nMapboxStyles.prototype.deleteStyle = function(styleid, callback) {\n invariant(typeof styleid === 'string', 'styleid must be a string');\n\n return this.client({\n path: API_STYLES_DELETE,\n params: {\n owner: this.owner,\n styleid: styleid\n },\n method: 'delete',\n callback: callback\n });\n};\n\n/**\n * Reads a particular style.\n *\n * @param {string} styleid the id for an existing style\n * @param {Function} callback called with (err, style)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.readStyle('style-id', function(err, style) {\n * if (!err) console.log(style);\n * });\n */\nMapboxStyles.prototype.readStyle = function(styleid, callback) {\n invariant(typeof styleid === 'string', 'styleid must be a string');\n\n return this.client({\n path: API_STYLES_READ,\n params: {\n owner: this.owner,\n styleid: styleid\n },\n callback: callback\n });\n};\n\n/**\n * Read sprite\n *\n * @param {string} styleid the id for an existing style\n * @param {Object=} options optional options\n * @param {boolean} options.retina whether the sprite JSON should be for a\n * retina sprite.\n * @param {Function} callback called with (err)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.readSprite('style-id', {\n * retina: true\n * }, function(err) {\n * if (!err) console.log('deleted!');\n * });\n */\nMapboxStyles.prototype.readSprite = function(styleid, options, callback) {\n invariant(typeof styleid === 'string', 'styleid must be a string');\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n var retina = '';\n if (options.retina) {\n invariant(typeof options.retina === 'boolean',\n 'retina option must be a boolean value');\n if (options.retina) {\n retina = '@2x';\n }\n }\n\n var format = 'json';\n if (options.format) {\n invariant(options.format === 'json' ||\n options.format === 'png',\n 'format parameter must be either json or png');\n format = options.format;\n }\n\n return this.client({\n path: API_STYLES_SPRITE,\n params: {\n owner: this.owner,\n retina: retina,\n format: format,\n styleid: styleid\n },\n callback: callback\n });\n};\n\n/**\n * Get font glyph ranges\n *\n * @param {string} font or fonts\n * @param {number} start character code of starting glyph\n * @param {number} end character code of last glyph. typically the same\n * as start + 255\n * @param {Function} callback called with (err)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.readFontGlyphRanges('Arial Unicode', 0, 255, function(err, ranges) {\n * if (!err) console.log(ranges);\n * });\n */\nMapboxStyles.prototype.readFontGlyphRanges = function(font, start, end, callback) {\n invariant(typeof font === 'string', 'font must be a string');\n invariant(typeof start === 'number', 'start must be a number');\n invariant(typeof end === 'number', 'end must be a number');\n\n return this.client({\n path: API_STYLES_FONT_GLYPH_RANGES,\n params: {\n owner: this.owner,\n font: font,\n start: start,\n end: end\n },\n callback: callback\n });\n};\n\n/**\n * Add an icon to a sprite.\n *\n * @param {string} styleid the id for an existing style\n * @param {string} iconName icon's name\n * @param {Buffer} icon icon content as a buffer\n * @param {Function} callback called with (err)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var fs = require('fs');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.addIcon('style-id', 'icon-name', fs.readFileSync('icon.png'), function(err) {\n * if (!err) console.log('added icon!');\n * });\n */\nMapboxStyles.prototype.addIcon = function(styleid, iconName, icon, callback) {\n invariant(typeof styleid === 'string', 'style must be a string');\n invariant(typeof iconName === 'string', 'icon name must be a string');\n invariant(Buffer.isBuffer(icon), 'icon must be a Buffer');\n\n return this.client({\n path: API_STYLES_SPRITE_ICON,\n params: {\n owner: this.owner,\n styleid: styleid,\n iconName: iconName\n },\n headers: {\n 'Content-Type': 'text/plain'\n },\n entity: icon,\n method: 'put',\n callback: callback\n });\n};\n\n/**\n * Delete an icon from a sprite.\n *\n * @param {string} styleid the id for an existing style\n * @param {string} iconName icon's name\n * @param {Function} callback called with (err)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.deleteIcon('style-id', 'icon-name', function(err) {\n * if (!err) console.log('deleted icon!');\n * });\n */\nMapboxStyles.prototype.deleteIcon = function(styleid, iconName, callback) {\n invariant(typeof styleid === 'string', 'style must be a string');\n invariant(typeof iconName === 'string', 'icon name must be a string');\n\n return this.client({\n path: API_STYLES_SPRITE_ICON,\n params: {\n owner: this.owner,\n styleid: styleid,\n iconName: iconName\n },\n method: 'delete',\n callback: callback\n });\n};\n\n/**\n * Embed a style.\n *\n * @param {string} styleid the id for an existing style\n * @param {Object} options optional params\n * @param {boolean} [options.title=false] If true, shows a title box in upper right\n * corner with map title and owner\n * @param {boolean} [options.zoomwheel=true] Disables zooming with mouse scroll wheel\n * @returns {string} URL of style embed page\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * var url = client.embedStyle('style-id');\n */\nMapboxStyles.prototype.embedStyle = function(styleid, options) {\n invariant(typeof styleid === 'string', 'style must be a string');\n\n var params = {\n styleid: styleid,\n access_token: this.accessToken,\n owner: this.owner,\n title: false,\n zoomwheel: true\n };\n\n if (options) {\n if (options.title !== undefined) {\n invariant(typeof options.title === 'boolean', 'title must be a boolean');\n params.title = options.title;\n }\n if (options.zoomwheel !== undefined) {\n invariant(typeof options.zoomwheel === 'boolean', 'zoomwheel must be a boolean');\n params.zoomwheel = options.zoomwheel;\n }\n }\n\n return this.endpoint + uriTemplate.expand(API_STYLES_EMBED, params);\n};\n","'use strict';\n\n/*\n * polyline\n *\n * https://github.com/mapbox/polyline\n *\n * by John Firebaugh, Tom MacWright, and contributors\n * licensed under BSD 3-clause\n */\n\n/*\n * Based off of [the offical Google document](https://developers.google.com/maps/documentation/utilities/polylinealgorithm)\n *\n * Some parts from [this implementation](http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/PolylineEncoder.js)\n * by [Mark McClure](http://facstaff.unca.edu/mcmcclur/)\n *\n * @module polyline\n */\n\nvar polyline = {};\n\nfunction encode(coordinate, factor) {\n coordinate = Math.round(coordinate * factor);\n coordinate <<= 1;\n if (coordinate < 0) {\n coordinate = ~coordinate;\n }\n var output = '';\n while (coordinate >= 0x20) {\n output += String.fromCharCode((0x20 | (coordinate & 0x1f)) + 63);\n coordinate >>= 5;\n }\n output += String.fromCharCode(coordinate + 63);\n return output;\n}\n\n/**\n * Encodes the given [latitude, longitude] coordinates array.\n *\n * @param {Array.<Array.<Number>>} coordinates\n * @param {Number} precision\n * @returns {String}\n */\npolyline.encode = function(coordinates, precision) {\n if (!coordinates.length) { return ''; }\n\n var factor = Math.pow(10, precision || 5),\n output = encode(coordinates[0][0], factor) + encode(coordinates[0][1], factor);\n\n for (var i = 1; i < coordinates.length; i++) {\n var a = coordinates[i], b = coordinates[i - 1];\n output += encode(a[0] - b[0], factor);\n output += encode(a[1] - b[1], factor);\n }\n\n return output;\n};\n\nfunction flipped(coords) {\n var flipped = [];\n for (var i = 0; i < coords.length; i++) {\n flipped.push(coords[i].slice().reverse());\n }\n return flipped;\n}\n\n/**\n * Encodes a GeoJSON LineString feature/geometry.\n *\n * @param {Object} geojson\n * @param {Number} precision\n * @returns {String}\n */\npolyline.fromGeoJSON = function(geojson, precision) {\n if (geojson && geojson.type === 'Feature') {\n geojson = geojson.geometry;\n }\n if (!geojson || geojson.type !== 'LineString') {\n throw new Error('Input must be a GeoJSON LineString');\n }\n return polyline.encode(flipped(geojson.coordinates), precision);\n};\n\nmodule.exports = polyline;\n","'use strict';\n\nvar invariant = require('../vendor/invariant'),\n invariantLocation = require('./invariant_location'),\n polyline = require('../vendor/polyline');\n\n/**\n * Given a list of markers, encode them for display\n * @param {Array<Object>} markers a list of markers\n * @returns {string} encoded markers\n * @private\n */\nfunction encodeMarkers(markers) {\n return markers.map(function(marker) {\n invariantLocation(marker);\n var size = marker.size || 'l';\n var symbol = marker.symbol || 'circle';\n return 'pin-' + size + '-' + symbol + '(' +\n marker.longitude + ',' + marker.latitude + ')';\n }).join(',');\n}\n\nmodule.exports.encodeMarkers = encodeMarkers;\n\n/**\n * Given a path and style, encode it for display\n * @param {Object} path an object of a path and style\n * @param {Object} path.geojson a GeoJSON LineString\n * @param {Object} [path.style={}] style parameters\n * @returns {string} encoded path as polyline\n * @private\n */\nfunction encodePath(path) {\n invariant(path.geojson.type === 'LineString', 'path line must be a LineString');\n var encoded = polyline.fromGeoJSON(path.geojson);\n\n var style = '';\n if (path.style) {\n if (path.style.strokewidth !== undefined) style += '-' + path.style.strokewidth;\n if (path.style.strokecolor !== undefined) style += '+' + path.style.strokecolor;\n }\n return 'path' + style + '(' + encoded + ')';\n}\n\nmodule.exports.encodePath = encodePath;\n\n/**\n * Given a GeoJSON object, encode it for a static map.\n * @param {Object} geojson a geojson object\n * @returns {string} encoded geojson as string\n * @private\n */\nfunction encodeGeoJSON(geojson) {\n var encoded = JSON.stringify(geojson);\n invariant(encoded.length < 4096, 'encoded GeoJSON must be shorter than 4096 characters long');\n return 'geojson(' + encoded + ')';\n}\n\nmodule.exports.encodeGeoJSON = encodeGeoJSON;\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar xtend = require('../../vendor/xtend').extend;\nvar uriTemplate = require('rest/util/uriTemplate');\nvar encodeOverlay = require('../encode_overlay');\nvar invariantLocation = require('../invariant_location');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxStatic\n */\nvar MapboxStatic = makeService('MapboxStatic');\n\nvar API_STATIC = '/styles/v1/{username}/{styleid}/static{+overlay}/{+xyzbp}/{width}x{height}{+retina}{?access_token,attribution,logo,before_layer}';\nvar API_STATIC_CLASSIC = '/v4/{mapid}{+overlay}/{+xyz}/{width}x{height}{+retina}{.format}{?access_token}';\n\n/**\n * Determine a URL for a static map image, using the [Mapbox Static Map API](https://www.mapbox.com/api-documentation/#static).\n *\n * @param {string} username Mapbox username\n * @param {string} styleid Mapbox Style ID\n * @param {number} width width of the image\n * @param {number} height height of the image\n *\n * @param {Object|string} position either an object with longitude and latitude members, or the string 'auto'\n * @param {number} position.longitude east, west bearing\n * @param {number} position.latitude north, south bearing\n * @param {number} position.zoom map zoom level\n * @param {number} position.bearing map bearing in degrees between 0 and 360\n * @param {number} position.pitch map pitch in degrees between 0 (straight down, no pitch) and 60 (maximum pitch)\n *\n * @param {Object} options all map options\n * @param {boolean} [options.retina=false] whether to double image pixel density\n *\n * @param {Array<Object>} [options.markers=[]] an array of simple marker objects as an overlay\n * @param {Object} [options.geojson={}] geojson data for the overlay\n * @param {Object} [options.path={}] a path and\n * @param {Array<Object>} options.path.geojson data for the path as an array of longitude, latitude objects\n * @param {Array<Object>} options.path.style optional style definitions for a path\n * @param {boolean} options.attribution controlling whether there is attribution on the image; defaults to true\n * @param {boolean} options.logo controlling whether there is a Mapbox logo on the image; defaults to true\n * @param {string} options.before_layer value for controlling where the overlay is inserted in the style\n *\n * @returns {string} static map url\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n * var url = mapboxClient.getStaticURL('mapbox', 'streets-v10', 600, 400, {\n * longitude: 151.22,\n * latitude: -33.87,\n * zoom: 11\n * }, {\n * markers: [{ longitude: 151.22, latitude: -33.87 }],\n * before_layer: 'housenum-label'\n * });\n * // url = https://api.mapbox.com/styles/v1/mapbox/streets-v10/static/pin-l-circle(151.22,-33.87)/151.22,-33.87,11/600x400?access_token=ACCESS_TOKEN&before_layer=housenum-label\n */\nMapboxStatic.prototype.getStaticURL = function(username, styleid, width, height, position, options) {\n invariant(typeof username === 'string', 'username option required and must be a string');\n invariant(typeof styleid === 'string', 'styleid option required and must be a string');\n invariant(typeof width === 'number', 'width option required and must be a number');\n invariant(typeof height === 'number', 'height option required and must be a number');\n\n var defaults = {\n retina: ''\n };\n\n var xyzbp;\n\n if (position === 'auto') {\n xyzbp = 'auto';\n } else {\n invariantLocation(position);\n xyzbp = position.longitude + ',' + position.latitude + ',' + position.zoom;\n if ('pitch' in position) {\n xyzbp += ',' + (position.bearing || 0) + ',' + position.pitch;\n } else if ('bearing' in position) {\n xyzbp += ',' + position.bearing;\n }\n }\n\n var userOptions = {};\n\n if (options) {\n invariant(typeof options === 'object', 'options must be an object');\n if (options.format) {\n invariant(typeof options.format === 'string', 'format must be a string');\n userOptions.format = options.format;\n }\n if (options.retina) {\n invariant(typeof options.retina === 'boolean', 'retina must be a boolean');\n userOptions.retina = options.retina;\n }\n if (options.markers) {\n userOptions.overlay = '/' + encodeOverlay.encodeMarkers(options.markers);\n } else if (options.geojson) {\n userOptions.overlay = '/' + encodeOverlay.encodeGeoJSON(options.geojson);\n } else if (options.path) {\n userOptions.overlay = '/' + encodeOverlay.encodePath(options.path);\n }\n if ('attribution' in options) {\n invariant(typeof options.attribution === 'boolean', 'attribution must be a boolean');\n userOptions.attribution = options.attribution;\n }\n if ('logo' in options) {\n invariant(typeof options.logo === 'boolean', 'logo must be a boolean');\n userOptions.logo = options.logo;\n }\n if (options.before_layer) {\n invariant(typeof options.before_layer === 'string', 'before_layer must be a string');\n userOptions.before_layer = options.before_layer;\n }\n }\n\n var params = xtend(defaults, userOptions, {\n username: username,\n styleid: styleid,\n width: width,\n xyzbp: xyzbp,\n height: height,\n access_token: this.accessToken\n });\n\n if (params.retina === true) {\n params.retina = '@2x';\n }\n\n return this.endpoint + uriTemplate.expand(API_STATIC, params);\n};\n\n/**\n * Determine a URL for a static classic map image, using the [Mapbox Static (Classic) Map API](https://www.mapbox.com/api-documentation/pages/static_classic.html).\n *\n * @param {string} mapid a Mapbox map id in username.id form\n * @param {number} width width of the image\n * @param {number} height height of the image\n *\n * @param {Object|string} position either an object with longitude and latitude members, or the string 'auto'\n * @param {number} position.longitude east, west bearing\n * @param {number} position.latitude north, south bearing\n * @param {number} position.zoom zoom level\n *\n * @param {Object} options all map options\n * @param {string} [options.format=png] image format. can be jpg70, jpg80, jpg90, png32, png64, png128, png256\n * @param {boolean} [options.retina=false] whether to double image pixel density\n *\n * @param {Array<Object>} [options.markers=[]] an array of simple marker objects as an overlay\n * @param {Object} [options.geojson={}] geojson data for the overlay\n * @param {Object} [options.path={}] a path and\n * @param {Array<Object>} options.path.geojson data for the path as an array of longitude, latitude objects\n * @param {Array<Object>} options.path.style optional style definitions for a path\n *\n * @returns {string} static classic map url\n * @example\n * var mapboxClient = new MapboxClient('ACCESSTOKEN');\n */\nMapboxStatic.prototype.getStaticClassicURL = function(mapid, width, height, position, options) {\n invariant(typeof mapid === 'string', 'mapid option required and must be a string');\n invariant(typeof width === 'number', 'width option required and must be a number');\n invariant(typeof height === 'number', 'height option required and must be a number');\n\n var defaults = {\n format: 'png',\n retina: ''\n };\n\n var xyz;\n\n if (position === 'auto') {\n xyz = 'auto';\n } else {\n invariantLocation(position);\n xyz = position.longitude + ',' + position.latitude + ',' + position.zoom;\n }\n\n var userOptions = {};\n\n if (options) {\n invariant(typeof options === 'object', 'options must be an object');\n if (options.format) {\n invariant(typeof options.format === 'string', 'format must be a string');\n userOptions.format = options.format;\n }\n if (options.retina) {\n invariant(typeof options.retina === 'boolean', 'retina must be a boolean');\n userOptions.retina = options.retina;\n }\n if (options.markers) {\n userOptions.overlay = '/' + encodeOverlay.encodeMarkers(options.markers);\n } else if (options.geojson) {\n userOptions.overlay = '/' + encodeOverlay.encodeGeoJSON(options.geojson);\n } else if (options.path) {\n userOptions.overlay = '/' + encodeOverlay.encodePath(options.path);\n }\n }\n\n var params = xtend(defaults, userOptions, {\n mapid: mapid,\n width: width,\n xyz: xyz,\n height: height,\n access_token: this.accessToken\n });\n\n if (params.retina === true) {\n params.retina = '@2x';\n }\n\n return this.endpoint + uriTemplate.expand(API_STATIC_CLASSIC, params);\n};\n\nmodule.exports = MapboxStatic;\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxTilesets\n */\nvar MapboxTilesets = module.exports = makeService('MapboxTilesets');\n\nvar API_TILESETS_TILEQUERY = '/v4/{mapid}/tilequery/{longitude},{latitude}.json{?access_token,radius,limit}';\nvar API_TILESETS_LIST = '/tilesets/v1/{owner}{?access_token,limit}';\n\n/**\n * Retrieve data about specific vector features at a specified location within a vector tileset\n *\n * @param {String} mapid Map ID of the tileset to query (eg. mapbox.mapbox-streets-v7)\n * @param {Array} position An array in the form [longitude, latitude] of the position to query\n * @param {Object} [options] optional options\n * @param {Number} options.radius Approximate distance in meters to query for features\n * @param {Number} options.limit Number of features between 1-50 to return\n * @param {Function} [callback] called with (err, results, response)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.tilequery('mapbox.mapbox-streets-v7', [-77, 38], {}, function(err, response) {\n * console.log(response);\n * });\n */\nMapboxTilesets.prototype.tilequery = function(mapid, position, options, callback) {\n invariant(typeof mapid === 'string', 'mapid must be a string');\n invariant(typeof position === 'object', 'position must be an array');\n invariant(position.length == 2, 'position must be an array of length 2');\n invariant(typeof position[0] === 'number' && typeof position[1] === 'number', 'position must be an array of two numbers');\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n return this.client({\n path: API_TILESETS_TILEQUERY,\n params: {\n mapid: mapid,\n longitude: position[0],\n latitude: position[1],\n radius: options.radius,\n limit: options.limit\n },\n callback: callback\n });\n};\n\n/**\n * Retrieve all tilesets\n *\n * @param {Object} [options] optional options\n * @param {Number} options.limit Maximum Number of tilesets to return\n * @param {Function} [callback] called with (err, tilesets, response)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.listTilesets(function(err, tilesets) {\n * console.log(tilesets);\n * });\n */\nMapboxTilesets.prototype.listTilesets = function(options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n\n return this.client({\n path: API_TILESETS_LIST,\n params: {\n owner: this.owner,\n limit: options.limit\n },\n callback: callback\n });\n};\n","'use strict';\n\nvar invariant = require('../../vendor/invariant');\nvar makeService = require('../make_service');\n\n/**\n * @class MapboxTokens\n */\nvar MapboxTokens = module.exports = makeService('MapboxTokens');\n\nvar API_TOKENS_LIST = '/tokens/v2/{owner}{?access_token}';\nvar API_TOKENS_CREATE = '/tokens/v2/{owner}{?access_token}';\nvar API_TOKENS_UPDATE_AUTHORIZATION = '/tokens/v2/{owner}/{authorization_id}{?access_token}';\nvar API_TOKENS_DELETE_AUTHORIZATION = '/tokens/v2/{owner}/{authorization_id}{?access_token}';\nvar API_TOKENS_RETRIEVE = '/tokens/v2{?access_token}';\nvar API_TOKENS_LIST_SCOPES = '/scopes/v1/{owner}{?access_token}';\n\n/**\n * To retrieve a listing of tokens for a particular account.\n *\n * @param {Function} [callback] called with (err, tokens, response)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.listTokens(function(err, tokens) {\n * console.log(tokens);\n * // [{ client: 'api'\n * // note: 'Default Public Token',\n * // usage: 'pk',\n * // id: 'TOKENID',\n * // default: true,\n * // scopes: ['styles:tiles','styles:read','fonts:read','datasets:read'],\n * // created: '2016-02-09T14:26:15.059Z',\n * // modified: '2016-02-09T14:28:31.253Z',\n * // token: 'pk.TOKEN' }]\n * });\n */\nMapboxTokens.prototype.listTokens = function(callback) {\n return this.client({\n path: API_TOKENS_LIST,\n params: {\n owner: this.owner\n },\n callback: callback\n });\n};\n\n/**\n * Create a token\n *\n * @param {string} note Note attached to the token\n * @param {Array} scopes List of scopes for the new token\n * @param {Function} [callback] called with (err, token, response)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.createToken('My top secret project', [\"styles:read\", \"fonts:read\"], function(err, createdToken) {\n * console.log(createdToken);\n * });\n */\nMapboxTokens.prototype.createToken = function(note, scopes, callback) {\n invariant(typeof note === 'string', 'note must be a string');\n invariant(Object.prototype.toString.call(scopes) === '[object Array]', 'scopes must be an array');\n\n return this.client({\n path: API_TOKENS_CREATE,\n params: {\n owner: this.owner\n },\n entity: {\n scopes: scopes,\n note: note\n },\n callback: callback\n });\n};\n\n/**\n * Create a temporary token\n *\n * @param {string} expires Time token expires in RFC 3339\n * @param {Array} scopes List of scopes for the new token\n * @param {Function} [callback] called with (err, token, response)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.createTemporaryToken('2016-09-15T19:27:53.000Z', [\"styles:read\", \"fonts:read\"], function(err, createdToken) {\n * console.log(createdToken);\n * });\n */\nMapboxTokens.prototype.createTemporaryToken = function(expires, scopes, callback) {\n invariant(typeof expires === 'string', 'expires must be a string');\n invariant(Object.prototype.toString.call(scopes) === '[object Array]', 'scopes must be an array');\n\n return this.client({\n path: API_TOKENS_CREATE,\n params: {\n owner: this.owner\n },\n entity: {\n scopes: scopes,\n expires: expires\n },\n callback: callback\n });\n};\n\n/**\n * Update a token's authorization\n *\n * @param {string} authorization_id Authorization ID\n * @param {Array} scopes List of scopes for the new token\n * @param {Function} [callback] called with (err, token, response)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.updateTokenAuthorization('auth id', [\"styles:read\", \"fonts:read\"], function(err, updatedToken) {\n * console.log(updatedToken);\n * });\n */\nMapboxTokens.prototype.updateTokenAuthorization = function(authorization_id, scopes, callback) {\n invariant(typeof authorization_id === 'string', 'authorization_id must be a string');\n invariant(Object.prototype.toString.call(scopes) === '[object Array]', 'scopes must be an array');\n\n return this.client({\n path: API_TOKENS_UPDATE_AUTHORIZATION,\n params: {\n authorization_id: authorization_id,\n owner: this.owner\n },\n entity: {\n scopes: scopes\n },\n method: 'patch',\n callback: callback\n });\n};\n\n/**\n * Delete a token's authorization\n *\n * @param {string} authorization_id Authorization ID\n * @param {Function} [callback] called with (err, token, response)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.deleteTokenAuthorization('auth id', function(err) {\n * });\n */\nMapboxTokens.prototype.deleteTokenAuthorization = function(authorization_id, callback) {\n invariant(typeof authorization_id === 'string', 'authorization_id must be a string');\n\n return this.client({\n path: API_TOKENS_DELETE_AUTHORIZATION,\n params: {\n authorization_id: authorization_id,\n owner: this.owner\n },\n method: 'delete',\n callback: callback\n });\n};\n\n/**\n * Retrieve a token\n *\n * @param {string} access_token access token to check\n * @param {Function} [callback] called with (err, token, response)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.retrieveToken('ACCESSTOKEN', function(err, tokenResponse) {\n * console.log(tokenResponse);\n * });\n */\nMapboxTokens.prototype.retrieveToken = function(access_token, callback) {\n invariant(typeof access_token === 'string', 'access_token must be a string');\n\n return this.client({\n path: API_TOKENS_RETRIEVE,\n params: {\n access_token: access_token\n },\n callback: callback\n });\n};\n\n/**\n * List scopes\n *\n * @param {Function} [callback] called with (err, scopes, response)\n * @returns {Promise} response\n * @example\n * var MapboxClient = require('mapbox');\n * var client = new MapboxClient('ACCESSTOKEN');\n * client.listScopes(function(err, scopes) {\n * console.log(scopes);\n * });\n */\nMapboxTokens.prototype.listScopes = function(callback) {\n return this.client({\n path: API_TOKENS_LIST_SCOPES,\n params: {\n owner: this.owner\n },\n callback: callback\n });\n};\n","'use strict';\n\nvar makeClient = require('./make_service');\nvar xtend = require('../vendor/xtend').extendMutable;\nvar getUser = require('./get_user');\nvar MapboxGeocoding = require('./services/geocoding');\nvar MapboxSurface = require('./services/surface');\nvar MapboxDirections = require('./services/directions');\nvar MapboxUploads = require('./services/uploads');\nvar MapboxMatching = require('./services/matching');\nvar MapboxDatasets = require('./services/datasets');\nvar MapboxMatrix = require('./services/matrix');\nvar MapboxTilestats = require('./services/tilestats');\nvar MapboxStyles = require('./services/styles');\nvar MapboxStatic = require('./services/static');\nvar MapboxTilesets = require('./services/tilesets');\nvar MapboxTokens = require('./services/tokens');\n\n\n/**\n * The JavaScript API to Mapbox services\n *\n * @class\n * @throws {Error} if accessToken is not provided\n * @param {string} accessToken a private or public access token\n * @param {Object} options additional options provided for configuration\n * @param {string} [options.endpoint=https://api.mapbox.com] location\n * of the Mapbox API pointed-to. This can be customized to point to a\n * Mapbox Atlas Server instance, or a different service, a mock,\n * or a staging endpoint. Usually you don't need to customize this.\n * @param {string} [options.account] account id to use for api\n * requests. If not is specified, the account defaults to the owner\n * of the provided accessToken.\n * @example\n * var client = new MapboxClient('ACCESSTOKEN');\n */\nvar MapboxClient = makeClient('MapboxClient');\n\n// Combine all client APIs into one API for when people require()\n// the main mapbox-sdk-js library.\nxtend(\n MapboxClient.prototype,\n MapboxGeocoding.prototype,\n MapboxSurface.prototype,\n MapboxDirections.prototype,\n MapboxMatrix.prototype,\n MapboxMatching.prototype,\n MapboxDatasets.prototype,\n MapboxUploads.prototype,\n MapboxTilestats.prototype,\n MapboxStyles.prototype,\n MapboxStatic.prototype,\n MapboxTilesets.prototype,\n MapboxTokens.prototype\n);\n\nMapboxClient.getUser = getUser;\n\nmodule.exports = MapboxClient;\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","var config = {};\nconfig.EPSILON = 1e-12;\nconfig.debug = true;\nconfig.precision = 4;\nconfig.printTypes = false;\nconfig.printDegrees = false;\nconfig.printRowMajor = true;\nexport { config };\nexport function configure(options) {\n if ('epsilon' in options) {\n config.EPSILON = options.epsilon;\n }\n\n if ('debug' in options) {\n config.debug = options.debug;\n }\n}\nexport function checkNumber(value) {\n if (!Number.isFinite(value)) {\n throw new Error(\"Invalid number \".concat(value));\n }\n\n return value;\n}\n\nfunction round(value) {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\nexport function formatValue(value) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$precision = _ref.precision,\n precision = _ref$precision === void 0 ? config.precision || 4 : _ref$precision;\n\n value = round(value);\n return parseFloat(value.toPrecision(precision));\n}\nexport function formatAngle(value) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$precision = _ref2.precision,\n precision = _ref2$precision === void 0 ? config.precision || 4 : _ref2$precision,\n _ref2$printDegrees = _ref2.printDegrees,\n printDegrees = _ref2$printDegrees === void 0 ? config.printAngles : _ref2$printDegrees;\n\n value = printDegrees ? degrees(value) : value;\n value = round(value);\n return \"\".concat(parseFloat(value.toPrecision(precision))).concat(printDegrees ? '°' : '');\n}\nexport function isArray(value) {\n return Array.isArray(value) || ArrayBuffer.isView(value) && value.length !== undefined;\n}\nexport function clone(array) {\n return array.clone ? array.clone() : new Array(array);\n}\n\nfunction map(value, func) {\n if (isArray(value)) {\n var result = clone(value);\n\n for (var i = 0; i < result.length; ++i) {\n result[i] = func(result[i], i, result);\n }\n\n return result;\n }\n\n return func(value);\n}\n\nexport function radians(degrees) {\n return map(degrees, function (degrees) {\n return degrees / 180 * Math.PI;\n });\n}\nexport function degrees(radians) {\n return map(radians, function (radians) {\n return radians * 180 / Math.PI;\n });\n}\nexport function sin(radians) {\n return map(radians, function (angle) {\n return Math.sin(angle);\n });\n}\nexport function cos(radians) {\n return map(radians, function (angle) {\n return Math.cos(angle);\n });\n}\nexport function tan(radians) {\n return map(radians, function (angle) {\n return Math.tan(angle);\n });\n}\nexport function asin(radians) {\n return map(radians, function (angle) {\n return Math.asin(angle);\n });\n}\nexport function acos(radians) {\n return map(radians, function (angle) {\n return Math.acos(angle);\n });\n}\nexport function atan(radians) {\n return map(radians, function (angle) {\n return Math.atan(angle);\n });\n}\nexport function clamp(value, min, max) {\n return map(value, function (value) {\n return Math.max(min, Math.min(max, value));\n });\n}\nexport function lerp(a, b, t) {\n if (isArray(a)) {\n return a.map(function (ai, i) {\n return lerp(ai, b[i], t);\n });\n }\n\n return t * b + (1 - t) * a;\n}\nexport function equals(a, b) {\n if (isArray(a) && isArray(b)) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (var i = 0; i < a.length; ++i) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n return Math.abs(a - b) <= config.EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\n//# sourceMappingURL=common.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\n\nfunction _extendableBuiltin(cls) {\n function ExtendableBuiltin() {\n var instance = Reflect.construct(cls, Array.from(arguments));\n Object.setPrototypeOf(instance, Object.getPrototypeOf(this));\n return instance;\n }\n\n ExtendableBuiltin.prototype = Object.create(cls.prototype, {\n constructor: {\n value: cls,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ExtendableBuiltin, cls);\n } else {\n ExtendableBuiltin.__proto__ = cls;\n }\n\n return ExtendableBuiltin;\n}\n\nimport { config, formatValue, equals as _equals } from './common';\n\nvar MathArray = function (_extendableBuiltin2) {\n _inherits(MathArray, _extendableBuiltin2);\n\n function MathArray() {\n _classCallCheck(this, MathArray);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(MathArray).apply(this, arguments));\n }\n\n _createClass(MathArray, [{\n key: \"clone\",\n value: function clone() {\n return new this.constructor().copy(this).check();\n }\n }, {\n key: \"copy\",\n value: function copy(array) {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] = array[i];\n }\n\n return this.check();\n }\n }, {\n key: \"set\",\n value: function set() {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] = (i < 0 || arguments.length <= i ? undefined : arguments[i]) || 0;\n }\n\n return this.check();\n }\n }, {\n key: \"fromArray\",\n value: function fromArray(array) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] = array[i + offset];\n }\n\n return this.check();\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this.formatString(config);\n }\n }, {\n key: \"formatString\",\n value: function formatString(opts) {\n var string = '';\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);\n }\n\n return \"\".concat(opts.printTypes ? this.constructor.name : '', \"[\").concat(string, \"]\");\n }\n }, {\n key: \"toArray\",\n value: function toArray() {\n var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n array[offset + i] = this[i];\n }\n\n return array;\n }\n }, {\n key: \"toFloat32Array\",\n value: function toFloat32Array() {\n return new Float32Array(this);\n }\n }, {\n key: \"equals\",\n value: function equals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n if (!_equals(this[i], array[i])) {\n return false;\n }\n }\n\n return true;\n }\n }, {\n key: \"exactEquals\",\n value: function exactEquals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n if (this[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n }\n }, {\n key: \"negate\",\n value: function negate() {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] = -this[i];\n }\n\n return this.check();\n }\n }, {\n key: \"inverse\",\n value: function inverse() {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] = 1 / this[i];\n }\n\n return this.check();\n }\n }, {\n key: \"lerp\",\n value: function lerp(a, b, t) {\n if (t === undefined) {\n t = b;\n b = a;\n a = this;\n }\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n var ai = a[i];\n this[i] = ai + t * (b[i] - ai);\n }\n\n return this.check();\n }\n }, {\n key: \"min\",\n value: function min(vector) {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(vector[i], this[i]);\n }\n\n return this.check();\n }\n }, {\n key: \"max\",\n value: function max(vector) {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.max(vector[i], this[i]);\n }\n\n return this.check();\n }\n }, {\n key: \"clamp\",\n value: function clamp(minVector, maxVector) {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n }\n\n return this.check();\n }\n }, {\n key: \"validate\",\n value: function validate() {\n var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this;\n var valid = array && array.length === this.ELEMENTS;\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n valid = valid && Number.isFinite(array[i]);\n }\n\n return valid;\n }\n }, {\n key: \"check\",\n value: function check() {\n var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this;\n\n if (config.debug && !this.validate(array)) {\n throw new Error(\"math.gl: \".concat(this.constructor.name, \" some fields set to invalid numbers'\"));\n }\n\n return this;\n }\n }, {\n key: \"sub\",\n value: function sub(a) {\n return this.subtract(a);\n }\n }, {\n key: \"setScalar\",\n value: function setScalar(a) {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] = a;\n }\n\n return this.check();\n }\n }, {\n key: \"addScalar\",\n value: function addScalar(a) {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] += a;\n }\n\n return this.check();\n }\n }, {\n key: \"subScalar\",\n value: function subScalar(a) {\n return this.addScalar(-a);\n }\n }, {\n key: \"multiplyScalar\",\n value: function multiplyScalar(a) {\n return this.scale(a);\n }\n }, {\n key: \"divideScalar\",\n value: function divideScalar(a) {\n return this.scale(1 / a);\n }\n }, {\n key: \"clampScalar\",\n value: function clampScalar(min, max) {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], min), max);\n }\n\n return this.check();\n }\n }]);\n\n return MathArray;\n}(_extendableBuiltin(Array));\n\nexport { MathArray as default };\n//# sourceMappingURL=math-array.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport MathArray from './math-array';\nimport { checkNumber } from './common';\n\nvar assert = function assert(x, m) {\n if (!x) {\n throw new Error(m);\n }\n};\n\nvar Vector = function (_MathArray) {\n _inherits(Vector, _MathArray);\n\n function Vector() {\n _classCallCheck(this, Vector);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Vector).apply(this, arguments));\n }\n\n _createClass(Vector, [{\n key: \"len\",\n value: function len() {\n return Math.sqrt(this.lengthSquared());\n }\n }, {\n key: \"magnitude\",\n value: function magnitude() {\n return Math.sqrt(this.lengthSquared());\n }\n }, {\n key: \"lengthSquared\",\n value: function lengthSquared() {\n var length = 0;\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n length += this[i] * this[i];\n }\n\n return length;\n }\n }, {\n key: \"distance\",\n value: function distance(mathArray) {\n return Math.sqrt(this.distanceSquared(mathArray));\n }\n }, {\n key: \"distanceSquared\",\n value: function distanceSquared(mathArray) {\n var length = 0;\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n var dist = this[i] - mathArray[i];\n length += dist * dist;\n }\n\n return checkNumber(length);\n }\n }, {\n key: \"dot\",\n value: function dot(mathArray) {\n var product = 0;\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n product += this[i] * mathArray[i];\n }\n\n return checkNumber(product);\n }\n }, {\n key: \"normalize\",\n value: function normalize() {\n var length = this.magnitude();\n\n if (length !== 0) {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= length;\n }\n }\n\n return this.check();\n }\n }, {\n key: \"add\",\n value: function add() {\n for (var _len = arguments.length, vectors = new Array(_len), _key = 0; _key < _len; _key++) {\n vectors[_key] = arguments[_key];\n }\n\n for (var _i = 0; _i < vectors.length; _i++) {\n var vector = vectors[_i];\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] += vector[i];\n }\n }\n\n return this.check();\n }\n }, {\n key: \"subtract\",\n value: function subtract() {\n for (var _len2 = arguments.length, vectors = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n vectors[_key2] = arguments[_key2];\n }\n\n for (var _i2 = 0; _i2 < vectors.length; _i2++) {\n var vector = vectors[_i2];\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] -= vector[i];\n }\n }\n\n return this.check();\n }\n }, {\n key: \"multiply\",\n value: function multiply() {\n for (var _len3 = arguments.length, vectors = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n vectors[_key3] = arguments[_key3];\n }\n\n for (var _i3 = 0; _i3 < vectors.length; _i3++) {\n var vector = vectors[_i3];\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= vector[i];\n }\n }\n\n return this.check();\n }\n }, {\n key: \"divide\",\n value: function divide() {\n for (var _len4 = arguments.length, vectors = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n vectors[_key4] = arguments[_key4];\n }\n\n for (var _i4 = 0; _i4 < vectors.length; _i4++) {\n var vector = vectors[_i4];\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= vector[i];\n }\n }\n\n return this.check();\n }\n }, {\n key: \"scale\",\n value: function scale(_scale) {\n if (Array.isArray(_scale)) {\n return this.multiply(_scale);\n }\n\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= _scale;\n }\n\n return this.check();\n }\n }, {\n key: \"scaleAndAdd\",\n value: function scaleAndAdd(vector, scale) {\n for (var i = 0; i < this.ELEMENTS; ++i) {\n this[i] = this[i] * scale + vector[i];\n }\n\n return this.check();\n }\n }, {\n key: \"lengthSq\",\n value: function lengthSq() {\n return this.lengthSquared();\n }\n }, {\n key: \"distanceTo\",\n value: function distanceTo(vector) {\n return this.distance(vector);\n }\n }, {\n key: \"distanceToSquared\",\n value: function distanceToSquared(vector) {\n return this.distanceSquared(vector);\n }\n }, {\n key: \"getComponent\",\n value: function getComponent(i) {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n return checkNumber(this[i]);\n }\n }, {\n key: \"setComponent\",\n value: function setComponent(i, value) {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n this[i] = value;\n return this.check();\n }\n }, {\n key: \"addVectors\",\n value: function addVectors(a, b) {\n return this.copy(a).add(b);\n }\n }, {\n key: \"subVectors\",\n value: function subVectors(a, b) {\n return this.copy(a).subtract(b);\n }\n }, {\n key: \"multiplyVectors\",\n value: function multiplyVectors(a, b) {\n return this.copy(a).multiply(b);\n }\n }, {\n key: \"addScaledVector\",\n value: function addScaledVector(a, b) {\n return this.add(new this.constructor(a).multiplyScalar(b));\n }\n }, {\n key: \"x\",\n get: function get() {\n return this[0];\n },\n set: function set(value) {\n return this[0] = checkNumber(value);\n }\n }, {\n key: \"y\",\n get: function get() {\n return this[1];\n },\n set: function set(value) {\n return this[1] = checkNumber(value);\n }\n }]);\n\n return Vector;\n}(MathArray);\n\nexport { Vector as default };\n//# sourceMappingURL=vector.js.map","module.exports = cross\n\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec3} out\n */\nfunction cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0]\n out[0] = out[1] = 0\n out[2] = z\n return out\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport Vector from './lib/vector';\nimport vec2_cross from 'gl-vec2/cross';\n\nvar Vector2 = function (_Vector) {\n _inherits(Vector2, _Vector);\n\n function Vector2() {\n var _this;\n\n var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, Vector2);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Vector2).call(this));\n\n if (Array.isArray(x) && arguments.length === 1) {\n _this.copy(x);\n } else {\n _this.set(x, y);\n }\n\n return _this;\n }\n\n _createClass(Vector2, [{\n key: \"cross\",\n value: function cross(vector) {\n vec2_cross(this, this, vector);\n return this.check();\n }\n }, {\n key: \"horizontalAngle\",\n value: function horizontalAngle() {\n return Math.atan2(this.y, this.x);\n }\n }, {\n key: \"verticalAngle\",\n value: function verticalAngle() {\n return Math.atan2(this.x, this.y);\n }\n }, {\n key: \"operation\",\n value: function operation(_operation) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _operation.apply(void 0, [this, this].concat(args));\n\n return this.check();\n }\n }, {\n key: \"ELEMENTS\",\n get: function get() {\n return 2;\n }\n }]);\n\n return Vector2;\n}(Vector);\n\nexport { Vector2 as default };\n//# sourceMappingURL=vector2.js.map","module.exports = fromValues;\n\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\nfunction fromValues(x, y, z) {\n var out = new Float32Array(3)\n out[0] = x\n out[1] = y\n out[2] = z\n return out\n}","module.exports = normalize;\n\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to normalize\n * @returns {vec3} out\n */\nfunction normalize(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2]\n var len = x*x + y*y + z*z\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len)\n out[0] = a[0] * len\n out[1] = a[1] * len\n out[2] = a[2] * len\n }\n return out\n}","module.exports = dot;\n\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]\n}","module.exports = angle\n\nvar fromValues = require('./fromValues')\nvar normalize = require('./normalize')\nvar dot = require('./dot')\n\n/**\n * Get the angle between two 3D vectors\n * @param {vec3} a The first operand\n * @param {vec3} b The second operand\n * @returns {Number} The angle in radians\n */\nfunction angle(a, b) {\n var tempA = fromValues(a[0], a[1], a[2])\n var tempB = fromValues(b[0], b[1], b[2])\n \n normalize(tempA, tempA)\n normalize(tempB, tempB)\n \n var cosine = dot(tempA, tempB)\n\n if(cosine > 1.0){\n return 0\n } else {\n return Math.acos(cosine)\n } \n}\n","module.exports = cross;\n\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction cross(out, a, b) {\n var ax = a[0], ay = a[1], az = a[2],\n bx = b[0], by = b[1], bz = b[2]\n\n out[0] = ay * bz - az * by\n out[1] = az * bx - ax * bz\n out[2] = ax * by - ay * bx\n return out\n}","module.exports = rotateX;\n\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */\nfunction rotateX(out, a, b, c){\n var by = b[1]\n var bz = b[2]\n\n // Translate point to the origin\n var py = a[1] - by\n var pz = a[2] - bz\n\n var sc = Math.sin(c)\n var cc = Math.cos(c)\n\n // perform rotation and translate to correct position\n out[0] = a[0]\n out[1] = by + py * cc - pz * sc\n out[2] = bz + py * sc + pz * cc\n\n return out\n}\n","module.exports = rotateY;\n\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */\nfunction rotateY(out, a, b, c){\n var bx = b[0]\n var bz = b[2]\n\n // translate point to the origin\n var px = a[0] - bx\n var pz = a[2] - bz\n \n var sc = Math.sin(c)\n var cc = Math.cos(c)\n \n // perform rotation and translate to correct position\n out[0] = bx + pz * sc + px * cc\n out[1] = a[1]\n out[2] = bz + pz * cc - px * sc\n \n return out\n}\n","module.exports = rotateZ;\n\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */\nfunction rotateZ(out, a, b, c){\n var bx = b[0]\n var by = b[1]\n\n //Translate point to the origin\n var px = a[0] - bx\n var py = a[1] - by\n \n var sc = Math.sin(c)\n var cc = Math.cos(c)\n\n // perform rotation and translate to correct position\n out[0] = bx + px * cc - py * sc\n out[1] = by + px * sc + py * cc\n out[2] = a[2]\n \n return out\n}\n","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport Vector from './lib/vector';\nimport { checkNumber } from './lib/common';\nimport vec3_angle from 'gl-vec3/angle';\nimport vec3_cross from 'gl-vec3/cross';\nimport vec3_rotateX from 'gl-vec3/rotateX';\nimport vec3_rotateY from 'gl-vec3/rotateY';\nimport vec3_rotateZ from 'gl-vec3/rotateZ';\nvar ORIGIN = [0, 0, 0];\n\nvar Vector3 = function (_Vector) {\n _inherits(Vector3, _Vector);\n\n function Vector3() {\n var _this;\n\n var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n _classCallCheck(this, Vector3);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Vector3).call(this));\n\n if (Array.isArray(x) && arguments.length === 1) {\n _this.copy(x);\n } else {\n _this.set(x, y, z);\n }\n\n return _this;\n }\n\n _createClass(Vector3, [{\n key: \"angle\",\n value: function angle(vector) {\n return vec3_angle(this, vector);\n }\n }, {\n key: \"cross\",\n value: function cross(vector) {\n vec3_cross(this, this, vector);\n return this.check();\n }\n }, {\n key: \"rotateX\",\n value: function rotateX(_ref) {\n var radians = _ref.radians,\n _ref$origin = _ref.origin,\n origin = _ref$origin === void 0 ? ORIGIN : _ref$origin;\n vec3_rotateX(this, this, origin, radians);\n return this.check();\n }\n }, {\n key: \"rotateY\",\n value: function rotateY(_ref2) {\n var radians = _ref2.radians,\n _ref2$origin = _ref2.origin,\n origin = _ref2$origin === void 0 ? ORIGIN : _ref2$origin;\n vec3_rotateY(this, this, origin, radians);\n return this.check();\n }\n }, {\n key: \"rotateZ\",\n value: function rotateZ(_ref3) {\n var radians = _ref3.radians,\n _ref3$origin = _ref3.origin,\n origin = _ref3$origin === void 0 ? ORIGIN : _ref3$origin;\n vec3_rotateZ(this, this, origin, radians);\n return this.check();\n }\n }, {\n key: \"operation\",\n value: function operation(_operation) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _operation.apply(void 0, [this, this].concat(args));\n\n return this.check();\n }\n }, {\n key: \"ELEMENTS\",\n get: function get() {\n return 3;\n }\n }, {\n key: \"z\",\n get: function get() {\n return this[2];\n },\n set: function set(value) {\n return this[2] = checkNumber(value);\n }\n }]);\n\n return Vector3;\n}(Vector);\n\nexport { Vector3 as default };\n//# sourceMappingURL=vector3.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport Vector from './lib/vector';\nimport { checkNumber } from './lib/common';\n\nvar Vector4 = function (_Vector) {\n _inherits(Vector4, _Vector);\n\n function Vector4() {\n var _this;\n\n var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var w = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n _classCallCheck(this, Vector4);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Vector4).call(this));\n\n if (Array.isArray(x) && arguments.length === 1) {\n _this.copy(x);\n } else {\n _this.set(x, y, z, w);\n }\n\n return _this;\n }\n\n _createClass(Vector4, [{\n key: \"applyMatrix4\",\n value: function applyMatrix4(m) {\n m.transformVector(this, this);\n return this;\n }\n }, {\n key: \"ELEMENTS\",\n get: function get() {\n return 4;\n }\n }, {\n key: \"z\",\n get: function get() {\n return this[2];\n },\n set: function set(value) {\n return this[2] = checkNumber(value);\n }\n }, {\n key: \"w\",\n get: function get() {\n return this[3];\n },\n set: function set(value) {\n return this[3] = checkNumber(value);\n }\n }]);\n\n return Vector4;\n}(Vector);\n\nexport { Vector4 as default };\n//# sourceMappingURL=vector4.js.map","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","module.exports = determinant;\n\n/**\n * Calculates the determinant of a mat4\n *\n * @param {mat4} a the source matrix\n * @returns {Number} determinant of a\n */\nfunction determinant(a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32;\n\n // Calculate the determinant\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n};","module.exports = fromQuat;\n\n/**\n * Creates a matrix from a quaternion rotation.\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @returns {mat4} out\n */\nfunction fromQuat(out, q) {\n var x = q[0], y = q[1], z = q[2], w = q[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n\n xx = x * x2,\n yx = y * x2,\n yy = y * y2,\n zx = z * x2,\n zy = z * y2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n\n return out;\n};","module.exports = frustum;\n\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left),\n tb = 1 / (top - bottom),\n nf = 1 / (near - far);\n out[0] = (near * 2) * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = (near * 2) * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = (far * near * 2) * nf;\n out[15] = 0;\n return out;\n};","module.exports = identity;\n\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n};","var identity = require('./identity');\n\nmodule.exports = lookAt;\n\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {vec3} eye Position of the viewer\n * @param {vec3} center Point the viewer is looking at\n * @param {vec3} up vec3 pointing up\n * @returns {mat4} out\n */\nfunction lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len,\n eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2],\n centerx = center[0],\n centery = center[1],\n centerz = center[2];\n\n if (Math.abs(eyex - centerx) < 0.000001 &&\n Math.abs(eyey - centery) < 0.000001 &&\n Math.abs(eyez - centerz) < 0.000001) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n\n return out;\n};","module.exports = ortho;\n\n/**\n * Generates a orthogonal projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction ortho(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right),\n bt = 1 / (bottom - top),\n nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n};","module.exports = perspective;\n\n/**\n * Generates a perspective projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction perspective(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf = 1 / (near - far);\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = (2 * far * near) * nf;\n out[15] = 0;\n return out;\n};","module.exports = transpose;\n\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1], a02 = a[2], a03 = a[3],\n a12 = a[6], a13 = a[7],\n a23 = a[11];\n\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n \n return out;\n};","module.exports = invert;\n\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction invert(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n\n // Calculate the determinant\n det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) { \n return null; \n }\n det = 1.0 / det;\n\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n\n return out;\n};","module.exports = multiply;\n\n/**\n * Multiplies two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @returns {mat4} out\n */\nfunction multiply(out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n // Cache only the current line of the second matrix\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; \n out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7];\n out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11];\n out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15];\n out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n return out;\n};","module.exports = rotate;\n\n/**\n * Rotates a mat4 by the given angle\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nfunction rotate(out, a, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2],\n len = Math.sqrt(x * x + y * y + z * z),\n s, c, t,\n a00, a01, a02, a03,\n a10, a11, a12, a13,\n a20, a21, a22, a23,\n b00, b01, b02,\n b10, b11, b12,\n b20, b21, b22;\n\n if (Math.abs(len) < 0.000001) { return null; }\n \n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n\n a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\n a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\n a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\n\n // Construct the elements of the rotation matrix\n b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s;\n b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s;\n b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c;\n\n // Perform rotation-specific matrix multiplication\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) { // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n return out;\n};","module.exports = scale;\n\n/**\n * Scales the mat4 by the dimensions in the given vec3\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to scale\n * @param {vec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\nfunction scale(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n};","module.exports = translate;\n\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to translate\n * @param {vec3} v vector to translate by\n * @returns {mat4} out\n */\nfunction translate(out, a, v) {\n var x = v[0], y = v[1], z = v[2],\n a00, a01, a02, a03,\n a10, a11, a12, a13,\n a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\n a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\n a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\n\n out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03;\n out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13;\n out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23;\n\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n};","module.exports = transformMat4\n\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat4(out, a, m) {\n var x = a[0], \n y = a[1]\n out[0] = m[0] * x + m[4] * y + m[12]\n out[1] = m[1] * x + m[5] * y + m[13]\n return out\n}","module.exports = transformMat4;\n\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec3} out\n */\nfunction transformMat4(out, a, m) {\n var x = a[0], y = a[1], z = a[2],\n w = m[3] * x + m[7] * y + m[11] * z + m[15]\n w = w || 1.0\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w\n return out\n}","module.exports = transformMat4\n\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec4} out\n */\nfunction transformMat4 (out, a, m) {\n var x = a[0], y = a[1], z = a[2], w = a[3]\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w\n return out\n}\n","module.exports = rotateX;\n\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateX(out, a, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad),\n a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7],\n a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n\n if (a !== out) { // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n};","module.exports = rotateY;\n\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateY(out, a, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad),\n a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3],\n a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n\n if (a !== out) { // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n};","module.exports = rotateZ;\n\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateZ(out, a, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad),\n a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3],\n a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n\n if (a !== out) { // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n};","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport MathArray from './lib/math-array';\nimport { checkNumber } from './lib/common';\nimport Vector2 from './vector2';\nimport Vector3 from './vector3';\nimport Vector4 from './vector4';\nimport mat4_determinant from 'gl-mat4/determinant';\nimport mat4_fromQuat from 'gl-mat4/fromQuat';\nimport mat4_frustum from 'gl-mat4/frustum';\nimport mat4_lookAt from 'gl-mat4/lookAt';\nimport mat4_ortho from 'gl-mat4/ortho';\nimport mat4_perspective from 'gl-mat4/perspective';\nimport mat4_transpose from 'gl-mat4/transpose';\nimport mat4_invert from 'gl-mat4/invert';\nimport mat4_multiply from 'gl-mat4/multiply';\nimport mat4_rotate from 'gl-mat4/rotate';\nimport mat4_scale from 'gl-mat4/scale';\nimport mat4_translate from 'gl-mat4/translate';\nimport vec2_transformMat4 from 'gl-vec2/transformMat4';\nimport vec3_transformMat4 from 'gl-vec3/transformMat4';\nimport vec4_transformMat4 from 'gl-vec4/transformMat4';\nimport mat4_rotateX from 'gl-mat4/rotateX';\nimport mat4_rotateY from 'gl-mat4/rotateY';\nimport mat4_rotateZ from 'gl-mat4/rotateZ';\nvar IDENTITY = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\nexport function validateMatrix4(m) {\n return m.length === 16 && Number.isFinite(m[0]) && Number.isFinite(m[1]) && Number.isFinite(m[2]) && Number.isFinite(m[3]) && Number.isFinite(m[4]) && Number.isFinite(m[5]) && Number.isFinite(m[6]) && Number.isFinite(m[7]) && Number.isFinite(m[8]) && Number.isFinite(m[9]) && Number.isFinite(m[10]) && Number.isFinite(m[11]) && Number.isFinite(m[12]) && Number.isFinite(m[13]) && Number.isFinite(m[14]) && Number.isFinite(m[15]);\n}\n\nfunction validateVector(v, length) {\n if (v.length !== length) {\n return false;\n }\n\n return v.every(Number.isFinite);\n}\n\nvar Matrix4 = function (_MathArray) {\n _inherits(Matrix4, _MathArray);\n\n function Matrix4() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _classCallCheck(this, Matrix4);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Matrix4).call(this));\n\n if (Array.isArray(args[0]) && arguments.length === 1) {\n _this.copy(args[0]);\n } else {\n _this.identity();\n }\n\n return _this;\n }\n\n _createClass(Matrix4, [{\n key: \"setRowMajor\",\n value: function setRowMajor() {\n var m00 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n var m01 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var m02 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var m03 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var m10 = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var m11 = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n var m12 = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;\n var m13 = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;\n var m20 = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0;\n var m21 = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 0;\n var m22 = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : 1;\n var m23 = arguments.length > 11 && arguments[11] !== undefined ? arguments[11] : 0;\n var m30 = arguments.length > 12 && arguments[12] !== undefined ? arguments[12] : 0;\n var m31 = arguments.length > 13 && arguments[13] !== undefined ? arguments[13] : 0;\n var m32 = arguments.length > 14 && arguments[14] !== undefined ? arguments[14] : 0;\n var m33 = arguments.length > 15 && arguments[15] !== undefined ? arguments[15] : 1;\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n }, {\n key: \"setColumnMajor\",\n value: function setColumnMajor() {\n var m00 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n var m10 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var m20 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var m30 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var m01 = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var m11 = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n var m21 = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;\n var m31 = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;\n var m02 = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0;\n var m12 = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 0;\n var m22 = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : 1;\n var m32 = arguments.length > 11 && arguments[11] !== undefined ? arguments[11] : 0;\n var m03 = arguments.length > 12 && arguments[12] !== undefined ? arguments[12] : 0;\n var m13 = arguments.length > 13 && arguments[13] !== undefined ? arguments[13] : 0;\n var m23 = arguments.length > 14 && arguments[14] !== undefined ? arguments[14] : 0;\n var m33 = arguments.length > 15 && arguments[15] !== undefined ? arguments[15] : 1;\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n }, {\n key: \"copy\",\n value: function copy(array) {\n return this.setColumnMajor.apply(this, _toConsumableArray(array));\n }\n }, {\n key: \"set\",\n value: function set() {\n return this.setColumnMajor.apply(this, arguments);\n }\n }, {\n key: \"getElement\",\n value: function getElement(i, j) {\n var columnMajor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return columnMajor ? this[i][j] : this[j][i];\n }\n }, {\n key: \"setElement\",\n value: function setElement(i, j, value) {\n var columnMajor = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (columnMajor) {\n this[i][j] = checkNumber(value);\n } else {\n this[j][i] = checkNumber(value);\n }\n\n return this;\n }\n }, {\n key: \"determinant\",\n value: function determinant() {\n return mat4_determinant(this);\n }\n }, {\n key: \"identity\",\n value: function identity() {\n return this.copy(IDENTITY);\n }\n }, {\n key: \"fromQuaternion\",\n value: function fromQuaternion(q) {\n mat4_fromQuat(this, q);\n return this.check();\n }\n }, {\n key: \"frustum\",\n value: function frustum(_ref) {\n var left = _ref.left,\n right = _ref.right,\n bottom = _ref.bottom,\n top = _ref.top,\n near = _ref.near,\n far = _ref.far;\n mat4_frustum(this, left, right, bottom, top, near, far);\n return this.check();\n }\n }, {\n key: \"lookAt\",\n value: function lookAt(_ref2) {\n var eye = _ref2.eye,\n _ref2$center = _ref2.center,\n center = _ref2$center === void 0 ? [0, 0, 0] : _ref2$center,\n _ref2$up = _ref2.up,\n up = _ref2$up === void 0 ? [0, 1, 0] : _ref2$up;\n mat4_lookAt(this, eye, center, up);\n return this.check();\n }\n }, {\n key: \"ortho\",\n value: function ortho(_ref3) {\n var left = _ref3.left,\n right = _ref3.right,\n bottom = _ref3.bottom,\n top = _ref3.top,\n _ref3$near = _ref3.near,\n near = _ref3$near === void 0 ? 0.1 : _ref3$near,\n _ref3$far = _ref3.far,\n far = _ref3$far === void 0 ? 500 : _ref3$far;\n mat4_ortho(this, left, right, bottom, top, near, far);\n return this.check();\n }\n }, {\n key: \"orthographic\",\n value: function orthographic(_ref4) {\n var _ref4$fovy = _ref4.fovy,\n fovy = _ref4$fovy === void 0 ? 45 * Math.PI / 180 : _ref4$fovy,\n _ref4$aspect = _ref4.aspect,\n aspect = _ref4$aspect === void 0 ? 1 : _ref4$aspect,\n _ref4$focalDistance = _ref4.focalDistance,\n focalDistance = _ref4$focalDistance === void 0 ? 1 : _ref4$focalDistance,\n _ref4$near = _ref4.near,\n near = _ref4$near === void 0 ? 0.1 : _ref4$near,\n _ref4$far = _ref4.far,\n far = _ref4$far === void 0 ? 500 : _ref4$far;\n\n if (fovy > Math.PI * 2) {\n throw Error('radians');\n }\n\n var halfY = fovy / 2;\n var top = focalDistance * Math.tan(halfY);\n var right = top * aspect;\n return new Matrix4().ortho({\n left: -right,\n right: right,\n bottom: -top,\n top: top,\n near: near,\n far: far\n });\n }\n }, {\n key: \"perspective\",\n value: function perspective() {\n var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n fovy = _ref5.fovy,\n _ref5$fov = _ref5.fov,\n fov = _ref5$fov === void 0 ? 45 * Math.PI / 180 : _ref5$fov,\n _ref5$aspect = _ref5.aspect,\n aspect = _ref5$aspect === void 0 ? 1 : _ref5$aspect,\n _ref5$near = _ref5.near,\n near = _ref5$near === void 0 ? 0.1 : _ref5$near,\n _ref5$far = _ref5.far,\n far = _ref5$far === void 0 ? 500 : _ref5$far;\n\n fovy = fovy || fov;\n\n if (fovy > Math.PI * 2) {\n throw Error('radians');\n }\n\n mat4_perspective(this, fovy, aspect, near, far);\n return this.check();\n }\n }, {\n key: \"transpose\",\n value: function transpose() {\n mat4_transpose(this, this);\n return this.check();\n }\n }, {\n key: \"invert\",\n value: function invert() {\n mat4_invert(this, this);\n return this.check();\n }\n }, {\n key: \"multiplyLeft\",\n value: function multiplyLeft(a) {\n mat4_multiply(this, a, this);\n return this.check();\n }\n }, {\n key: \"multiplyRight\",\n value: function multiplyRight(a) {\n mat4_multiply(this, this, a);\n return this.check();\n }\n }, {\n key: \"rotateX\",\n value: function rotateX(radians) {\n mat4_rotateX(this, this, radians);\n return this.check();\n }\n }, {\n key: \"rotateY\",\n value: function rotateY(radians) {\n mat4_rotateY(this, this, radians);\n return this.check();\n }\n }, {\n key: \"rotateZ\",\n value: function rotateZ(radians) {\n mat4_rotateZ(this, this, radians);\n return this.check();\n }\n }, {\n key: \"rotateXYZ\",\n value: function rotateXYZ(_ref6) {\n var _ref7 = _slicedToArray(_ref6, 3),\n rx = _ref7[0],\n ry = _ref7[1],\n rz = _ref7[2];\n\n return this.rotateX(rx).rotateY(ry).rotateZ(rz);\n }\n }, {\n key: \"rotateAxis\",\n value: function rotateAxis(radians, axis) {\n mat4_rotate(this, this, radians, axis);\n return this.check();\n }\n }, {\n key: \"scale\",\n value: function scale(vec) {\n mat4_scale(this, this, vec);\n return this.check();\n }\n }, {\n key: \"translate\",\n value: function translate(vec) {\n mat4_translate(this, this, vec);\n return this.check();\n }\n }, {\n key: \"transformVector2\",\n value: function transformVector2(vector, out) {\n out = out || new Vector2();\n vec2_transformMat4(out, vector, this);\n validateVector(out, 2);\n return out;\n }\n }, {\n key: \"transformVector3\",\n value: function transformVector3(vector, out) {\n out = out || new Vector3();\n vec3_transformMat4(out, vector, this);\n validateVector(out, 3);\n return out;\n }\n }, {\n key: \"transformVector4\",\n value: function transformVector4(vector, out) {\n out = out || new Vector4();\n vec4_transformMat4(out, vector, this);\n validateVector(out, 4);\n return out.check();\n }\n }, {\n key: \"transformVector\",\n value: function transformVector(vector, out) {\n switch (vector.length) {\n case 2:\n return this.transformVector2(vector, out);\n\n case 3:\n return this.transformVector3(vector, out);\n\n case 4:\n return this.transformVector4(vector, out);\n\n default:\n throw new Error('Illegal vector');\n }\n }\n }, {\n key: \"transformDirection\",\n value: function transformDirection(vector, out) {\n return this._transformVector(vector, out, 0);\n }\n }, {\n key: \"transformPoint\",\n value: function transformPoint(vector, out) {\n return this._transformVector(vector, out, 1);\n }\n }, {\n key: \"_transformVector\",\n value: function _transformVector(vector, out, w) {\n switch (vector.length) {\n case 2:\n out = out || new Vector2();\n vec4_transformMat4(out, [vector[0], vector[1], 0, w], this);\n out.length = 2;\n validateVector(out, 2);\n break;\n\n case 3:\n out = out || new Vector3();\n vec4_transformMat4(out, [vector[0], vector[1], vector[2], w], this);\n out.length = 3;\n validateVector(out, 3);\n break;\n\n case 4:\n if (Boolean(w) !== Boolean(vector[3])) {\n throw new Error('math.gl: Matrix4.transformPoint - invalid vector');\n }\n\n out = out || new Vector4();\n vec4_transformMat4(out, vector, this);\n validateVector(out, 4);\n break;\n\n default:\n throw new Error('Illegal vector');\n }\n\n return out;\n }\n }, {\n key: \"makeRotationX\",\n value: function makeRotationX(radians) {\n return this.identity().rotateX(radians);\n }\n }, {\n key: \"makeTranslation\",\n value: function makeTranslation(x, y, z) {\n return this.identity().translate([x, y, z]);\n }\n }, {\n key: \"ELEMENTS\",\n get: function get() {\n return 16;\n }\n }]);\n\n return Matrix4;\n}(MathArray);\n\nexport { Matrix4 as default };\n//# sourceMappingURL=matrix4.js.map","module.exports = fromMat3\n\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {mat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\nfunction fromMat3 (out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8]\n var fRoot\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0) // 2w\n out[3] = 0.5 * fRoot\n fRoot = 0.5 / fRoot // 1/(4w)\n out[0] = (m[5] - m[7]) * fRoot\n out[1] = (m[6] - m[2]) * fRoot\n out[2] = (m[1] - m[3]) * fRoot\n } else {\n // |w| <= 1/2\n var i = 0\n if (m[4] > m[0]) {\n i = 1\n }\n if (m[8] > m[i * 3 + i]) {\n i = 2\n }\n var j = (i + 1) % 3\n var k = (i + 2) % 3\n\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0)\n out[i] = 0.5 * fRoot\n fRoot = 0.5 / fRoot\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot\n }\n\n return out\n}\n","module.exports = identity\n\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\nfunction identity (out) {\n out[0] = 0\n out[1] = 0\n out[2] = 0\n out[3] = 1\n return out\n}\n","/**\n * Calculates the length of a quat\n *\n * @param {quat} a vector to calculate length of\n * @returns {Number} length of a\n * @function\n */\nmodule.exports = require('gl-vec4/length')\n","module.exports = length\n\n/**\n * Calculates the length of a vec4\n *\n * @param {vec4} a vector to calculate length of\n * @returns {Number} length of a\n */\nfunction length (a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3]\n return Math.sqrt(x * x + y * y + z * z + w * w)\n}\n","/**\n * Calculates the squared length of a quat\n *\n * @param {quat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\nmodule.exports = require('gl-vec4/squaredLength')\n","module.exports = squaredLength\n\n/**\n * Calculates the squared length of a vec4\n *\n * @param {vec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nfunction squaredLength (a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3]\n return x * x + y * y + z * z + w * w\n}\n","/**\n * Calculates the dot product of two quat's\n *\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\nmodule.exports = require('gl-vec4/dot')\n","module.exports = dot\n\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot (a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]\n}\n","module.exports = length;\n\n/**\n * Calculates the length of a vec3\n *\n * @param {vec3} a vector to calculate length of\n * @returns {Number} length of a\n */\nfunction length(a) {\n var x = a[0],\n y = a[1],\n z = a[2]\n return Math.sqrt(x*x + y*y + z*z)\n}","/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\nmodule.exports = require('gl-vec4/normalize')\n","module.exports = normalize\n\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to normalize\n * @returns {vec4} out\n */\nfunction normalize (out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3]\n var len = x * x + y * y + z * z + w * w\n if (len > 0) {\n len = 1 / Math.sqrt(len)\n out[0] = x * len\n out[1] = y * len\n out[2] = z * len\n out[3] = w * len\n }\n return out\n}\n","module.exports = setAxisAngle\n\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {vec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\nfunction setAxisAngle (out, axis, rad) {\n rad = rad * 0.5\n var s = Math.sin(rad)\n out[0] = s * axis[0]\n out[1] = s * axis[1]\n out[2] = s * axis[2]\n out[3] = Math.cos(rad)\n return out\n}\n","var vecDot = require('gl-vec3/dot')\nvar vecCross = require('gl-vec3/cross')\nvar vecLength = require('gl-vec3/length')\nvar vecNormalize = require('gl-vec3/normalize')\n\nvar quatNormalize = require('./normalize')\nvar quatAxisAngle = require('./setAxisAngle')\n\nmodule.exports = rotationTo\n\nvar tmpvec3 = [0, 0, 0]\nvar xUnitVec3 = [1, 0, 0]\nvar yUnitVec3 = [0, 1, 0]\n\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {vec3} a the initial vector\n * @param {vec3} b the destination vector\n * @returns {quat} out\n */\nfunction rotationTo (out, a, b) {\n var dot = vecDot(a, b)\n if (dot < -0.999999) {\n vecCross(tmpvec3, xUnitVec3, a)\n if (vecLength(tmpvec3) < 0.000001) {\n vecCross(tmpvec3, yUnitVec3, a)\n }\n vecNormalize(tmpvec3, tmpvec3)\n quatAxisAngle(out, tmpvec3, Math.PI)\n return out\n } else if (dot > 0.999999) {\n out[0] = 0\n out[1] = 0\n out[2] = 0\n out[3] = 1\n return out\n } else {\n vecCross(tmpvec3, a, b)\n out[0] = tmpvec3[0]\n out[1] = tmpvec3[1]\n out[2] = tmpvec3[2]\n out[3] = 1 + dot\n return quatNormalize(out, out)\n }\n}\n","/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {quat} out\n * @function\n */\nmodule.exports = require('gl-vec4/add')\n","module.exports = add\n\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nfunction add (out, a, b) {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n out[2] = a[2] + b[2]\n out[3] = a[3] + b[3]\n return out\n}\n","module.exports = calculateW\n\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate W component of\n * @returns {quat} out\n */\nfunction calculateW (out, a) {\n var x = a[0], y = a[1], z = a[2]\n\n out[0] = x\n out[1] = y\n out[2] = z\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z))\n return out\n}\n","module.exports = conjugate\n\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate conjugate of\n * @returns {quat} out\n */\nfunction conjugate (out, a) {\n out[0] = -a[0]\n out[1] = -a[1]\n out[2] = -a[2]\n out[3] = a[3]\n return out\n}\n","module.exports = invert\n\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate inverse of\n * @returns {quat} out\n */\nfunction invert (out, a) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3],\n dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3,\n invDot = dot ? 1.0 / dot : 0\n\n // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot\n out[1] = -a1 * invDot\n out[2] = -a2 * invDot\n out[3] = a3 * invDot\n return out\n}\n","/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {quat} out\n * @function\n */\nmodule.exports = require('gl-vec4/lerp')\n","module.exports = lerp\n\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec4} out\n */\nfunction lerp (out, a, b, t) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3]\n out[0] = ax + t * (b[0] - ax)\n out[1] = ay + t * (b[1] - ay)\n out[2] = az + t * (b[2] - az)\n out[3] = aw + t * (b[3] - aw)\n return out\n}\n","module.exports = multiply\n\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {quat} out\n */\nfunction multiply (out, a, b) {\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n bx = b[0], by = b[1], bz = b[2], bw = b[3]\n\n out[0] = ax * bw + aw * bx + ay * bz - az * by\n out[1] = ay * bw + aw * by + az * bx - ax * bz\n out[2] = az * bw + aw * bz + ax * by - ay * bx\n out[3] = aw * bw - ax * bx - ay * by - az * bz\n return out\n}\n","module.exports = rotateX\n\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nfunction rotateX (out, a, rad) {\n rad *= 0.5\n\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n bx = Math.sin(rad), bw = Math.cos(rad)\n\n out[0] = ax * bw + aw * bx\n out[1] = ay * bw + az * bx\n out[2] = az * bw - ay * bx\n out[3] = aw * bw - ax * bx\n return out\n}\n","module.exports = rotateY\n\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nfunction rotateY (out, a, rad) {\n rad *= 0.5\n\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n by = Math.sin(rad), bw = Math.cos(rad)\n\n out[0] = ax * bw - az * by\n out[1] = ay * bw + aw * by\n out[2] = az * bw + ax * by\n out[3] = aw * bw - ay * by\n return out\n}\n","module.exports = rotateZ\n\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nfunction rotateZ (out, a, rad) {\n rad *= 0.5\n\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n bz = Math.sin(rad), bw = Math.cos(rad)\n\n out[0] = ax * bw + ay * bz\n out[1] = ay * bw - ax * bz\n out[2] = az * bw + aw * bz\n out[3] = aw * bw - az * bz\n return out\n}\n","module.exports = scale\n\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\nfunction scale (out, a, b) {\n out[0] = a[0] * b\n out[1] = a[1] * b\n out[2] = a[2] * b\n out[3] = a[3] * b\n return out\n}\n","/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {quat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\nmodule.exports = require('gl-vec4/scale')\n","/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\nmodule.exports = require('gl-vec4/set')\n","module.exports = set\n\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\nfunction set (out, x, y, z, w) {\n out[0] = x\n out[1] = y\n out[2] = z\n out[3] = w\n return out\n}\n","module.exports = slerp\n\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {quat} out\n */\nfunction slerp (out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n bx = b[0], by = b[1], bz = b[2], bw = b[3]\n\n var omega, cosom, sinom, scale0, scale1\n\n // calc cosine\n cosom = ax * bx + ay * by + az * bz + aw * bw\n // adjust signs (if necessary)\n if (cosom < 0.0) {\n cosom = -cosom\n bx = -bx\n by = -by\n bz = -bz\n bw = -bw\n }\n // calculate coefficients\n if ((1.0 - cosom) > 0.000001) {\n // standard case (slerp)\n omega = Math.acos(cosom)\n sinom = Math.sin(omega)\n scale0 = Math.sin((1.0 - t) * omega) / sinom\n scale1 = Math.sin(t * omega) / sinom\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t\n scale1 = t\n }\n // calculate final values\n out[0] = scale0 * ax + scale1 * bx\n out[1] = scale0 * ay + scale1 * by\n out[2] = scale0 * az + scale1 * bz\n out[3] = scale0 * aw + scale1 * bw\n\n return out\n}\n","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport MathArray from './lib/math-array';\nimport { checkNumber } from './lib/common';\nimport quat_fromMat3 from 'gl-quat/fromMat3';\nimport quat_identity from 'gl-quat/identity';\nimport quat_length from 'gl-quat/length';\nimport quat_squaredLength from 'gl-quat/squaredLength';\nimport quat_dot from 'gl-quat/dot';\nimport quat_rotationTo from 'gl-quat/rotationTo';\nimport quat_add from 'gl-quat/add';\nimport quat_calculateW from 'gl-quat/calculateW';\nimport quat_conjugate from 'gl-quat/conjugate';\nimport quat_invert from 'gl-quat/invert';\nimport quat_lerp from 'gl-quat/lerp';\nimport quat_multiply from 'gl-quat/multiply';\nimport quat_normalize from 'gl-quat/normalize';\nimport quat_rotateX from 'gl-quat/rotateX';\nimport quat_rotateY from 'gl-quat/rotateY';\nimport quat_rotateZ from 'gl-quat/rotateZ';\nimport quat_scale from 'gl-quat/scale';\nimport quat_set from 'gl-quat/set';\nimport quat_setAxisAngle from 'gl-quat/setAxisAngle';\nimport quat_slerp from 'gl-quat/slerp';\nvar IDENTITY_QUATERNION = [0, 0, 0, 1];\nexport function validateQuaternion(q) {\n return q.length === 4 && Number.isFinite(q[0]) && Number.isFinite(q[1]) && Number.isFinite(q[2]) && Number.isFinite(q[3]);\n}\n\nvar Quaternion = function (_MathArray) {\n _inherits(Quaternion, _MathArray);\n\n function Quaternion() {\n var _this;\n\n var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var w = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n\n _classCallCheck(this, Quaternion);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Quaternion).call(this));\n\n if (Array.isArray(x) && arguments.length === 1) {\n _this.copy(x);\n } else {\n _this.set(x, y, z, w);\n }\n\n return _this;\n }\n\n _createClass(Quaternion, [{\n key: \"fromMatrix3\",\n value: function fromMatrix3(m) {\n quat_fromMat3(this, m);\n return this.check();\n }\n }, {\n key: \"fromValues\",\n value: function fromValues(x, y, z, w) {\n return this.set(x, y, z, w);\n }\n }, {\n key: \"identity\",\n value: function identity() {\n quat_identity(this);\n return this.check();\n }\n }, {\n key: \"length\",\n value: function length() {\n return quat_length(this);\n }\n }, {\n key: \"squaredLength\",\n value: function squaredLength(a) {\n return quat_squaredLength(this);\n }\n }, {\n key: \"dot\",\n value: function dot(a, b) {\n if (b !== undefined) {\n throw new Error('Quaternion.dot only takes one argument');\n }\n\n return quat_dot(this, a);\n }\n }, {\n key: \"rotationTo\",\n value: function rotationTo(vectorA, vectorB) {\n quat_rotationTo(this, vectorA, vectorB);\n return this.check();\n }\n }, {\n key: \"add\",\n value: function add(a, b) {\n if (b !== undefined) {\n throw new Error('Quaternion.add only takes one argument');\n }\n\n quat_add(this, a);\n return this.check();\n }\n }, {\n key: \"calculateW\",\n value: function calculateW() {\n quat_calculateW(this, this);\n return this.check();\n }\n }, {\n key: \"conjugate\",\n value: function conjugate() {\n quat_conjugate(this, this);\n return this.check();\n }\n }, {\n key: \"invert\",\n value: function invert() {\n quat_invert(this, this);\n return this.check();\n }\n }, {\n key: \"lerp\",\n value: function lerp(a, b, t) {\n quat_lerp(this, a, b, t);\n return this.check();\n }\n }, {\n key: \"multiply\",\n value: function multiply(a, b) {\n if (b !== undefined) {\n throw new Error('Quaternion.multiply only takes one argument');\n }\n\n quat_multiply(this, this, b);\n return this.check();\n }\n }, {\n key: \"normalize\",\n value: function normalize() {\n quat_normalize(this, this);\n return this.check();\n }\n }, {\n key: \"rotateX\",\n value: function rotateX(rad) {\n quat_rotateX(this, this, rad);\n return this.check();\n }\n }, {\n key: \"rotateY\",\n value: function rotateY(rad) {\n quat_rotateY(this, this, rad);\n return this.check();\n }\n }, {\n key: \"rotateZ\",\n value: function rotateZ(rad) {\n quat_rotateZ(this, this, rad);\n return this.check();\n }\n }, {\n key: \"scale\",\n value: function scale(b) {\n quat_scale(this, this, b);\n return this.check();\n }\n }, {\n key: \"set\",\n value: function set(i, j, k, l) {\n quat_set(this, i, j, k, l);\n return this.check();\n }\n }, {\n key: \"setAxisAngle\",\n value: function setAxisAngle(axis, rad) {\n quat_setAxisAngle(this, axis, rad);\n return this.check();\n }\n }, {\n key: \"slerp\",\n value: function slerp(_ref) {\n var _ref$start = _ref.start,\n start = _ref$start === void 0 ? IDENTITY_QUATERNION : _ref$start,\n target = _ref.target,\n ratio = _ref.ratio;\n quat_slerp(this, start, target, ratio);\n return this.check();\n }\n }, {\n key: \"ELEMENTS\",\n get: function get() {\n return 4;\n }\n }, {\n key: \"x\",\n get: function get() {\n return this[0];\n },\n set: function set(value) {\n return this[0] = checkNumber(value);\n }\n }, {\n key: \"y\",\n get: function get() {\n return this[1];\n },\n set: function set(value) {\n return this[1] = checkNumber(value);\n }\n }, {\n key: \"z\",\n get: function get() {\n return this[2];\n },\n set: function set(value) {\n return this[2] = checkNumber(value);\n }\n }, {\n key: \"w\",\n get: function get() {\n return this[3];\n },\n set: function set(value) {\n return this[3] = checkNumber(value);\n }\n }]);\n\n return Quaternion;\n}(MathArray);\n\nexport { Quaternion as default };\n//# sourceMappingURL=quaternion.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport MathArray from './lib/math-array';\nimport { checkNumber, clamp } from './lib/common';\nimport Matrix4 from './matrix4';\nimport Quaternion from './quaternion';\nimport Vector3 from './vector3';\nvar ERR_UNKNOWN_ORDER = 'Unknown Euler angle order';\nvar ALMOST_ONE = 0.99999;\n\nfunction validateOrder(value) {\n return value >= 0 && value < 6;\n}\n\nfunction checkOrder(value) {\n if (value < 0 && value >= 6) {\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n\n return value;\n}\n\nvar Euler = function (_MathArray) {\n _inherits(Euler, _MathArray);\n\n _createClass(Euler, [{\n key: \"ELEMENTS\",\n get: function get() {\n return 4;\n }\n }], [{\n key: \"rotationOrder\",\n value: function rotationOrder(order) {\n return Euler.RotationOrders[order];\n }\n }, {\n key: \"ZYX\",\n get: function get() {\n return 0;\n }\n }, {\n key: \"YXZ\",\n get: function get() {\n return 1;\n }\n }, {\n key: \"XZY\",\n get: function get() {\n return 2;\n }\n }, {\n key: \"ZXY\",\n get: function get() {\n return 3;\n }\n }, {\n key: \"YZX\",\n get: function get() {\n return 4;\n }\n }, {\n key: \"XYZ\",\n get: function get() {\n return 5;\n }\n }, {\n key: \"RollPitchYaw\",\n get: function get() {\n return 0;\n }\n }, {\n key: \"DefaultOrder\",\n get: function get() {\n return Euler.ZYX;\n }\n }, {\n key: \"RotationOrders\",\n get: function get() {\n return ['ZYX', 'YXZ', 'XZY', 'ZXY', 'YZX', 'XYZ'];\n }\n }]);\n\n function Euler() {\n var _this;\n\n var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var order = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Euler.DefaultOrder;\n\n _classCallCheck(this, Euler);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Euler).call(this));\n\n if (arguments.length > 0 && Array.isArray(arguments[0])) {\n var _this2;\n\n (_this2 = _this).fromVector3.apply(_this2, arguments);\n } else {\n _this.set(x, y, z, order);\n }\n\n return _this;\n }\n\n _createClass(Euler, [{\n key: \"copy\",\n value: function copy(array) {\n for (var i = 0; i < 3; ++i) {\n this[i] = array[i];\n }\n\n this[3] = Number.isFinite(array[3]) || this.order;\n return this.check();\n }\n }, {\n key: \"set\",\n value: function set() {\n var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var order = arguments.length > 3 ? arguments[3] : undefined;\n this[0] = x;\n this[1] = y;\n this[2] = z;\n this[3] = Number.isFinite(order) ? order : this[3];\n return this.check();\n }\n }, {\n key: \"validate\",\n value: function validate() {\n return validateOrder(this[3]) && Number.isFinite(this[0]) && Number.isFinite(this[1]) && Number.isFinite(this[2]);\n }\n }, {\n key: \"toArray\",\n value: function toArray() {\n var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n array[offset] = this[0];\n array[offset + 1] = this[1];\n array[offset + 2] = this[2];\n return array;\n }\n }, {\n key: \"toArray4\",\n value: function toArray4() {\n var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n array[offset] = this[0];\n array[offset + 1] = this[1];\n array[offset + 2] = this[2];\n array[offset + 3] = this[3];\n return array;\n }\n }, {\n key: \"toVector3\",\n value: function toVector3(optionalResult) {\n if (optionalResult) {\n return optionalResult.set(this[0], this[1], this[2]);\n }\n\n return new Vector3(this[0], this[1], this[2]);\n }\n }, {\n key: \"fromVector3\",\n value: function fromVector3(v, order) {\n return this.set(v[0], v[1], v[2], Number.isFinite(order) ? order : this[3]);\n }\n }, {\n key: \"fromArray\",\n value: function fromArray(array) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n this[0] = array[0 + offset];\n this[1] = array[1 + offset];\n this[2] = array[2 + offset];\n\n if (array[3] !== undefined) {\n this[3] = array[3];\n }\n\n return this.check();\n }\n }, {\n key: \"fromRollPitchYaw\",\n value: function fromRollPitchYaw(roll, pitch, yaw) {\n return this.set(roll, pitch, yaw, Euler.ZYX);\n }\n }, {\n key: \"fromQuaternion\",\n value: function fromQuaternion(q, order) {\n this._fromRotationMatrix(Matrix4.fromQuaternion(q), order);\n\n return this.check();\n }\n }, {\n key: \"fromRotationMatrix\",\n value: function fromRotationMatrix(m) {\n var order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Euler.DefaultOrder;\n\n this._fromRotationMatrix(m, order);\n\n return this.check();\n }\n }, {\n key: \"getRotationMatrix\",\n value: function getRotationMatrix() {\n var m = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Matrix4();\n\n this._getRotationMatrix(m);\n\n return m;\n }\n }, {\n key: \"getQuaternion\",\n value: function getQuaternion() {\n var q = new Quaternion();\n\n switch (this[4]) {\n case Euler.XYZ:\n return q.rotateX(this[0]).rotateY(this[1]).rotateZ(this[2]);\n\n case Euler.YXZ:\n return q.rotateY(this[0]).rotateX(this[1]).rotateZ(this[2]);\n\n case Euler.ZXY:\n return q.rotateZ(this[0]).rotateX(this[1]).rotateY(this[2]);\n\n case Euler.ZYX:\n return q.rotateZ(this[0]).rotateY(this[1]).rotateX(this[2]);\n\n case Euler.YZX:\n return q.rotateY(this[0]).rotateZ(this[1]).rotateX(this[2]);\n\n case Euler.XZY:\n return q.rotateX(this[0]).rotateZ(this[1]).rotateY(this[2]);\n\n default:\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n }\n }, {\n key: \"_fromRotationMatrix\",\n value: function _fromRotationMatrix(m) {\n var order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Euler.DefaultOrder;\n var te = m.elements;\n var m11 = te[0],\n m12 = te[4],\n m13 = te[8];\n var m21 = te[1],\n m22 = te[5],\n m23 = te[9];\n var m31 = te[2],\n m32 = te[6],\n m33 = te[10];\n order = order || this[3];\n\n switch (order) {\n case Euler.XYZ:\n this[1] = Math.asin(clamp(m13, -1, 1));\n\n if (Math.abs(m13) < ALMOST_ONE) {\n this[0] = Math.atan2(-m23, m33);\n this[2] = Math.atan2(-m12, m11);\n } else {\n this[0] = Math.atan2(m32, m22);\n this[2] = 0;\n }\n\n break;\n\n case Euler.YXZ:\n this[0] = Math.asin(-clamp(m23, -1, 1));\n\n if (Math.abs(m23) < ALMOST_ONE) {\n this[1] = Math.atan2(m13, m33);\n this[2] = Math.atan2(m21, m22);\n } else {\n this[1] = Math.atan2(-m31, m11);\n this[2] = 0;\n }\n\n break;\n\n case Euler.ZXY:\n this[0] = Math.asin(clamp(m32, -1, 1));\n\n if (Math.abs(m32) < ALMOST_ONE) {\n this[1] = Math.atan2(-m31, m33);\n this[2] = Math.atan2(-m12, m22);\n } else {\n this[1] = 0;\n this[2] = Math.atan2(m21, m11);\n }\n\n break;\n\n case Euler.ZYX:\n this[1] = Math.asin(-clamp(m31, -1, 1));\n\n if (Math.abs(m31) < ALMOST_ONE) {\n this[0] = Math.atan2(m32, m33);\n this[2] = Math.atan2(m21, m11);\n } else {\n this[0] = 0;\n this[2] = Math.atan2(-m12, m22);\n }\n\n break;\n\n case Euler.YZX:\n this[2] = Math.asin(clamp(m21, -1, 1));\n\n if (Math.abs(m21) < ALMOST_ONE) {\n this[0] = Math.atan2(-m23, m22);\n this[1] = Math.atan2(-m31, m11);\n } else {\n this[0] = 0;\n this[1] = Math.atan2(m13, m33);\n }\n\n break;\n\n case Euler.XZY:\n this[2] = Math.asin(-clamp(m12, -1, 1));\n\n if (Math.abs(m12) < ALMOST_ONE) {\n this[0] = Math.atan2(m32, m22);\n this[1] = Math.atan2(m13, m11);\n } else {\n this[0] = Math.atan2(-m23, m33);\n this[1] = 0;\n }\n\n break;\n\n default:\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n\n this[3] = order;\n return this;\n }\n }, {\n key: \"_getRotationMatrix\",\n value: function _getRotationMatrix() {\n var te = new Matrix4();\n var x = this.x,\n y = this.y,\n z = this.z;\n var a = Math.cos(x);\n var c = Math.cos(y);\n var e = Math.cos(z);\n var b = Math.sin(x);\n var d = Math.sin(y);\n var f = Math.sin(z);\n\n switch (this[3]) {\n case Euler.XYZ:\n {\n var ae = a * e,\n af = a * f,\n be = b * e,\n bf = b * f;\n te[0] = c * e;\n te[4] = -c * f;\n te[8] = d;\n te[1] = af + be * d;\n te[5] = ae - bf * d;\n te[9] = -b * c;\n te[2] = bf - ae * d;\n te[6] = be + af * d;\n te[10] = a * c;\n break;\n }\n\n case Euler.YXZ:\n {\n var ce = c * e,\n cf = c * f,\n de = d * e,\n df = d * f;\n te[0] = ce + df * b;\n te[4] = de * b - cf;\n te[8] = a * d;\n te[1] = a * f;\n te[5] = a * e;\n te[9] = -b;\n te[2] = cf * b - de;\n te[6] = df + ce * b;\n te[10] = a * c;\n break;\n }\n\n case Euler.ZXY:\n {\n var _ce = c * e,\n _cf = c * f,\n _de = d * e,\n _df = d * f;\n\n te[0] = _ce - _df * b;\n te[4] = -a * f;\n te[8] = _de + _cf * b;\n te[1] = _cf + _de * b;\n te[5] = a * e;\n te[9] = _df - _ce * b;\n te[2] = -a * d;\n te[6] = b;\n te[10] = a * c;\n break;\n }\n\n case Euler.ZYX:\n {\n var _ae = a * e,\n _af = a * f,\n _be = b * e,\n _bf = b * f;\n\n te[0] = c * e;\n te[4] = _be * d - _af;\n te[8] = _ae * d + _bf;\n te[1] = c * f;\n te[5] = _bf * d + _ae;\n te[9] = _af * d - _be;\n te[2] = -d;\n te[6] = b * c;\n te[10] = a * c;\n break;\n }\n\n case Euler.YZX:\n {\n var ac = a * c,\n ad = a * d,\n bc = b * c,\n bd = b * d;\n te[0] = c * e;\n te[4] = bd - ac * f;\n te[8] = bc * f + ad;\n te[1] = f;\n te[5] = a * e;\n te[9] = -b * e;\n te[2] = -d * e;\n te[6] = ad * f + bc;\n te[10] = ac - bd * f;\n break;\n }\n\n case Euler.XZY:\n {\n var _ac = a * c,\n _ad = a * d,\n _bc = b * c,\n _bd = b * d;\n\n te[0] = c * e;\n te[4] = -f;\n te[8] = d * e;\n te[1] = _ac * f + _bd;\n te[5] = a * e;\n te[9] = _ad * f - _bc;\n te[2] = _bc * f - _ad;\n te[6] = b * e;\n te[10] = _bd * f + _ac;\n break;\n }\n\n default:\n throw new Error(ERR_UNKNOWN_ORDER);\n }\n\n te[3] = 0;\n te[7] = 0;\n te[11] = 0;\n te[12] = 0;\n te[13] = 0;\n te[14] = 0;\n te[15] = 1;\n return this;\n }\n }, {\n key: \"x\",\n get: function get() {\n return this[0];\n },\n set: function set(value) {\n return this[0] = checkNumber(value);\n }\n }, {\n key: \"y\",\n get: function get() {\n return this[1];\n },\n set: function set(value) {\n return this[1] = checkNumber(value);\n }\n }, {\n key: \"z\",\n get: function get() {\n return this[2];\n },\n set: function set(value) {\n return this[2] = checkNumber(value);\n }\n }, {\n key: \"alpha\",\n get: function get() {\n return this[0];\n },\n set: function set(value) {\n return this[0] = checkNumber(value);\n }\n }, {\n key: \"beta\",\n get: function get() {\n return this[1];\n },\n set: function set(value) {\n return this[1] = checkNumber(value);\n }\n }, {\n key: \"gamma\",\n get: function get() {\n return this[2];\n },\n set: function set(value) {\n return this[2] = checkNumber(value);\n }\n }, {\n key: \"phi\",\n get: function get() {\n return this[0];\n },\n set: function set(value) {\n return this[0] = checkNumber(value);\n }\n }, {\n key: \"theta\",\n get: function get() {\n return this[1];\n },\n set: function set(value) {\n return this[1] = checkNumber(value);\n }\n }, {\n key: \"psi\",\n get: function get() {\n return this[2];\n },\n set: function set(value) {\n return this[2] = checkNumber(value);\n }\n }, {\n key: \"roll\",\n get: function get() {\n return this[0];\n },\n set: function set(value) {\n return this[0] = checkNumber(value);\n }\n }, {\n key: \"pitch\",\n get: function get() {\n return this[1];\n },\n set: function set(value) {\n return this[1] = checkNumber(value);\n }\n }, {\n key: \"yaw\",\n get: function get() {\n return this[2];\n },\n set: function set(value) {\n return this[2] = checkNumber(value);\n }\n }, {\n key: \"order\",\n get: function get() {\n return this[3];\n },\n set: function set(value) {\n return this[3] = checkOrder(value);\n }\n }]);\n\n return Euler;\n}(MathArray);\n\nexport { Euler as default };\n//# sourceMappingURL=euler.js.map","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { formatValue, equals as _equals, config } from './lib/common';\nimport { degrees, radians, clamp } from './lib/common';\nimport Vector3 from './vector3';\nimport vec3_length from 'gl-vec3/length';\nvar EPSILON = 0.000001;\nvar EARTH_RADIUS_METERS = 6.371e6;\n\nvar SphericalCoordinates = function () {\n function SphericalCoordinates() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n phi = _ref.phi,\n theta = _ref.theta,\n radius = _ref.radius,\n bearing = _ref.bearing,\n pitch = _ref.pitch,\n altitude = _ref.altitude,\n _ref$radiusScale = _ref.radiusScale,\n radiusScale = _ref$radiusScale === void 0 ? EARTH_RADIUS_METERS : _ref$radiusScale;\n\n _classCallCheck(this, SphericalCoordinates);\n\n if (arguments.length === 0) {\n this.phi = 0;\n this.theta = 0;\n this.radius = 1;\n } else if (Number.isFinite(phi) || Number.isFinite(theta)) {\n this.phi = phi || 0;\n this.theta = theta || 0;\n } else if (Number.isFinite(bearing) || Number.isFinite(pitch)) {\n this.bearing = bearing || 0;\n this.pitch = pitch || 0;\n }\n\n this.radius = radius || 1;\n this.radiusScale = radiusScale || 1;\n this.check();\n }\n\n _createClass(SphericalCoordinates, [{\n key: \"toString\",\n value: function toString() {\n return this.formatString(config);\n }\n }, {\n key: \"formatString\",\n value: function formatString(_ref2) {\n var printTypes = _ref2.printTypes,\n printDegrees = _ref2.printDegrees;\n var f = formatValue;\n return \"\".concat(printTypes ? 'Spherical' : '', \"[rho:\").concat(f(this.radius), \",theta:\").concat(f(this.theta), \",phi:\").concat(f(this.phi), \"]\");\n }\n }, {\n key: \"equals\",\n value: function equals(other) {\n return _equals(this.radius, other.radius) && _equals(this.theta, other.theta) && _equals(this.phi, other.phi);\n }\n }, {\n key: \"exactEquals\",\n value: function exactEquals(other) {\n return this.radius === other.radius && this.theta === other.theta && this.phi === other.phi;\n }\n }, {\n key: \"set\",\n value: function set(radius, phi, theta) {\n this.radius = radius;\n this.phi = phi;\n this.theta = theta;\n return this.check();\n }\n }, {\n key: \"clone\",\n value: function clone() {\n return new this.constructor().copy(this);\n }\n }, {\n key: \"copy\",\n value: function copy(other) {\n this.radius = other.radius;\n this.phi = other.phi;\n this.theta = other.theta;\n return this.check();\n }\n }, {\n key: \"fromLngLatZ\",\n value: function fromLngLatZ(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 3),\n lng = _ref4[0],\n lat = _ref4[1],\n z = _ref4[2];\n\n this.radius = 1 + z / this.radiusScale;\n this.phi = radians(lat);\n this.theta = radians(lng);\n }\n }, {\n key: \"fromVector3\",\n value: function fromVector3(v) {\n this.radius = vec3_length(v);\n\n if (this.radius === 0) {\n this.theta = 0;\n this.phi = 0;\n } else {\n this.theta = Math.atan2(v[0], v[1]);\n this.phi = Math.acos(clamp(v[2] / this.radius, -1, 1));\n }\n\n return this.check();\n }\n }, {\n key: \"toVector3\",\n value: function toVector3() {\n return new Vector3(0, 0, this.radius).rotateX({\n radians: this.theta\n }).rotateZ({\n radians: this.phi\n });\n }\n }, {\n key: \"makeSafe\",\n value: function makeSafe() {\n this.phi = Math.max(EPSILON, Math.min(Math.PI - EPSILON, this.phi));\n }\n }, {\n key: \"check\",\n value: function check() {\n if (!Number.isFinite(this.phi) || !Number.isFinite(this.theta) || !(this.radius > 0)) {\n throw new Error('SphericalCoordinates: some fields set to invalid numbers');\n }\n\n return this;\n }\n }, {\n key: \"bearing\",\n get: function get() {\n return 180 - degrees(this.phi);\n },\n set: function set(v) {\n this.phi = Math.PI - radians(v);\n }\n }, {\n key: \"pitch\",\n get: function get() {\n return degrees(this.theta);\n },\n set: function set(v) {\n this.theta = radians(v);\n }\n }, {\n key: \"longitude\",\n get: function get() {\n return degrees(this.phi);\n }\n }, {\n key: \"latitude\",\n get: function get() {\n return degrees(this.theta);\n }\n }, {\n key: \"lng\",\n get: function get() {\n return degrees(this.phi);\n }\n }, {\n key: \"lat\",\n get: function get() {\n return degrees(this.theta);\n }\n }, {\n key: \"z\",\n get: function get() {\n return (this.radius - 1) * this.radiusScale;\n }\n }]);\n\n return SphericalCoordinates;\n}();\n\nexport { SphericalCoordinates as default };\n//# sourceMappingURL=spherical-coordinates.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport Matrix4 from './matrix4';\nimport Vector3 from './vector3';\nimport Euler from './euler';\n\nvar Pose = function () {\n function Pose(_ref) {\n var _ref$x = _ref.x,\n x = _ref$x === void 0 ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === void 0 ? 0 : _ref$y,\n _ref$z = _ref.z,\n z = _ref$z === void 0 ? 0 : _ref$z,\n _ref$roll = _ref.roll,\n roll = _ref$roll === void 0 ? 0 : _ref$roll,\n _ref$pitch = _ref.pitch,\n pitch = _ref$pitch === void 0 ? 0 : _ref$pitch,\n _ref$yaw = _ref.yaw,\n yaw = _ref$yaw === void 0 ? 0 : _ref$yaw,\n position = _ref.position,\n orientation = _ref.orientation;\n\n _classCallCheck(this, Pose);\n\n if (Array.isArray(position) && position.length === 3) {\n this.position = new Vector3(position);\n } else {\n this.position = new Vector3(x, y, z);\n }\n\n if (Array.isArray(orientation) && orientation.length === 4) {\n this.orientation = new Euler(orientation, orientation[3]);\n } else {\n this.orientation = new Euler(roll, pitch, yaw, Euler.RollPitchYaw);\n }\n }\n\n _createClass(Pose, [{\n key: \"getPosition\",\n value: function getPosition() {\n return this.position;\n }\n }, {\n key: \"getOrientation\",\n value: function getOrientation() {\n return this.orientation;\n }\n }, {\n key: \"equals\",\n value: function equals(pose) {\n if (!pose) {\n return false;\n }\n\n return this.position.equals(pose.position) && this.orientation.equals(pose.orientation);\n }\n }, {\n key: \"exactEquals\",\n value: function exactEquals(pose) {\n if (!pose) {\n return false;\n }\n\n return this.position.exactEquals(pose.position) && this.orientation.exactEquals(pose.orientation);\n }\n }, {\n key: \"getTransformationMatrix\",\n value: function getTransformationMatrix() {\n var sr = Math.sin(this.roll);\n var sp = Math.sin(this.pitch);\n var sw = Math.sin(this.yaw);\n var cr = Math.cos(this.roll);\n var cp = Math.cos(this.pitch);\n var cw = Math.cos(this.yaw);\n var matrix = new Matrix4().setRowMajor(cw * cp, -sw * cr + cw * sp * sr, sw * sr + cw * sp * cr, this.x, sw * cp, cw * cr + sw * sp * sr, -cw * sr + sw * sp * cr, this.y, -sp, cp * sr, cp * cr, this.z, 0, 0, 0, 1);\n return matrix;\n }\n }, {\n key: \"getTransformationMatrixFromPose\",\n value: function getTransformationMatrixFromPose(pose) {\n return new Matrix4().multiplyRight(this.getTransformationMatrix()).multiplyRight(pose.getTransformationMatrix().invert());\n }\n }, {\n key: \"getTransformationMatrixToPose\",\n value: function getTransformationMatrixToPose(pose) {\n return new Matrix4().multiplyRight(pose.getTransformationMatrix()).multiplyRight(this.getTransformationMatrix().invert());\n }\n }, {\n key: \"x\",\n get: function get() {\n return this.position.x;\n },\n set: function set(value) {\n return this.position.x = value;\n }\n }, {\n key: \"y\",\n get: function get() {\n return this.position.y;\n },\n set: function set(value) {\n return this.position.y = value;\n }\n }, {\n key: \"z\",\n get: function get() {\n return this.position.z;\n },\n set: function set(value) {\n return this.position.z = value;\n }\n }, {\n key: \"roll\",\n get: function get() {\n return this.orientation.roll;\n },\n set: function set(value) {\n return this.orientation.roll = value;\n }\n }, {\n key: \"pitch\",\n get: function get() {\n return this.orientation.pitch;\n },\n set: function set(value) {\n return this.orientation.pitch = value;\n }\n }, {\n key: \"yaw\",\n get: function get() {\n return this.orientation.yaw;\n },\n set: function set(value) {\n return this.orientation.yaw = value;\n }\n }]);\n\n return Pose;\n}();\n\nexport { Pose as default };\n//# sourceMappingURL=pose.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { equals } from '../lib/common';\n\nvar Polygon = function () {\n function Polygon(points) {\n _classCallCheck(this, Polygon);\n\n this.points = points;\n this.isClosed = equals(this.points[this.points.length - 1], this.points[0]);\n Object.freeze(this);\n }\n\n _createClass(Polygon, [{\n key: \"getSignedArea\",\n value: function getSignedArea() {\n var area = 0;\n this.forEachSegment(function (p1, p2) {\n area += (p1[0] + p2[0]) * (p1[1] - p2[1]);\n });\n return area / 2;\n }\n }, {\n key: \"getArea\",\n value: function getArea() {\n return Math.abs(this.getSignedArea());\n }\n }, {\n key: \"getWindingDirection\",\n value: function getWindingDirection() {\n return Math.sign(this.getSignedArea());\n }\n }, {\n key: \"forEachSegment\",\n value: function forEachSegment(visitor) {\n var length = this.points.length;\n\n for (var i = 0; i < length - 1; i++) {\n visitor(this.points[i], this.points[i + 1], i, i + 1);\n }\n\n if (this.isPolygon && !this.isClosed()) {\n visitor(this.points[length - 1], this.points[0], length - 1, 0);\n }\n }\n }]);\n\n return Polygon;\n}();\n\nexport { Polygon as default };\n//# sourceMappingURL=polygon.js.map","import vec4_scale from 'gl-vec4/scale';\nimport vec4_transformMat4 from 'gl-vec4/transformMat4';\nexport function createMat4() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\nexport function transformVector(matrix, vector) {\n var result = vec4_transformMat4([], vector, matrix);\n vec4_scale(result, result, 1 / result[3]);\n return result;\n}\nexport function mod(value, divisor) {\n var modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\nexport function lerp(start, end, step) {\n return step * end + (1 - step) * start;\n}\n//# sourceMappingURL=math-utils.js.map","module.exports = lerp\n\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec2} out\n */\nfunction lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1]\n out[0] = ax + t * (b[0] - ax)\n out[1] = ay + t * (b[1] - ay)\n return out\n}","export default function assert(condition) {\n if (!condition) {\n throw new Error('viewport-mercator-project: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { Vector3 } from 'math.gl';\nimport { createMat4, transformVector } from './math-utils';\nimport mat4_perspective from 'gl-mat4/perspective';\nimport mat4_scale from 'gl-mat4/scale';\nimport mat4_translate from 'gl-mat4/translate';\nimport mat4_rotateX from 'gl-mat4/rotateX';\nimport mat4_rotateZ from 'gl-mat4/rotateZ';\nimport vec2_lerp from 'gl-vec2/lerp';\nimport assert from './assert';\nvar PI = Math.PI;\nvar PI_4 = PI / 4;\nvar DEGREES_TO_RADIANS = PI / 180;\nvar RADIANS_TO_DEGREES = 180 / PI;\nvar TILE_SIZE = 512;\nvar EARTH_CIRCUMFERENCE = 40.03e6;\nvar DEFAULT_ALTITUDE = 1.5;\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\nexport function scaleToZoom(scale) {\n return Math.log2(scale);\n}\nexport function lngLatToWorld(_ref, scale) {\n var _ref2 = _slicedToArray(_ref, 2),\n lng = _ref2[0],\n lat = _ref2[1];\n\n scale *= TILE_SIZE;\n var lambda2 = lng * DEGREES_TO_RADIANS;\n var phi2 = lat * DEGREES_TO_RADIANS;\n var x = scale * (lambda2 + PI) / (2 * PI);\n var y = scale * (PI - Math.log(Math.tan(PI_4 + phi2 * 0.5))) / (2 * PI);\n return [x, y];\n}\nexport function worldToLngLat(_ref3, scale) {\n var _ref4 = _slicedToArray(_ref3, 2),\n x = _ref4[0],\n y = _ref4[1];\n\n scale *= TILE_SIZE;\n var lambda2 = x / scale * (2 * PI) - PI;\n var phi2 = 2 * (Math.atan(Math.exp(PI - y / scale * (2 * PI))) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\nexport function getMeterZoom(_ref5) {\n var latitude = _ref5.latitude;\n assert(Number.isFinite(latitude));\n var latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\nexport function getDistanceScales(_ref6) {\n var latitude = _ref6.latitude,\n longitude = _ref6.longitude,\n zoom = _ref6.zoom,\n scale = _ref6.scale,\n _ref6$highPrecision = _ref6.highPrecision,\n highPrecision = _ref6$highPrecision === void 0 ? false : _ref6$highPrecision;\n scale = scale !== undefined ? scale : zoomToScale(zoom);\n assert(Number.isFinite(latitude) && Number.isFinite(longitude) && Number.isFinite(scale));\n var result = {};\n var worldSize = TILE_SIZE * scale;\n var latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n var pixelsPerDegreeX = worldSize / 360;\n var pixelsPerDegreeY = pixelsPerDegreeX / latCosine;\n var altPixelsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n result.pixelsPerMeter = [altPixelsPerMeter, -altPixelsPerMeter, altPixelsPerMeter];\n result.metersPerPixel = [1 / altPixelsPerMeter, -1 / altPixelsPerMeter, 1 / altPixelsPerMeter];\n result.pixelsPerDegree = [pixelsPerDegreeX, -pixelsPerDegreeY, altPixelsPerMeter];\n result.degreesPerPixel = [1 / pixelsPerDegreeX, -1 / pixelsPerDegreeY, 1 / altPixelsPerMeter];\n\n if (highPrecision) {\n var latCosine2 = DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS) / latCosine;\n var pixelsPerDegreeY2 = pixelsPerDegreeX * latCosine2 / 2;\n var altPixelsPerDegree2 = worldSize / EARTH_CIRCUMFERENCE * latCosine2;\n var altPixelsPerMeter2 = altPixelsPerDegree2 / pixelsPerDegreeY * altPixelsPerMeter;\n result.pixelsPerDegree2 = [0, -pixelsPerDegreeY2, altPixelsPerDegree2];\n result.pixelsPerMeter2 = [altPixelsPerMeter2, 0, altPixelsPerMeter2];\n }\n\n return result;\n}\nexport function addMetersToLngLat(lngLatZ, xyz) {\n var _lngLatZ = _slicedToArray(lngLatZ, 3),\n longitude = _lngLatZ[0],\n latitude = _lngLatZ[1],\n z0 = _lngLatZ[2];\n\n var _xyz = _slicedToArray(xyz, 3),\n x = _xyz[0],\n y = _xyz[1],\n z = _xyz[2];\n\n var scale = 1;\n\n var _getDistanceScales = getDistanceScales({\n longitude: longitude,\n latitude: latitude,\n scale: scale,\n highPrecision: true\n }),\n pixelsPerMeter = _getDistanceScales.pixelsPerMeter,\n pixelsPerMeter2 = _getDistanceScales.pixelsPerMeter2;\n\n var worldspace = lngLatToWorld(lngLatZ, scale);\n worldspace[0] += x * (pixelsPerMeter[0] + pixelsPerMeter2[0] * y);\n worldspace[1] += y * (pixelsPerMeter[1] + pixelsPerMeter2[1] * y);\n var newLngLat = worldToLngLat(worldspace, scale);\n var newZ = (z0 || 0) + (z || 0);\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\nexport function getViewMatrix(_ref7) {\n var height = _ref7.height,\n pitch = _ref7.pitch,\n bearing = _ref7.bearing,\n altitude = _ref7.altitude,\n _ref7$center = _ref7.center,\n center = _ref7$center === void 0 ? null : _ref7$center,\n _ref7$flipY = _ref7.flipY,\n flipY = _ref7$flipY === void 0 ? false : _ref7$flipY;\n var vm = createMat4();\n mat4_translate(vm, vm, [0, 0, -altitude]);\n mat4_scale(vm, vm, [1, 1, 1 / height]);\n mat4_rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4_rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n\n if (flipY) {\n mat4_scale(vm, vm, [1, -1, 1]);\n }\n\n if (center) {\n mat4_translate(vm, vm, new Vector3(center).negate());\n }\n\n return vm;\n}\nexport function getProjectionParameters(_ref8) {\n var width = _ref8.width,\n height = _ref8.height,\n _ref8$altitude = _ref8.altitude,\n altitude = _ref8$altitude === void 0 ? DEFAULT_ALTITUDE : _ref8$altitude,\n _ref8$pitch = _ref8.pitch,\n pitch = _ref8$pitch === void 0 ? 0 : _ref8$pitch,\n _ref8$nearZMultiplier = _ref8.nearZMultiplier,\n nearZMultiplier = _ref8$nearZMultiplier === void 0 ? 1 : _ref8$nearZMultiplier,\n _ref8$farZMultiplier = _ref8.farZMultiplier,\n farZMultiplier = _ref8$farZMultiplier === void 0 ? 1 : _ref8$farZMultiplier;\n var pitchRadians = pitch * DEGREES_TO_RADIANS;\n var halfFov = Math.atan(0.5 / altitude);\n var topHalfSurfaceDistance = Math.sin(halfFov) * altitude / Math.sin(Math.PI / 2 - pitchRadians - halfFov);\n var farZ = Math.cos(Math.PI / 2 - pitchRadians) * topHalfSurfaceDistance + altitude;\n return {\n fov: 2 * Math.atan(height / 2 / altitude),\n aspect: width / height,\n focalDistance: altitude,\n near: nearZMultiplier,\n far: farZ * farZMultiplier\n };\n}\nexport function getProjectionMatrix(_ref9) {\n var width = _ref9.width,\n height = _ref9.height,\n pitch = _ref9.pitch,\n altitude = _ref9.altitude,\n nearZMultiplier = _ref9.nearZMultiplier,\n farZMultiplier = _ref9.farZMultiplier;\n\n var _getProjectionParamet = getProjectionParameters({\n width: width,\n height: height,\n altitude: altitude,\n pitch: pitch,\n nearZMultiplier: nearZMultiplier,\n farZMultiplier: farZMultiplier\n }),\n fov = _getProjectionParamet.fov,\n aspect = _getProjectionParamet.aspect,\n near = _getProjectionParamet.near,\n far = _getProjectionParamet.far;\n\n var projectionMatrix = mat4_perspective([], fov, aspect, near, far);\n return projectionMatrix;\n}\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n var _xyz2 = _slicedToArray(xyz, 3),\n x = _xyz2[0],\n y = _xyz2[1],\n _xyz2$ = _xyz2[2],\n z = _xyz2$ === void 0 ? 0 : _xyz2$;\n\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix) {\n var targetZ = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n var _xyz3 = _slicedToArray(xyz, 3),\n x = _xyz3[0],\n y = _xyz3[1],\n z = _xyz3[2];\n\n assert(Number.isFinite(x) && Number.isFinite(y));\n\n if (Number.isFinite(z)) {\n var coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n\n var coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n var coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n var z0 = coord0[2];\n var z1 = coord1[2];\n var t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2_lerp([], coord0, coord1, t);\n}\n//# sourceMappingURL=web-mercator-utils.js.map","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { equals as _equals } from 'math.gl';\nimport { createMat4 } from './math-utils';\nimport { worldToPixels, pixelsToWorld } from './web-mercator-utils';\nimport mat4_scale from 'gl-mat4/scale';\nimport mat4_translate from 'gl-mat4/translate';\nimport mat4_multiply from 'gl-mat4/multiply';\nimport mat4_invert from 'gl-mat4/invert';\nvar IDENTITY = createMat4();\n\nvar Viewport = function () {\n function Viewport() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n width = _ref.width,\n height = _ref.height,\n _ref$viewMatrix = _ref.viewMatrix,\n viewMatrix = _ref$viewMatrix === void 0 ? IDENTITY : _ref$viewMatrix,\n _ref$projectionMatrix = _ref.projectionMatrix,\n projectionMatrix = _ref$projectionMatrix === void 0 ? IDENTITY : _ref$projectionMatrix;\n\n _classCallCheck(this, Viewport);\n\n this.width = width || 1;\n this.height = height || 1;\n this.scale = 1;\n this.pixelsPerMeter = 1;\n this.viewMatrix = viewMatrix;\n this.projectionMatrix = projectionMatrix;\n var vpm = createMat4();\n mat4_multiply(vpm, vpm, this.projectionMatrix);\n mat4_multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n var m = createMat4();\n mat4_scale(m, m, [this.width / 2, -this.height / 2, 1]);\n mat4_translate(m, m, [1, -1, 0]);\n mat4_multiply(m, m, this.viewProjectionMatrix);\n var mInverse = mat4_invert(createMat4(), m);\n\n if (!mInverse) {\n throw new Error('Pixel project matrix not invertible');\n }\n\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n\n _createClass(Viewport, [{\n key: \"equals\",\n value: function equals(viewport) {\n if (!(viewport instanceof Viewport)) {\n return false;\n }\n\n return viewport.width === this.width && viewport.height === this.height && _equals(viewport.projectionMatrix, this.projectionMatrix) && _equals(viewport.viewMatrix, this.viewMatrix);\n }\n }, {\n key: \"project\",\n value: function project(xyz) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$topLeft = _ref2.topLeft,\n topLeft = _ref2$topLeft === void 0 ? true : _ref2$topLeft;\n\n var worldPosition = this.projectPosition(xyz);\n var coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n\n var _coord = _slicedToArray(coord, 2),\n x = _coord[0],\n y = _coord[1];\n\n var y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n }\n }, {\n key: \"unproject\",\n value: function unproject(xyz) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$topLeft = _ref3.topLeft,\n topLeft = _ref3$topLeft === void 0 ? true : _ref3$topLeft,\n targetZ = _ref3.targetZ;\n\n var _xyz = _slicedToArray(xyz, 3),\n x = _xyz[0],\n y = _xyz[1],\n z = _xyz[2];\n\n var y2 = topLeft ? y : this.height - y;\n var targetZWorld = targetZ && targetZ * this.pixelsPerMeter;\n var coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n\n var _this$unprojectPositi = this.unprojectPosition(coord),\n _this$unprojectPositi2 = _slicedToArray(_this$unprojectPositi, 3),\n X = _this$unprojectPositi2[0],\n Y = _this$unprojectPositi2[1],\n Z = _this$unprojectPositi2[2];\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n }\n }, {\n key: \"projectPosition\",\n value: function projectPosition(xyz) {\n var _this$projectFlat = this.projectFlat(xyz),\n _this$projectFlat2 = _slicedToArray(_this$projectFlat, 2),\n X = _this$projectFlat2[0],\n Y = _this$projectFlat2[1];\n\n var Z = (xyz[2] || 0) * this.pixelsPerMeter;\n return [X, Y, Z];\n }\n }, {\n key: \"unprojectPosition\",\n value: function unprojectPosition(xyz) {\n var _this$unprojectFlat = this.unprojectFlat(xyz),\n _this$unprojectFlat2 = _slicedToArray(_this$unprojectFlat, 2),\n X = _this$unprojectFlat2[0],\n Y = _this$unprojectFlat2[1];\n\n var Z = (xyz[2] || 0) / this.pixelsPerMeter;\n return [X, Y, Z];\n }\n }, {\n key: \"projectFlat\",\n value: function projectFlat(xyz) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.scale;\n return xyz;\n }\n }, {\n key: \"unprojectFlat\",\n value: function unprojectFlat(xyz) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.scale;\n return xyz;\n }\n }]);\n\n return Viewport;\n}();\n\nexport { Viewport as default };\n//# sourceMappingURL=viewport.js.map","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport WebMercatorViewport from './web-mercator-viewport';\nimport assert from './assert';\nexport default function fitBounds(_ref) {\n var width = _ref.width,\n height = _ref.height,\n bounds = _ref.bounds,\n _ref$padding = _ref.padding,\n padding = _ref$padding === void 0 ? 0 : _ref$padding,\n _ref$offset = _ref.offset,\n offset = _ref$offset === void 0 ? [0, 0] : _ref$offset;\n\n var _bounds = _slicedToArray(bounds, 2),\n _bounds$ = _slicedToArray(_bounds[0], 2),\n west = _bounds$[0],\n south = _bounds$[1],\n _bounds$2 = _slicedToArray(_bounds[1], 2),\n east = _bounds$2[0],\n north = _bounds$2[1];\n\n if (Number.isFinite(padding)) {\n var p = padding;\n padding = {\n top: p,\n bottom: p,\n left: p,\n right: p\n };\n } else {\n assert(Number.isFinite(padding.top) && Number.isFinite(padding.bottom) && Number.isFinite(padding.left) && Number.isFinite(padding.right));\n }\n\n var viewport = new WebMercatorViewport({\n width: width,\n height: height,\n longitude: 0,\n latitude: 0,\n zoom: 0\n });\n var nw = viewport.project([west, north]);\n var se = viewport.project([east, south]);\n var size = [Math.abs(se[0] - nw[0]), Math.abs(se[1] - nw[1])];\n var targetSize = [width - padding.left - padding.right - Math.abs(offset[0]) * 2, height - padding.top - padding.bottom - Math.abs(offset[1]) * 2];\n assert(targetSize[0] > 0 && targetSize[1] > 0);\n var scaleX = targetSize[0] / size[0];\n var scaleY = targetSize[1] / size[1];\n var offsetX = (padding.right - padding.left) / 2 / scaleX;\n var offsetY = (padding.bottom - padding.top) / 2 / scaleY;\n var center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n var centerLngLat = viewport.unproject(center);\n var zoom = viewport.zoom + Math.log2(Math.abs(Math.min(scaleX, scaleY)));\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom: zoom\n };\n}\n//# sourceMappingURL=fit-bounds.js.map","module.exports = add\n\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction add(out, a, b) {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n return out\n}","module.exports = negate\n\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to negate\n * @returns {vec2} out\n */\nfunction negate(out, a) {\n out[0] = -a[0]\n out[1] = -a[1]\n return out\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport Viewport from './viewport';\nimport { zoomToScale, pixelsToWorld, lngLatToWorld, worldToLngLat, getProjectionMatrix, getDistanceScales, getViewMatrix } from './web-mercator-utils';\nimport _fitBounds from './fit-bounds';\nimport vec2_add from 'gl-vec2/add';\nimport vec2_negate from 'gl-vec2/negate';\n\nvar WebMercatorViewport = function (_Viewport) {\n _inherits(WebMercatorViewport, _Viewport);\n\n function WebMercatorViewport() {\n var _this;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n width = _ref.width,\n height = _ref.height,\n _ref$latitude = _ref.latitude,\n latitude = _ref$latitude === void 0 ? 0 : _ref$latitude,\n _ref$longitude = _ref.longitude,\n longitude = _ref$longitude === void 0 ? 0 : _ref$longitude,\n _ref$zoom = _ref.zoom,\n zoom = _ref$zoom === void 0 ? 0 : _ref$zoom,\n _ref$pitch = _ref.pitch,\n pitch = _ref$pitch === void 0 ? 0 : _ref$pitch,\n _ref$bearing = _ref.bearing,\n bearing = _ref$bearing === void 0 ? 0 : _ref$bearing,\n _ref$altitude = _ref.altitude,\n altitude = _ref$altitude === void 0 ? 1.5 : _ref$altitude,\n nearZMultiplier = _ref.nearZMultiplier,\n farZMultiplier = _ref.farZMultiplier;\n\n _classCallCheck(this, WebMercatorViewport);\n\n width = width || 1;\n height = height || 1;\n var scale = zoomToScale(zoom);\n altitude = Math.max(0.75, altitude);\n var center = lngLatToWorld([longitude, latitude], scale);\n center[2] = 0;\n var projectionMatrix = getProjectionMatrix({\n width: width,\n height: height,\n pitch: pitch,\n bearing: bearing,\n altitude: altitude,\n nearZMultiplier: nearZMultiplier || 1 / height,\n farZMultiplier: farZMultiplier || 1.01\n });\n var viewMatrix = getViewMatrix({\n height: height,\n center: center,\n pitch: pitch,\n bearing: bearing,\n altitude: altitude,\n flipY: true\n });\n _this = _possibleConstructorReturn(this, _getPrototypeOf(WebMercatorViewport).call(this, {\n width: width,\n height: height,\n viewMatrix: viewMatrix,\n projectionMatrix: projectionMatrix\n }));\n _this.latitude = latitude;\n _this.longitude = longitude;\n _this.zoom = zoom;\n _this.pitch = pitch;\n _this.bearing = bearing;\n _this.altitude = altitude;\n _this.scale = scale;\n _this.center = center;\n _this.pixelsPerMeter = getDistanceScales(_assertThisInitialized(_assertThisInitialized(_this))).pixelsPerMeter[2];\n Object.freeze(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(WebMercatorViewport, [{\n key: \"projectFlat\",\n value: function projectFlat(lngLat) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.scale;\n return lngLatToWorld(lngLat, scale);\n }\n }, {\n key: \"unprojectFlat\",\n value: function unprojectFlat(xy) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.scale;\n return worldToLngLat(xy, scale);\n }\n }, {\n key: \"getMapCenterByLngLatPosition\",\n value: function getMapCenterByLngLatPosition(_ref2) {\n var lngLat = _ref2.lngLat,\n pos = _ref2.pos;\n var fromLocation = pixelsToWorld(pos, this.pixelUnprojectionMatrix);\n var toLocation = lngLatToWorld(lngLat, this.scale);\n var translate = vec2_add([], toLocation, vec2_negate([], fromLocation));\n var newCenter = vec2_add([], this.center, translate);\n return worldToLngLat(newCenter, this.scale);\n }\n }, {\n key: \"getLocationAtPoint\",\n value: function getLocationAtPoint(_ref3) {\n var lngLat = _ref3.lngLat,\n pos = _ref3.pos;\n return this.getMapCenterByLngLatPosition({\n lngLat: lngLat,\n pos: pos\n });\n }\n }, {\n key: \"fitBounds\",\n value: function fitBounds(bounds) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = this.width,\n height = this.height;\n\n var _fitBounds2 = _fitBounds(Object.assign({\n width: width,\n height: height,\n bounds: bounds\n }, options)),\n longitude = _fitBounds2.longitude,\n latitude = _fitBounds2.latitude,\n zoom = _fitBounds2.zoom;\n\n return new WebMercatorViewport({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n }\n }]);\n\n return WebMercatorViewport;\n}(Viewport);\n\nexport { WebMercatorViewport as default };\n//# sourceMappingURL=web-mercator-viewport.js.map","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport nouislider from \"nouislider\";\n\nimport { isEqual } from \"./utils\";\n\nconst areEqual = (prevProps, nextProps) => {\n const { start, step, disabled, range } = prevProps;\n return (\n nextProps.step === step &&\n isEqual(nextProps.start, start) &&\n nextProps.disabled === disabled &&\n isEqual(nextProps.range, range)\n );\n};\n\nconst Nouislider = props => {\n const [slider, setSlider] = useState(null);\n const sliderContainer = React.createRef();\n\n useEffect(() => {\n const { instanceRef } = props;\n const isCreatedRef =\n instanceRef &&\n Object.prototype.hasOwnProperty.call(instanceRef, \"current\");\n if (instanceRef && instanceRef instanceof Function) {\n instanceRef(sliderContainer.current);\n }\n\n if (isCreatedRef) {\n // eslint-disable-next-line no-param-reassign\n instanceRef.current = sliderContainer.current;\n }\n\n return () => {\n if (isCreatedRef) {\n // eslint-disable-next-line no-param-reassign\n instanceRef.current = null;\n }\n };\n }, [sliderContainer]);\n\n const clickOnPip = pip => {\n const value = Number(pip.target.getAttribute(\"data-value\"));\n if (slider) {\n slider.set(value);\n }\n };\n\n const toggleDisable = disabled => {\n const sliderHTML = sliderContainer.current;\n if (sliderHTML) {\n if (!disabled) {\n sliderHTML.removeAttribute(\"disabled\");\n } else {\n sliderHTML.setAttribute(\"disabled\", true);\n }\n }\n };\n\n const updateOptions = options => {\n const sliderHTML = sliderContainer.current;\n sliderHTML.noUiSlider.updateOptions(options);\n };\n\n const setClickableListeners = () => {\n if (props.clickablePips) {\n const sliderHTML = sliderContainer.current;\n sliderHTML.querySelectorAll(\".noUi-value\").forEach(pip => {\n pip.style.cursor = \"pointer\";\n pip.addEventListener(\"click\", clickOnPip);\n });\n }\n };\n\n const createSlider = () => {\n const { onUpdate, onChange, onSlide, onStart, onEnd, onSet } = props;\n const sliderComponent = nouislider.create(sliderContainer.current, {\n ...props\n });\n\n if (onStart) {\n sliderComponent.on(\"start\", onStart);\n }\n\n if (onSlide) {\n sliderComponent.on(\"slide\", onSlide);\n }\n\n if (onUpdate) {\n sliderComponent.on(\"update\", onUpdate);\n }\n\n if (onChange) {\n sliderComponent.on(\"change\", onChange);\n }\n\n if (onSet) {\n sliderComponent.on(\"set\", onSet);\n }\n\n if (onEnd) {\n sliderComponent.on(\"end\", onEnd);\n }\n\n setSlider(sliderComponent);\n };\n\n useEffect(() => {\n const { disabled } = props;\n const sliderHTML = sliderContainer.current;\n if (sliderHTML) {\n toggleDisable(disabled);\n createSlider();\n }\n return () => {\n if (slider) slider.destroy();\n if (sliderHTML) {\n sliderHTML.querySelectorAll(\".noUi-value\").forEach(pip => {\n pip.removeEventListener(\"click\", clickOnPip);\n });\n }\n };\n }, []);\n\n useEffect(() => {\n if (slider) {\n setClickableListeners()\n }\n }, [slider]);\n\n const { start, disabled, range, step } = props;\n\n useEffect(() => {\n if (slider) {\n updateOptions({range, step});\n slider.set(start);\n setClickableListeners()\n }\n toggleDisable(disabled);\n }, [start, disabled, range, step]);\n\n const { id, className, style } = props;\n const options = {};\n if (id) {\n options.id = id;\n }\n if (className) {\n options.className = className;\n }\n return <div {...options} ref={sliderContainer} style={style} />;\n};\n\nNouislider.propTypes = {\n // https://refreshless.com/nouislider/slider-options/#section-animate\n animate: PropTypes.bool,\n // https://refreshless.com/nouislider/behaviour-option/\n behaviour: PropTypes.string,\n className: PropTypes.string,\n clickablePips: PropTypes.bool,\n // https://refreshless.com/nouislider/slider-options/#section-connect\n connect: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.bool),\n PropTypes.bool\n ]),\n // http://refreshless.com/nouislider/slider-options/#section-orientation\n direction: PropTypes.oneOf([\"ltr\", \"rtl\"]),\n // https://refreshless.com/nouislider/more/#section-disable\n disabled: PropTypes.bool,\n format: PropTypes.object,\n keyboardSupport: PropTypes.bool,\n id: PropTypes.string,\n instanceRef: PropTypes.oneOf([PropTypes.func, PropTypes.object]),\n // https://refreshless.com/nouislider/slider-options/#section-limit\n limit: PropTypes.number,\n // https://refreshless.com/nouislider/slider-options/#section-margin\n margin: PropTypes.number,\n // https://refreshless.com/nouislider/events-callbacks/#section-change\n onChange: PropTypes.func,\n // https://refreshless.com/nouislider/events-callbacks/\n onEnd: PropTypes.func,\n // https://refreshless.com/nouislider/events-callbacks/#section-set\n onSet: PropTypes.func,\n // http://refreshless.com/nouislider/events-callbacks/#section-slide\n onSlide: PropTypes.func,\n // http://refreshless.com/nouislider/events-callbacks/\n onStart: PropTypes.func,\n // http://refreshless.com/nouislider/events-callbacks/#section-update\n onUpdate: PropTypes.func,\n // https://refreshless.com/nouislider/slider-options/#section-orientation\n orientation: PropTypes.oneOf([\"horizontal\", \"vertical\"]),\n // https://refreshless.com/nouislider/slider-options/#section-padding\n padding: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.arrayOf(PropTypes.number)\n ]),\n // https://refreshless.com/nouislider/pips/\n pips: PropTypes.object,\n // https://refreshless.com/nouislider/slider-values/#section-range\n range: PropTypes.object.isRequired,\n snap: PropTypes.bool,\n // https://refreshless.com/nouislider/slider-options/#section-start\n start: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]))\n ]).isRequired,\n // https://refreshless.com/nouislider/slider-options/#section-step\n step: PropTypes.number,\n style: PropTypes.objectOf(PropTypes.string),\n // https://refreshless.com/nouislider/slider-options/#section-tooltips\n tooltips: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.arrayOf(\n PropTypes.bool,\n PropTypes.shape({\n from: PropTypes.func,\n to: PropTypes.func\n })\n )\n ])\n};\n\nNouislider.defaultProps = {\n animate: true,\n behaviour: \"tap\",\n className: null,\n clickablePips: false,\n connect: false,\n direction: \"ltr\",\n disabled: false,\n format: null,\n margin: null,\n limit: null,\n keyboardSupport: true,\n id: null,\n instanceRef: null,\n padding: 0,\n pips: null,\n snap: false,\n step: null,\n style: null,\n orientation: \"horizontal\",\n tooltips: false,\n onChange: () => {},\n onEnd: () => {},\n onSet: () => {},\n onSlide: () => {},\n onStart: () => {},\n onUpdate: () => {}\n};\n\nexport default React.memo(Nouislider, areEqual);\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n d: \"M26 15.4L24.6 14L20 18.6L15.4 14L14 15.4L18.6 20L14 24.6L15.4 26L20 21.4L24.6 26L26 24.6L21.4 20L26 15.4Z\",\n fill: \"#0B4566\"\n});\n\nvar SvgCloseS = function SvgCloseS(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgCloseS, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/CloseS.d7c5327c.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n d: \"M23.5 22H22.71L22.43 21.73C23.41 20.59 24 19.11 24 17.5C24 13.91 21.09 11 17.5 11C13.91 11 11 13.91 11 17.5C11 21.09 13.91 24 17.5 24C19.11 24 20.59 23.41 21.73 22.43L22 22.71V23.5L27 28.49L28.49 27L23.5 22ZM17.5 22C15.01 22 13 19.99 13 17.5C13 15.01 15.01 13 17.5 13C19.99 13 22 15.01 22 17.5C22 19.99 19.99 22 17.5 22Z\",\n fill: \"#0B4566\"\n});\n\nvar SvgSearch = function SvgSearch(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgSearch, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Search.ea5462db.svg\";\nexport { ForwardRef as ReactComponent };","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import {normalizeLoader} from './loader-utils/normalize-loader';\n\nlet registeredLoaders = [];\n\nexport function registerLoaders(loaders) {\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n for (const loader of loaders) {\n const normalizedLoader = normalizeLoader(loader);\n if (!registeredLoaders.find(registeredLoader => normalizedLoader === registeredLoader)) {\n // add to the beginning of the registeredLoaders, so the last registeredLoader get picked\n registeredLoaders.unshift(normalizedLoader);\n }\n }\n}\n\nexport function getRegisteredLoaders() {\n return registeredLoaders;\n}\n\n// For testing\nexport function _unregisterLoaders() {\n registeredLoaders = [];\n}\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n var b = splitPolygon(outerNode, hole);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","var arrayMap = require('./_arrayMap'),\n baseIntersection = require('./_baseIntersection'),\n baseRest = require('./_baseRest'),\n castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nmodule.exports = intersection;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar bounce = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0%, 100% {transform: scale(0)}\\n 50% {transform: scale(1.0)}\\n\"], [\"\\n 0%, 100% {transform: scale(0)}\\n 50% {transform: scale(1.0)}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props, color = _a.color, size = _a.size;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n background-color: \", \";\\n border-radius: 100%;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n animation-fill-mode: both;\\n animation: \", \" 2.1s \", \" infinite ease-in-out;\\n \"], [\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n background-color: \", \";\\n border-radius: 100%;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n animation-fill-mode: both;\\n animation: \", \" 2.1s \", \" infinite ease-in-out;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size), color, bounce, i === 1 ? \"1s\" : \"0s\");\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props, loading = _a.loading, css = _a.css;\n return loading ? (core_1.jsx(\"div\", { css: [this.wrapper(), css] },\n core_1.jsx(\"div\", { css: this.style(1) }),\n core_1.jsx(\"div\", { css: this.style(2) }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(60);\n return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3;\n","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","const sortObjectKeys = obj =>\n Object.entries(obj)\n .sort()\n .reduce((o, [k, v]) => ((o[k] = v), o), {});\n\nexport const isEqual = (val1, val2) => {\n if (typeof val1 === \"number\" && typeof val2 === \"number\")\n return val1 === val2;\n if (typeof val1 === \"string\" && typeof val2 === \"string\")\n return val1 === val2;\n if (Array.isArray(val1) && Array.isArray(val2)) {\n return JSON.stringify(val1) === JSON.stringify(val2);\n }\n if (typeof val1 === \"object\" && typeof val2 === \"object\") {\n return (\n JSON.stringify(sortObjectKeys(val1)) ===\n JSON.stringify(sortObjectKeys(val2))\n );\n }\n return false;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n d: \"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');\n\nexports.default = _default;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n d: \"M21 17V15H19V17H21Z\",\n fill: \"#0B4566\"\n});\n\nvar _ref3 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n d: \"M21 25V19H19V25H21Z\",\n fill: \"#0B4566\"\n});\n\nvar _ref4 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10 20C10 14.48 14.48 10 20 10C25.52 10 30 14.48 30 20C30 25.52 25.52 30 20 30C14.48 30 10 25.52 10 20ZM12 20C12 24.41 15.59 28 20 28C24.41 28 28 24.41 28 20C28 15.59 24.41 12 20 12C15.59 12 12 15.59 12 20Z\",\n fill: \"#0B4566\"\n});\n\nvar SvgInfo = function SvgInfo(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgInfo, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Info.698a1c5e.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M27.36 18.27L20 24L12.63 18.27L11 17L20 10L29 17L27.36 18.27ZM25.74 17L20 12.53L14.26 17L20 21.47L25.74 17ZM12.62 20.81L19.99 26.54L27.37 20.8L29 22.07L20 29.07L11 22.07L12.62 20.81Z\",\n fill: \"#0B4566\"\n});\n\nvar SvgLayer = function SvgLayer(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgLayer, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Layer.cac54ddf.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n d: \"M23 15.41L18.42 20L23 24.59L21.59 26L15.59 20L21.59 14L23 15.41Z\",\n fill: \"#0B4566\"\n});\n\nvar SvgLeft = function SvgLeft(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgLeft, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Left.cbbfa039.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n d: \"M17 24.59L21.58 20L17 15.41L18.41 14L24.41 20L18.41 26L17 24.59Z\",\n fill: \"#0B4566\"\n});\n\nvar SvgRight = function SvgRight(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgRight, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Right.6b9cce56.svg\";\nexport { ForwardRef as ReactComponent };","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","// Transpiles shader source code to target GLSL version\n// Note: We always run transpiler even if same version e.g. 3.00 => 3.00\n// RFC: https://github.com/uber/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/portable-glsl-300-rfc.md\nexport default function transpileShader(source, targetGLSLVersion, isVertex) {\n switch (targetGLSLVersion) {\n case 300:\n return isVertex ? convertVertexShaderTo300(source) : convertFragmentShaderTo300(source);\n case 100:\n return isVertex ? convertVertexShaderTo100(source) : convertFragmentShaderTo100(source);\n default:\n throw new Error(`unknown GLSL version ${targetGLSLVersion}`);\n }\n}\n\nfunction convertVertexShaderTo300(source) {\n return source\n .replace(/attribute\\s+/g, 'in ')\n .replace(/varying\\s+/g, 'out ')\n .replace(/texture2D\\(/g, 'texture(')\n .replace(/textureCube\\(+/g, 'texture(')\n .replace(/texture2DLodEXT\\(/g, 'textureLod(')\n .replace(/textureCubeLodEXT\\(/g, 'textureLod(');\n}\n\nfunction convertFragmentShaderTo300(source) {\n return source\n .replace(/varying\\s+/g, 'in ')\n .replace(/texture2D\\(/g, 'texture(')\n .replace(/textureCube\\(/g, 'texture(')\n .replace(/texture2DLodEXT\\(/g, 'textureLod(')\n .replace(/textureCubeLodEXT\\(/g, 'textureLod(');\n\n // Deal with fragColor\n // .replace(/gl_fragColor/g, 'fragColor ');\n}\n\nfunction convertVertexShaderTo100(source) {\n // /gm - treats each line as a string, so that ^ matches after newlines\n return source\n .replace(/^in\\s+/gm, 'attribute ')\n .replace(/^out\\s+/gm, 'varying ')\n .replace(/texture\\(/g, 'texture2D(');\n}\n\nfunction convertFragmentShaderTo100(source) {\n // /gm - treats each line as a string, so that ^ matches after newlines\n return source.replace(/^in\\s+/gm, 'varying ').replace(/texture\\(/g, 'texture2D(');\n\n // Deal with fragColor\n // .replace(/^out\\s+/g, 'varying ')\n}\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","const TYPE_DEFINITIONS = {\n number: {\n validate(value, propType) {\n return (\n Number.isFinite(value) &&\n (!('max' in propType) || value <= propType.max) &&\n (!('min' in propType) || value >= propType.min)\n );\n }\n },\n array: {\n validate(value, propType) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n }\n }\n};\n\nexport function parsePropTypes(propDefs) {\n const propTypes = {};\n for (const propName in propDefs) {\n const propDef = propDefs[propName];\n const propType = parsePropType(propDef);\n propTypes[propName] = propType;\n }\n return propTypes;\n}\n\n// Parses one property definition entry. Either contains:\n// * a valid prop type object ({type, ...})\n// * or just a default value, in which case type and name inference is used\nfunction parsePropType(propDef) {\n let type = getTypeOf(propDef);\n if (type === 'object') {\n if (!propDef) {\n return {type: 'object', value: null};\n }\n if ('type' in propDef) {\n return Object.assign({}, propDef, TYPE_DEFINITIONS[propDef.type]);\n }\n if (!('value' in propDef)) {\n // If no type and value this object is likely the value\n return {type: 'object', value: propDef};\n }\n type = getTypeOf(propDef.value);\n return Object.assign({type}, propDef, TYPE_DEFINITIONS[type]);\n }\n return Object.assign({type, value: propDef}, TYPE_DEFINITIONS[type]);\n}\n\n// improved version of javascript typeof that can distinguish arrays and null values\nfunction getTypeOf(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return 'array';\n }\n return typeof value;\n}\n","import transpileShader from './transpile-shader';\nimport {assert} from '../utils';\nimport {parsePropTypes} from './filters/prop-types';\n\nconst VERTEX_SHADER = 'vs';\nconst FRAGMENT_SHADER = 'fs';\n\nexport default class ShaderModule {\n constructor({\n name,\n vs,\n fs,\n dependencies = [],\n uniforms,\n getUniforms,\n deprecations = [],\n defines = {},\n inject = {},\n // DEPRECATED\n vertexShader,\n fragmentShader\n }) {\n assert(typeof name === 'string');\n this.name = name;\n this.vs = vs || vertexShader;\n this.fs = fs || fragmentShader;\n this.getModuleUniforms = getUniforms;\n this.dependencies = dependencies;\n this.deprecations = this._parseDeprecationDefinitions(deprecations);\n this.defines = defines;\n this.injections = normalizeInjections(inject);\n\n if (uniforms) {\n this.uniforms = parsePropTypes(uniforms);\n }\n }\n\n // Extracts the source code chunk for the specified shader type from the named shader module\n getModuleSource(type, targetGLSLVersion) {\n let moduleSource;\n switch (type) {\n case VERTEX_SHADER:\n moduleSource = transpileShader(this.vs || '', targetGLSLVersion, true);\n break;\n case FRAGMENT_SHADER:\n moduleSource = transpileShader(this.fs || '', targetGLSLVersion, false);\n break;\n default:\n assert(false);\n }\n\n return `\\\n#define MODULE_${this.name.toUpperCase().replace(/[^0-9a-z]/gi, '_')}\n${moduleSource}\\\n// END MODULE_${this.name}\n\n`;\n }\n\n getUniforms(opts, uniforms) {\n if (this.getModuleUniforms) {\n return this.getModuleUniforms(opts, uniforms);\n }\n // Build uniforms from the uniforms array\n if (this.uniforms) {\n return this._defaultGetUniforms(opts);\n }\n return {};\n }\n\n getDefines() {\n return this.defines;\n }\n\n // Warn about deprecated uniforms or functions\n checkDeprecations(shaderSource, log) {\n this.deprecations.forEach(def => {\n if (def.regex.test(shaderSource)) {\n if (def.deprecated) {\n log.deprecated(def.old, def.new)();\n } else {\n log.removed(def.old, def.new)();\n }\n }\n });\n }\n\n _parseDeprecationDefinitions(deprecations) {\n deprecations.forEach(def => {\n switch (def.type) {\n case 'function':\n def.regex = new RegExp(`\\\\b${def.old}\\\\(`);\n break;\n default:\n def.regex = new RegExp(`${def.type} ${def.old};`);\n }\n });\n\n return deprecations;\n }\n\n _defaultGetUniforms(opts = {}) {\n const uniforms = {};\n const propTypes = this.uniforms;\n\n for (const key in propTypes) {\n const propDef = propTypes[key];\n if (key in opts && !propDef.private) {\n if (propDef.validate) {\n assert(propDef.validate(opts[key], propDef), `${this.name}: invalid ${key}`);\n }\n uniforms[key] = opts[key];\n } else {\n uniforms[key] = propDef.value;\n }\n }\n\n return uniforms;\n }\n}\n\n// This utility mutates the original module\n// Keeping for backward compatibility\n// TODO - remove in v8\nexport function normalizeShaderModule(module) {\n if (!module.normalized) {\n module.normalized = true;\n if (module.uniforms && !module.getUniforms) {\n const shaderModule = new ShaderModule(module);\n module.getUniforms = shaderModule.getUniforms.bind(shaderModule);\n }\n }\n return module;\n}\n\nfunction normalizeInjections(injections) {\n const result = {\n vs: {},\n fs: {}\n };\n\n for (const hook in injections) {\n let injection = injections[hook];\n const stage = hook.slice(0, 2);\n\n if (typeof injection === 'string') {\n injection = {\n injection\n };\n }\n\n result[stage][hook] = injection;\n }\n\n return result;\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import ShaderModule from './shader-module';\nimport {assert} from '../utils';\n\n// Instantiate shader modules and any dependencies resolve dependencies\nexport function resolveModules(modules) {\n return getShaderDependencies(instantiateModules(modules));\n}\n\n/**\n * Takes a list of shader module names and returns a new list of\n * shader module names that includes all dependencies, sorted so\n * that modules that are dependencies of other modules come first.\n *\n * If the shader glsl code from the returned modules is concatenated\n * in the reverse order, it is guaranteed that all functions be resolved and\n * that all function and variable definitions come before use.\n *\n * @param {String[]} modules - Array of modules (inline modules or module names)\n * @return {String[]} - Array of modules\n */\nfunction getShaderDependencies(modules) {\n const moduleMap = {};\n const moduleDepth = {};\n getDependencyGraph({modules, level: 0, moduleMap, moduleDepth});\n\n // Return a reverse sort so that dependencies come before the modules that use them\n return Object.keys(moduleDepth)\n .sort((a, b) => moduleDepth[b] - moduleDepth[a])\n .map(name => moduleMap[name]);\n}\n\n/**\n * Recursively checks module dpendencies to calculate dependency\n * level of each module.\n *\n * @param {String[]} modules - Array of modules\n * @param {Number} level - Current level\n * @return {result} - Map of module name to its level\n */\n// Adds another level of dependencies to the result map\nfunction getDependencyGraph({modules, level, moduleMap, moduleDepth}) {\n if (level >= 5) {\n throw new Error('Possible loop in shader dependency graph');\n }\n\n // Update level on all current modules\n for (const module of modules) {\n moduleMap[module.name] = module;\n if (moduleDepth[module.name] === undefined || moduleDepth[module.name] < level) {\n moduleDepth[module.name] = level;\n }\n }\n\n // Recurse\n for (const module of modules) {\n if (module.dependencies) {\n getDependencyGraph({modules: module.dependencies, level: level + 1, moduleMap, moduleDepth});\n }\n }\n}\n\nfunction instantiateModules(modules, seen) {\n return modules.map(module => {\n if (module instanceof ShaderModule) {\n return module;\n }\n\n assert(\n typeof module !== 'string',\n `Shader module use by name is deprecated. Import shader module '${module}' and use it directly.`\n );\n assert(module.name, 'shader module has no name');\n\n module = new ShaderModule(module);\n module.dependencies = instantiateModules(module.dependencies);\n\n return module;\n });\n}\n\nexport const TEST_EXPORTS = {\n getShaderDependencies,\n getDependencyGraph\n};\n","/* global window */\n// opts allows user agent to be overridden for testing\nexport default function isOldIE(opts = {}) {\n const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};\n const userAgent = opts.userAgent || navigator.userAgent || '';\n // We only care about older versions of IE (IE 11 and below). Newer versions of IE (Edge)\n // have much better web standards support.\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n return isMSIE || isTrident;\n}\n","// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\n/* eslint-disable no-inline-comments, max-len */\nimport isOldIE from './is-old-ie';\nimport assert from './assert';\n\nconst GL_VENDOR = 0x1f00;\nconst GL_RENDERER = 0x1f01;\nconst GL_VERSION = 0x1f02;\nconst GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\n\n// Defines luma.gl \"feature\" names and semantics\nconst WEBGL_FEATURES = {\n // GLSL extensions\n GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true], // TODO - name makes no sense in GLSL 3.00\n GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],\n GLSL_DERIVATIVES: ['OES_standard_derivatives', true],\n GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]\n};\n\n// Create a key-mirrored FEATURES array\nconst FEATURES = {};\nObject.keys(WEBGL_FEATURES).forEach(key => {\n FEATURES[key] = key;\n});\n\nexport {FEATURES};\n\nfunction isWebGL2(gl) {\n return Boolean(gl && gl._version === 2);\n}\n\nexport function getContextInfo(gl) {\n const info = gl.getExtension('WEBGL_debug_renderer_info');\n const vendor = gl.getParameter((info && info.UNMASKED_VENDOR_WEBGL) || GL_VENDOR);\n const renderer = gl.getParameter((info && info.UNMASKED_RENDERER_WEBGL) || GL_RENDERER);\n const gpuVendor = identifyGPUVendor(vendor, renderer);\n const gpuInfo = {\n gpuVendor,\n vendor,\n renderer,\n version: gl.getParameter(GL_VERSION),\n shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)\n };\n return gpuInfo;\n}\n\nfunction identifyGPUVendor(vendor, renderer) {\n if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n return 'NVIDIA';\n }\n if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n return 'INTEL';\n }\n if (\n vendor.match(/AMD/i) ||\n renderer.match(/AMD/i) ||\n vendor.match(/ATI/i) ||\n renderer.match(/ATI/i)\n ) {\n return 'AMD';\n }\n return 'UNKNOWN GPU';\n}\n\nconst compiledGlslExtensions = {};\n\n// Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n// but fail to compile when the extension is enabled in the shader. Specifically,\n// the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n// in the list of supported extensions.\n// opts allows user agent to be overridden for testing\n/*\n* Inputs :\n* gl : WebGL context\n* cap : Key of WEBGL_FEATURES object identifying the extension\n* opts :\n* behavior : behavor of extension to be tested, by defualt `enable` is used\n* Returns : true, if shader is compiled successfully, false otherwise\n*/\nexport function canCompileGLGSExtension(gl, cap, opts = {}) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (cap in compiledGlslExtensions) {\n return compiledGlslExtensions[cap];\n }\n\n const extensionName = feature[0];\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGlslExtensions[cap] = canCompile;\n return canCompile;\n}\n\n// TODO - cache the value\nfunction getFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n // Get extension name from table\n const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking an extension\n const value =\n typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;\n\n assert(value === false || value === true);\n\n return value;\n}\n\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => getFeature(gl, feature));\n}\n","import {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {resolveModules} from './resolve-modules';\nimport {getPlatformShaderDefines, getVersionDefines} from './platform-defines';\nimport injectShader, {DECLARATION_INJECT_MARKER} from './inject-shader';\nimport {assert} from '../utils';\n/* eslint-disable max-depth, complexity */\n\nconst INJECT_SHADER_DECLARATIONS = `\\n\\n${DECLARATION_INJECT_MARKER}\\n\\n`;\n\nconst SHADER_TYPE = {\n [VERTEX_SHADER]: 'vertex',\n [FRAGMENT_SHADER]: 'fragment'\n};\n\n// Precision prologue to inject before functions are injected in shader\n// TODO - extract any existing prologue in the fragment source and move it up...\nconst FRAGMENT_SHADER_PROLOGUE = `\\\nprecision highp float;\n\n`;\n\n// Inject a list of modules\nexport function assembleShaders(gl, opts) {\n const {vs, fs} = opts;\n const modules = resolveModules(opts.modules || []);\n return {\n gl,\n vs: assembleShader(gl, Object.assign({}, opts, {source: vs, type: VERTEX_SHADER, modules})),\n fs: assembleShader(gl, Object.assign({}, opts, {source: fs, type: FRAGMENT_SHADER, modules})),\n getUniforms: assembleGetUniforms(modules)\n };\n}\n\n// Pulls together complete source code for either a vertex or a fragment shader\n// adding prologues, requested module chunks, and any final injections.\nfunction assembleShader(\n gl,\n {id, source, type, modules, defines = {}, hookFunctions = [], inject = {}, prologue = true, log}\n) {\n assert(typeof source === 'string', 'shader source must be a string');\n\n const isVertex = type === VERTEX_SHADER;\n\n const sourceLines = source.split('\\n');\n let glslVersion = 100;\n let versionLine = '';\n let coreSource = source;\n // Extract any version directive string from source.\n // TODO : keep all pre-processor statements at the begining of the shader.\n if (sourceLines[0].indexOf('#version ') === 0) {\n glslVersion = 300; // TODO - regexp that matches atual version number\n versionLine = sourceLines[0];\n coreSource = sourceLines.slice(1).join('\\n');\n } else {\n versionLine = `#version ${glslVersion}`;\n }\n\n // Combine Module and Application Defines\n const allDefines = {};\n modules.forEach(module => {\n Object.assign(allDefines, module.getDefines());\n });\n Object.assign(allDefines, defines);\n\n // Add platform defines (use these to work around platform-specific bugs and limitations)\n // Add common defines (GLSL version compatibility, feature detection)\n // Add precision declaration for fragment shaders\n let assembledSource = prologue\n ? `\\\n${versionLine}\n${getShaderName({id, source, type})}\n${getShaderType({type})}\n${getPlatformShaderDefines(gl)}\n${getVersionDefines(gl, glslVersion, !isVertex)}\n${getApplicationDefines(allDefines)}\n${isVertex ? '' : FRAGMENT_SHADER_PROLOGUE}\n`\n : `${versionLine}\n`;\n\n hookFunctions = normalizeHookFunctions(hookFunctions);\n\n // Add source of dependent modules in resolved order\n const hookInjections = {};\n const mainInjections = {};\n\n for (const key in inject) {\n const injection =\n typeof inject[key] === 'string' ? {injection: inject[key], order: 0} : inject[key];\n if (key.match(/^(v|f)s:/)) {\n if (key[3] === '#') {\n mainInjections[key] = [injection];\n } else {\n hookInjections[key] = [injection];\n }\n } else {\n // Regex injection\n mainInjections[key] = [injection];\n }\n }\n\n for (const module of modules) {\n if (log) {\n module.checkDeprecations(coreSource, log);\n }\n const moduleSource = module.getModuleSource(type, glslVersion);\n // Add the module source, and a #define that declares it presence\n assembledSource += moduleSource;\n\n const injections = module.injections[type];\n for (const key in injections) {\n if (key.match(/^(v|f)s:#/)) {\n mainInjections[key] = mainInjections[key] || [];\n mainInjections[key].push(injections[key]);\n } else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n\n // For injectShader\n assembledSource += INJECT_SHADER_DECLARATIONS;\n\n assembledSource += getHookFunctions(hookFunctions[type], hookInjections);\n\n // Add the version directive and actual source of this shader\n assembledSource += coreSource;\n\n // Apply any requested shader injections\n assembledSource = injectShader(assembledSource, type, mainInjections);\n\n return assembledSource;\n}\n\n// Returns a combined `getUniforms` covering the options for all the modules,\n// the created function will pass on options to the inidividual `getUniforms`\n// function of each shader module and combine the results into one object that\n// can be passed to setUniforms.\nfunction assembleGetUniforms(modules) {\n return function getUniforms(opts) {\n const uniforms = {};\n for (const module of modules) {\n // `modules` is already sorted by dependency level. This guarantees that\n // modules have access to the uniforms that are generated by their dependencies.\n const moduleUniforms = module.getUniforms(opts, uniforms);\n Object.assign(uniforms, moduleUniforms);\n }\n return uniforms;\n };\n}\n\nfunction getShaderType({type}) {\n return `\n#define SHADER_TYPE_${SHADER_TYPE[type].toUpperCase()}\n`;\n}\n\n// Generate \"glslify-compatible\" SHADER_NAME defines\n// These are understood by the GLSL error parsing function\n// If id is provided and no SHADER_NAME constant is present in source, create one\nfunction getShaderName({id, source, type}) {\n const injectShaderName = id && typeof id === 'string' && source.indexOf('SHADER_NAME') === -1;\n return injectShaderName\n ? `\n#define SHADER_NAME ${id}_${SHADER_TYPE[type]}\n\n`\n : '';\n}\n\n// Generates application defines from an object\nfunction getApplicationDefines(defines = {}) {\n let count = 0;\n let sourceText = '';\n for (const define in defines) {\n if (count === 0) {\n sourceText += '\\n// APPLICATION DEFINES\\n';\n }\n count++;\n\n const value = defines[define];\n if (value || Number.isFinite(value)) {\n sourceText += `#define ${define.toUpperCase()} ${defines[define]}\\n`;\n }\n }\n if (count === 0) {\n sourceText += '\\n';\n }\n return sourceText;\n}\n\nfunction getHookFunctions(hookFunctions, hookInjections) {\n let result = '';\n for (const hookName in hookFunctions) {\n const hookFunction = hookFunctions[hookName];\n result += `void ${hookFunction.signature} {\\n`;\n if (hookFunction.header) {\n result += ` ${hookFunction.header}`;\n }\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a, b) => a.order - b.order);\n for (const injection of injections) {\n result += ` ${injection.injection}\\n`;\n }\n }\n if (hookFunction.footer) {\n result += ` ${hookFunction.footer}`;\n }\n result += '}\\n';\n }\n\n return result;\n}\nfunction normalizeHookFunctions(hookFunctions) {\n const result = {\n vs: {},\n fs: {}\n };\n\n hookFunctions.forEach(hook => {\n let opts;\n if (typeof hook !== 'string') {\n opts = hook;\n hook = opts.hook;\n } else {\n opts = {};\n }\n hook = hook.trim();\n const [stage, signature] = hook.split(':');\n const name = hook.replace(/\\(.+/, '');\n result[stage][name] = Object.assign(opts, {signature});\n });\n\n return result;\n}\n","import {getContextInfo, hasFeatures, canCompileGLGSExtension, FEATURES} from '../utils/webgl-info';\n\nexport function getPlatformShaderDefines(gl) {\n const debugInfo = getContextInfo(gl);\n\n switch (debugInfo.gpuVendor.toLowerCase()) {\n case 'nvidia':\n return `\\\n#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;\n\n case 'intel':\n return `\\\n#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n\n case 'amd':\n // AMD Does not eliminate fp64 code\n return `\\\n#define AMD_GPU\n`;\n\n default:\n // We don't know what GPU it is, could be that the GPU driver or\n // browser is not implementing UNMASKED_RENDERER constant and not\n // reporting a correct name\n return `\\\n#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n }\n}\n\nexport function getVersionDefines(gl, glslVersion, isFragment) {\n // Add shadertools defines to let shaders portably v1/v3 check for features\n let versionDefines = `\\\n#if (__VERSION__ > 120)\n\n# define FRAG_DEPTH\n# define DERIVATIVES\n# define DRAW_BUFFERS\n# define TEXTURE_LOD\n\n#endif // __VERSION\n`;\n\n if (hasFeatures(gl, FEATURES.GLSL_FRAG_DEPTH)) {\n versionDefines += `\\\n// FRAG_DEPTH => gl_FragDepth is available\n#ifdef GL_EXT_frag_depth\n#extension GL_EXT_frag_depth : enable\n# define FRAG_DEPTH\n# define gl_FragDepth gl_FragDepthEXT\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_DERIVATIVES) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_DERIVATIVES)\n ) {\n versionDefines += `\\\n// DERIVATIVES => dxdF, dxdY and fwidth are available\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n# define DERIVATIVES\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_FRAG_DATA) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_FRAG_DATA, {behavior: 'require'})\n ) {\n versionDefines += `\\\n// DRAW_BUFFERS => gl_FragData[] is available\n#ifdef GL_EXT_draw_buffers\n#extension GL_EXT_draw_buffers : require\n#define DRAW_BUFFERS\n#endif\n`;\n }\n if (hasFeatures(gl, FEATURES.GLSL_TEXTURE_LOD)) {\n versionDefines += `\\\n// TEXTURE_LOD => texture2DLod etc are available\n#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n# define TEXTURE_LOD\n#define texture2DLod texture2DLodEXT\n#define texture2DProjLod texture2DProjLodEXT\n#define texture2DProjLod texture2DProjLodEXT\n#define textureCubeLod textureCubeLodEXT\n#define texture2DGrad texture2DGradEXT\n#define texture2DProjGrad texture2DProjGradEXT\n#define texture2DProjGrad texture2DProjGradEXT\n#define textureCubeGrad textureCubeGradEXT\n#endif\n`;\n }\n return versionDefines;\n}\n","import {assembleShaders} from '@luma.gl/shadertools';\nimport {Program} from '@luma.gl/webgl';\n\nexport default class ProgramManager {\n static getDefaultProgramManager(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new ProgramManager(gl);\n\n return gl.luma.defaultProgramManager;\n }\n\n constructor(gl) {\n this.gl = gl;\n\n this._programCache = {};\n this._getUniforms = {};\n this._registeredModules = {};\n this._hookFunctions = [];\n this._defaultModules = [];\n\n this._hashes = {};\n this._hashCounter = 0;\n this.stateHash = 0; // Used change hashing if hooks are modified\n this._useCounts = {};\n }\n\n addDefaultModule(module) {\n if (!this._defaultModules.find(m => m.name === module.name)) {\n this._defaultModules.push(module);\n }\n\n this.stateHash++;\n }\n\n removeDefaultModule(module) {\n const moduleName = typeof module === 'string' ? module : module.name;\n this._defaultModules = this._defaultModules.filter(m => m.name !== moduleName);\n this.stateHash++;\n }\n\n addShaderHook(hook, opts) {\n if (opts) {\n hook = Object.assign(opts, {hook});\n }\n\n this._hookFunctions.push(hook);\n\n this.stateHash++;\n }\n\n get(props = {}) {\n const {vs = '', fs = '', defines = {}, inject = {}, varyings = [], bufferMode = 0x8c8d} = props; // varyings/bufferMode for xform feedback, 0x8c8d = SEPARATE_ATTRIBS\n\n const modules = this._getModuleList(props.modules); // Combine with default modules\n\n const vsHash = this._getHash(vs);\n const fsHash = this._getHash(fs);\n const moduleHashes = modules.map(m => this._getHash(m.name)).sort();\n const varyingHashes = varyings.map(v => this._getHash(v));\n\n const defineKeys = Object.keys(defines).sort();\n const injectKeys = Object.keys(inject).sort();\n const defineHashes = [];\n const injectHashes = [];\n\n for (const key of defineKeys) {\n defineHashes.push(this._getHash(key));\n defineHashes.push(this._getHash(defines[key]));\n }\n\n for (const key of injectKeys) {\n injectHashes.push(this._getHash(key));\n injectHashes.push(this._getHash(inject[key]));\n }\n\n const hash = `${vsHash}/${fsHash}D${defineHashes.join('/')}M${moduleHashes.join(\n '/'\n )}I${injectHashes.join('/')}V${varyingHashes.join('/')}H${this.stateHash}B${bufferMode}`;\n\n if (!this._programCache[hash]) {\n const assembled = assembleShaders(this.gl, {\n vs,\n fs,\n modules,\n inject,\n defines,\n hookFunctions: this._hookFunctions\n });\n\n this._programCache[hash] = new Program(this.gl, {\n hash,\n vs: assembled.vs,\n fs: assembled.fs,\n varyings,\n bufferMode\n });\n\n this._getUniforms[hash] = assembled.getUniforms || (x => {});\n this._useCounts[hash] = 0;\n }\n\n this._useCounts[hash]++;\n\n return this._programCache[hash];\n }\n\n getUniforms(program) {\n return this._getUniforms[program.hash] || null;\n }\n\n release(program) {\n const hash = program.hash;\n this._useCounts[hash]--;\n\n if (this._useCounts[hash] === 0) {\n this._programCache[hash].delete();\n delete this._programCache[hash];\n delete this._getUniforms[hash];\n delete this._useCounts[hash];\n }\n }\n\n _getHash(key) {\n if (this._hashes[key] === undefined) {\n this._hashes[key] = this._hashCounter++;\n }\n\n return this._hashes[key];\n }\n\n // Dedup and combine with default modules\n _getModuleList(appModules = []) {\n const modules = new Array(this._defaultModules.length + appModules.length);\n const seen = {};\n let count = 0;\n\n for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n const module = this._defaultModules[i];\n const name = module.name;\n modules[count++] = module;\n seen[name] = true;\n }\n\n for (let i = 0, len = appModules.length; i < len; ++i) {\n const module = appModules[i];\n const name = module.name;\n if (!seen[name]) {\n modules[count++] = module;\n seen[name] = true;\n }\n }\n\n modules.length = count;\n\n return modules;\n }\n}\n","let arrayBuffer = null;\n\nexport function getScratchArrayBuffer(byteLength) {\n if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {\n arrayBuffer = new ArrayBuffer(byteLength);\n }\n return arrayBuffer;\n}\n\nexport function getScratchArray(Type, length) {\n const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);\n return new Type(scratchArrayBuffer, 0, length); // arrayBuffer, byteOffset, length (in elements)\n}\n\n// Uses copyWithin to significantly speed up typed array value filling\nexport function fillArray({target, source, start = 0, count = 1}) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n // If we have copied less than half, copy everything we got\n // else copy remaining in one operation\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n\n/*\n\n// Creates a new Uint8Array based on two different ArrayBuffers\n// @private\n// @param {ArrayBuffers} buffer1 The first buffer.\n// @param {ArrayBuffers} buffer2 The second buffer.\n// @return {ArrayBuffers} The new ArrayBuffer created out of the two.\n//\nexport function copyArrayBuffer(\n targetBuffer, sourceBuffer, byteOffset, byteLength = sourceBuffer.byteLength\n) {\n const targetArray = new Uint8Array(targetBuffer, byteOffset, byteLength);\n const sourceArray = new Uint8Array(sourceBuffer);\n targetArray.set(sourceArray);\n return targetBuffer;\n}\n\n*/\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// This function is needed in initialization stages,\n// make sure it can be imported in isolation\n\nimport {window} from './globals';\nimport isBrowser from './is-browser';\nimport isElectron from './is-electron';\n\nexport function isMobile() {\n return typeof window.orientation !== 'undefined';\n}\n\n// Simple browser detection\n// `mockUserAgent` parameter allows user agent to be overridden for testing\n/* eslint-disable complexity */\nexport default function getBrowser(mockUserAgent) {\n if (!mockUserAgent && !isBrowser()) {\n return 'Node';\n }\n\n if (isElectron(mockUserAgent)) {\n return 'Electron';\n }\n\n const navigator_ = typeof navigator !== 'undefined' ? navigator : {};\n const userAgent = mockUserAgent || navigator_.userAgent || '';\n // const appVersion = navigator_.appVersion || '';\n\n // NOTE: Order of tests matter, as many agents list Chrome etc.\n if (userAgent.indexOf('Edge') > -1) {\n return 'Edge';\n }\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n if (isMSIE || isTrident) {\n return 'IE';\n }\n if (window.chrome) {\n return 'Chrome';\n }\n if (window.safari) {\n return 'Safari';\n }\n if (window.mozInnerScreenX) {\n return 'Firefox';\n }\n return 'Unknown';\n}\n","import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {getScratchArray, fillArray} from '../utils/array-utils-flat';\nimport {assert} from '../utils';\nimport {getBrowser} from 'probe.gl';\n\n/* eslint-disable camelcase */\nconst OES_vertex_array_object = 'OES_vertex_array_object';\n\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\n\nexport default class VertexArrayObject extends Resource {\n static isSupported(gl, options = {}) {\n // Attribute 0 can not be disable on most desktop OpenGL based browsers\n // and on iOS Safari browser.\n if (options.constantAttributeZero) {\n return isWebGL2(gl) || getBrowser() === 'Chrome';\n }\n\n // Whether additional objects can be created\n return isWebGL2(gl) || gl.getExtension(OES_vertex_array_object);\n }\n\n // Returns the global (null) vertex array object. Exists even when no extension available\n static getDefaultArray(gl) {\n gl.luma = gl.luma || {};\n if (!gl.luma.defaultVertexArray) {\n gl.luma.defaultVertexArray = new VertexArrayObject(gl, {handle: null, isDefaultArray: true});\n }\n return gl.luma.defaultVertexArray;\n }\n\n static getMaxAttributes(gl) {\n // TODO - should be cached per context\n VertexArrayObject.MAX_ATTRIBUTES =\n VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n return VertexArrayObject.MAX_ATTRIBUTES;\n }\n\n // Note: Constants are stored globally on the WebGL context, not the VAO\n // So they need to be updated before every render\n // TODO - use known type (in configuration or passed in) to allow non-typed arrays?\n // TODO - remember/cache values to avoid setting them unnecessarily?\n static setConstant(gl, location, array) {\n switch (array.constructor) {\n case Float32Array:\n VertexArrayObject._setConstantFloatArray(gl, location, array);\n break;\n case Int32Array:\n VertexArrayObject._setConstantIntArray(gl, location, array);\n break;\n case Uint32Array:\n VertexArrayObject._setConstantUintArray(gl, location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // Create a VertexArray\n constructor(gl, opts = {}) {\n // Use program's id if program but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n super(gl, Object.assign({}, opts, {id}));\n\n this.hasVertexArrays = VertexArrayObject.isSupported(gl);\n this.buffer = null;\n this.bufferValue = null;\n // this.isDefaultArray = opts.isDefaultArray || false;\n\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n delete() {\n super.delete();\n if (this.buffer) {\n this.buffer.delete();\n }\n }\n\n get MAX_ATTRIBUTES() {\n return VertexArrayObject.getMaxAttributes(this.gl);\n }\n\n initialize(props = {}) {\n return this.setProps(props);\n }\n\n setProps(props) {\n // TODO: decide which props should be supported\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, opts = {}) {\n assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);\n\n // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...\n this.bind(() => {\n this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);\n });\n\n return this;\n }\n\n // Set a location in vertex attributes array to a bufferk, enables the location, sets divisor\n setBuffer(location, buffer, accessor) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, accessor);\n }\n\n const {size, type, stride, offset, normalized, integer, divisor} = accessor;\n\n const {gl} = this;\n location = Number(location);\n\n this.bind(() => {\n // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);\n\n // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n if (integer) {\n assert(isWebGL2(gl));\n gl.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n // Attaches ARRAY_BUFFER with specified buffer format to location\n gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n gl.enableVertexAttribArray(location);\n gl.vertexAttribDivisor(location, divisor || 0);\n\n // NOTE We don't unbind buffer here, typically another buffer will be bound just after\n });\n\n return this;\n }\n\n // Enabling an attribute location makes it reference the currently bound buffer\n // Disabling an attribute location makes it reference the global constant value\n // TODO - handle single values for size 1 attributes?\n // TODO - convert classic arrays based on known type?\n enable(location, enable = true) {\n // Attribute 0 cannot be disabled in most desktop OpenGL based browsers\n const disablingAttributeZero =\n !enable &&\n location === 0 &&\n !VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true});\n\n if (!disablingAttributeZero) {\n location = Number(location);\n this.bind(\n () =>\n enable\n ? this.gl.enableVertexAttribArray(location)\n : this.gl.disableVertexAttribArray(location)\n );\n }\n return this;\n }\n\n // Provide a means to create a buffer that is equivalent to a constant.\n // NOTE: Desktop OpenGL cannot disable attribute 0.\n // https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-\n // this-has-significant-performance-penalt\n getConstantBuffer(elementCount, value, accessor) {\n // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)\n\n const constantValue = this._normalizeConstantArrayValue(value, accessor);\n\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n\n let updateNeeded = !this.buffer;\n\n this.buffer = this.buffer || new Buffer(this.gl, byteLength);\n updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n\n // Reallocate and update contents if needed\n updateNeeded =\n updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n\n if (updateNeeded) {\n // Create a typed array that is big enough, and fill it with the required data\n const typedArray = getScratchArray(value.constructor, length);\n fillArray({target: typedArray, source: constantValue, start: 0, count: length});\n this.buffer.subData(typedArray);\n this.bufferValue = value;\n }\n\n return this.buffer;\n }\n\n // PRIVATE\n\n // TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)\n // TODO - handle single values for size 1 attributes?\n _normalizeConstantArrayValue(arrayValue, accessor) {\n if (Array.isArray(arrayValue)) {\n return new Float32Array(arrayValue);\n }\n return arrayValue;\n }\n\n _compareConstantArrayValues(v1, v2) {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n return false;\n }\n for (let i = 0; i < v1.length; ++i) {\n if (v1[i] !== v2[i]) {\n return false;\n }\n }\n return true;\n }\n\n static _setConstantFloatArray(gl, location, array) {\n switch (array.length) {\n case 1:\n gl.vertexAttrib1fv(location, array);\n break;\n case 2:\n gl.vertexAttrib2fv(location, array);\n break;\n case 3:\n gl.vertexAttrib3fv(location, array);\n break;\n case 4:\n gl.vertexAttrib4fv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantIntArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1iv(location, array);\n break;\n case 2:\n gl.vertexAttribI2iv(location, array);\n break;\n case 3:\n gl.vertexAttribI3iv(location, array);\n break;\n case 4:\n gl.vertexAttribI4iv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantUintArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1uiv(location, array);\n break;\n case 2:\n gl.vertexAttribI2uiv(location, array);\n break;\n case 3:\n gl.vertexAttribI3uiv(location, array);\n break;\n case 4:\n gl.vertexAttribI4uiv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // RESOURCE IMPLEMENTATION\n\n _createHandle() {\n this.hasVertexArrays = VertexArrayObject.isSupported(this.gl);\n if (this.hasVertexArrays) {\n return this.gl.createVertexArray();\n }\n return null;\n }\n\n _deleteHandle(handle) {\n if (this.hasVertexArrays) {\n this.gl.deleteVertexArray(handle);\n }\n return [this.elements];\n // return [this.elements, ...this.buffers];\n }\n\n _bindHandle(handle) {\n if (this.hasVertexArrays) {\n this.gl.bindVertexArray(handle);\n }\n }\n\n // Generic getter for information about a vertex attribute at a given position\n _getParameter(pname, {location}) {\n assert(Number.isFinite(location));\n return this.bind(() => {\n switch (pname) {\n case GL.VERTEX_ATTRIB_ARRAY_POINTER:\n return this.gl.getVertexAttribOffset(location, pname);\n default:\n return this.gl.getVertexAttrib(location, pname);\n }\n });\n }\n\n // DEPRECATED\n\n /*\n setDivisor(location, divisor) {\n location = Number(location);\n this.bind(() => this.gl.vertexAttribDivisor(location, divisor));\n return this;\n }\n\n // match assumed WebGL defaults\n static resetConstants(gl) {\n const MAX_ATTRIBUTES = VertexArrayObject.getMaxAttributes(gl);\n for (let i = 0; i < MAX_ATTRIBUTES; i++) {\n VertexArrayObject.setConstant(gl, i, [0, 0, 0, 1]);\n }\n }\n\n // Resets all attributes (to default valued constants)\n resetAttributes() {\n // WebGL offers disabling, but no clear way to set a VertexArray buffer to `null`\n // But Chrome does not like buffers that are bound to several binding points.\n // So we just bind all the attributes to the dummy \"attribute zero\" buffer\n this.buffer = this.buffer || new Buffer(this.gl, {size: 4});\n\n for (const location in this.values) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);\n }\n }\n\n this.setElementBuffer(null);\n return this;\n }\n */\n}\n","import GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport Accessor from './accessor';\nimport Buffer from './buffer';\nimport VertexArrayObject from './vertex-array-object';\nimport {assert, stubRemovedMethods} from '../utils';\n\nconst ERR_ATTRIBUTE_TYPE =\n 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\n\n// This is done to support mat type attributes.\n// See section \"Notes about setting mat type attributes\"\n// in vertex-array.md\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\n\nconst DEPRECATIONS_V6 = [\n 'setBuffers',\n 'setGeneric',\n 'clearBindings',\n 'setLocations',\n 'setGenericValues',\n 'setDivisor',\n 'enable',\n 'disable'\n];\n\nexport default class VertexArray {\n constructor(gl, opts = {}) {\n // Use program's id if program is supplied but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n // super(gl, Object.assign({}, opts, {id}));\n\n this.id = id;\n this.gl = gl;\n this.configuration = null;\n\n // Extracted information\n this.elements = null;\n this.elementsAccessor = null;\n this.values = null;\n this.accessors = null;\n this.unused = null;\n this.drawParams = null;\n this.buffer = null; // For attribute 0 on desktops, and created when unbinding buffers\n\n this.attributes = {};\n\n this.vertexArrayObject = VertexArrayObject.isSupported(gl)\n ? new VertexArrayObject(gl)\n : VertexArrayObject.getDefaultArray(gl);\n\n // Issue errors when using removed methods\n stubRemovedMethods(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);\n\n this.initialize(opts);\n Object.seal(this);\n }\n\n delete() {\n if (this.buffer) {\n this.buffer.delete();\n }\n }\n\n initialize(props = {}) {\n this.reset();\n this.configuration = null;\n this.bindOnUse = false;\n return this.setProps(props);\n }\n\n // Resets all attributes (to default valued constants)\n reset() {\n // this.vertexArrayObject.reset();\n\n this.elements = null;\n this.elementsAccessor = null;\n const {MAX_ATTRIBUTES} = this.vertexArrayObject;\n this.values = new Array(MAX_ATTRIBUTES).fill(null);\n this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n this.unused = {};\n\n // Auto detects draw params\n this.drawParams = null;\n\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('elements' in props) {\n this.setElementBuffer(props.elements);\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n return this;\n }\n\n // Automatically called if buffers changed through VertexArray API\n clearDrawParams() {\n this.drawParams = null;\n }\n\n getDrawParams() {\n // Auto deduced draw parameters\n this.drawParams = this.drawParams || this._updateDrawParams();\n\n return this.drawParams;\n }\n\n // Set (bind) an array or map of vertex array buffers, either in numbered or named locations.\n // For names that are not present in `location`, the supplied buffers will be ignored.\n // if a single buffer of type GL.ELEMENT_ARRAY_BUFFER is present, it will be set as elements\n // Signatures:\n // {attributeName: buffer}\n // {attributeName: [buffer, accessor]}\n // {attributeName: (typed) array} => constant\n setAttributes(attributes) {\n Object.assign(this.attributes, attributes);\n this.vertexArrayObject.bind(() => {\n for (const locationOrName in attributes) {\n const value = attributes[locationOrName];\n this._setAttribute(locationOrName, value);\n }\n // Make sure we don't leave any bindings\n this.gl.bindBuffer(GL.ARRAY_BUFFER, null);\n });\n\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, accessor = {}) {\n this.elements = elementBuffer; // Save value for debugging\n this.elementsAccessor = accessor;\n this.clearDrawParams();\n\n // Update vertexArray immediately if we have our own array\n if (!this.vertexArrayObject.isDefaultArray) {\n this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n }\n return this;\n }\n\n // Set a location in vertex attributes array to a buffer\n setBuffer(locationOrName, buffer, appAccessor = {}) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, appAccessor);\n }\n\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n buffer,\n buffer.accessor,\n appAccessor\n );\n\n if (location >= 0) {\n this.values[location] = buffer;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n\n // Update vertexArray immediately if we have our own array\n if (!this.vertexArrayObject.isDefaultArray) {\n this.vertexArrayObject.setBuffer(location, buffer, accessor);\n }\n }\n\n return this;\n }\n\n // Set attribute to constant value (small typed array corresponding to one vertex' worth of data)\n setConstant(locationOrName, arrayValue, appAccessor = {}) {\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n arrayValue,\n // Ensure that size isn't taken from program for multi-column\n // attributes\n Object.assign({size: arrayValue.length}, appAccessor)\n );\n\n if (location >= 0) {\n arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue, accessor);\n\n this.values[location] = arrayValue;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n\n // Update vertexArray immediately if we have our own array\n // NOTE: We set the actual constant value later on bind. We can't set the value now since\n // constants are global and affect all other VertexArrays that have disabled attributes\n // in the same location.\n // We do disable the attribute which makes it use the global constant value at that location\n if (!this.vertexArrayObject.isDefaultArray) {\n this.vertexArrayObject.enable(location, false);\n }\n }\n\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, unbind temporarily to avoid conflicting with TransformFeedback\n unbindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n // Update vertexArray immediately if we have our own array\n if (!this.vertexArrayObject.isDefaultArray) {\n this.vertexArrayObject.setElementBuffer(null);\n }\n }\n\n // Chrome does not like buffers that are bound to several binding points,\n // so we need to offer and unbind facility\n // WebGL offers disabling, but no clear way to set a VertexArray buffer to `null`\n // So we just bind all the attributes to the dummy \"attribute zero\" buffer\n this.buffer = this.buffer || new Buffer(this.gl, {accessor: {size: 4}});\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);\n }\n }\n });\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, rebind rebind after temporary unbind\n bindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.setElementBuffer(this.elements);\n }\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n const buffer = this.values[location];\n if (buffer instanceof Buffer) {\n this.setBuffer(location, buffer);\n }\n }\n });\n return this;\n }\n\n // Bind for use\n // When a vertex array is about to be used, we must:\n // - Set constant attributes (since these are stored on the context and reset on bind)\n // - Check if we need to initialize the buffer\n bindForDraw(vertexCount, instanceCount, func) {\n let value;\n\n this.vertexArrayObject.bind(() => {\n // Make sure that any constant attributes are updated (stored on the context, not the VAO)\n // Also handles attribute 0\n this._setConstantAttributes(vertexCount, instanceCount);\n\n if (!this.vertexArrayObject.hasVertexArrays) {\n this.bindBuffers();\n }\n\n value = func();\n\n if (!this.vertexArrayObject.hasVertexArrays) {\n this.unbindBuffers();\n }\n });\n\n return value;\n }\n\n // PRIVATE\n\n // Resolve locations and accessors\n _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n const {location, name} = this._getAttributeIndex(locationOrName);\n if (!Number.isFinite(location) || location < 0) {\n this.unused[locationOrName] = value;\n log.once(3, () => `unused value ${locationOrName} in ${this.id}`)();\n return this;\n }\n\n const accessInfo = this._getAttributeInfo(name || location);\n\n // Attribute location wasn't directly found.\n // Likely due to multi-location attributes (e.g. matrix)\n if (!accessInfo) {\n return {\n location: -1,\n accessor: null\n };\n }\n\n // Resolve the partial accessors into a final accessor\n const currentAccessor = this.accessors[location] || {};\n const accessor = Accessor.resolve(\n accessInfo.accessor,\n currentAccessor,\n valueAccessor,\n appAccessor\n );\n\n const {size, type} = accessor;\n assert(Number.isFinite(size) && Number.isFinite(type));\n\n return {location, accessor};\n }\n\n _getAttributeInfo(attributeName) {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n\n _getAttributeIndex(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return {location};\n }\n\n const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n const name = multiLocation ? multiLocation[1] : locationOrName;\n const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n if (this.configuration) {\n return {\n location: this.configuration.getAttributeLocation(name) + locationOffset,\n name\n };\n }\n\n return {location: -1};\n }\n\n _setAttribute(locationOrName, value) {\n if (value instanceof Buffer) {\n // Signature: {attributeName: Buffer}\n this.setBuffer(locationOrName, value);\n } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {\n // Signature: {attributeName: [buffer, accessor]}\n const buffer = value[0];\n const accessor = value[1];\n this.setBuffer(locationOrName, buffer, accessor);\n } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n // Signature: {attributeName: constant}, constant == short (typed) array\n const constant = value;\n this.setConstant(locationOrName, constant);\n } else if (value.buffer instanceof Buffer) {\n // luma.gl v7: Support accessor objects with 'buffer' field\n // for interleaved data\n // Signature: {attributeName: {...accessor, buffer}}\n const accessor = value;\n this.setBuffer(locationOrName, accessor.buffer, accessor);\n } else {\n throw new Error(ERR_ATTRIBUTE_TYPE);\n }\n }\n\n // Updates all constant attribute values (constants are used when vertex attributes are disabled).\n // This needs to be done repeatedly since in contrast to buffer bindings,\n // constants are stored on the WebGL context, not the VAO\n _setConstantAttributes(vertexCount, instanceCount) {\n // TODO - use accessor to determine what length to use\n const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n let constant = this.values[0];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttributeZero(constant, elementCount);\n }\n\n for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n constant = this.values[location];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttribute(location, constant);\n }\n }\n }\n\n _setConstantAttributeZero(constant, elementCount) {\n if (VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true})) {\n this._setConstantAttribute(0, constant);\n return;\n }\n\n // Get a dummy buffer populated with repeated constants\n const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n\n // Set the buffer on location 0\n this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n }\n\n _setConstantAttribute(location, constant) {\n VertexArrayObject.setConstant(this.gl, location, constant);\n\n // If we are using the global VertexArrayObject, we need to disable the attribute now\n if (this.vertexArrayObject.isDefaultArray) {\n this.vertexArrayObject.enable(location, false);\n }\n }\n\n // Walks the buffers and updates draw parameters\n _updateDrawParams() {\n const drawParams = {\n isIndexed: false,\n isInstanced: false,\n indexCount: Infinity,\n vertexCount: Infinity,\n instanceCount: Infinity\n };\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n this._updateDrawParamsForLocation(drawParams, location);\n }\n\n if (this.elements) {\n // indexing is autodetected - buffer with target GL.ELEMENT_ARRAY_BUFFER\n // index type is saved for drawElement calls\n drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n drawParams.isIndexed = true;\n drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n drawParams.indexOffset = this.elementsAccessor.offset || 0;\n }\n\n // Post-calculation checks\n if (drawParams.indexCount === Infinity) {\n drawParams.indexCount = 0;\n }\n if (drawParams.vertexCount === Infinity) {\n drawParams.vertexCount = 0;\n }\n if (drawParams.instanceCount === Infinity) {\n drawParams.instanceCount = 0;\n }\n\n return drawParams;\n }\n\n _updateDrawParamsForLocation(drawParams, location) {\n const value = this.values[location];\n const accessor = this.accessors[location];\n\n if (!value) {\n return;\n }\n\n // Check if instanced (whether buffer or constant)\n const {divisor} = accessor;\n const isInstanced = divisor > 0;\n drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n if (value instanceof Buffer) {\n const buffer = value;\n\n if (isInstanced) {\n // instance attribute\n const instanceCount = buffer.getVertexCount(accessor);\n drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n } else {\n // normal attribute\n const vertexCount = buffer.getVertexCount(accessor);\n drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n }\n }\n }\n\n // DEPRECATED in v6.x - but not warnings not properly implemented\n\n setElements(elementBuffer = null, accessor = {}) {\n log.deprecated('setElements', 'setElementBuffer')();\n return this.setElementBuffer(elementBuffer, accessor);\n }\n}\n","// TODO / DEPRECATED - delete when confident that probe.gl logging implements all opts\n/* eslint-disable no-console */\nfunction formatArrayValue(v, opts) {\n const {maxElts = 16, size = 1} = opts;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], opts);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\nexport function formatValue(v, opts = {}) {\n const EPSILON = 1e-16;\n const {isInteger = false} = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n return v.toFixed(0);\n }\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n","import Buffer from '../classes/buffer';\nimport {getKey} from '../webgl-utils';\nimport {getCompositeGLType} from '../webgl-utils/attribute-utils';\nimport {formatValue} from '../utils';\n\n// Creates object suitable as input for console.table\nexport function getDebugTableForVertexArray({vertexArray, header = 'Attributes'} = {}) {\n if (!vertexArray.configuration) {\n return {};\n }\n\n const table = {}; // {[header]: {}};\n\n // Add index (elements) if available\n if (vertexArray.elements) {\n // const elements = Object.assign({size: 1}, vertexArray.elements);\n table.ELEMENT_ARRAY_BUFFER = getDebugTableRow(vertexArray, vertexArray.elements, null, header);\n }\n\n // Add used attributes\n const attributes = vertexArray.values;\n\n for (const attributeLocation in attributes) {\n const info = vertexArray._getAttributeInfo(attributeLocation);\n if (info) {\n let rowHeader = `${attributeLocation}: ${info.name}`;\n const accessor = vertexArray.accessors[info.location];\n if (accessor) {\n rowHeader = `${attributeLocation}: ${getGLSLDeclaration(info.name, accessor)}`;\n }\n table[rowHeader] = getDebugTableRow(\n vertexArray,\n attributes[attributeLocation],\n accessor,\n header\n );\n }\n }\n\n return table;\n}\n\n/* eslint-disable max-statements */\nfunction getDebugTableRow(vertexArray, attribute, accessor, header) {\n const {gl} = vertexArray;\n\n if (!attribute) {\n return {\n [header]: 'null',\n 'Format ': 'N/A'\n };\n }\n\n let type = 'NOT PROVIDED';\n let size = 'N/A';\n let verts = 'N/A';\n let bytes = 'N/A';\n\n let isInteger;\n let marker;\n let value;\n\n if (accessor) {\n type = accessor.type;\n size = accessor.size;\n\n // Generate a type name by dropping Array from Float32Array etc.\n type = String(type).replace('Array', '');\n\n // Look for 'nt' to detect integer types, e.g. Int32Array, Uint32Array\n isInteger = type.indexOf('nt') !== -1;\n }\n\n if (attribute instanceof Buffer) {\n const buffer = attribute;\n\n const {data, modified} = buffer.getDebugData();\n marker = modified ? '*' : '';\n\n value = data;\n bytes = buffer.byteLength;\n verts = bytes / data.BYTES_PER_ELEMENT / size;\n\n let format;\n\n if (accessor) {\n const instanced = accessor.divisor > 0;\n format = `${instanced ? 'I ' : 'P '} ${verts} (x${size}=${bytes} bytes ${getKey(gl, type)})`;\n } else {\n // element buffer\n isInteger = true;\n format = `${bytes} bytes`;\n }\n\n return {\n [header]: `${marker}${formatValue(value, {size, isInteger})}`,\n 'Format ': format\n };\n }\n\n // CONSTANT VALUE\n value = attribute;\n size = attribute.length;\n // Generate a type name by dropping Array from Float32Array etc.\n type = String(attribute.constructor.name).replace('Array', '');\n // Look for 'nt' to detect integer types, e.g. Int32Array, Uint32Array\n isInteger = type.indexOf('nt') !== -1;\n\n return {\n [header]: `${formatValue(value, {size, isInteger})} (constant)`,\n 'Format ': `${size}x${type} (constant)`\n };\n}\n/* eslint-ensable max-statements */\n\nfunction getGLSLDeclaration(name, accessor) {\n const {type, size} = accessor;\n const typeAndName = getCompositeGLType(type, size);\n return typeAndName ? `${name} (${typeAndName.name})` : name;\n}\n","import {formatValue, assert} from '../utils';\n\n// Prepares a table suitable for console.table\n/* eslint-disable max-statements, complexity */\nexport function getDebugTableForUniforms({\n header = 'Uniforms',\n program,\n uniforms,\n undefinedOnly = false\n} = {}) {\n assert(program);\n\n const SHADER_MODULE_UNIFORM_REGEXP = '.*_.*';\n const PROJECT_MODULE_UNIFORM_REGEXP = '.*Matrix'; // TODO - Use explicit list\n\n const uniformLocations = program._uniformSetters;\n const table = {}; // {[header]: {}};\n\n // Add program's provided uniforms (in alphabetical order)\n const uniformNames = Object.keys(uniformLocations).sort();\n\n let count = 0;\n\n // First add non-underscored uniforms (assumed not coming from shader modules)\n for (const uniformName of uniformNames) {\n if (\n !uniformName.match(SHADER_MODULE_UNIFORM_REGEXP) &&\n !uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)\n ) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n // add underscored uniforms (assumed from shader modules)\n for (const uniformName of uniformNames) {\n if (uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n for (const uniformName of uniformNames) {\n if (!table[uniformName]) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n // Create a table of unused uniforms\n let unusedCount = 0;\n const unusedTable = {};\n if (!undefinedOnly) {\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n if (!table[uniformName]) {\n unusedCount++;\n unusedTable[uniformName] = {\n Type: `NOT USED: ${uniform}`,\n [header]: formatValue(uniform)\n };\n }\n }\n }\n\n return {table, count, unusedTable, unusedCount};\n}\n\n// Helper\nfunction addUniformToTable({table, header, uniforms, uniformName, undefinedOnly}) {\n const value = uniforms[uniformName];\n const isDefined = isUniformDefined(value);\n if (!undefinedOnly || !isDefined) {\n table[uniformName] = {\n // Add program's unprovided uniforms\n [header]: isDefined ? formatValue(value) : 'N/A',\n 'Uniform Type': isDefined ? value : 'NOT PROVIDED'\n };\n return true;\n }\n return false;\n}\n\nfunction isUniformDefined(value) {\n return value !== undefined && value !== null;\n}\n","import {getCompositeGLType} from '../webgl-utils/attribute-utils';\n\nexport function getDebugTableForProgramConfiguration(config) {\n const table = {};\n\n const header = `Accessors for ${config.id}`;\n\n for (const attributeInfo of config.attributeInfos) {\n if (attributeInfo) {\n const glslDeclaration = getGLSLDeclaration(attributeInfo);\n table[`in ${glslDeclaration}`] = {[header]: JSON.stringify(attributeInfo.accessor)};\n }\n }\n\n for (const varyingInfo of config.varyingInfos) {\n if (varyingInfo) {\n const glslDeclaration = getGLSLDeclaration(varyingInfo);\n table[`out ${glslDeclaration}`] = {[header]: JSON.stringify(varyingInfo.accessor)};\n }\n }\n\n return table;\n}\n\nfunction getGLSLDeclaration(attributeInfo) {\n const {type, size} = attributeInfo.accessor;\n const typeAndName = getCompositeGLType(type, size);\n if (typeAndName) {\n return `${typeAndName.name} ${attributeInfo.name}`;\n }\n return attributeInfo.name;\n}\n","import GL from '@luma.gl/constants';\nimport {Buffer, assert} from '@luma.gl/webgl';\n\n// Support for mapping new geometries with glTF attribute names to \"classic\" luma.gl shader names\nconst GLTF_TO_LUMA_ATTRIBUTE_MAP = {\n POSITION: 'positions',\n NORMAL: 'normals',\n COLOR_0: 'colors',\n TEXCOORD_0: 'texCoords',\n TEXCOORD_1: 'texCoords1',\n TEXCOORD_2: 'texCoords2'\n};\n\nexport function getBuffersFromGeometry(gl, geometry, options) {\n const buffers = {};\n let indices = geometry.indices;\n\n for (const name in geometry.attributes) {\n const attribute = geometry.attributes[name];\n const remappedName = mapAttributeName(name, options);\n\n if (name === 'indices') {\n indices = attribute;\n } else if (attribute.constant) {\n buffers[remappedName] = attribute.value;\n } else {\n const typedArray = attribute.value;\n // Create accessor by copying the attribute and removing `value``\n const accessor = {...attribute};\n delete accessor.value;\n buffers[remappedName] = [new Buffer(gl, typedArray), accessor];\n\n inferAttributeAccessor(name, accessor);\n }\n }\n\n if (indices) {\n const data = indices.value || indices;\n assert(\n data instanceof Uint16Array || data instanceof Uint32Array,\n 'attribute array for \"indices\" must be of integer type'\n );\n const accessor = {\n size: 1,\n isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed\n };\n buffers.indices = [\n new Buffer(gl, {\n data,\n target: GL.ELEMENT_ARRAY_BUFFER\n }),\n accessor\n ];\n }\n\n return buffers;\n}\n\nfunction mapAttributeName(name, options) {\n const {attributeMap = GLTF_TO_LUMA_ATTRIBUTE_MAP} = options || {};\n return (attributeMap && attributeMap[name]) || name;\n}\n\n// Check for well known attribute names\n// eslint-disable-next-line complexity\nexport function inferAttributeAccessor(attributeName, attribute) {\n let category;\n switch (attributeName) {\n case 'texCoords':\n case 'texCoord1':\n case 'texCoord2':\n case 'texCoord3':\n category = 'uvs';\n break;\n case 'vertices':\n case 'positions':\n case 'normals':\n case 'pickingColors':\n category = 'vectors';\n break;\n default:\n }\n\n // Check for categorys\n switch (category) {\n case 'vectors':\n attribute.size = attribute.size || 3;\n break;\n case 'uvs':\n attribute.size = attribute.size || 2;\n break;\n default:\n }\n\n assert(Number.isFinite(attribute.size), `attribute ${attributeName} needs size`);\n}\n","/* eslint-disable complexity */\n\nimport GL from '@luma.gl/constants';\nimport {isWebGL} from '@luma.gl/gltools';\nimport ProgramManager from './program-manager';\nimport {\n Program,\n VertexArray,\n clear,\n TransformFeedback,\n Buffer,\n log,\n isObjectEmpty,\n uid,\n assert\n} from '@luma.gl/webgl';\nimport {\n getDebugTableForUniforms,\n getDebugTableForVertexArray,\n getDebugTableForProgramConfiguration\n} from '@luma.gl/webgl';\nimport {getBuffersFromGeometry} from './model-utils';\n\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\n\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\nconst DRAW_PARAMS = {};\n\nexport default class Model {\n constructor(gl, props = {}) {\n // Deduce a helpful id\n const {id = uid('model')} = props;\n assert(isWebGL(gl));\n this.id = id;\n this.gl = gl;\n this.id = props.id || uid('Model');\n this.debug = props.debug || false;\n this.lastLogTime = 0; // TODO - move to probe.gl\n this.initialize(props);\n }\n\n initialize(props) {\n this.props = {};\n\n this.programManager = props.programManager || ProgramManager.getDefaultProgramManager(this.gl);\n this._programManagerState = -1;\n this._managedProgram = false;\n\n const {program = null, vs, fs, modules, defines, inject, varyings, bufferMode} = props;\n\n this.programProps = {program, vs, fs, modules, defines, inject, varyings, bufferMode};\n this.program = null;\n this.vertexArray = null;\n this._programDirty = true;\n\n // Initialize state\n this.userData = {};\n this.needsRedraw = true;\n\n // Attributes and buffers\n // Model manages auto Buffer creation from typed arrays\n this._attributes = {}; // All attributes\n this.attributes = {}; // User defined attributes\n\n // Model manages uniform animation\n this.uniforms = {};\n\n // picking options\n this.pickable = true;\n\n this._checkProgram();\n\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms(props.moduleSettings) // Get unforms for supplied parameters\n )\n );\n\n this.drawMode = props.drawMode !== undefined ? props.drawMode : GL.TRIANGLES;\n this.vertexCount = props.vertexCount || 0;\n\n // Track buffers created by setGeometry\n this.geometryBuffers = {};\n\n // geometry might have set drawMode and vertexCount\n this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n this._setModelProps(props);\n\n // TODO - just to unbreak deck.gl 7.0-beta, remove as soon as updated\n this.geometry = {};\n\n // assert(program || program instanceof Program);\n assert(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n }\n\n setProps(props) {\n this._setModelProps(props);\n }\n\n delete() {\n // delete all attributes created by this model\n // TODO - should buffer deletes be handled by vertex array?\n for (const key in this._attributes) {\n if (this._attributes[key] !== this.attributes[key]) {\n this._attributes[key].delete();\n }\n }\n\n if (this._managedProgram) {\n this.programManager.release(this.program);\n }\n\n this.vertexArray.delete();\n\n this._deleteGeometryBuffers();\n }\n\n // GETTERS\n\n getDrawMode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n getInstanceCount() {\n return this.instanceCount;\n }\n\n getAttributes() {\n return this.attributes;\n }\n\n getProgram() {\n return this.program;\n }\n\n setProgram(props) {\n const {program, vs, fs, modules, defines, inject, varyings, bufferMode} = props;\n this.programProps = {program, vs, fs, modules, defines, inject, varyings, bufferMode};\n this._programDirty = true;\n }\n\n getUniforms() {\n return this.uniforms;\n }\n\n // SETTERS\n\n setDrawMode(drawMode) {\n this.drawMode = drawMode;\n return this;\n }\n\n setVertexCount(vertexCount) {\n assert(Number.isFinite(vertexCount));\n this.vertexCount = vertexCount;\n return this;\n }\n\n setInstanceCount(instanceCount) {\n assert(Number.isFinite(instanceCount));\n this.instanceCount = instanceCount;\n return this;\n }\n\n setGeometry(geometry) {\n this.drawMode = geometry.drawMode;\n this.vertexCount = geometry.getVertexCount();\n\n this._deleteGeometryBuffers();\n\n this.geometryBuffers = getBuffersFromGeometry(this.gl, geometry);\n this.vertexArray.setAttributes(this.geometryBuffers);\n return this;\n }\n\n setAttributes(attributes = {}) {\n // Avoid setting needsRedraw if no attributes\n if (isObjectEmpty(attributes)) {\n return this;\n }\n\n const normalizedAttributes = {};\n for (const name in attributes) {\n const attribute = attributes[name];\n // The `getValue` call provides support for deck.gl `Attribute` class\n // TODO - remove once deck refactoring completes\n normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n }\n\n this.vertexArray.setAttributes(normalizedAttributes);\n return this;\n }\n\n // TODO - should actually set the uniforms\n setUniforms(uniforms = {}) {\n Object.assign(this.uniforms, uniforms);\n\n return this;\n }\n\n getModuleUniforms(opts) {\n this._checkProgram();\n\n const getUniforms = this.programManager.getUniforms(this.program);\n\n if (getUniforms) {\n return getUniforms(opts);\n }\n\n return {};\n }\n\n updateModuleSettings(opts) {\n const uniforms = this.getModuleUniforms(opts || {});\n return this.setUniforms(uniforms);\n }\n\n // DRAW CALLS\n\n clear(opts) {\n clear(this.program.gl, opts);\n return this;\n }\n\n draw(opts = {}) {\n // Lazy update program and vertex array\n this._checkProgram();\n\n const {\n moduleSettings = null,\n framebuffer,\n uniforms = {},\n attributes = {},\n transformFeedback = this.transformFeedback,\n parameters = {},\n vertexArray = this.vertexArray\n } = opts;\n\n // Update model with any just provided attributes, settings or uniforms\n this.setAttributes(attributes);\n this.updateModuleSettings(moduleSettings);\n this.setUniforms(uniforms);\n\n let logPriority;\n\n if (this.debug) {\n logPriority = this._logDrawCallStart(2);\n }\n\n const drawParams = this.vertexArray.getDrawParams();\n const {\n isIndexed = drawParams.isIndexed,\n indexType = drawParams.indexType,\n indexOffset = drawParams.indexOffset,\n vertexArrayInstanced = drawParams.isInstanced\n } = this.props;\n\n if (vertexArrayInstanced && !this.isInstanced) {\n log.warn('Found instanced attributes on non-instanced model', this.id)();\n }\n\n const {isInstanced, instanceCount} = this;\n\n const {onBeforeRender = NOOP, onAfterRender = NOOP} = this.props;\n\n onBeforeRender();\n\n this.program.setUniforms(this.uniforms);\n\n const didDraw = this.program.draw(\n Object.assign(DRAW_PARAMS, opts, {\n logPriority,\n uniforms: null, // Already set (may contain \"function values\" not understood by Program)\n framebuffer,\n parameters,\n drawMode: this.getDrawMode(),\n vertexCount: this.getVertexCount(),\n vertexArray,\n transformFeedback,\n isIndexed,\n indexType,\n isInstanced,\n instanceCount,\n offset: isIndexed ? indexOffset : 0\n })\n );\n\n onAfterRender();\n\n if (this.debug) {\n this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n }\n\n return didDraw;\n }\n\n // Draw call for transform feedback\n transform(opts = {}) {\n const {discard = true, feedbackBuffers, unbindModels = []} = opts;\n\n let {parameters} = opts;\n\n if (feedbackBuffers) {\n this._setFeedbackBuffers(feedbackBuffers);\n }\n\n if (discard) {\n parameters = Object.assign({}, parameters, {[GL.RASTERIZER_DISCARD]: discard});\n }\n\n unbindModels.forEach(model => model.vertexArray.unbindBuffers());\n try {\n this.draw(Object.assign({}, opts, {parameters}));\n } finally {\n unbindModels.forEach(model => model.vertexArray.bindBuffers());\n }\n\n return this;\n }\n\n // DEPRECATED METHODS\n\n render(uniforms = {}) {\n log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n return this.setUniforms(uniforms).draw();\n }\n\n // PRIVATE METHODS\n\n _setModelProps(props) {\n Object.assign(this.props, props);\n\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n\n if ('pickable' in props) {\n this.pickable = props.pickable;\n }\n\n if ('instanceCount' in props) {\n this.instanceCount = props.instanceCount;\n }\n if ('geometry' in props) {\n this.setGeometry(props.geometry);\n }\n\n // webgl settings\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('_feedbackBuffers' in props) {\n this._setFeedbackBuffers(props._feedbackBuffers);\n }\n }\n\n _checkProgram(shaderCache = null) {\n const needsUpdate =\n this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n if (!needsUpdate) {\n return;\n }\n\n let {program} = this.programProps;\n\n if (program) {\n this._managedProgram = false;\n } else {\n const {vs, fs, modules, inject, defines, varyings, bufferMode} = this.programProps;\n program = this.programManager.get({vs, fs, modules, inject, defines, varyings, bufferMode});\n if (this.program && this._managedProgram) {\n this.programManager.release(this.program);\n }\n this._programManagerState = this.programManager.stateHash;\n this._managedProgram = true;\n }\n\n assert(program instanceof Program, 'Model needs a program');\n\n this._programDirty = false;\n\n if (program === this.program) {\n return;\n }\n\n this.program = program;\n\n if (this.vertexArray) {\n this.vertexArray.setProps({program: this.program, attributes: this.vertexArray.attributes});\n } else {\n this.vertexArray = new VertexArray(this.gl, {program: this.program});\n }\n\n // Make sure we have some reasonable default uniforms in place\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms() // Get all default uniforms,\n )\n );\n }\n\n _deleteGeometryBuffers() {\n for (const name in this.geometryBuffers) {\n // Buffer is raw value (for indices) or first element of [buffer, accessor] pair\n const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n if (buffer instanceof Buffer) {\n buffer.delete();\n }\n }\n }\n\n // Updates (evaluates) all function valued uniforms based on a new set of animationProps\n // experimental\n _setAnimationProps(animationProps) {\n if (this.animated) {\n assert(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n const animatedUniforms = this._evaluateAnimateUniforms(animationProps);\n Object.assign(this.uniforms, animatedUniforms);\n }\n }\n\n // Transform Feedback\n\n _setFeedbackBuffers(feedbackBuffers = {}) {\n // Avoid setting needsRedraw if no feedbackBuffers\n if (isObjectEmpty(feedbackBuffers)) {\n return this;\n }\n\n const {gl} = this.program;\n this.transformFeedback =\n this.transformFeedback ||\n new TransformFeedback(gl, {\n program: this.program\n });\n\n this.transformFeedback.setBuffers(feedbackBuffers);\n return this;\n }\n\n _logDrawCallStart(logLevel) {\n const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n if (log.level < logLevel || Date.now() - this.lastLogTime < logDrawTimeout) {\n return undefined;\n }\n\n this.lastLogTime = Date.now();\n\n log.group(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`, {collapsed: log.level <= 2})();\n\n return logLevel;\n }\n\n _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n // HACK: logLevel === undefined means logDrawCallStart didn't run\n if (logLevel === undefined) {\n return;\n }\n\n const attributeTable = getDebugTableForVertexArray({\n vertexArray,\n header: `${this.id} attributes`,\n attributes: this._attributes\n });\n\n const {table: uniformTable, unusedTable, unusedCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms)\n });\n\n // log missing uniforms\n const {table: missingTable, count: missingCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms),\n undefinedOnly: true\n });\n\n if (missingCount > 0) {\n log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n // log.table(logLevel, missingTable)();\n }\n if (unusedCount > 0) {\n log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n // log.log(logLevel, 'Unused uniforms ', unusedTable)();\n }\n\n const configTable = getDebugTableForProgramConfiguration(this.vertexArray.configuration);\n\n log.table(logLevel, attributeTable)();\n\n log.table(logLevel, uniformTable)();\n\n log.table(logLevel + 1, configTable)();\n\n if (framebuffer) {\n framebuffer.log({logLevel: LOG_DRAW_PRIORITY, message: `Rendered to ${framebuffer.id}`});\n }\n\n log.groupEnd(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`)();\n }\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport Texture from './texture';\nimport {assertWebGLContext} from '../webgl-utils';\n\nconst FACES = [\n GL.TEXTURE_CUBE_MAP_POSITIVE_X,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_X,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Y,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Z,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Z\n];\n\nexport default class TextureCube extends Texture {\n constructor(gl, props = {}) {\n assertWebGLContext(gl);\n\n super(gl, Object.assign({}, props, {target: GL.TEXTURE_CUBE_MAP}));\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n /* eslint-disable max-len, max-statements */\n initialize(props = {}) {\n const {mipmaps = true, parameters = {}} = props;\n\n // Store props for accessors\n this.opts = props;\n\n this.setCubeMapImageData(props).then(() => {\n this.loaded = true;\n\n // TODO - should genMipmap() be called on the cubemap or on the faces?\n // TODO - without generateMipmap() cube textures do not work at all!!! Why?\n if (mipmaps) {\n this.generateMipmap(props);\n }\n\n this.setParameters(parameters);\n });\n }\n\n subImage({face, data, x = 0, y = 0, mipmapLevel = 0}) {\n return this._subImage({target: face, data, x, y, mipmapLevel});\n }\n\n /* eslint-disable max-statements, max-len */\n async setCubeMapImageData({\n width,\n height,\n pixels,\n data,\n border = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE\n }) {\n const {gl} = this;\n const imageDataMap = pixels || data;\n\n // pixel data (imageDataMap) is an Object from Face to Image or Promise.\n // For example:\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : Image-or-Promise,\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : Image-or-Promise,\n // ... }\n // To provide multiple level-of-details (LODs) this can be Face to Array\n // of Image or Promise, like this\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // ... }\n\n const resolvedFaces = await Promise.all(\n FACES.map(face => {\n const facePixels = imageDataMap[face];\n return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);\n })\n );\n\n this.bind();\n\n FACES.forEach((face, index) => {\n if (resolvedFaces[index].length > 1 && this.opts.mipmaps !== false) {\n // If the user provides multiple LODs, then automatic mipmap\n // generation generateMipmap() should be disabled to avoid overwritting them.\n log.warn(`${this.id} has mipmap and multiple LODs.`)();\n }\n resolvedFaces[index].forEach((image, lodLevel) => {\n // TODO: adjust width & height for LOD!\n if (width && height) {\n gl.texImage2D(face, lodLevel, format, width, height, border, format, type, image);\n } else {\n gl.texImage2D(face, lodLevel, format, format, type, image);\n }\n });\n });\n\n this.unbind();\n }\n\n // TODO: update this method to accept LODs\n setImageDataForFace(options) {\n const {\n face,\n width,\n height,\n pixels,\n data,\n border = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE\n // generateMipmap = false // TODO\n } = options;\n\n const {gl} = this;\n\n const imageData = pixels || data;\n\n this.bind();\n if (imageData instanceof Promise) {\n imageData.then(resolvedImageData =>\n this.setImageDataForFace(\n Object.assign({}, options, {\n face,\n data: resolvedImageData,\n pixels: resolvedImageData\n })\n )\n );\n } else if (this.width || this.height) {\n gl.texImage2D(face, 0, format, width, height, border, format, type, imageData);\n } else {\n gl.texImage2D(face, 0, format, format, type, imageData);\n }\n\n return this;\n }\n}\n\nTextureCube.FACES = FACES;\n","import GL from '@luma.gl/constants';\nimport {isWebGL2, withParameters} from '@luma.gl/gltools';\nimport {assertWebGL2Context} from '../webgl-utils';\nimport Texture from './texture';\nimport {DATA_FORMAT_CHANNELS, TYPE_SIZES} from './texture-formats';\nimport Buffer from './buffer';\n\nexport default class Texture3D extends Texture {\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n assertWebGL2Context(gl);\n props = Object.assign({depth: 1}, props, {target: GL.TEXTURE_3D, unpackFlipY: false});\n super(gl, props);\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // Image 3D copies from Typed Array or WebGLBuffer\n setImageData({\n level = 0,\n dataFormat = GL.RGBA,\n width,\n height,\n depth = 1,\n border = 0,\n format,\n type = GL.UNSIGNED_BYTE,\n offset = 0,\n data,\n parameters = {}\n }) {\n this._trackDeallocatedMemory('Texture');\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n if (ArrayBuffer.isView(data)) {\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n data\n );\n }\n\n if (data instanceof Buffer) {\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n offset\n );\n }\n });\n\n if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(\n this.width * this.height * this.depth * channels * channelSize,\n 'Texture'\n );\n }\n\n this.loaded = true;\n\n return this;\n }\n}\n","// TODO: Two subdirectories must not depend on each other (classes vs utils)!\nimport Texture2D from '../classes/texture-2d';\nimport TextureCube from '../classes/texture-cube';\nimport Texture3D from '../classes/texture-3d';\nimport Framebuffer from '../classes/framebuffer';\nimport GL from '@luma.gl/constants';\nimport {assert} from '../utils';\n\n// Clone a new texture object from a reference texture object.\nexport function cloneTextureFrom(refTexture, overrides) {\n assert(\n refTexture instanceof Texture2D ||\n refTexture instanceof TextureCube ||\n refTexture instanceof Texture3D\n );\n\n const TextureType = refTexture.constructor;\n\n const {gl, width, height, format, type, dataFormat, border, mipmaps} = refTexture;\n\n const textureOptions = Object.assign(\n {\n width,\n height,\n format,\n type,\n dataFormat,\n border,\n mipmaps\n },\n overrides\n );\n\n // TODO: move this to `Texture` class as instance method and use this.constructor\n return new TextureType(gl, textureOptions);\n}\n\n// Wraps a given texture into a framebuffer object, that can be further used\n// to read data from the texture object.\nexport function toFramebuffer(texture, opts) {\n const {gl, width, height, id} = texture;\n const framebuffer = new Framebuffer(\n gl,\n Object.assign({}, opts, {\n id: `framebuffer-for-${id}`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: texture\n }\n })\n );\n return framebuffer;\n}\n","import React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n return React.useContext(ThemeContext);\n}","/* Use as\nimport {checkProps} from '../util/check-props;'\n\nconst PROP_CHECKS = {\n // Removed props no longer supported, print error and link to upgrade guide\n removedProps: {\n },\n // Deprecated props\n deprecatedProps: {\n offset: 'accessor',\n stride: 'accessor',\n type: 'accessor',\n size: 'accessor',\n divisor: 'accessor',\n normalized: 'accessor',\n integer: 'accessor'\n },\n // Deprecated props that can be autosubstituted, print warning and return updated props object\n replacedProps: {\n bytes: 'byteLength'\n }\n}\n\nclass Buffer {\n setProps(props) {\n checkProps('Buffer', props, PROP_CHECKS);\n }\n}\n*/\nimport {log} from '@luma.gl/gltools';\n\nexport function checkProps(className, props, propChecks) {\n const {removedProps = {}, deprecatedProps = {}, replacedProps = {}} = propChecks;\n\n // removedProps: Removed props no longer supported\n // print error and link to upgrade guide\n for (const propName in removedProps) {\n if (propName in props) {\n const replacementProp = removedProps[propName];\n const replacement = replacementProp ? `${className}.${removedProps[propName]}` : 'N/A';\n log.removed(`${className}.${propName}`, replacement)();\n }\n }\n\n // deprecatedProps: Deprecated props that can not be autosubstituted\n // print warning and rely on caller to substitute\n for (const propName in deprecatedProps) {\n if (propName in props) {\n const replacementProp = deprecatedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n }\n }\n\n // replacedProps: Deprecated props that can be autosubstituted\n // print warning and return updated props object\n let newProps = null;\n for (const propName in replacedProps) {\n if (propName in props) {\n const replacementProp = replacedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n newProps = newProps || Object.assign({}, props);\n newProps[replacementProp] = props[propName];\n delete newProps[propName];\n }\n }\n\n return newProps || props;\n}\n","import { createRule } from 'jss';\n\nvar now = Date.now();\nvar fnValuesNs = \"fnValues\" + now;\nvar fnRuleNs = \"fnStyle\" + ++now;\nfunction functionPlugin() {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (typeof decl !== 'function') return null;\n var rule = createRule(name, {}, options);\n rule[fnRuleNs] = decl;\n return rule;\n },\n onProcessStyle: function onProcessStyle(style, rule) {\n // We need to extract function values from the declaration, so that we can keep core unaware of them.\n // We need to do that only once.\n // We don't need to extract functions on each style update, since this can happen only once.\n // We don't support function values inside of function rules.\n if (fnValuesNs in rule || fnRuleNs in rule) return style;\n var fnValues = {};\n\n for (var prop in style) {\n var value = style[prop];\n if (typeof value !== 'function') continue;\n delete style[prop];\n fnValues[prop] = value;\n } // $FlowFixMe\n\n\n rule[fnValuesNs] = fnValues;\n return style;\n },\n onUpdate: function onUpdate(data, rule, sheet, options) {\n var styleRule = rule;\n var fnRule = styleRule[fnRuleNs]; // If we have a style function, the entire rule is dynamic and style object\n // will be returned from that function.\n\n if (fnRule) {\n // Empty object will remove all currently defined props\n // in case function rule returns a falsy value.\n styleRule.style = fnRule(data) || {};\n }\n\n var fnValues = styleRule[fnValuesNs]; // If we have a fn values map, it is a rule with function values.\n\n if (fnValues) {\n for (var prop in fnValues) {\n styleRule.prop(prop, fnValues[prop](data), options);\n }\n }\n }\n };\n}\n\nexport default functionPlugin;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { RuleList } from 'jss';\n\nvar at = '@global';\nvar atPrefix = '@global ';\n\nvar GlobalContainerRule =\n/*#__PURE__*/\nfunction () {\n function GlobalContainerRule(key, styles, options) {\n this.type = 'global';\n this.at = at;\n this.rules = void 0;\n this.options = void 0;\n this.key = void 0;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var selector in styles) {\n this.rules.add(selector, styles[selector]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = GlobalContainerRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString() {\n return this.rules.toString();\n };\n\n return GlobalContainerRule;\n}();\n\nvar GlobalPrefixedRule =\n/*#__PURE__*/\nfunction () {\n function GlobalPrefixedRule(key, style, options) {\n this.type = 'global';\n this.at = at;\n this.options = void 0;\n this.rule = void 0;\n this.isProcessed = false;\n this.key = void 0;\n this.key = key;\n this.options = options;\n var selector = key.substr(atPrefix.length);\n this.rule = options.jss.createRule(selector, style, _extends({}, options, {\n parent: this\n }));\n }\n\n var _proto2 = GlobalPrefixedRule.prototype;\n\n _proto2.toString = function toString(options) {\n return this.rule ? this.rule.toString(options) : '';\n };\n\n return GlobalPrefixedRule;\n}();\n\nvar separatorRegExp = /\\s*,\\s*/g;\n\nfunction addScope(selector, scope) {\n var parts = selector.split(separatorRegExp);\n var scoped = '';\n\n for (var i = 0; i < parts.length; i++) {\n scoped += scope + \" \" + parts[i].trim();\n if (parts[i + 1]) scoped += ', ';\n }\n\n return scoped;\n}\n\nfunction handleNestedGlobalContainerRule(rule) {\n var options = rule.options,\n style = rule.style;\n var rules = style ? style[at] : null;\n if (!rules) return;\n\n for (var name in rules) {\n options.sheet.addRule(name, rules[name], _extends({}, options, {\n selector: addScope(name, rule.selector)\n }));\n }\n\n delete style[at];\n}\n\nfunction handlePrefixedGlobalRule(rule) {\n var options = rule.options,\n style = rule.style;\n\n for (var prop in style) {\n if (prop[0] !== '@' || prop.substr(0, at.length) !== at) continue;\n var selector = addScope(prop.substr(at.length), rule.selector);\n options.sheet.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n delete style[prop];\n }\n}\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\n\nfunction jssGlobal() {\n function onCreateRule(name, styles, options) {\n if (!name) return null;\n\n if (name === at) {\n return new GlobalContainerRule(name, styles, options);\n }\n\n if (name[0] === '@' && name.substr(0, atPrefix.length) === atPrefix) {\n return new GlobalPrefixedRule(name, styles, options);\n }\n\n var parent = options.parent;\n\n if (parent) {\n if (parent.type === 'global' || parent.options.parent && parent.options.parent.type === 'global') {\n options.scoped = false;\n }\n }\n\n if (options.scoped === false) {\n options.selector = name;\n }\n\n return null;\n }\n\n function onProcessRule(rule) {\n if (rule.type !== 'style') return;\n handleNestedGlobalContainerRule(rule);\n handlePrefixedGlobalRule(rule);\n }\n\n return {\n onCreateRule: onCreateRule,\n onProcessRule: onProcessRule\n };\n}\n\nexport default jssGlobal;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\n\nvar separatorRegExp = /\\s*,\\s*/g;\nvar parentRegExp = /&/g;\nvar refRegExp = /\\$([\\w-]+)/g;\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\n\nfunction jssNested() {\n // Get a function to be used for $ref replacement.\n function getReplaceRef(container, sheet) {\n return function (match, key) {\n var rule = container.getRule(key) || sheet && sheet.getRule(key);\n\n if (rule) {\n rule = rule;\n return rule.selector;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Could not find the referenced rule \\\"\" + key + \"\\\" in \\\"\" + (container.options.meta || container.toString()) + \"\\\".\") : void 0;\n return key;\n };\n }\n\n function replaceParentRefs(nestedProp, parentProp) {\n var parentSelectors = parentProp.split(separatorRegExp);\n var nestedSelectors = nestedProp.split(separatorRegExp);\n var result = '';\n\n for (var i = 0; i < parentSelectors.length; i++) {\n var parent = parentSelectors[i];\n\n for (var j = 0; j < nestedSelectors.length; j++) {\n var nested = nestedSelectors[j];\n if (result) result += ', '; // Replace all & by the parent or prefix & with the parent.\n\n result += nested.indexOf('&') !== -1 ? nested.replace(parentRegExp, parent) : parent + \" \" + nested;\n }\n }\n\n return result;\n }\n\n function getOptions(rule, container, prevOptions) {\n // Options has been already created, now we only increase index.\n if (prevOptions) return _extends({}, prevOptions, {\n index: prevOptions.index + 1\n });\n var nestingLevel = rule.options.nestingLevel;\n nestingLevel = nestingLevel === undefined ? 1 : nestingLevel + 1;\n\n var options = _extends({}, rule.options, {\n nestingLevel: nestingLevel,\n index: container.indexOf(rule) + 1 // We don't need the parent name to be set options for chlid.\n\n });\n\n delete options.name;\n return options;\n }\n\n function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style') return style;\n var styleRule = rule;\n var container = styleRule.options.parent;\n var options;\n var replaceRef;\n\n for (var prop in style) {\n var isNested = prop.indexOf('&') !== -1;\n var isNestedConditional = prop[0] === '@';\n if (!isNested && !isNestedConditional) continue;\n options = getOptions(styleRule, container, options);\n\n if (isNested) {\n var selector = replaceParentRefs(prop, styleRule.selector); // Lazily create the ref replacer function just once for\n // all nested rules within the sheet.\n\n if (!replaceRef) replaceRef = getReplaceRef(container, sheet); // Replace all $refs.\n\n selector = selector.replace(refRegExp, replaceRef);\n container.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n } else if (isNestedConditional) {\n // Place conditional right after the parent rule to ensure right ordering.\n container.addRule(prop, {}, options) // Flow expects more options but they aren't required\n // And flow doesn't know this will always be a StyleRule which has the addRule method\n // $FlowFixMe\n .addRule(styleRule.key, style[prop], {\n selector: styleRule.selector\n });\n }\n\n delete style[prop];\n }\n\n return style;\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssNested;\n","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","import hyphenate from 'hyphenate-style-name';\n\n/**\n * Convert camel cased property names to dash separated.\n *\n * @param {Object} style\n * @return {Object}\n */\n\nfunction convertCase(style) {\n var converted = {};\n\n for (var prop in style) {\n var key = prop.indexOf('--') === 0 ? prop : hyphenate(prop);\n converted[key] = style[prop];\n }\n\n if (style.fallbacks) {\n if (Array.isArray(style.fallbacks)) converted.fallbacks = style.fallbacks.map(convertCase);else converted.fallbacks = convertCase(style.fallbacks);\n }\n\n return converted;\n}\n/**\n * Allow camel cased property names by converting them back to dasherized.\n *\n * @param {Rule} rule\n */\n\n\nfunction camelCase() {\n function onProcessStyle(style) {\n if (Array.isArray(style)) {\n // Handle rules like @font-face, which can have multiple styles in an array\n for (var index = 0; index < style.length; index++) {\n style[index] = convertCase(style[index]);\n }\n\n return style;\n }\n\n return convertCase(style);\n }\n\n function onChangeValue(value, prop, rule) {\n if (prop.indexOf('--') === 0) {\n return value;\n }\n\n var hyphenatedProp = hyphenate(prop); // There was no camel case in place\n\n if (prop === hyphenatedProp) return value;\n rule.prop(hyphenatedProp, value); // Core will ignore that property value we set the proper one above.\n\n return null;\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default camelCase;\n","import { hasCSSTOMSupport } from 'jss';\n\nvar px = hasCSSTOMSupport && CSS ? CSS.px : 'px';\nvar ms = hasCSSTOMSupport && CSS ? CSS.ms : 'ms';\nvar percent = hasCSSTOMSupport && CSS ? CSS.percent : '%';\n/**\n * Generated jss-plugin-default-unit CSS property units\n *\n * @type object\n */\n\nvar defaultUnits = {\n // Animation properties\n 'animation-delay': ms,\n 'animation-duration': ms,\n // Background properties\n 'background-position': px,\n 'background-position-x': px,\n 'background-position-y': px,\n 'background-size': px,\n // Border Properties\n border: px,\n 'border-bottom': px,\n 'border-bottom-left-radius': px,\n 'border-bottom-right-radius': px,\n 'border-bottom-width': px,\n 'border-left': px,\n 'border-left-width': px,\n 'border-radius': px,\n 'border-right': px,\n 'border-right-width': px,\n 'border-top': px,\n 'border-top-left-radius': px,\n 'border-top-right-radius': px,\n 'border-top-width': px,\n 'border-width': px,\n // Margin properties\n margin: px,\n 'margin-bottom': px,\n 'margin-left': px,\n 'margin-right': px,\n 'margin-top': px,\n // Padding properties\n padding: px,\n 'padding-bottom': px,\n 'padding-left': px,\n 'padding-right': px,\n 'padding-top': px,\n // Mask properties\n 'mask-position-x': px,\n 'mask-position-y': px,\n 'mask-size': px,\n // Width and height properties\n height: px,\n width: px,\n 'min-height': px,\n 'max-height': px,\n 'min-width': px,\n 'max-width': px,\n // Position properties\n bottom: px,\n left: px,\n top: px,\n right: px,\n // Shadow properties\n 'box-shadow': px,\n 'text-shadow': px,\n // Column properties\n 'column-gap': px,\n 'column-rule': px,\n 'column-rule-width': px,\n 'column-width': px,\n // Font and text properties\n 'font-size': px,\n 'font-size-delta': px,\n 'letter-spacing': px,\n 'text-indent': px,\n 'text-stroke': px,\n 'text-stroke-width': px,\n 'word-spacing': px,\n // Motion properties\n motion: px,\n 'motion-offset': px,\n // Outline properties\n outline: px,\n 'outline-offset': px,\n 'outline-width': px,\n // Perspective properties\n perspective: px,\n 'perspective-origin-x': percent,\n 'perspective-origin-y': percent,\n // Transform properties\n 'transform-origin': percent,\n 'transform-origin-x': percent,\n 'transform-origin-y': percent,\n 'transform-origin-z': percent,\n // Transition properties\n 'transition-delay': ms,\n 'transition-duration': ms,\n // Alignment properties\n 'vertical-align': px,\n 'flex-basis': px,\n // Some random properties\n 'shape-margin': px,\n size: px,\n // Grid properties\n grid: px,\n 'grid-gap': px,\n 'grid-row-gap': px,\n 'grid-column-gap': px,\n 'grid-template-rows': px,\n 'grid-template-columns': px,\n 'grid-auto-rows': px,\n 'grid-auto-columns': px,\n // Not existing properties.\n // Used to avoid issues with jss-plugin-expand integration.\n 'box-shadow-x': px,\n 'box-shadow-y': px,\n 'box-shadow-blur': px,\n 'box-shadow-spread': px,\n 'font-line-height': px,\n 'text-shadow-x': px,\n 'text-shadow-y': px,\n 'text-shadow-blur': px\n};\n\n/**\n * Clones the object and adds a camel cased property version.\n */\nfunction addCamelCasedVersion(obj) {\n var regExp = /(-[a-z])/g;\n\n var replace = function replace(str) {\n return str[1].toUpperCase();\n };\n\n var newObj = {};\n\n for (var _key in obj) {\n newObj[_key] = obj[_key];\n newObj[_key.replace(regExp, replace)] = obj[_key];\n }\n\n return newObj;\n}\n\nvar units = addCamelCasedVersion(defaultUnits);\n/**\n * Recursive deep style passing function\n */\n\nfunction iterate(prop, value, options) {\n if (!value) return value;\n\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n value[i] = iterate(prop, value[i], options);\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n for (var innerProp in value) {\n value[innerProp] = iterate(innerProp, value[innerProp], options);\n }\n } else {\n for (var _innerProp in value) {\n value[_innerProp] = iterate(prop + \"-\" + _innerProp, value[_innerProp], options);\n }\n }\n } else if (typeof value === 'number') {\n if (options[prop]) {\n return \"\" + value + options[prop];\n }\n\n if (units[prop]) {\n return typeof units[prop] === 'function' ? units[prop](value).toString() : \"\" + value + units[prop];\n }\n\n return value.toString();\n }\n\n return value;\n}\n/**\n * Add unit to numeric values.\n */\n\n\nfunction defaultUnit(options) {\n if (options === void 0) {\n options = {};\n }\n\n var camelCasedOptions = addCamelCasedVersion(options);\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n\n for (var prop in style) {\n style[prop] = iterate(prop, style[prop], camelCasedOptions);\n }\n\n return style;\n }\n\n function onChangeValue(value, prop) {\n return iterate(prop, value, camelCasedOptions);\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default defaultUnit;\n","import isInBrowser from 'is-in-browser';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\n\n// Export javascript style and css style vendor prefixes.\nvar js = '';\nvar css = '';\nvar vendor = '';\nvar browser = '';\nvar isTouch = isInBrowser && 'ontouchstart' in document.documentElement; // We should not do anything if required serverside.\n\nif (isInBrowser) {\n // Order matters. We need to check Webkit the last one because\n // other vendors use to add Webkit prefixes to some properties\n var jsCssMap = {\n Moz: '-moz-',\n ms: '-ms-',\n O: '-o-',\n Webkit: '-webkit-'\n };\n\n var _document$createEleme = document.createElement('p'),\n style = _document$createEleme.style;\n\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n js = key;\n css = jsCssMap[key];\n break;\n }\n } // Correctly detect the Edge browser.\n\n\n if (js === 'Webkit' && 'msHyphens' in style) {\n js = 'ms';\n css = jsCssMap.ms;\n browser = 'edge';\n } // Correctly detect the Safari browser.\n\n\n if (js === 'Webkit' && '-apple-trailing-word' in style) {\n vendor = 'apple';\n }\n}\n/**\n * Vendor prefix string for the current browser.\n *\n * @type {{js: String, css: String, vendor: String, browser: String}}\n * @api public\n */\n\n\nvar prefix = {\n js: js,\n css: css,\n vendor: vendor,\n browser: browser,\n isTouch: isTouch\n};\n\n/**\n * Test if a keyframe at-rule should be prefixed or not\n *\n * @param {String} vendor prefix string for the current browser.\n * @return {String}\n * @api public\n */\n\nfunction supportedKeyframes(key) {\n // Keyframes is already prefixed. e.g. key = '@-webkit-keyframes a'\n if (key[1] === '-') return key; // No need to prefix IE/Edge. Older browsers will ignore unsupported rules.\n // https://caniuse.com/#search=keyframes\n\n if (prefix.js === 'ms') return key;\n return \"@\" + prefix.css + \"keyframes\" + key.substr(10);\n}\n\n// https://caniuse.com/#search=appearance\n\nvar appearence = {\n noPrefill: ['appearance'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'appearance') return false;\n if (prefix.js === 'ms') return \"-webkit-\" + prop;\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=color-adjust\n\nvar colorAdjust = {\n noPrefill: ['color-adjust'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'color-adjust') return false;\n if (prefix.js === 'Webkit') return prefix.css + \"print-\" + prop;\n return prop;\n }\n};\n\nvar regExp = /[-\\s]+(.)?/g;\n/**\n * Replaces the letter with the capital letter\n *\n * @param {String} match\n * @param {String} c\n * @return {String}\n * @api private\n */\n\nfunction toUpper(match, c) {\n return c ? c.toUpperCase() : '';\n}\n/**\n * Convert dash separated strings to camel-cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\n\nfunction camelize(str) {\n return str.replace(regExp, toUpper);\n}\n\n/**\n * Convert dash separated strings to pascal cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction pascalize(str) {\n return camelize(\"-\" + str);\n}\n\n// but we can use a longhand property instead.\n// https://caniuse.com/#search=mask\n\nvar mask = {\n noPrefill: ['mask'],\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^mask/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var longhand = 'mask-image';\n\n if (camelize(longhand) in style) {\n return prop;\n }\n\n if (prefix.js + pascalize(longhand) in style) {\n return prefix.css + prop;\n }\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=text-orientation\n\nvar textOrientation = {\n noPrefill: ['text-orientation'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'text-orientation') return false;\n\n if (prefix.vendor === 'apple' && !prefix.isTouch) {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=transform\n\nvar transform = {\n noPrefill: ['transform'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transform') return false;\n\n if (options.transform) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=transition\n\nvar transition = {\n noPrefill: ['transition'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transition') return false;\n\n if (options.transition) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=writing-mode\n\nvar writingMode = {\n noPrefill: ['writing-mode'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'writing-mode') return false;\n\n if (prefix.js === 'Webkit' || prefix.js === 'ms') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=user-select\n\nvar userSelect = {\n noPrefill: ['user-select'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'user-select') return false;\n\n if (prefix.js === 'Moz' || prefix.js === 'ms' || prefix.vendor === 'apple') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=multicolumn\n// https://github.com/postcss/autoprefixer/issues/491\n// https://github.com/postcss/autoprefixer/issues/177\n\nvar breakPropsOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^break-/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var jsProp = \"WebkitColumn\" + pascalize(prop);\n return jsProp in style ? prefix.css + \"column-\" + prop : false;\n }\n\n if (prefix.js === 'Moz') {\n var _jsProp = \"page\" + pascalize(prop);\n\n return _jsProp in style ? \"page-\" + prop : false;\n }\n\n return false;\n }\n};\n\n// See https://github.com/postcss/autoprefixer/issues/324.\n\nvar inlineLogicalOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^(border|margin|padding)-inline/.test(prop)) return false;\n if (prefix.js === 'Moz') return prop;\n var newProp = prop.replace('-inline', '');\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\n// Camelization is required because we can't test using.\n// CSS syntax for e.g. in FF.\n\nvar unprefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n return camelize(prop) in style ? prop : false;\n }\n};\n\nvar prefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n var pascalized = pascalize(prop); // Return custom CSS variable without prefixing.\n\n if (prop[0] === '-') return prop; // Return already prefixed value without prefixing.\n\n if (prop[0] === '-' && prop[1] === '-') return prop;\n if (prefix.js + pascalized in style) return prefix.css + prop; // Try webkit fallback.\n\n if (prefix.js !== 'Webkit' && \"Webkit\" + pascalized in style) return \"-webkit-\" + prop;\n return false;\n }\n};\n\n// https://caniuse.com/#search=scroll-snap\n\nvar scrollSnap = {\n supportedProperty: function supportedProperty(prop) {\n if (prop.substring(0, 11) !== 'scroll-snap') return false;\n\n if (prefix.js === 'ms') {\n return \"\" + prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=overscroll-behavior\n\nvar overscrollBehavior = {\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'overscroll-behavior') return false;\n\n if (prefix.js === 'ms') {\n return prefix.css + \"scroll-chaining\";\n }\n\n return prop;\n }\n};\n\nvar propMap = {\n 'flex-grow': 'flex-positive',\n 'flex-shrink': 'flex-negative',\n 'flex-basis': 'flex-preferred-size',\n 'justify-content': 'flex-pack',\n order: 'flex-order',\n 'align-items': 'flex-align',\n 'align-content': 'flex-line-pack' // 'align-self' is handled by 'align-self' plugin.\n\n}; // Support old flex spec from 2012.\n\nvar flex2012 = {\n supportedProperty: function supportedProperty(prop, style) {\n var newProp = propMap[prop];\n if (!newProp) return false;\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\nvar propMap$1 = {\n flex: 'box-flex',\n 'flex-grow': 'box-flex',\n 'flex-direction': ['box-orient', 'box-direction'],\n order: 'box-ordinal-group',\n 'align-items': 'box-align',\n 'flex-flow': ['box-orient', 'box-direction'],\n 'justify-content': 'box-pack'\n};\nvar propKeys = Object.keys(propMap$1);\n\nvar prefixCss = function prefixCss(p) {\n return prefix.css + p;\n}; // Support old flex spec from 2009.\n\n\nvar flex2009 = {\n supportedProperty: function supportedProperty(prop, style, _ref) {\n var multiple = _ref.multiple;\n\n if (propKeys.indexOf(prop) > -1) {\n var newProp = propMap$1[prop];\n\n if (!Array.isArray(newProp)) {\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n\n if (!multiple) return false;\n\n for (var i = 0; i < newProp.length; i++) {\n if (!(prefix.js + pascalize(newProp[0]) in style)) {\n return false;\n }\n }\n\n return newProp.map(prefixCss);\n }\n\n return false;\n }\n};\n\n// plugins = [\n// ...plugins,\n// breakPropsOld,\n// inlineLogicalOld,\n// unprefixed,\n// prefixed,\n// scrollSnap,\n// flex2012,\n// flex2009\n// ]\n// Plugins without 'noPrefill' value, going last.\n// 'flex-*' plugins should be at the bottom.\n// 'flex2009' going after 'flex2012'.\n// 'prefixed' going after 'unprefixed'\n\nvar plugins = [appearence, colorAdjust, mask, textOrientation, transform, transition, writingMode, userSelect, breakPropsOld, inlineLogicalOld, unprefixed, prefixed, scrollSnap, overscrollBehavior, flex2012, flex2009];\nvar propertyDetectors = plugins.filter(function (p) {\n return p.supportedProperty;\n}).map(function (p) {\n return p.supportedProperty;\n});\nvar noPrefill = plugins.filter(function (p) {\n return p.noPrefill;\n}).reduce(function (a, p) {\n a.push.apply(a, _toConsumableArray(p.noPrefill));\n return a;\n}, []);\n\nvar el;\nvar cache = {};\n\nif (isInBrowser) {\n el = document.createElement('p'); // We test every property on vendor prefix requirement.\n // Once tested, result is cached. It gives us up to 70% perf boost.\n // http://jsperf.com/element-style-object-access-vs-plain-object\n //\n // Prefill cache with known css properties to reduce amount of\n // properties we need to feature test at runtime.\n // http://davidwalsh.name/vendor-prefix\n\n var computed = window.getComputedStyle(document.documentElement, '');\n\n for (var key$1 in computed) {\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(key$1)) cache[computed[key$1]] = computed[key$1];\n } // Properties that cannot be correctly detected using the\n // cache prefill method.\n\n\n noPrefill.forEach(function (x) {\n return delete cache[x];\n });\n}\n/**\n * Test if a property is supported, returns supported property with vendor\n * prefix if required. Returns `false` if not supported.\n *\n * @param {String} prop dash separated\n * @param {Object} [options]\n * @return {String|Boolean}\n * @api public\n */\n\n\nfunction supportedProperty(prop, options) {\n if (options === void 0) {\n options = {};\n }\n\n // For server-side rendering.\n if (!el) return prop; // Remove cache for benchmark tests or return property from the cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache[prop] != null) {\n return cache[prop];\n } // Check if 'transition' or 'transform' natively supported in browser.\n\n\n if (prop === 'transition' || prop === 'transform') {\n options[prop] = prop in el.style;\n } // Find a plugin for current prefix property.\n\n\n for (var i = 0; i < propertyDetectors.length; i++) {\n cache[prop] = propertyDetectors[i](prop, el.style, options); // Break loop, if value found.\n\n if (cache[prop]) break;\n } // Reset styles for current property.\n // Firefox can even throw an error for invalid properties, e.g., \"0\".\n\n\n try {\n el.style[prop] = '';\n } catch (err) {\n return false;\n }\n\n return cache[prop];\n}\n\nvar cache$1 = {};\nvar transitionProperties = {\n transition: 1,\n 'transition-property': 1,\n '-webkit-transition': 1,\n '-webkit-transition-property': 1\n};\nvar transPropsRegExp = /(^\\s*[\\w-]+)|, (\\s*[\\w-]+)(?![^()]*\\))/g;\nvar el$1;\n/**\n * Returns prefixed value transition/transform if needed.\n *\n * @param {String} match\n * @param {String} p1\n * @param {String} p2\n * @return {String}\n * @api private\n */\n\nfunction prefixTransitionCallback(match, p1, p2) {\n if (p1 === 'var') return 'var';\n if (p1 === 'all') return 'all';\n if (p2 === 'all') return ', all';\n var prefixedValue = p1 ? supportedProperty(p1) : \", \" + supportedProperty(p2);\n if (!prefixedValue) return p1 || p2;\n return prefixedValue;\n}\n\nif (isInBrowser) el$1 = document.createElement('p');\n/**\n * Returns prefixed value if needed. Returns `false` if value is not supported.\n *\n * @param {String} property\n * @param {String} value\n * @return {String|Boolean}\n * @api public\n */\n\nfunction supportedValue(property, value) {\n // For server-side rendering.\n var prefixedValue = value;\n if (!el$1 || property === 'content') return value; // It is a string or a number as a string like '1'.\n // We want only prefixable values here.\n // eslint-disable-next-line no-restricted-globals\n\n if (typeof prefixedValue !== 'string' || !isNaN(parseInt(prefixedValue, 10))) {\n return prefixedValue;\n } // Create cache key for current value.\n\n\n var cacheKey = property + prefixedValue; // Remove cache for benchmark tests or return value from cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache$1[cacheKey] != null) {\n return cache$1[cacheKey];\n } // IE can even throw an error in some cases, for e.g. style.content = 'bar'.\n\n\n try {\n // Test value as it is.\n el$1.style[property] = prefixedValue;\n } catch (err) {\n // Return false if value not supported.\n cache$1[cacheKey] = false;\n return false;\n } // If 'transition' or 'transition-property' property.\n\n\n if (transitionProperties[property]) {\n prefixedValue = prefixedValue.replace(transPropsRegExp, prefixTransitionCallback);\n } else if (el$1.style[property] === '') {\n // Value with a vendor prefix.\n prefixedValue = prefix.css + prefixedValue; // Hardcode test to convert \"flex\" to \"-ms-flexbox\" for IE10.\n\n if (prefixedValue === '-ms-flex') el$1.style[property] = '-ms-flexbox'; // Test prefixed value.\n\n el$1.style[property] = prefixedValue; // Return false if value not supported.\n\n if (el$1.style[property] === '') {\n cache$1[cacheKey] = false;\n return false;\n }\n } // Reset styles for current property.\n\n\n el$1.style[property] = ''; // Write current value to cache.\n\n cache$1[cacheKey] = prefixedValue;\n return cache$1[cacheKey];\n}\n\nexport { prefix, supportedKeyframes, supportedProperty, supportedValue };\n","import { supportedKeyframes, supportedValue, supportedProperty } from 'css-vendor';\nimport { toCssValue } from 'jss';\n\n/**\n * Add vendor prefix to a property name when needed.\n *\n * @api public\n */\n\nfunction jssVendorPrefixer() {\n function onProcessRule(rule) {\n if (rule.type === 'keyframes') {\n var atRule = rule;\n atRule.at = supportedKeyframes(atRule.at);\n }\n }\n\n function prefixStyle(style) {\n for (var prop in style) {\n var value = style[prop];\n\n if (prop === 'fallbacks' && Array.isArray(value)) {\n style[prop] = value.map(prefixStyle);\n continue;\n }\n\n var changeProp = false;\n var supportedProp = supportedProperty(prop);\n if (supportedProp && supportedProp !== prop) changeProp = true;\n var changeValue = false;\n var supportedValue$$1 = supportedValue(supportedProp, toCssValue(value));\n if (supportedValue$$1 && supportedValue$$1 !== value) changeValue = true;\n\n if (changeProp || changeValue) {\n if (changeProp) delete style[prop];\n style[supportedProp || prop] = supportedValue$$1 || value;\n }\n }\n\n return style;\n }\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n return prefixStyle(style);\n }\n\n function onChangeValue(value, prop) {\n return supportedValue(prop, toCssValue(value)) || value;\n }\n\n return {\n onProcessRule: onProcessRule,\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default jssVendorPrefixer;\n","/**\n * Sort props by length.\n */\nfunction jssPropsSort() {\n var sort = function sort(prop0, prop1) {\n if (prop0.length === prop1.length) {\n return prop0 > prop1 ? 1 : -1;\n }\n\n return prop0.length - prop1.length;\n };\n\n return {\n onProcessStyle: function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n var newStyle = {};\n var props = Object.keys(style).sort(sort);\n\n for (var i = 0; i < props.length; i++) {\n newStyle[props[i]] = style[props[i]];\n }\n\n return newStyle;\n }\n };\n}\n\nexport default jssPropsSort;\n","import functions from 'jss-plugin-rule-value-function';\nimport global from 'jss-plugin-global';\nimport nested from 'jss-plugin-nested';\nimport camelCase from 'jss-plugin-camel-case';\nimport defaultUnit from 'jss-plugin-default-unit';\nimport vendorPrefixer from 'jss-plugin-vendor-prefixer';\nimport propsSort from 'jss-plugin-props-sort'; // Subset of jss-preset-default with only the plugins the Material-UI components are using.\n\nexport default function jssPreset() {\n return {\n plugins: [functions(), global(), nested(), camelCase(), defaultUnit(), // Disable the vendor prefixer server-side, it does nothing.\n // This way, we can get a performance boost.\n // In the documentation, we are using `autoprefixer` to solve this problem.\n typeof window === 'undefined' ? null : vendorPrefixer(), propsSort()]\n };\n}","export default {\n disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n var node = ReactDOM.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n // allows for nested Transitions\n return React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, children(status, childProps));\n }\n\n var child = React.Children.only(children);\n return (// allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, React.cloneElement(child, childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the\n * `<Transition>` component mounts. If you want to transition on the first\n * mount set `appear` to `true`, and the component will transition in as soon\n * as the `<Transition>` mounts.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\nexport default Transition;","/** @license React v16.13.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.13.0\";\n","/** @license React v16.13.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;pa.hasOwnProperty(\"ReactCurrentDispatcher\")||(pa.ReactCurrentDispatcher={current:null});pa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(pa.ReactCurrentBatchConfig={suspense:null});\nvar qa=/^(.*)[\\\\\\/]/,v=\"function\"===typeof Symbol&&Symbol.for,ra=v?Symbol.for(\"react.element\"):60103,sa=v?Symbol.for(\"react.portal\"):60106,ta=v?Symbol.for(\"react.fragment\"):60107,ua=v?Symbol.for(\"react.strict_mode\"):60108,va=v?Symbol.for(\"react.profiler\"):60114,wa=v?Symbol.for(\"react.provider\"):60109,xa=v?Symbol.for(\"react.context\"):60110,ya=v?Symbol.for(\"react.concurrent_mode\"):60111,za=v?Symbol.for(\"react.forward_ref\"):60112,Aa=v?Symbol.for(\"react.suspense\"):60113,Ba=v?Symbol.for(\"react.suspense_list\"):\n60120,Ca=v?Symbol.for(\"react.memo\"):60115,Da=v?Symbol.for(\"react.lazy\"):60116,Ea=v?Symbol.for(\"react.block\"):60121,Fa=\"function\"===typeof Symbol&&Symbol.iterator;function Ga(a){if(null===a||\"object\"!==typeof a)return null;a=Fa&&a[Fa]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function Ha(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction Ia(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ta:return\"Fragment\";case sa:return\"Portal\";case va:return\"Profiler\";case ua:return\"StrictMode\";case Aa:return\"Suspense\";case Ba:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case xa:return\"Context.Consumer\";case wa:return\"Context.Provider\";case za:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case Ca:return Ia(a.type);case Ea:return Ia(a.render);case Da:if(a=1===a._status?a._result:null)return Ia(a)}return null}function Ja(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=Ia(a.type);c=null;d&&(c=Ia(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(qa,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}var Ka=null,La={};\nfunction Ma(){if(Ka)for(var a in La){var b=La[a],c=Ka.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!Na[c]){if(!b.extractEvents)throw Error(u(97,a));Na[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(Oa.hasOwnProperty(h))throw Error(u(99,h));Oa[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&Pa(k[e],g,h);e=!0}else f.registrationName?(Pa(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction Pa(a,b,c){if(Qa[a])throw Error(u(100,a));Qa[a]=b;Ra[a]=b.eventTypes[c].dependencies}var Na=[],Oa={},Qa={},Ra={};function Sa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!La.hasOwnProperty(c)||La[c]!==d){if(La[c])throw Error(u(102,c));La[c]=d;b=!0}}b&&Ma()}var Ta=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),Ua=null,Va=null,Wa=null;\nfunction Xa(a){if(a=ma(a)){if(\"function\"!==typeof Ua)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),Ua(a.stateNode,a.type,b))}}function Ya(a){Va?Wa?Wa.push(a):Wa=[a]:Va=a}function Za(){if(Va){var a=Va,b=Wa;Wa=Va=null;Xa(a);if(b)for(a=0;a<b.length;a++)Xa(b[a])}}function $a(a,b){return a(b)}function ab(a,b,c,d,e){return a(b,c,d,e)}function bb(){}var cb=$a,db=!1,eb=!1;function fb(){if(null!==Va||null!==Wa)bb(),Za()}\nfunction gb(a,b,c){if(eb)return a(b,c);eb=!0;try{return cb(a,b,c)}finally{eb=!1,fb()}}var hb=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ib=Object.prototype.hasOwnProperty,jb={},kb={};\nfunction lb(a){if(ib.call(kb,a))return!0;if(ib.call(jb,a))return!1;if(hb.test(a))return kb[a]=!0;jb[a]=!0;return!1}function mb(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction nb(a,b,c,d){if(null===b||\"undefined\"===typeof b||mb(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function C(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var E={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){E[a]=new C(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];E[b]=new C(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){E[a]=new C(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){E[a]=new C(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){E[a]=new C(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){E[a]=new C(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){E[a]=new C(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){E[a]=new C(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){E[a]=new C(a,5,!1,a.toLowerCase(),null,!1)});var ob=/[\\-:]([a-z])/g;function pb(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ob,\npb);E[b]=new C(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ob,pb);E[b]=new C(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ob,pb);E[b]=new C(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){E[a]=new C(a,1,!1,a.toLowerCase(),null,!1)});\nE.xlinkHref=new C(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){E[a]=new C(a,1,!1,a.toLowerCase(),null,!0)});\nfunction qb(a,b,c,d){var e=E.hasOwnProperty(b)?E[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(nb(b,c,e,d)&&(c=null),d||null===e?lb(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&qb(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nTa&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!Ta)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<Na.length;k++){var l=Na[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){db||bb();var e=id,f=db;db=!0;try{ab(e,a,b,c,d)}finally{(db=f)||fb()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{gb(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{gb(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=Ra[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=Ta&&\"CompositionEvent\"in window,ke=null;Ta&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=Ta&&\"TextEvent\"in window&&!ke,me=Ta&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Ya(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;Ta&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),db)mc(a);else{db=!0;try{$a(Ce,a)}finally{db=!1,fb()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=Ta&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=Ra.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(Ka)throw Error(u(101));Ka=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));Ma();var xf=Nc;la=Qd;ma=xf;na=Pd;Sa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,Ia(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=pa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case ra:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case sa:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nGa(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case ra:return c.key===e?c.type===ta?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case sa:return c.key===e?l(a,b,c,d):null}if(Og(c)||Ga(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case ra:return a=a.get(null===d.key?c:d.key)||null,d.type===ta?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case sa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||Ga(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=Ga(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ta&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case ra:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ta){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ta?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case sa:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(Ga(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=pa.ReactCurrentDispatcher,kh=pa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=pa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(Qa.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(Qa.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):Qa.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(Qa.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&qb(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:Ja(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=Ja(c));null!==c&&Ia(c.type);b=b.value;null!==a&&1===a.tag&&Ia(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):qb(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=pa.ReactCurrentDispatcher,dj=pa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):g.memoizedState=null}var m=0!==\n(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;break a}h=void 0;g=b;var A=e.pingCache;\nnull===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((Ia(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+Ja(g))}S!==jj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=\nh;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}function Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}\nfunction Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;Ha(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===za)return 11;if(a===Ca)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ta:return Wg(c.children,e,f,b);case ya:g=8;e|=7;break;case ua:g=8;e|=1;break;case va:return a=Sh(12,c,b,e|8),a.elementType=va,a.type=va,a.expirationTime=f,a;case Aa:return a=Sh(13,c,b,e),a.type=Aa,a.elementType=Aa,a.expirationTime=f,a;case Ba:return a=Sh(19,c,b,e),a.elementType=Ba,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case wa:g=\n10;break a;case xa:g=9;break a;case za:g=11;break a;case Ca:g=14;break a;case Da:g=16;d=null;break a;case Ea:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:sa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nUa=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};$a=Mj;\nab=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};bb=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};cb=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,Sa,Oa,Xd,function(a){jc(a,Wd)},Ya,Za,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:pa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.13.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.13.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.19.0\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Slide = require('@material-ui/core/Slide');\n\nvar _Slide2 = _interopRequireDefault(_Slide);\n\nvar _SnackbarContext = require('./SnackbarContext');\n\nvar _SnackbarContext2 = _interopRequireDefault(_SnackbarContext);\n\nvar _constants = require('./utils/constants');\n\nvar _SnackbarItem = require('./SnackbarItem');\n\nvar _SnackbarItem2 = _interopRequireDefault(_SnackbarItem);\n\nvar _SnackbarContainer = require('./SnackbarContainer');\n\nvar _SnackbarContainer2 = _interopRequireDefault(_SnackbarContainer);\n\nvar _warning = require('./utils/warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Omit SnackbarContainer class keys that are not needed for SnakcbarItem\n */\nvar getClasses = function getClasses(classes) {\n return Object.keys(classes).filter(function (key) {\n return !_constants.allClasses.container[key];\n }).reduce(function (obj, key) {\n return _extends({}, obj, _defineProperty({}, key, classes[key]));\n }, {});\n};\n\nvar SnackbarProvider = function (_Component) {\n _inherits(SnackbarProvider, _Component);\n\n function SnackbarProvider(props) {\n _classCallCheck(this, SnackbarProvider);\n\n var _this = _possibleConstructorReturn(this, (SnackbarProvider.__proto__ || Object.getPrototypeOf(SnackbarProvider)).call(this, props));\n\n _this.enqueueSnackbar = function (message) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var key = _ref.key,\n preventDuplicate = _ref.preventDuplicate,\n options = _objectWithoutProperties(_ref, ['key', 'preventDuplicate']);\n\n var userSpecifiedKey = key || key === 0;\n var id = userSpecifiedKey ? key : new Date().getTime() + Math.random();\n var snack = _extends({\n key: id\n }, options, {\n message: message,\n open: true,\n entered: false,\n requestClose: false,\n anchorOrigin: options.anchorOrigin || _this.props.anchorOrigin\n });\n\n if (options.persist) {\n snack.autoHideDuration = undefined;\n }\n\n _this.setState(function (state) {\n if (preventDuplicate === undefined && _this.props.preventDuplicate || preventDuplicate) {\n var compareFunction = function compareFunction(item) {\n return userSpecifiedKey ? item.key === key : item.message === message;\n };\n\n var inQueue = state.queue.findIndex(compareFunction) > -1;\n var inView = state.snacks.findIndex(compareFunction) > -1;\n if (inQueue || inView) {\n return state;\n }\n }\n\n return _this.handleDisplaySnack(_extends({}, state, {\n queue: [].concat(_toConsumableArray(state.queue), [snack])\n }));\n });\n\n return id;\n };\n\n _this.handleDisplaySnack = function (state) {\n var snacks = state.snacks;\n\n if (snacks.length >= _this.props.maxSnack) {\n return _this.handleDismissOldest(state);\n }\n return _this.processQueue(state);\n };\n\n _this.processQueue = function (state) {\n var queue = state.queue,\n snacks = state.snacks;\n\n if (queue.length > 0) {\n return _extends({}, state, {\n snacks: [].concat(_toConsumableArray(snacks), [queue[0]]),\n queue: queue.slice(1, queue.length)\n });\n }\n return state;\n };\n\n _this.handleDismissOldest = function (state) {\n if (state.snacks.some(function (item) {\n return !item.open || item.requestClose;\n })) {\n return state;\n }\n\n var popped = false;\n var ignore = false;\n\n var persistentCount = state.snacks.reduce(function (acc, current) {\n return acc + (current.open && current.persist ? 1 : 0);\n }, 0);\n\n if (persistentCount === _this.props.maxSnack) {\n (0, _warning2.default)(_constants.MESSAGES.NO_PERSIST_ALL);\n ignore = true;\n }\n\n var snacks = state.snacks.map(function (item) {\n if (!popped && (!item.persist || ignore)) {\n popped = true;\n\n if (!item.entered) {\n return _extends({}, item, {\n requestClose: true\n });\n }\n\n if (item.onClose) item.onClose(null, _constants.REASONS.MAXSNACK, item.key);\n if (_this.props.onClose) _this.props.onClose(null, _constants.REASONS.MAXSNACK, item.key);\n\n return _extends({}, item, {\n open: false\n });\n }\n\n return _extends({}, item);\n });\n\n return _extends({}, state, { snacks: snacks });\n };\n\n _this.handleEnteredSnack = function (node, isAppearing, key) {\n if (_this.props.onEntered) {\n _this.props.onEntered(node, isAppearing, key);\n }\n\n _this.setState(function (_ref2) {\n var snacks = _ref2.snacks;\n return {\n snacks: snacks.map(function (item) {\n return item.key === key ? _extends({}, item, { entered: true }) : _extends({}, item);\n })\n };\n });\n };\n\n _this.handleCloseSnack = function (event, reason, key) {\n if (_this.props.onClose) {\n _this.props.onClose(event, reason, key);\n }\n\n if (reason === _constants.REASONS.CLICKAWAY) return;\n var shouldCloseAll = key === undefined;\n\n _this.setState(function (_ref3) {\n var snacks = _ref3.snacks,\n queue = _ref3.queue;\n return {\n snacks: snacks.map(function (item) {\n if (!shouldCloseAll && item.key !== key) {\n return _extends({}, item);\n }\n\n return item.entered ? _extends({}, item, { open: false }) : _extends({}, item, { requestClose: true });\n }),\n queue: queue.filter(function (item) {\n return item.key !== key;\n }) // eslint-disable-line react/no-unused-state\n };\n });\n };\n\n _this.closeSnackbar = function (key) {\n _this.handleCloseSnack(null, null, key);\n };\n\n _this.handleExitedSnack = function (event, key) {\n _this.setState(function (state) {\n var newState = _this.processQueue(_extends({}, state, {\n snacks: state.snacks.filter(function (item) {\n return item.key !== key;\n })\n }));\n\n if (newState.queue.length === 0) {\n return newState;\n }\n\n return _this.handleDismissOldest(newState);\n });\n\n if (_this.props.onExited) {\n _this.props.onExited(event, key);\n }\n };\n\n _this.state = {\n snacks: [],\n queue: [], // eslint-disable-line react/no-unused-state\n contextValue: {\n enqueueSnackbar: _this.enqueueSnackbar,\n closeSnackbar: _this.closeSnackbar\n }\n };\n return _this;\n }\n\n /**\n * Adds a new snackbar to the queue to be presented.\n * @param {string} message - text of the notification\n * @param {object} options - additional options for the snackbar we want to enqueue.\n * We can pass Material-ui Snackbar props for individual customisation.\n * @param {string} options.key\n * @param {string} options.variant - type of the snackbar. default value is 'default'.\n * can be: (default, success, error, warning, info)\n * @param {bool} options.persist\n * @param {bool} options.preventDuplicate\n * @returns generated or user defined key referencing the new snackbar or null\n */\n\n\n /**\n * Reducer: Display snack if there's space for it. Otherwise, immediately\n * begin dismissing the oldest message to start showing the new one.\n */\n\n\n /**\n * Reducer: Display items (notifications) in the queue if there's space for them.\n */\n\n\n /**\n * Reducer: Hide oldest snackbar on the screen because there exists a new one which we have to display.\n * (ignoring the one with 'persist' flag. i.e. explicitly told by user not to get dismissed).\n *\n * Note 1: If there is already a message leaving the screen, no new messages are dismissed.\n * Note 2: If the oldest message has not yet entered the screen, only a request to close the\n * snackbar is made. Once it entered the screen, it will be immediately dismissed.\n */\n\n\n /**\n * Set the entered state of the snackbar with the given key.\n */\n\n\n /**\n * Hide a snackbar after its timeout.\n * @param {object} event - The event source of the callback\n * @param {string} reason - can be timeout, clickaway\n * @param {number} key - id of the snackbar we want to hide\n */\n\n\n /**\n * Close snackbar with the given key\n * @param {number} key - id of the snackbar we want to hide\n */\n\n\n /**\n * When we set open attribute of a snackbar to false (i.e. after we hide a snackbar),\n * it leaves the screen and immediately after leaving animation is done, this method\n * gets called. We remove the hidden snackbar from state and then display notifications\n * waiting in the queue (if any). If after this process the queue is not empty, the\n * oldest message is dismissed.\n * @param {number} key - id of the snackbar we want to remove\n * @param {object} event - The event source of the callback\n */\n\n\n _createClass(SnackbarProvider, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n classes = _props.classes,\n children = _props.children,\n maxSnack = _props.maxSnack,\n dense = _props.dense,\n props = _objectWithoutProperties(_props, ['classes', 'children', 'maxSnack', 'dense']);\n\n var contextValue = this.state.contextValue;\n\n\n var categ = this.state.snacks.reduce(function (acc, current) {\n var category = (0, _constants.originKeyExtractor)(current.anchorOrigin);\n var existingOfCategory = acc[category] || [];\n return _extends({}, acc, _defineProperty({}, category, [].concat(_toConsumableArray(existingOfCategory), [current])));\n }, {});\n\n var iconVariant = Object.assign(_extends({}, _constants.defaultIconVariant), _extends({}, this.props.iconVariant));\n\n return _react2.default.createElement(\n _SnackbarContext2.default.Provider,\n { value: contextValue },\n children,\n Object.entries(categ).map(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n origin = _ref5[0],\n snacks = _ref5[1];\n\n return _react2.default.createElement(\n _SnackbarContainer2.default,\n {\n key: origin,\n dense: dense,\n anchorOrigin: snacks[0].anchorOrigin,\n className: classes['containerAnchorOrigin' + origin]\n },\n snacks.map(function (snack) {\n return _react2.default.createElement(_SnackbarItem2.default, _extends({}, props, {\n key: snack.key,\n dense: dense,\n snack: snack,\n iconVariant: iconVariant,\n classes: getClasses(classes),\n onClose: _this2.handleCloseSnack,\n onExited: _this2.handleExitedSnack,\n onEntered: _this2.handleEnteredSnack\n }));\n })\n );\n })\n );\n }\n }]);\n\n return SnackbarProvider;\n}(_react.Component);\n\nprocess.env.NODE_ENV !== \"production\" ? SnackbarProvider.propTypes = {\n /**\n * Most of the time, this is your App. every component from this point onward\n * will be able to show snackbars.\n */\n children: _propTypes2.default.node.isRequired,\n /**\n * Override or extend the styles applied to the container component or Snackbars.\n */\n classes: _propTypes2.default.object,\n /**\n * Maximum snackbars that can be stacked on top of one another.\n */\n maxSnack: _propTypes2.default.number,\n /**\n * Denser margins for snackbars. Recommended to be used on mobile devices\n */\n dense: _propTypes2.default.bool,\n /**\n * Ignores displaying multiple snackbars with the same `message`\n */\n preventDuplicate: _propTypes2.default.bool,\n /**\n * Hides iconVariant if set to `true`.\n */\n hideIconVariant: _propTypes2.default.bool,\n /**\n * Little icon that is displayed at left corner of a snackbar.\n */\n iconVariant: _propTypes2.default.shape({\n /**\n * Icon displayed when variant of a snackbar is set to `success`.\n */\n success: _propTypes2.default.any,\n /**\n * Icon displayed when variant of a snackbar is set to `warning`.\n */\n warning: _propTypes2.default.any,\n /**\n * Icon displayed when variant of a snackbar is set to `error`.\n */\n error: _propTypes2.default.any,\n /**\n * Icon displayed when variant of a snackbar is set to `info`.\n */\n info: _propTypes2.default.any\n }),\n /**\n * Callback used for getting action(s). actions are mostly buttons displayed in Snackbar.\n * @param {string|number} key key of a snackbar\n */\n action: _propTypes2.default.oneOfType([_propTypes2.default.func, _propTypes2.default.object]),\n /**\n * Replace the snackbar. Callback used for displaying entirely customized snackbar.\n * @param {string|number} key key of a snackbar\n */\n content: _propTypes2.default.oneOfType([_propTypes2.default.func, _propTypes2.default.object]),\n /**\n * The anchor of the `Snackbar`.\n */\n anchorOrigin: _propTypes2.default.shape({\n horizontal: _propTypes2.default.oneOf(['left', 'center', 'right']).isRequired,\n vertical: _propTypes2.default.oneOf(['top', 'bottom']).isRequired\n }),\n /**\n * The number of milliseconds to wait before automatically calling the\n * `onClose` function. `onClose` should then set the state of the `open`\n * prop to hide the Snackbar. This behavior is disabled by default with\n * the `null` value.\n */\n autoHideDuration: _propTypes2.default.number,\n /**\n * If `true`, the `autoHideDuration` timer will expire even if the window is not focused.\n */\n disableWindowBlurListener: _propTypes2.default.bool,\n /**\n * Callback fired when the component requests to be closed.\n * The `reason` parameter can optionally be used to control the response to `onClose`,\n * for example ignoring `clickaway`.\n *\n * @param {object} event The event source of the callback\n * @param {string} reason Can be:`\"timeout\"` (`autoHideDuration` expired) or: `\"clickaway\"`\n * or: `\"maxsnack\"` (snackbar is closed because `maxSnack` has reached.)\n * @param {string|number} key key of a Snackbar\n */\n onClose: _propTypes2.default.func,\n /**\n * Callback fired before the transition is entering.\n */\n onEnter: _propTypes2.default.func,\n /**\n * Callback fired when the transition has entered.\n */\n onEntered: _propTypes2.default.func,\n /**\n * Callback fired when the transition is entering.\n */\n onEntering: _propTypes2.default.func,\n /**\n * Callback fired before the transition is exiting.\n */\n onExit: _propTypes2.default.func,\n /**\n * Callback fired when the transition has exited.\n */\n onExited: _propTypes2.default.func,\n /**\n * Callback fired when the transition is exiting.\n */\n onExiting: _propTypes2.default.func,\n /**\n * The number of milliseconds to wait before dismissing after user interaction.\n * If `autoHideDuration` property isn't specified, it does nothing.\n * If `autoHideDuration` property is specified but `resumeHideDuration` isn't,\n * we default to `autoHideDuration / 2` ms.\n */\n resumeHideDuration: _propTypes2.default.number,\n /**\n * The component used for the transition.\n */\n TransitionComponent: _propTypes2.default.elementType,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.shape({ enter: _propTypes2.default.number, exit: _propTypes2.default.number })])\n} : void 0;\n\nSnackbarProvider.defaultProps = {\n maxSnack: 3,\n dense: false,\n preventDuplicate: false,\n hideIconVariant: false,\n classes: {},\n iconVariant: {},\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left'\n },\n autoHideDuration: 5000,\n TransitionComponent: _Slide2.default\n};\n\nexports.default = SnackbarProvider;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v16.11.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.suspense_list\"):\n60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.fundamental\"):60117,w=b?Symbol.for(\"react.responder\"):60118,x=b?Symbol.for(\"react.scope\"):60119;function y(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case t:case r:case d:return u}}}function z(a){return y(a)===m}\nexports.typeOf=y;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===v||a.$$typeof===w||a.$$typeof===x)};exports.isAsyncMode=function(a){return z(a)||y(a)===l};exports.isConcurrentMode=z;exports.isContextConsumer=function(a){return y(a)===k};exports.isContextProvider=function(a){return y(a)===h};\nexports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return y(a)===n};exports.isFragment=function(a){return y(a)===e};exports.isLazy=function(a){return y(a)===t};exports.isMemo=function(a){return y(a)===r};exports.isPortal=function(a){return y(a)===d};exports.isProfiler=function(a){return y(a)===g};exports.isStrictMode=function(a){return y(a)===f};exports.isSuspense=function(a){return y(a)===p};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _SnackbarItem = require('./SnackbarItem');\n\nvar _SnackbarItem2 = _interopRequireDefault(_SnackbarItem);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _SnackbarItem2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _styles = require('@material-ui/core/styles');\n\nvar _Snackbar = require('@material-ui/core/Snackbar');\n\nvar _Snackbar2 = _interopRequireDefault(_Snackbar);\n\nvar _Collapse = require('@material-ui/core/Collapse');\n\nvar _Collapse2 = _interopRequireDefault(_Collapse);\n\nvar _SnackbarContent = require('@material-ui/core/SnackbarContent');\n\nvar _SnackbarContent2 = _interopRequireDefault(_SnackbarContent);\n\nvar _SnackbarItem = require('./SnackbarItem.util');\n\nvar _SnackbarItem2 = require('./SnackbarItem.styles');\n\nvar _SnackbarItem3 = _interopRequireDefault(_SnackbarItem2);\n\nvar _constants = require('../utils/constants');\n\nvar _warning = require('../utils/warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SnackbarItem = function (_Component) {\n _inherits(SnackbarItem, _Component);\n\n function SnackbarItem() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, SnackbarItem);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = SnackbarItem.__proto__ || Object.getPrototypeOf(SnackbarItem)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n collapsed: true\n }, _this.componentWillUnmount = function () {\n clearTimeout(_this.timeout);\n }, _this.handleClose = function (key) {\n return function (event, reason) {\n var snack = _this.props.snack;\n\n if (snack.onClose) {\n snack.onClose(event, reason, key);\n }\n _this.props.onClose(event, reason, key);\n };\n }, _this.handleEntered = function (key) {\n return function (node, isAppearing) {\n var snack = _this.props.snack;\n\n if (snack.onEntered) {\n snack.onEntered(node, isAppearing, key);\n }\n _this.props.onEntered(node, isAppearing, key);\n\n if (snack.requestClose) {\n _this.handleClose(key)(null, _constants.REASONS.MAXSNACK);\n }\n };\n }, _this.handleExited = function (key) {\n return function (event) {\n var _this$props = _this.props,\n onExited = _this$props.onExited,\n singleOnExited = _this$props.snack.onExited;\n\n if (singleOnExited) singleOnExited(event, key);\n onExited(event, key);\n };\n }, _this.handleExitedScreen = function () {\n _this.timeout = setTimeout(function () {\n _this.setState(function (_ref2) {\n var collapsed = _ref2.collapsed;\n return { collapsed: !collapsed };\n });\n }, 125);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(SnackbarItem, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n classes = _props.classes,\n action = _props.action,\n content = _props.content,\n _props$ContentProps = _props.ContentProps,\n ContentProps = _props$ContentProps === undefined ? {} : _props$ContentProps,\n hideIconVariant = _props.hideIconVariant,\n preventDuplicate = _props.preventDuplicate,\n iconVariant = _props.iconVariant,\n snack = _props.snack,\n dense = _props.dense,\n other = _objectWithoutProperties(_props, ['classes', 'action', 'content', 'ContentProps', 'hideIconVariant', 'preventDuplicate', 'iconVariant', 'snack', 'dense']);\n\n var contentAction = ContentProps.action,\n className = ContentProps.className,\n otherContentProps = _objectWithoutProperties(ContentProps, ['action', 'className']);\n\n var key = snack.key,\n persist = snack.persist,\n children = snack.children,\n singleContent = snack.content,\n _snack$variant = snack.variant,\n variant = _snack$variant === undefined ? 'default' : _snack$variant,\n singleAction = snack.action,\n _snack$ContentProps = snack.ContentProps,\n singleContentProps = _snack$ContentProps === undefined ? {} : _snack$ContentProps,\n anchorOrigin = snack.anchorOrigin,\n requestClose = snack.requestClose,\n entered = snack.entered,\n singleSnackProps = _objectWithoutProperties(snack, ['key', 'persist', 'children', 'content', 'variant', 'action', 'ContentProps', 'anchorOrigin', 'requestClose', 'entered']);\n\n var icon = iconVariant[variant];\n\n var contentProps = _extends({}, otherContentProps, singleContentProps, {\n action: singleAction || singleContentProps.action || contentAction || action\n });\n\n var ariaDescribedby = contentProps['aria-describedby'] || 'client-snackbar';\n\n var finalAction = contentProps.action;\n if (typeof finalAction === 'function') {\n finalAction = contentProps.action(key);\n }\n\n var snackContent = void 0;\n if (snack.children) {\n snackContent = snack.children;\n (0, _warning2.default)(_constants.MESSAGES.NO_CHILDREN_OPTION);\n }\n if (singleContent) {\n snackContent = singleContent;\n }\n snackContent = snackContent || content;\n if (snackContent && typeof snackContent === 'function') {\n snackContent = snackContent(key);\n }\n\n return _react2.default.createElement(\n _Collapse2.default,\n {\n unmountOnExit: true,\n timeout: 175,\n 'in': this.state.collapsed,\n classes: (0, _SnackbarItem.getCollapseClasses)(classes, dense),\n onExited: this.handleExited(key)\n },\n _react2.default.createElement(\n _Snackbar2.default,\n _extends({\n TransitionProps: {\n direction: (0, _SnackbarItem.getTransitionDirection)(anchorOrigin),\n onExited: this.handleExitedScreen\n }\n }, other, singleSnackProps, {\n anchorOrigin: anchorOrigin,\n open: snack.open,\n classes: (0, _SnackbarItem.getSnackbarClasses)(classes),\n onClose: this.handleClose(key),\n onEntered: this.handleEntered(key)\n }),\n snackContent || _react2.default.createElement(_SnackbarContent2.default, _extends({\n className: (0, _classnames2.default)(classes.base, classes['variant' + (0, _constants.capitalise)(variant)], !hideIconVariant && icon ? classes.lessPadding : null, className)\n }, contentProps, {\n 'aria-describedby': ariaDescribedby,\n message: _react2.default.createElement(\n 'span',\n { id: ariaDescribedby, className: classes.message },\n !hideIconVariant ? icon : null,\n snack.message\n ),\n action: finalAction\n }))\n )\n );\n }\n }]);\n\n return SnackbarItem;\n}(_react.Component);\n\nprocess.env.NODE_ENV !== \"production\" ? SnackbarItem.propTypes = {\n classes: _propTypes2.default.object.isRequired,\n snack: _propTypes2.default.shape({\n message: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.node]).isRequired,\n variant: _propTypes2.default.oneOf(['default', 'error', 'success', 'warning', 'info']),\n key: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]).isRequired,\n open: _propTypes2.default.bool.isRequired,\n requestClose: _propTypes2.default.bool.isRequired,\n entered: _propTypes2.default.bool.isRequired\n }).isRequired,\n iconVariant: _propTypes2.default.shape({\n success: _propTypes2.default.any.isRequired,\n warning: _propTypes2.default.any.isRequired,\n error: _propTypes2.default.any.isRequired,\n info: _propTypes2.default.any.isRequired\n }).isRequired,\n hideIconVariant: _propTypes2.default.bool.isRequired,\n preventDuplicate: _propTypes2.default.bool.isRequired,\n dense: _propTypes2.default.bool.isRequired,\n onClose: _propTypes2.default.func.isRequired,\n onExited: _propTypes2.default.func.isRequired,\n onEntered: _propTypes2.default.func.isRequired\n} : void 0;\n\nexports.default = (0, _styles.withStyles)(_SnackbarItem3.default)(SnackbarItem);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getCollapseClasses = exports.getSnackbarClasses = exports.getTransitionDirection = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _constants = require('../utils/constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DIRECTION = {\n right: 'left',\n left: 'right',\n bottom: 'up',\n top: 'down'\n};\n\nvar getTransitionDirection = exports.getTransitionDirection = function getTransitionDirection(anchorOrigin) {\n if (anchorOrigin.horizontal !== 'center') {\n return DIRECTION[anchorOrigin.horizontal];\n }\n return DIRECTION[anchorOrigin.vertical];\n};\n\n/**\n * Filter classes object and return keys that are allowed in material-ui snackbar classes prop\n */\nvar getSnackbarClasses = exports.getSnackbarClasses = function getSnackbarClasses(classes) {\n var snackbarMuiClasses = Object.keys(classes).filter(function (key) {\n return _constants.allClasses.mui[key] !== undefined;\n }).reduce(function (obj, key) {\n return _extends({}, obj, _defineProperty({}, key, classes[key]));\n }, {});\n\n return _extends({}, snackbarMuiClasses, {\n root: (0, _classnames2.default)(snackbarMuiClasses.root, classes.wrappedRoot)\n });\n};\n\nvar getCollapseClasses = exports.getCollapseClasses = function getCollapseClasses(classes, dense) {\n return {\n container: classes.collapseContainer,\n wrapper: (0, _classnames2.default)(classes.collapseWrapper, _defineProperty({}, classes.collapseWrapperDense, dense))\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _constants = require('../utils/constants');\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar styles = function styles(theme) {\n return _extends({}, _constants.allClasses.mui, {\n base: {\n fontSize: '0.875rem',\n lineHeight: '1.46429em',\n fontWeight: theme.typography.fontWeightRegular,\n fontFamily: theme.typography.fontFamily,\n borderRadius: theme.shape.borderRadius\n },\n lessPadding: {\n paddingLeft: 8 * 2.5\n },\n variantSuccess: {\n backgroundColor: '#43a047' // green\n },\n variantError: {\n backgroundColor: '#d32f2f' // dark red\n },\n variantInfo: {\n backgroundColor: '#2979ff' // nice blue\n },\n variantWarning: {\n backgroundColor: '#ffa000' // amber\n },\n message: {\n display: 'flex',\n alignItems: 'center'\n },\n wrappedRoot: {\n position: 'relative',\n transform: 'translateX(0)',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n collapseContainer: _defineProperty({}, theme.breakpoints.down('xs'), {\n paddingLeft: typeof theme.spacing === 'function' ? theme.spacing(1) : theme.spacing.unit,\n paddingRight: typeof theme.spacing === 'function' ? theme.spacing(1) : theme.spacing.unit\n }),\n collapseWrapper: {\n transition: theme.transitions.create(['margin-bottom'], { easing: 'ease' }),\n marginTop: _constants.SNACKBAR_INDENTS.snackbar.default,\n marginBottom: _constants.SNACKBAR_INDENTS.snackbar.default\n },\n collapseWrapperDense: {\n marginTop: _constants.SNACKBAR_INDENTS.snackbar.dense,\n marginBottom: _constants.SNACKBAR_INDENTS.snackbar.dense\n }\n });\n};\n\nexports.default = styles;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _styles = require('@material-ui/core/styles');\n\nvar _constants = require('./utils/constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar styles = function styles(theme) {\n return {\n root: _defineProperty({\n boxSizing: 'border-box',\n display: 'flex',\n maxHeight: '100%',\n maxWidth: '100%',\n position: 'fixed',\n flexDirection: 'column',\n zIndex: theme.zIndex.snackbar,\n height: 'auto',\n width: 'auto',\n minWidth: 288,\n transition: theme.transitions.create(['top', 'right', 'bottom', 'left'], { easing: 'ease' })\n }, theme.breakpoints.down('xs'), {\n left: '0 !important',\n right: '0 !important',\n width: '100%'\n }),\n reverseColumns: { flexDirection: 'column-reverse' },\n\n top: { top: _constants.SNACKBAR_INDENTS.view.default - _constants.SNACKBAR_INDENTS.snackbar.default },\n topDense: { top: _constants.SNACKBAR_INDENTS.view.dense - _constants.SNACKBAR_INDENTS.snackbar.dense },\n\n bottom: { bottom: _constants.SNACKBAR_INDENTS.view.default - _constants.SNACKBAR_INDENTS.snackbar.default },\n bottomDense: { bottom: _constants.SNACKBAR_INDENTS.view.dense - _constants.SNACKBAR_INDENTS.snackbar.dense },\n\n left: { left: _constants.SNACKBAR_INDENTS.view.default },\n leftDense: { left: _constants.SNACKBAR_INDENTS.view.dense },\n\n right: { right: _constants.SNACKBAR_INDENTS.view.default },\n rightDense: { right: _constants.SNACKBAR_INDENTS.view.dense },\n\n center: _defineProperty({}, theme.breakpoints.up('md'), {\n left: '50%',\n transform: 'translateX(-50%)'\n })\n };\n};\n\nvar SnackbarContainer = _react2.default.memo(function (props) {\n var classes = props.classes,\n className = props.className,\n anchorOrigin = props.anchorOrigin,\n dense = props.dense,\n other = _objectWithoutProperties(props, ['classes', 'className', 'anchorOrigin', 'dense']);\n\n var combinedClassname = (0, _classnames2.default)(classes.root, classes[anchorOrigin.vertical], classes[anchorOrigin.horizontal], classes['' + anchorOrigin.vertical + (dense ? 'Dense' : '')], classes['' + anchorOrigin.horizontal + (dense ? 'Dense' : '')], _defineProperty({}, classes.reverseColumns, anchorOrigin.vertical === 'bottom'), className);\n\n return _react2.default.createElement('div', _extends({ className: combinedClassname }, other));\n});\n\nprocess.env.NODE_ENV !== \"production\" ? SnackbarContainer.propTypes = {\n classes: _propTypes2.default.object.isRequired,\n className: _propTypes2.default.string,\n dense: _propTypes2.default.bool.isRequired,\n anchorOrigin: _propTypes2.default.shape({\n horizontal: _propTypes2.default.oneOf(['left', 'center', 'right']).isRequired,\n vertical: _propTypes2.default.oneOf(['top', 'bottom']).isRequired\n })\n} : void 0;\n\nexports.default = (0, _styles.withStyles)(styles)(SnackbarContainer);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _hoistNonReactStatics = require('hoist-non-react-statics');\n\nvar _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);\n\nvar _getDisplayName = require('./utils/getDisplayName');\n\nvar _getDisplayName2 = _interopRequireDefault(_getDisplayName);\n\nvar _SnackbarContext = require('./SnackbarContext');\n\nvar _SnackbarContext2 = _interopRequireDefault(_SnackbarContext);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar withSnackbar = function withSnackbar(Component) {\n var WrappedComponent = _react2.default.forwardRef(function (props, ref) {\n return _react2.default.createElement(\n _SnackbarContext2.default.Consumer,\n null,\n function (context) {\n return _react2.default.createElement(Component, _extends({}, props, {\n ref: ref,\n enqueueSnackbar: context.enqueueSnackbar,\n closeSnackbar: context.closeSnackbar\n }));\n }\n );\n });\n\n if (process.env.NODE_ENV !== 'production') {\n WrappedComponent.displayName = 'WithSnackbar(' + (0, _getDisplayName2.default)(Component) + ')';\n }\n\n (0, _hoistNonReactStatics2.default)(WrappedComponent, Component);\n\n return WrappedComponent;\n};\n\nexports.default = withSnackbar;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _reactIs = require('react-is');\n\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nvar fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nvar getFunctionName = function getFunctionName(fn) {\n var match = ('' + fn).match(fnNameMatchRegex);\n var name = match && match[1];\n return name || '';\n};\n\n/**\n * @param {function} Component\n * @param {string} fallback\n * @returns {string | undefined}\n */\nvar getFunctionComponentName = function getFunctionComponentName(Component) {\n var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n};\n\nvar getWrappedName = function getWrappedName(outerType, innerType, wrapperName) {\n var functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? wrapperName + '(' + functionName + ')' : wrapperName);\n};\n\n/**\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n *\n * @param {React.ReactType} Component\n * @returns {string | undefined}\n */\n\nexports.default = function (Component) {\n if (Component == null) {\n return undefined;\n }\n\n if (typeof Component === 'string') {\n return Component;\n }\n\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n if ((typeof Component === 'undefined' ? 'undefined' : _typeof(Component)) === 'object') {\n switch (Component.$$typeof) {\n case _reactIs.ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n default:\n return undefined;\n }\n }\n\n return undefined;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _SnackbarContext = require('./SnackbarContext');\n\nvar _SnackbarContext2 = _interopRequireDefault(_SnackbarContext);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n var _useContext = (0, _react.useContext)(_SnackbarContext2.default),\n enqueueSnackbar = _useContext.enqueueSnackbar,\n closeSnackbar = _useContext.closeSnackbar;\n\n return {\n enqueueSnackbar: enqueueSnackbar,\n closeSnackbar: closeSnackbar\n };\n};","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\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\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\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 stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\nvar toArrayBuffer = require('to-arraybuffer')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else if (capability.vbArray && preferBinary) {\n\t\treturn 'text:vbarray'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n\t\tif (capability.arraybuffer) {\n\t\t\tbody = toArrayBuffer(Buffer.concat(self._body))\n\t\t} else if (capability.blobConstructor) {\n\t\t\tbody = new global.Blob(self._body.map(function (buffer) {\n\t\t\t\treturn toArrayBuffer(buffer)\n\t\t\t}), {\n\t\t\t\ttype: (headersObj['content-type'] || {}).value || ''\n\t\t\t})\n\t\t} else {\n\t\t\t// get utf8 string\n\t\t\tbody = Buffer.concat(self._body).toString()\n\t\t}\n\t}\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tvar fetchTimer = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tglobal.clearTimeout(self._fetchTimer)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode.split(':')[0]\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress()\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer)\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {\n\tvar self = this\n\tself._destroyed = true\n\tglobal.clearTimeout(self._fetchTimer)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setTimeout = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var Buffer = require('buffer').Buffer\n\nmodule.exports = function (buf) {\n\t// If the buffer is backed by a Uint8Array, a faster version will work\n\tif (buf instanceof Uint8Array) {\n\t\t// If the buffer isn't a subarray, return the underlying ArrayBuffer\n\t\tif (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n\t\t\treturn buf.buffer\n\t\t} else if (typeof buf.buffer.slice === 'function') {\n\t\t\t// Otherwise we need to get a proper copy\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n\t\t}\n\t}\n\n\tif (Buffer.isBuffer(buf)) {\n\t\t// This is the slow version that will work with any Buffer\n\t\t// implementation (even in old browsers)\n\t\tvar arrayCopy = new Uint8Array(buf.length)\n\t\tvar len = buf.length\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tarrayCopy[i] = buf[i]\n\t\t}\n\t\treturn arrayCopy.buffer\n\t} else {\n\t\tthrow new Error('Argument must be a Buffer')\n\t}\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","// ENVIRONMENT\nexport {self, window, global, document, process, console} from './globals';\nexport {default as isBrowser, isBrowserMainThread} from './is-browser';\nexport {default as getBrowser, isMobile} from './get-browser';\nexport {default as isElectron} from './is-electron';\n","function _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n\n if (obj != null) {\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard;","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/** @license React v16.12.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.suspense_list\"):\n60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.fundamental\"):60117,w=b?Symbol.for(\"react.responder\"):60118,x=b?Symbol.for(\"react.scope\"):60119;function y(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function z(a){return y(a)===m}\nexports.typeOf=y;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===v||a.$$typeof===w||a.$$typeof===x)};exports.isAsyncMode=function(a){return z(a)||y(a)===l};exports.isConcurrentMode=z;exports.isContextConsumer=function(a){return y(a)===k};exports.isContextProvider=function(a){return y(a)===h};\nexports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return y(a)===n};exports.isFragment=function(a){return y(a)===e};exports.isLazy=function(a){return y(a)===t};exports.isMemo=function(a){return y(a)===r};exports.isPortal=function(a){return y(a)===d};exports.isProfiler=function(a){return y(a)===g};exports.isStrictMode=function(a){return y(a)===f};exports.isSuspense=function(a){return y(a)===p};\n","var $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\nvar nativeAcosh = Math.acosh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\nvar LN2 = Math.LN2;\n\nvar FORCED = !nativeAcosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n || Math.floor(nativeAcosh(Number.MAX_VALUE)) != 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n || nativeAcosh(Infinity) != Infinity;\n\n// `Math.acosh` method\n// https://tc39.github.io/ecma262/#sec-math.acosh\n$({ target: 'Math', stat: true, forced: FORCED }, {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? log(x) + LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","module.exports = false;\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var $ = require('../internals/export');\n\nvar nativeAsinh = Math.asinh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log(x + sqrt(x * x + 1));\n}\n\n// `Math.asinh` method\n// https://tc39.github.io/ecma262/#sec-math.asinh\n// Tor Browser bug: Math.asinh(0) -> -0\n$({ target: 'Math', stat: true, forced: !(nativeAsinh && 1 / nativeAsinh(0) > 0) }, {\n asinh: asinh\n});\n","var $ = require('../internals/export');\n\nvar nativeAtanh = Math.atanh;\nvar log = Math.log;\n\n// `Math.atanh` method\n// https://tc39.github.io/ecma262/#sec-math.atanh\n// Tor Browser bug: Math.atanh(-0) -> 0\n$({ target: 'Math', stat: true, forced: !(nativeAtanh && 1 / nativeAtanh(-0) < 0) }, {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : log((1 + x) / (1 - x)) / 2;\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\n\n// `Math.cbrt` method\n// https://tc39.github.io/ecma262/#sec-math.cbrt\n$({ target: 'Math', stat: true }, {\n cbrt: function cbrt(x) {\n return sign(x = +x) * pow(abs(x), 1 / 3);\n }\n});\n","var $ = require('../internals/export');\n\nvar floor = Math.floor;\nvar log = Math.log;\nvar LOG2E = Math.LOG2E;\n\n// `Math.clz32` method\n// https://tc39.github.io/ecma262/#sec-math.clz32\n$({ target: 'Math', stat: true }, {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - floor(log(x + 0.5) * LOG2E) : 32;\n }\n});\n","var $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\nvar nativeCosh = Math.cosh;\nvar abs = Math.abs;\nvar E = Math.E;\n\n// `Math.cosh` method\n// https://tc39.github.io/ecma262/#sec-math.cosh\n$({ target: 'Math', stat: true, forced: !nativeCosh || nativeCosh(710) === Infinity }, {\n cosh: function cosh(x) {\n var t = expm1(abs(x) - 1) + 1;\n return (t + 1 / (t * E * E)) * (E / 2);\n }\n});\n","var $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\n// `Math.expm1` method\n// https://tc39.github.io/ecma262/#sec-math.expm1\n$({ target: 'Math', stat: true, forced: expm1 != Math.expm1 }, { expm1: expm1 });\n","var $ = require('../internals/export');\nvar fround = require('../internals/math-fround');\n\n// `Math.fround` method\n// https://tc39.github.io/ecma262/#sec-math.fround\n$({ target: 'Math', stat: true }, { fround: fround });\n","var sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\n// `Math.fround` method implementation\n// https://tc39.github.io/ecma262/#sec-math.fround\nmodule.exports = Math.fround || function fround(x) {\n var $abs = abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","var $ = require('../internals/export');\n\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.github.io/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, forced: BUGGY }, {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * sqrt(sum);\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\n\nvar nativeImul = Math.imul;\n\nvar FORCED = fails(function () {\n return nativeImul(0xFFFFFFFF, 5) != -5 || nativeImul.length != 2;\n});\n\n// `Math.imul` method\n// https://tc39.github.io/ecma262/#sec-math.imul\n// some WebKit versions fails with big numbers, some has wrong arity\n$({ target: 'Math', stat: true, forced: FORCED }, {\n imul: function imul(x, y) {\n var UINT16 = 0xFFFF;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// `Math.log10` method\n// https://tc39.github.io/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n log10: function log10(x) {\n return log(x) * LOG10E;\n }\n});\n","var $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\n// `Math.log1p` method\n// https://tc39.github.io/ecma262/#sec-math.log1p\n$({ target: 'Math', stat: true }, { log1p: log1p });\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// `Math.log2` method\n// https://tc39.github.io/ecma262/#sec-math.log2\n$({ target: 'Math', stat: true }, {\n log2: function log2(x) {\n return log(x) / LN2;\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.github.io/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar expm1 = require('../internals/math-expm1');\n\nvar abs = Math.abs;\nvar exp = Math.exp;\nvar E = Math.E;\n\nvar FORCED = fails(function () {\n return Math.sinh(-2e-17) != -2e-17;\n});\n\n// `Math.sinh` method\n// https://tc39.github.io/ecma262/#sec-math.sinh\n// V8 near Chromium 38 has a problem with very small numbers\n$({ target: 'Math', stat: true, forced: FORCED }, {\n sinh: function sinh(x) {\n return abs(x = +x) < 1 ? (expm1(x) - expm1(-x)) / 2 : (exp(x - 1) - exp(-x - 1)) * (E / 2);\n }\n});\n","var $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\nvar exp = Math.exp;\n\n// `Math.tanh` method\n// https://tc39.github.io/ecma262/#sec-math.tanh\n$({ target: 'Math', stat: true }, {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var $ = require('../internals/export');\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.github.io/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n trunc: function trunc(it) {\n return (it > 0 ? floor : ceil)(it);\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.github.io/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n","var $ = require('../internals/export');\nvar numberIsFinite = require('../internals/number-is-finite');\n\n// `Number.isFinite` method\n// https://tc39.github.io/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n","var global = require('../internals/global');\n\nvar globalIsFinite = global.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.github.io/ecma262/#sec-number.isfinite\nmodule.exports = Number.isFinite || function isFinite(it) {\n return typeof it == 'number' && globalIsFinite(it);\n};\n","var $ = require('../internals/export');\nvar isInteger = require('../internals/is-integer');\n\n// `Number.isInteger` method\n// https://tc39.github.io/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n isInteger: isInteger\n});\n","var $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.github.io/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","var $ = require('../internals/export');\nvar isInteger = require('../internals/is-integer');\n\nvar abs = Math.abs;\n\n// `Number.isSafeInteger` method\n// https://tc39.github.io/ecma262/#sec-number.issafeinteger\n$({ target: 'Number', stat: true }, {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF;\n }\n});\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true }, {\n MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.github.io/ecma262/#sec-number.parseFloat\n$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {\n parseFloat: parseFloat\n});\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $ = require('../internals/export');\nvar parseInt = require('../internals/number-parse-int');\n\n// `Number.parseInt` method\n// https://tc39.github.io/ecma262/#sec-number.parseint\n$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, {\n parseInt: parseInt\n});\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseIntersection;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n * <Fade><div>I appear first</div></Fade>\n * <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getTickValuesFixedDomain = exports.getTickValues = exports.getNiceTickValues = void 0;\n\nvar _decimal = _interopRequireDefault(require(\"decimal.js-light\"));\n\nvar _utils = require(\"./util/utils\");\n\nvar _arithmetic = _interopRequireDefault(require(\"./util/arithmetic\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * Calculate a interval of a minimum value and a maximum value\n *\n * @param {Number} min The minimum value\n * @param {Number} max The maximum value\n * @return {Array} An interval\n */\nfunction getValidInterval(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n min = _ref2[0],\n max = _ref2[1];\n\n var validMin = min,\n validMax = max; // exchange\n\n if (min > max) {\n validMin = max;\n validMax = min;\n }\n\n return [validMin, validMax];\n}\n/**\n * Calculate the step which is easy to understand between ticks, like 10, 20, 25\n *\n * @param {Decimal} roughStep The rough step calculated by deviding the\n * difference by the tickCount\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Integer} correctionFactor A correction factor\n * @return {Decimal} The step which is easy to understand between two ticks\n */\n\n\nfunction getFormatStep(roughStep, allowDecimals, correctionFactor) {\n if (roughStep.lte(0)) {\n return new _decimal.default(0);\n }\n\n var digitCount = _arithmetic.default.getDigitCount(roughStep.toNumber()); // The ratio between the rough step and the smallest number which has a bigger\n // order of magnitudes than the rough step\n\n\n var digitCountValue = new _decimal.default(10).pow(digitCount);\n var stepRatio = roughStep.div(digitCountValue); // When an integer and a float multiplied, the accuracy of result may be wrong\n\n var stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;\n var amendStepRatio = new _decimal.default(Math.ceil(stepRatio.div(stepRatioScale).toNumber())).add(correctionFactor).mul(stepRatioScale);\n var formatStep = amendStepRatio.mul(digitCountValue);\n return allowDecimals ? formatStep : new _decimal.default(Math.ceil(formatStep));\n}\n/**\n * calculate the ticks when the minimum value equals to the maximum value\n *\n * @param {Number} value The minimum valuue which is also the maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickOfSingleValue(value, tickCount, allowDecimals) {\n var step = 1; // calculate the middle value of ticks\n\n var middle = new _decimal.default(value);\n\n if (!middle.isint() && allowDecimals) {\n var absVal = Math.abs(value);\n\n if (absVal < 1) {\n // The step should be a float number when the difference is smaller than 1\n step = new _decimal.default(10).pow(_arithmetic.default.getDigitCount(value) - 1);\n middle = new _decimal.default(Math.floor(middle.div(step).toNumber())).mul(step);\n } else if (absVal > 1) {\n // Return the maximum integer which is smaller than 'value' when 'value' is greater than 1\n middle = new _decimal.default(Math.floor(value));\n }\n } else if (value === 0) {\n middle = new _decimal.default(Math.floor((tickCount - 1) / 2));\n } else if (!allowDecimals) {\n middle = new _decimal.default(Math.floor(value));\n }\n\n var middleIndex = Math.floor((tickCount - 1) / 2);\n var fn = (0, _utils.compose)((0, _utils.map)(function (n) {\n return middle.add(new _decimal.default(n - middleIndex).mul(step)).toNumber();\n }), _utils.range);\n return fn(0, tickCount);\n}\n/**\n * Calculate the step\n *\n * @param {Number} min The minimum value of an interval\n * @param {Number} max The maximum value of an interval\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Number} correctionFactor A correction factor\n * @return {Object} The step, minimum value of ticks, maximum value of ticks\n */\n\n\nfunction calculateStep(min, max, tickCount, allowDecimals) {\n var correctionFactor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\n // dirty hack (for recharts' test)\n if (!Number.isFinite((max - min) / (tickCount - 1))) {\n return {\n step: new _decimal.default(0),\n tickMin: new _decimal.default(0),\n tickMax: new _decimal.default(0)\n };\n } // The step which is easy to understand between two ticks\n\n\n var step = getFormatStep(new _decimal.default(max).sub(min).div(tickCount - 1), allowDecimals, correctionFactor); // A medial value of ticks\n\n var middle; // When 0 is inside the interval, 0 should be a tick\n\n if (min <= 0 && max >= 0) {\n middle = new _decimal.default(0);\n } else {\n // calculate the middle value\n middle = new _decimal.default(min).add(max).div(2); // minus modulo value\n\n middle = middle.sub(new _decimal.default(middle).mod(step));\n }\n\n var belowCount = Math.ceil(middle.sub(min).div(step).toNumber());\n var upCount = Math.ceil(new _decimal.default(max).sub(middle).div(step).toNumber());\n var scaleCount = belowCount + upCount + 1;\n\n if (scaleCount > tickCount) {\n // When more ticks need to cover the interval, step should be bigger.\n return calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1);\n }\n\n if (scaleCount < tickCount) {\n // When less ticks can cover the interval, we should add some additional ticks\n upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;\n belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);\n }\n\n return {\n step: step,\n tickMin: middle.sub(new _decimal.default(belowCount).mul(step)),\n tickMax: middle.add(new _decimal.default(upCount).mul(step))\n };\n}\n/**\n * Calculate the ticks of an interval, the count of ticks will be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getNiceTickValuesFn(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n min = _ref4[0],\n max = _ref4[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval = getValidInterval([min, max]),\n _getValidInterval2 = _slicedToArray(_getValidInterval, 2),\n cormin = _getValidInterval2[0],\n cormax = _getValidInterval2[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n var _values = cormax === Infinity ? [cormin].concat(_toConsumableArray((0, _utils.range)(0, tickCount - 1).map(function () {\n return Infinity;\n }))) : _toConsumableArray((0, _utils.range)(0, tickCount - 1).map(function () {\n return -Infinity;\n })).concat([cormax]);\n\n return min > max ? (0, _utils.reverse)(_values) : _values;\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n } // Get the step between two ticks\n\n\n var _calculateStep = calculateStep(cormin, cormax, count, allowDecimals),\n step = _calculateStep.step,\n tickMin = _calculateStep.tickMin,\n tickMax = _calculateStep.tickMax;\n\n var values = _arithmetic.default.rangeStep(tickMin, tickMax.add(new _decimal.default(0.1).mul(step)), step);\n\n return min > max ? (0, _utils.reverse)(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFn(_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n min = _ref6[0],\n max = _ref6[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval3 = getValidInterval([min, max]),\n _getValidInterval4 = _slicedToArray(_getValidInterval3, 2),\n cormin = _getValidInterval4[0],\n cormax = _getValidInterval4[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n }\n\n var step = getFormatStep(new _decimal.default(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var fn = (0, _utils.compose)((0, _utils.map)(function (n) {\n return new _decimal.default(cormin).add(new _decimal.default(n).mul(step)).toNumber();\n }), _utils.range);\n var values = fn(0, count).filter(function (entry) {\n return entry >= cormin && entry <= cormax;\n });\n return min > max ? (0, _utils.reverse)(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed,\n * but the domain will be guaranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFixedDomainFn(_ref7, tickCount) {\n var _ref8 = _slicedToArray(_ref7, 2),\n min = _ref8[0],\n max = _ref8[1];\n\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n // More than two ticks should be return\n var _getValidInterval5 = getValidInterval([min, max]),\n _getValidInterval6 = _slicedToArray(_getValidInterval5, 2),\n cormin = _getValidInterval6[0],\n cormax = _getValidInterval6[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return [cormin];\n }\n\n var count = Math.max(tickCount, 2);\n var step = getFormatStep(new _decimal.default(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n\n var values = _toConsumableArray(_arithmetic.default.rangeStep(new _decimal.default(cormin), new _decimal.default(cormax).sub(new _decimal.default(0.99).mul(step)), step)).concat([cormax]);\n\n return min > max ? (0, _utils.reverse)(values) : values;\n}\n\nvar getNiceTickValues = (0, _utils.memoize)(getNiceTickValuesFn);\nexports.getNiceTickValues = getNiceTickValues;\nvar getTickValues = (0, _utils.memoize)(getTickValuesFn);\nexports.getTickValues = getTickValues;\nvar getTickValuesFixedDomain = (0, _utils.memoize)(getTickValuesFixedDomainFn);\nexports.getTickValuesFixedDomain = getTickValuesFixedDomain;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _decimal = _interopRequireDefault(require(\"decimal.js-light\"));\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @fileOverview 一些公用的è¿ç®—方法\n * @author xile611\n * @date 2015-09-17\n */\n\n/**\n * 获å–数值的ä½æ•°\n * å…¶ä¸ç»å¯¹å€¼å±žäºŽåŒºé—´[0.1, 1), 得到的值为0\n * ç»å¯¹å€¼å±žäºŽåŒºé—´[0.01, 0.1),得到的ä½æ•°ä¸º -1\n * ç»å¯¹å€¼å±žäºŽåŒºé—´[0.001, 0.01),得到的ä½æ•°ä¸º -2\n *\n * @param {Number} value 数值\n * @return {Integer} ä½æ•°\n */\nfunction getDigitCount(value) {\n var result;\n\n if (value === 0) {\n result = 1;\n } else {\n result = Math.floor(new _decimal.default(value).abs().log(10).toNumber()) + 1;\n }\n\n return result;\n}\n/**\n * 按照固定的æ¥é•¿èŽ·å–[start, end)这个区间的数æ®\n * 并且需è¦å¤„ç†js计算精度的问题\n *\n * @param {Decimal} start 起点\n * @param {Decimal} end 终点,ä¸åŒ…å«è¯¥å€¼\n * @param {Decimal} step æ¥é•¿\n * @return {Array} 若干数值\n */\n\n\nfunction rangeStep(start, end, step) {\n var num = new _decimal.default(start);\n var i = 0;\n var result = []; // magic number to prevent infinite loop\n\n while (num.lt(end) && i < 100000) {\n result.push(num.toNumber());\n num = num.add(step);\n i++;\n }\n\n return result;\n}\n/**\n * 对数值进行线性æ’值\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} t [0, 1]内的æŸä¸ªå€¼\n * @return {Number} 定义域内的æŸä¸ªå€¼\n */\n\n\nvar interpolateNumber = (0, _utils.curry)(function (a, b, t) {\n var newA = +a;\n var newB = +b;\n return newA + t * (newB - newA);\n});\n/**\n * 线性æ’值的逆è¿ç®—\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} x å¯ä»¥è®¤ä¸ºæ˜¯æ’值åŽçš„一个输出值\n * @return {Number} 当x在 a ~ b这个范围内时,返回值属于[0, 1]\n */\n\nvar uninterpolateNumber = (0, _utils.curry)(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return (x - a) / diff;\n});\n/**\n * 线性æ’值的逆è¿ç®—,并且有截æ–çš„æ“作\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} x å¯ä»¥è®¤ä¸ºæ˜¯æ’值åŽçš„一个输出值\n * @return {Number} 当x在 a ~ b这个区间内时,返回值属于[0, 1],\n * 当xä¸åœ¨ a ~ b这个区间时,会截æ–到 a ~ b 这个区间\n */\n\nvar uninterpolateTruncation = (0, _utils.curry)(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return Math.max(0, Math.min(1, (x - a) / diff));\n});\nvar _default = {\n rangeStep: rangeStep,\n getDigitCount: getDigitCount,\n interpolateNumber: interpolateNumber,\n uninterpolateNumber: uninterpolateNumber,\n uninterpolateTruncation: uninterpolateTruncation\n};\nexports.default = _default;","module.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","/*\n * Module dependencies\n */\nvar balanced = require(\"balanced-match\")\n\n/**\n * Expose `reduceFunctionCall`\n *\n * @type {Function}\n */\nmodule.exports = reduceFunctionCall\n\n/**\n * Walkthrough all expressions, evaluate them and insert them into the declaration\n *\n * @param {Array} expressions\n * @param {Object} declaration\n */\n\nfunction reduceFunctionCall(string, functionRE, callback) {\n var call = string\n return getFunctionCalls(string, functionRE).reduce(function(string, obj) {\n return string.replace(obj.functionIdentifier + \"(\" + obj.matches.body + \")\", evalFunctionCall(obj.matches.body, obj.functionIdentifier, callback, call, functionRE))\n }, string)\n}\n\n/**\n * Parses expressions in a value\n *\n * @param {String} value\n * @returns {Array}\n * @api private\n */\n\nfunction getFunctionCalls(call, functionRE) {\n var expressions = []\n\n var fnRE = typeof functionRE === \"string\" ? new RegExp(\"\\\\b(\" + functionRE + \")\\\\(\") : functionRE\n do {\n var searchMatch = fnRE.exec(call)\n if (!searchMatch) {\n return expressions\n }\n if (searchMatch[1] === undefined) {\n throw new Error(\"Missing the first couple of parenthesis to get the function identifier in \" + functionRE)\n }\n var fn = searchMatch[1]\n var startIndex = searchMatch.index\n var matches = balanced(\"(\", \")\", call.substring(startIndex))\n\n if (!matches || matches.start !== searchMatch[0].length - 1) {\n throw new SyntaxError(fn + \"(): missing closing ')' in the value '\" + call + \"'\")\n }\n\n expressions.push({matches: matches, functionIdentifier: fn})\n call = matches.post\n }\n while (fnRE.test(call))\n\n return expressions\n}\n\n/**\n * Evaluates an expression\n *\n * @param {String} expression\n * @returns {String}\n * @api private\n */\n\nfunction evalFunctionCall (string, functionIdentifier, callback, call, functionRE) {\n // allow recursivity\n return callback(reduceFunctionCall(string, functionRE, callback), functionIdentifier, call)\n}\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","var Mexp=require('./postfix_evaluator.js');\r\nMexp.prototype.formulaEval = function () {\r\n\t\"use strict\";\r\n\tvar stack=[],pop1,pop2,pop3;\r\n\tvar disp=[];\r\n\tvar temp='';\r\n\tvar arr=this.value;\r\n\tfor(var i=0;i<arr.length;i++){\r\n\t\tif(arr[i].type===1||arr[i].type===3){\r\n\t\t\tdisp.push({value:arr[i].type===3?arr[i].show:arr[i].value,type:1});\r\n\t\t}\r\n\t\telse if(arr[i].type===13){\r\n\t\t\tdisp.push({value:arr[i].show,type:1});\r\n\t\t}\r\n\t\telse if(arr[i].type===0){\r\n\t\t\tdisp[disp.length-1]={value:arr[i].show+(arr[i].show!=\"-\"?\"(\":\"\")+disp[disp.length-1].value+(arr[i].show!=\"-\"?\")\":\"\"),type:0};\r\n\t\t}\r\n\t\telse if(arr[i].type===7){\r\n\t\t\tdisp[disp.length-1]={value:(disp[disp.length-1].type!=1?\"(\":\"\")+disp[disp.length-1].value+(disp[disp.length-1].type!=1?\")\":\"\")+arr[i].show,type:7};\r\n\t\t}\r\n\t\telse if(arr[i].type===10){\r\n\t\t\tpop1=disp.pop();\r\n\t\t\tpop2=disp.pop();\r\n\t\t\tif(arr[i].show==='P'||arr[i].show==='C')disp.push({value:\"<sup>\"+pop2.value+\"</sup>\"+arr[i].show+\"<sub>\"+pop1.value+\"</sub>\",type:10});\r\n\t\t\telse disp.push({value:(pop2.type!=1?\"(\":\"\")+pop2.value+(pop2.type!=1?\")\":\"\")+\"<sup>\"+pop1.value+\"</sup>\",type:1});\r\n\t\t}\r\n\t\telse if(arr[i].type===2||arr[i].type===9){\r\n\t\t\tpop1=disp.pop();\r\n\t\t\tpop2=disp.pop();\r\n\t\t\tdisp.push({value:(pop2.type!=1?\"(\":\"\")+pop2.value+(pop2.type!=1?\")\":\"\")+arr[i].show+(pop1.type!=1?\"(\":\"\")+pop1.value+(pop1.type!=1?\")\":\"\"),type:arr[i].type});\r\n\t\t}\r\n\t\telse if(arr[i].type===12){\r\n\t\t\tpop1=disp.pop();\r\n\t\t\tpop2=disp.pop();\r\n\t\t\tpop3=disp.pop();\r\n\t\t\tdisp.push({value:arr[i].show+\"(\"+pop3.value+\",\"+pop2.value+\",\"+pop1.value+\")\",type:12});\r\n\t\t}\r\n\t}\r\n\treturn disp[0].value;\r\n};\r\nmodule.exports=Mexp;","var Mexp=require('./postfix.js');\r\nMexp.prototype.postfixEval = function (UserDefined) {\r\n\t'use strict';\r\n\tUserDefined=UserDefined||{};\r\n\tUserDefined.PI=Math.PI;\r\n\tUserDefined.E=Math.E;\r\n\tvar stack=[],pop1,pop2,pop3;\r\n\tvar disp=[];\r\n\tvar temp='';\r\n\tvar arr=this.value;\r\n\tvar bool=(typeof UserDefined.n!==\"undefined\");\r\n\tfor(var i=0;i<arr.length;i++){\r\n\t\tif(arr[i].type===1){\r\n\t\t\tstack.push({value:arr[i].value,type:1});\r\n\t\t}\r\n\t\telse if(arr[i].type===3){\r\n\t\t\tstack.push({value:UserDefined[arr[i].value],type:1});\r\n\t\t}\r\n\t\telse if(arr[i].type===0){\r\n\t\t\tif(typeof stack[stack.length-1].type===\"undefined\"){\r\n\t\t\t\tstack[stack.length-1].value.push(arr[i]);\r\n\t\t\t}\r\n\t\t\telse stack[stack.length-1].value=arr[i].value(stack[stack.length-1].value);\r\n\t\t}\r\n\t\telse if(arr[i].type===7){\r\n\t\t\tif(typeof stack[stack.length-1].type===\"undefined\"){\r\n\t\t\t\tstack[stack.length-1].value.push(arr[i]);\r\n\t\t\t}\r\n\t\t\telse stack[stack.length-1].value=arr[i].value(stack[stack.length-1].value);\r\n\t\t}\r\n\t\telse if(arr[i].type===8){\r\n\t\t\tpop1=stack.pop();\r\n\t\t\tpop2=stack.pop();\r\n\t\t\tstack.push({type:1,value:arr[i].value(pop2.value,pop1.value)});\r\n\t\t}\r\n\t\telse if(arr[i].type===10){\r\n\t\t\tpop1=stack.pop();\r\n\t\t\tpop2=stack.pop();\r\n\t\t\tif(typeof pop2.type===\"undefined\"){\r\n\t\t\t\tpop2.value=pop2.concat(pop1);\r\n\t\t\t\tpop2.value.push(arr[i]);\r\n\t\t\t\tstack.push(pop2);\r\n\t\t\t}\r\n\t\t\telse if (typeof pop1.type===\"undefined\") {\r\n\t\t\t\tpop1.unshift(pop2);\r\n\t\t\t\tpop1.push(arr[i]);\r\n\t\t\t\tstack.push(pop1);\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tstack.push({type:1,value:arr[i].value(pop2.value,pop1.value)});\r\n }\r\n\t\t}\r\n\t\telse if(arr[i].type===2||arr[i].type===9){\r\n\t\t\tpop1=stack.pop();\r\n\t\t\tpop2=stack.pop();\r\n\t\t\tif(typeof pop2.type===\"undefined\"){\r\n console.log(pop2);\r\n\t\t\t\tpop2=pop2.concat(pop1);\r\n\t\t\t\tpop2.push(arr[i]);\r\n\t\t\t\tstack.push(pop2);\r\n\t\t\t}\r\n\t\t\telse if (typeof pop1.type===\"undefined\") {\r\n\t\t\t\tpop1.unshift(pop2);\r\n\t\t\t\tpop1.push(arr[i]);\r\n\t\t\t\tstack.push(pop1);\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tstack.push({type:1,value:arr[i].value(pop2.value,pop1.value)});\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if(arr[i].type===12){\r\n\t\t\tpop1=stack.pop();\r\n\t\t\tif (typeof pop1.type!==\"undefined\") {\r\n\t\t\t\tpop1=[pop1];\r\n\t\t\t}\r\n\t\t\tpop2=stack.pop();\r\n\t\t\tpop3=stack.pop();\r\n\t\t\tstack.push({type:1,value:arr[i].value(pop3.value,pop2.value,new Mexp(pop1))});\r\n\t\t}\r\n\t\telse if(arr[i].type===13){\r\n\t\t\tif(bool){\r\n\t\t\t\tstack.push({value:UserDefined[arr[i].value],type:3});\r\n\t\t\t}\r\n\t\t\telse stack.push([arr[i]]);\r\n\t\t}\r\n\t}\r\n\tif (stack.length>1) {\r\n\t\tthrow(new Mexp.exception(\"Uncaught Syntax error\"));\r\n\t}\r\n\treturn stack[0].value>1000000000000000?\"Infinity\":parseFloat(stack[0].value.toFixed(15));\r\n};\r\nMexp.eval=function(str,tokens,obj){\r\n\tif (typeof tokens===\"undefined\") {\r\n\t\treturn this.lex(str).toPostfix().postfixEval();\r\n\t}\r\n\telse if (typeof obj===\"undefined\") {\r\n\t\tif (typeof tokens.length!==\"undefined\") \r\n\t\t\treturn this.lex(str,tokens).toPostfix().postfixEval();\r\n\t\telse\r\n\t\t\treturn this.lex(str).toPostfix().postfixEval(tokens);\r\n\t}\r\n\telse\r\n\t\treturn this.lex(str,tokens).toPostfix().postfixEval(obj);\r\n};\r\nmodule.exports=Mexp;","\r\n var Mexp=require('./lexer.js');\r\n\r\n\tMexp.prototype.toPostfix = function () {\r\n\t\t'use strict';\r\n\t\tvar post=[],elem,popped,prep,pre,ele;\r\n \tvar stack=[{value:\"(\",type:4,pre:0}];\r\n\t\tvar arr=this.value;\r\n\t\tfor (var i=1; i < arr.length; i++) {\r\n\t\t\tif(arr[i].type===1||arr[i].type===3||arr[i].type===13){\t//if token is number,constant,or n(which is also a special constant in our case)\r\n\t\t\t\tif(arr[i].type===1)\r\n\t\t\t\t\tarr[i].value=Number(arr[i].value);\r\n\t\t\t\tpost.push(arr[i]);\r\n\t\t\t}\r\n\t\t\telse if(arr[i].type===4){\r\n\t\t\t\tstack.push(arr[i]);\r\n\t\t\t}\r\n\t\t\telse if(arr[i].type===5){\r\n\t\t\t\twhile((popped=stack.pop()).type!==4){\r\n\t\t\t\t\tpost.push(popped);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if(arr[i].type===11){\r\n\t\t\t\twhile((popped=stack.pop()).type!==4){\r\n\t\t\t\t\tpost.push(popped);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(popped);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\telem=arr[i];\r\n\t\t\t\tpre=elem.pre;\r\n\t\t\t\tele=stack[stack.length-1];\r\n\t\t\t\tprep=ele.pre;\r\n\t\t\t\tvar flag=ele.value=='Math.pow'&&elem.value=='Math.pow';\r\n\t\t\t\tif(pre>prep)stack.push(elem);\r\n\t\t\t\telse {\r\n\t\t\t\t\twhile(prep>=pre&&!flag||flag&&pre<prep){\r\n\t\t\t\t\t\tpopped=stack.pop();\r\n\t\t\t\t\t\tele=stack[stack.length-1];\r\n\t\t\t\t\t\tpost.push(popped);\r\n\t\t\t\t\t\tprep=ele.pre;\r\n\t\t\t\t\t\tflag=elem.value=='Math.pow'&&ele.value=='Math.pow';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstack.push(elem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new Mexp(post);\r\n\t};\r\n module.exports=Mexp;","var Mexp=require('./math_function.js');\r\n\tfunction inc(arr,val){\r\n\t\tfor(var i=0;i<arr.length;i++)\r\n\t\t\tarr[i]+=val;\r\n\t\treturn arr;\r\n\t}\r\n\tvar token=['sin','cos','tan','pi','(',')','P','C',\r\n\t\t 'asin','acos','atan','7','8','9','int',\r\n\t\t 'cosh','acosh','ln','^','root','4','5','6','/','!',\r\n\t\t 'tanh','atanh','Mod','1','2','3','*',\r\n\t\t 'sinh','asinh','e','log','0','.','+','-',',','Sigma','n','Pi','pow'];\r\n\tvar show=['sin','cos','tan','π','(',')','P','C',\r\n\t\t'asin','acos','atan','7','8','9','Int',\r\n\t\t'cosh','acosh',' ln','^','root','4','5','6','÷','!',\r\n\t\t'tanh','atanh',' Mod ','1','2','3','×',\r\n\t\t'sinh','asinh','e',' log','0','.','+','-',',','Σ','n','Π','pow'];\r\n\tvar eva=[Mexp.math.sin,Mexp.math.cos,Mexp.math.tan,'PI','(',')',Mexp.math.P,Mexp.math.C,\r\n\t\tMexp.math.asin,Mexp.math.acos,Mexp.math.atan,'7','8','9',Math.floor,\r\n\t\tMexp.math.cosh,Mexp.math.acosh,Math.log,Math.pow,Math.sqrt,'4','5','6',Mexp.math.div,Mexp.math.fact,\r\n\t\tMexp.math.tanh,Mexp.math.atanh,Mexp.math.mod,'1','2','3',Mexp.math.mul,\r\n\t\tMexp.math.sinh,Mexp.math.asinh,'E',Mexp.math.log,'0','.',Mexp.math.add,Mexp.math.sub,',',Mexp.math.sigma,'n',Mexp.math.Pi,Math.pow];\r\n\tvar preced={0:11,1:0,2:3,3:0,4:0,5:0,6:0,7:11,8:11,9:1,10:10,11:0,12:11,13:0};\r\n\tvar type=[0,0,0,3,4,5,10,10,\r\n\t\t0,0,0,1,1,1,0,\r\n\t\t0,0,0,10,0,1,1,1,2,7,\r\n\t\t0,0,2,1,1,1,2,\r\n\t\t0,0,3,0,1,6,9,9,11,12,13,12,8];\r\n\t /*\r\n\t0 : function with syntax function_name(Maths_exp)\r\n\t1 : numbers\r\n\t2 : binary operators like * / Mod left associate and same precedence\r\n\t3 : Math constant values like e,pi,Cruncher ans\r\n\t4 : opening bracket\r\n\t5 : closing bracket\r\n\t6 : decimal\r\n\t7 : function with syntax (Math_exp)function_name\r\n\t8: function with syntax function_name(Math_exp1,Math_exp2)\r\n\t9 : binary operator like +,-\r\n\t10: binary operator like P C or ^\r\n\t11: ,\r\n\t12: function with , seperated three parameters\r\n\t13: variable of Sigma function\r\n\t */\r\n\tvar type0={0:true,1:true,3:true,4:true,6:true,8:true,9:true,12:true,13:true},//type2:true,type4:true,type9:true,type11:true,type21:true,type22\r\n\ttype1={0:true,1:true,2:true,3:true,4:true,5:true,6:true,7:true,8:true,9:true,10:true,11:true,12:true,13:true},//type3:true,type5:true,type7:true,type23\r\n\ttype_1={0:true,3:true,4:true,8:true,12:true,13:true},\r\n\tempty={},\r\n\ttype_3={0:true,1:true,3:true,4:true,6:true,8:true,12:true,13:true},//type_5:true,type_7:true,type_23\r\n\ttype6={1:true},\r\n\tnewAr=[[],\r\n\t\t\t[\"1\",\"2\",\"3\",\"7\",\"8\",\"9\",\"4\",\"5\",\"6\",\"+\",\"-\",\"*\",\"/\",\"(\",\")\",\"^\",\"!\",\"P\",\"C\",\"e\",\"0\",\".\",\",\",\"n\"],\r\n\t\t\t[\"pi\",\"ln\",\"Pi\"],\r\n\t\t\t[\"sin\",\"cos\",\"tan\",\"Del\",\"int\",\"Mod\",\"log\",\"pow\"],\r\n\t\t\t[\"asin\",\"acos\",\"atan\",\"cosh\",\"root\",\"tanh\",\"sinh\"],\r\n\t\t\t[\"acosh\",\"atanh\",\"asinh\",\"Sigma\"]];\r\n\tfunction match(str1,str2,i,x){\r\n\t\tfor(var f=0;f<x;f++){\r\n\t\t\tif (str1[i+f]!==str2[f])\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\tMexp.addToken=function(tokens){\r\n\t\tfor(i=0;i<tokens.length;i++){\r\n\t\t\tx=tokens[i].token.length;\r\n\t\t\tvar temp=-1;\r\n\r\n\t\t\t//newAr is a specially designed data structure in which 1D array at location one of 2d array has all string with length 1 2 with 2 and so on\r\n\r\n\t\t\tif (x<newAr.length)\t//match to check if token is really huge and not existing\r\n\t\t\t\t\t\t\t\t//if not checked it will break in next line as undefined index\r\n\t\t\t\tfor(y=0;y<newAr[x].length;y++){\r\n\t\t\t\t\tif (tokens[i].token===newAr[x][y]){\r\n\t\t\t\t\t\ttemp=token.indexOf(newAr[x][y]);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\tif (temp===-1) {\r\n\t\t\t\ttoken.push(tokens[i].token);\r\n\t\t\t\ttype.push(tokens[i].type);\r\n\t\t\t\tif(newAr.length<=tokens[i].token.length)\r\n\t\t\t\t\tnewAr[tokens[i].token.length]=[];\r\n\t\t\t\tnewAr[tokens[i].token.length].push(tokens[i].token);\r\n\t\t\t\teva.push(tokens[i].value);\r\n\t\t\t\tshow.push(tokens[i].show);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ttoken[temp]=tokens[i].token;\r\n\t\t\t\ttype[temp]=tokens[i].type;\r\n\t\t\t\teva[temp]=tokens[i].value;\r\n\t\t\t\tshow[temp]=tokens[i].show;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tMexp.lex=function(inp,tokens){\r\n\t\t'use strict';\r\n\t\tvar str=[{type:4,value:\"(\",show:\"(\",pre:0}];\r\n\t\tvar ptc=[];\t//Parenthesis to close at the beginning is after one token\r\n\t\tvar inpStr=inp;\r\n\t\tvar key;\r\n var pcounter=0;\r\n\t\tvar allowed=type0;\r\n\t\tvar bracToClose=0;\r\n\t\tvar asterick=empty;\r\n\t\tvar prevKey='';\r\n\t\tvar i,x,y;\r\n\t\tif(typeof tokens!==\"undefined\")\r\n\t\t\tMexp.addToken(tokens);\r\n\t\tvar obj={};\r\n\t\tfor(i=0;i<inpStr.length;i++){\r\n\t\t\tif (inpStr[i]==' ') {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tkey='';\r\n\t\t\tsec:for(x=(inpStr.length-i>(newAr.length-2)?newAr.length-1:inpStr.length-i);x>0;x--){\r\n\t\t\t\tfor(y=0;y<newAr[x].length;y++){\r\n\t\t\t\t\tif (match(inpStr,newAr[x][y],i,x)){\r\n\t\t\t\t\t\tkey=newAr[x][y];\r\n\t\t\t\t\t\tbreak sec;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ti+=key.length-1;\r\n\t\t\tif(key===''){\r\n\t\t\t\tthrow(new Mexp.exception(\"Can't understand after \"+inpStr.slice(i)));\r\n\t\t\t}\r\n\t\t\tvar index=token.indexOf(key);\r\n\t\t\tvar cToken=key;\r\n\t\t\tvar cType=type[index];\r\n\t\t\tvar cEv=eva[index];\r\n\t\t\tvar cPre=preced[cType];\r\n\t\t\tvar\tcShow=show[index];\r\n\t\t\tvar pre=str[str.length-1];\r\n\t\t\tfor(j=ptc.length;j--;){\t//loop over ptc\r\n\t\t\t\tif(ptc[j]===0){\r\n\t\t\t\t\tif([0,2,3,5,9,11,12,13].indexOf(cType)!==-1){\r\n\t\t\t\t\t\tif(allowed[cType]!==true){\r\n\t\t\t\t\t\t\tthrow(new Mexp.exception(key+\" is not allowed after \"+prevKey));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tstr.push({value:\")\",type:5,pre:0,show:\")\"});\r\n\t\t\t\t\t\tallowed=type1;\r\n\t\t\t\t\t\tasterick=type_3;\r\n\t\t\t\t\t\tinc(ptc,-1).pop();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(allowed[cType]!==true){\r\n\t\t\t\tthrow(new Mexp.exception(key+\" is not allowed after \"+prevKey));\r\n\t\t\t}\r\n\t\t\tif(asterick[cType]===true){\r\n\t\t\t\tcType=2;\r\n\t\t\t\tcEv=Mexp.math.mul;\r\n\t\t\t\tcShow=\"×\";\r\n\t\t\t\tcPre=3;\r\n\t\t\t\ti=i-key.length;\r\n\t\t \t}\r\n\t\t\tobj={value:cEv,type:cType,pre:cPre,show:cShow};\r\n\t\t\tif(cType===0){\r\n\t\t\t\tallowed=type0;\r\n\t\t\t\tasterick=empty;\r\n\t\t\t\tinc(ptc,2).push(2);\r\n\t\t\t\tstr.push(obj);\r\n\t\t\t\tstr.push({value:\"(\",type:4,pre:0,show:\"(\"});\r\n\t\t\t}\r\n\t\t\telse if(cType===1){\r\n\t\t\t\tif(pre.type===1){\r\n\t\t\t\t\tpre.value+=cEv;\r\n\t\t\t\t\tinc(ptc,1);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t\tallowed=type1;\r\n\t\t\t\tasterick=type_1;\r\n\t\t\t}\r\n\t\t\telse if(cType===2){\r\n\t\t\t\tallowed=type0;\r\n\t\t\t\tasterick=empty;\r\n\t\t\t\tinc(ptc,2);\r\n\t\t\t\tstr.push(obj);\r\n\t\t\t}\r\n\t\t\telse if(cType===3){//constant\r\n\t\t\t\tstr.push(obj);\r\n\t\t\t\tallowed=type1;\r\n\t\t\t\tasterick=type_3;\r\n\t\t\t}\r\n\t\t\telse if(cType===4){\r\n pcounter+=ptc.length;\r\n ptc=[];\r\n\t\t\t\tbracToClose++;\r\n\t\t\t\tallowed=type0;\r\n\t\t\t\tasterick=empty;\r\n\t\t\t\tstr.push(obj);\r\n\t\t\t}\r\n\t\t\telse if(cType===5){\r\n\t\t\t\tif(!bracToClose){\r\n\t\t\t\t\tthrow(new Mexp.exception(\"Closing parenthesis are more than opening one, wait What!!!\"));\r\n\t\t\t\t}\r\n while(pcounter--){\t//loop over ptc\r\n \t\t\t\t\t\tstr.push({value:\")\",type:5,pre:0,show:\")\"});\r\n \t\t\t}\r\n pcounter=0;\r\n\t\t\t\tbracToClose--;\r\n\t\t\t\tallowed=type1;\r\n\t\t\t\tasterick=type_3;\r\n\t\t\t\tstr.push(obj);\r\n\t\t\t}\r\n\t\t\telse if(cType===6){\r\n\t\t\t\tif(pre.hasDec){\r\n\t\t\t\t\tthrow(new Mexp.exception(\"Two decimals are not allowed in one number\"));\r\n\t\t\t\t}\r\n\t\t\t\tif(pre.type!==1){\r\n\t\t\t\t\tpre={value:0,type:1,pre:0};\t//pre needs to be changed as it will the last value now to be safe in later code\r\n\t\t\t\t\tstr.push(pre);\r\n\t\t\t\t\tinc(ptc,-1);\r\n\t\t\t\t}\r\n\t\t\t\tallowed=type6;\r\n\t\t\t\tinc(ptc,1);\r\n\t\t\t\tasterick=empty;\r\n\t\t\t\tpre.value+=cEv;\r\n\t\t\t\tpre.hasDec=true;\r\n\t\t\t}\r\n\t\t\telse if(cType===7){\r\n\t\t\t\tallowed=type1;\r\n\t\t\t\tasterick=type_3;\r\n\t\t\t\tinc(ptc,1);\r\n\t\t\t\tstr.push(obj);\r\n\t\t\t}\r\n\t\t\tif(cType===8){\r\n\t\t\t\tallowed=type0;\r\n\t\t\t\tasterick=empty;\r\n\t\t\t\tinc(ptc,4).push(4);\r\n\t\t\t\tstr.push(obj);\r\n\t\t\t\tstr.push({value:\"(\",type:4,pre:0,show:\"(\"});\r\n\t\t\t}\r\n\t\t\telse if(cType===9){\r\n\t\t\t\tif(pre.type===9){\r\n\t\t\t\t\tif(pre.value===Mexp.math.add){\r\n\t\t\t\t\t\tpre.value=cEv;\r\n\t\t\t\t\t\tpre.show=cShow;\r\n\t\t\t\t\t\tinc(ptc,1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(pre.value===Mexp.math.sub&&cShow==='-'){\r\n\t\t\t\t\t\tpre.value=Mexp.math.add;\r\n\t\t\t\t\t\tpre.show='+';\r\n\t\t\t\t\t\tinc(ptc,1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if(pre.type!==5&&pre.type!==7&&pre.type!==1&&pre.type!==3&&pre.type!==13){//changesign only when negative is found\r\n\t\t\t\t\tif(cToken==='-'){//do nothing for + token\r\n\t\t\t\t\t\t\t\t\t//don't add with the above if statement as that will run the else statement of parent if on Ctoken +\r\n\t\t\t\t\t\tallowed=type0;\r\n\t\t\t\t\t\tasterick=empty;\r\n\t\t\t\t\t\tinc(ptc,2).push(2);\r\n\t\t\t\t\t\tstr.push({value:Mexp.math.changeSign,type:0,pre:21,show:\"-\"});\r\n\t\t\t\t\t\tstr.push({value:\"(\",type:4,pre:0,show:\"(\"});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\tstr.push(obj);\r\n\t\t\t\t\tinc(ptc,2);\r\n\t\t\t\t}\r\n\t\t\t\tallowed=type0;\r\n\t\t\t\tasterick=empty;\r\n\t\t\t}\r\n\t\t\telse if(cType===10){\r\n\t\t\t\tallowed=type0;\r\n\t\t\t\tasterick=empty;\r\n\t\t\t\tinc(ptc,2);\r\n\t\t\t\tstr.push(obj);\r\n\t\t\t}\r\n\t\t\telse if(cType===11){\r\n\t\t\t\tallowed=type0;\r\n\t\t\t\tasterick=empty;\r\n\t\t\t\tstr.push(obj);\r\n\t\t\t}\r\n\t\t\telse if(cType===12){\r\n\t\t\t\tallowed=type0;\r\n\t\t\t\tasterick=empty;\r\n\t\t\t\tinc(ptc,6).push(6);\r\n\t\t\t\tstr.push(obj);\r\n\t\t\t\tstr.push({value:\"(\",type:4,pre:0});\r\n\t\t\t}\r\n\t\t\telse if(cType===13){\r\n\t\t\t\tallowed=type1;\r\n\t\t\t\tasterick=type_3;\r\n\t\t\t\tstr.push(obj);\r\n\t\t\t}\r\n\t\t\tinc(ptc,-1);\r\n\t\t\tprevKey=key;\r\n\t\t}\r\n\t\tfor(var j=ptc.length;j--;){\t//loop over ptc\r\n\t\t\tif(ptc[j]===0){\r\n\r\n\t\t\t\tstr.push({value:\")\",show:\")\",type:5,pre:3});\r\n\t\t\t\tinc(ptc,-1).pop();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (allowed[5]!==true) {\r\n\t\t\tthrow(new Mexp.exception(\"complete the expression\"));\r\n\t\t}\r\n\t\twhile(bracToClose--)\r\n\t\t\tstr.push({value:\")\",show:\")\",type:5,pre:3});\r\n\r\n\t\tstr.push({type:5,value:\")\",show:\")\",pre:0});\r\n// console.log(str);\r\n\t\treturn new Mexp(str);\r\n\t};\r\n module.exports=Mexp;\r\n","\tvar Mexp=function(parsed){\r\n\t\tthis.value=parsed;\r\n\r\n\t};\r\n\r\n\tMexp.math={\r\n\t\tisDegree:true, //mode of calculator\r\n\t\tacos:function(x){\r\n\t\t\treturn (Mexp.math.isDegree?180/Math.PI*Math.acos(x):Math.acos(x));\r\n\t\t},\r\n\t\tadd:function(a,b){\r\n\t\t\treturn a+b;\r\n\t\t},\r\n\t\tasin:function(x){\r\n\t\t\treturn (Mexp.math.isDegree?180/Math.PI*Math.asin(x):Math.asin(x));\r\n\t\t},\r\n\t\tatan:function(x){\r\n\t\t\treturn (Mexp.math.isDegree?180/Math.PI*Math.atan(x):Math.atan(x));\r\n\t\t},\r\n\t\tacosh:function(x){\r\n\t\t\treturn Math.log(x+Math.sqrt(x*x-1));\r\n\t\t},\r\n\t\tasinh:function(x){\r\n\t\t\treturn Math.log(x+Math.sqrt(x*x+1));\r\n\t\t},\r\n\t\tatanh:function(x){\r\n\t\t\treturn Math.log((1+x)/(1-x));\r\n\t\t},\r\n\t\tC:function(n,r){\r\n\t\t\tvar pro=1,other=n-r,choice=r;\r\n\t\t\tif(choice<other){\r\n\t\t\tchoice=other;\r\n\t\t\tother=r;\r\n\t\t\t}\r\n\t\t\tfor(var i=choice+1;i<=n;i++)\r\n\t\t\t\tpro*=i;\r\n\t\t\treturn pro/Mexp.math.fact(other);\r\n\t\t},\r\n\t\tchangeSign:function(x){\r\n\t\t\treturn -x;\r\n\t\t},\r\n\t\tcos:function(x){\r\n\t\t\tif(Mexp.math.isDegree)x=Mexp.math.toRadian(x);\r\n\t\t\treturn Math.cos(x);\r\n\t\t},\r\n\t\tcosh:function(x){\r\n\t\t\treturn (Math.pow(Math.E,x)+Math.pow(Math.E,-1*x))/2;\r\n\t\t},\r\n\t\tdiv:function(a,b){\r\n\t\treturn a/b;\r\n\t\t},\r\n\t\tfact:function(n) {\r\n\t\tif(n%1!==0)return \"NAN\";\r\n\t\t\tvar pro=1;\r\n\t\t\tfor(var i=2;i<=n;i++)\r\n\t\t\t\tpro*=i;\r\n\t\t\treturn pro;\r\n\t\t},\r\n\t\tinverse:function(x){\r\n\t\t\treturn 1/x;\r\n\t\t},\r\n\t\tlog:function(i){\r\n\t\t\treturn Math.log(i)/Math.log(10);\r\n\t\t},\r\n\t\tmod:function(a,b){\r\n\t\treturn a%b;\r\n\t\t},\r\n\t\tmul:function(a,b){\r\n\t\treturn a*b;\r\n\t\t},\r\n\t\tP:function(n,r){var pro=1;\r\n\t\t\t for(var i=Math.floor(n)-Math.floor(r)+1;i<=Math.floor(n);i++)\r\n\t\t\t\t\tpro*=i;\r\n\t\t\t\t\treturn pro;\r\n\r\n\t\t},\r\n\t\tPi:function(low,high,ex){\r\n\t\t\tvar pro=1;\r\n\t\t\tfor(var i=low;i<=high;i++){\r\n\t\t\t\tpro*=Number(ex.postfixEval({n:i}));\r\n\t\t\t}\r\n\t\t\treturn pro;\r\n\t\t},\r\n\t\tpow10x:function(e){\r\n\t\t\tvar x=1;\r\n\t\t\twhile(e--){x*=10;}\r\n\t\t\treturn x;\r\n\t\t},\r\n\t\tsigma:function(low,high,ex){\r\n\t\t\tvar sum=0;\r\n\t\t\tfor(var i=low;i<=high;i++){\r\n\t\t\t\tsum+=Number(ex.postfixEval({n:i}));\r\n\t\t\t}\r\n\t\t\treturn sum;\r\n\t\t},\r\n\t\tsin:function(x){\r\n\t\t\tif(Mexp.math.isDegree)x=Mexp.math.toRadian(x);\r\n\t\t\treturn Math.sin(x);\r\n\t\t},\r\n\t\tsinh:function(x){\r\n\t\t\treturn (Math.pow(Math.E,x)-Math.pow(Math.E,-1*x))/2;\r\n\t\t},\r\n\t\tsub:function(a,b){\r\n\t\treturn a-b;\r\n\t\t},\r\n\t\ttan:function(x){\r\n\t\t\tif(Mexp.math.isDegree)x=Mexp.math.toRadian(x);\r\n\t\t\treturn Math.tan(x);\r\n\t\t},\r\n\t\ttanh:function(x){\r\n\t\t\treturn Mexp.sinha(x)/Mexp.cosha(x);\r\n\t\t},\r\n\t\ttoRadian:function(x){\r\n\t\t\treturn x*Math.PI/180;\r\n\t\t}\r\n\t};\r\n\tMexp.exception=function(message){\r\n\t\tthis.message=message;\r\n\t};\r\n module.exports=Mexp;","/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = arrayEvery;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nmodule.exports = baseEvery;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./proptypes\"));\n__export(require(\"./colors\"));\n__export(require(\"./unitConverter\"));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar commonValues = {\n loading: true,\n color: \"#000000\",\n css: \"\"\n};\nfunction sizeDefaults(sizeValue) {\n return Object.assign({}, commonValues, { size: sizeValue });\n}\nexports.sizeDefaults = sizeDefaults;\nfunction sizeMarginDefaults(sizeValue) {\n return Object.assign({}, sizeDefaults(sizeValue), {\n margin: 2\n });\n}\nexports.sizeMarginDefaults = sizeMarginDefaults;\nfunction heightWidthDefaults(height, width) {\n return Object.assign({}, commonValues, {\n height: height,\n width: width\n });\n}\nexports.heightWidthDefaults = heightWidthDefaults;\nfunction heightWidthRadiusDefaults(height, width, radius) {\n if (radius === void 0) { radius = 2; }\n return Object.assign({}, heightWidthDefaults(height, width), {\n radius: radius,\n margin: 2\n });\n}\nexports.heightWidthRadiusDefaults = heightWidthRadiusDefaults;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BasicColors;\n(function (BasicColors) {\n BasicColors[\"maroon\"] = \"#800000\";\n BasicColors[\"red\"] = \"#FF0000\";\n BasicColors[\"orange\"] = \"#FFA500\";\n BasicColors[\"yellow\"] = \"#FFFF00\";\n BasicColors[\"olive\"] = \"#808000\";\n BasicColors[\"green\"] = \"#008000\";\n BasicColors[\"purple\"] = \"#800080\";\n BasicColors[\"fuchsia\"] = \"#FF00FF\";\n BasicColors[\"lime\"] = \"#00FF00\";\n BasicColors[\"teal\"] = \"#008080\";\n BasicColors[\"aqua\"] = \"#00FFFF\";\n BasicColors[\"blue\"] = \"#0000FF\";\n BasicColors[\"navy\"] = \"#000080\";\n BasicColors[\"black\"] = \"#000000\";\n BasicColors[\"gray\"] = \"#808080\";\n BasicColors[\"silver\"] = \"#C0C0C0\";\n BasicColors[\"white\"] = \"#FFFFFF\";\n})(BasicColors || (BasicColors = {}));\nexports.calculateRgba = function (color, opacity) {\n if (Object.keys(BasicColors).includes(color)) {\n color = BasicColors[color];\n }\n if (color[0] === \"#\") {\n color = color.slice(1);\n }\n if (color.length === 3) {\n var res_1 = \"\";\n color.split(\"\").forEach(function (c) {\n res_1 += c;\n res_1 += c;\n });\n color = res_1;\n }\n var rgbValues = color\n .match(/.{2}/g)\n .map(function (hex) { return parseInt(hex, 16); })\n .join(\", \");\n return \"rgba(\" + rgbValues + \", \" + opacity + \")\";\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cssUnit = {\n cm: true,\n mm: true,\n in: true,\n px: true,\n pt: true,\n pc: true,\n em: true,\n ex: true,\n ch: true,\n rem: true,\n vw: true,\n vh: true,\n vmin: true,\n vmax: true,\n \"%\": true\n};\n/**\n * If size is a number, append px to the value as default unit.\n * If size is a string, validate against list of valid units.\n * If unit is valid, return size as is.\n * If unit is invalid, console warn issue, replace with px as the unit.\n *\n * @param {(number | string)} size\n * @return {LengthObject} LengthObject\n */\nfunction parseLengthAndUnit(size) {\n if (typeof size === \"number\") {\n return {\n value: size,\n unit: \"px\"\n };\n }\n var value;\n var valueString = size.match(/^[0-9.]*/).toString();\n if (valueString.includes(\".\")) {\n value = parseFloat(valueString);\n }\n else {\n value = parseInt(valueString, 10);\n }\n var unit = size.match(/[^0-9]*$/).toString();\n if (cssUnit[unit]) {\n return {\n value: value,\n unit: unit\n };\n }\n console.warn(\"React Spinners: \" + size + \" is not a valid css value. Defaulting to \" + value + \"px.\");\n return {\n value: value,\n unit: \"px\"\n };\n}\nexports.parseLengthAndUnit = parseLengthAndUnit;\n/**\n * Take value as an input and return valid css value\n *\n * @param {(number | string)} value\n * @return {string} valid css value\n */\nfunction cssValue(value) {\n var lengthWithunit = parseLengthAndUnit(value);\n return \"\" + lengthWithunit.value + lengthWithunit.unit;\n}\nexports.cssValue = cssValue;\n","/*! nouislider - 14.1.1 - 12/15/2019 */\n(function(factory) {\n if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === \"object\") {\n // Node/CommonJS\n module.exports = factory();\n } else {\n // Browser globals\n window.noUiSlider = factory();\n }\n})(function() {\n \"use strict\";\n\n var VERSION = \"14.1.1\";\n\n //region Helper Methods\n\n function isValidFormatter(entry) {\n return typeof entry === \"object\" && typeof entry.to === \"function\" && typeof entry.from === \"function\";\n }\n\n function removeElement(el) {\n el.parentElement.removeChild(el);\n }\n\n function isSet(value) {\n return value !== null && value !== undefined;\n }\n\n // Bindable version\n function preventDefault(e) {\n e.preventDefault();\n }\n\n // Removes duplicates from an array.\n function unique(array) {\n return array.filter(function(a) {\n return !this[a] ? (this[a] = true) : false;\n }, {});\n }\n\n // Round a value to the closest 'to'.\n function closest(value, to) {\n return Math.round(value / to) * to;\n }\n\n // Current position of an element relative to the document.\n function offset(elem, orientation) {\n var rect = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var docElem = doc.documentElement;\n var pageOffset = getPageOffset(doc);\n\n // getBoundingClientRect contains left scroll in Chrome on Android.\n // I haven't found a feature detection that proves this. Worst case\n // scenario on mis-match: the 'tap' feature on horizontal sliders breaks.\n if (/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)) {\n pageOffset.x = 0;\n }\n\n return orientation\n ? rect.top + pageOffset.y - docElem.clientTop\n : rect.left + pageOffset.x - docElem.clientLeft;\n }\n\n // Checks whether a value is numerical.\n function isNumeric(a) {\n return typeof a === \"number\" && !isNaN(a) && isFinite(a);\n }\n\n // Sets a class and removes it after [duration] ms.\n function addClassFor(element, className, duration) {\n if (duration > 0) {\n addClass(element, className);\n setTimeout(function() {\n removeClass(element, className);\n }, duration);\n }\n }\n\n // Limits a value to 0 - 100\n function limit(a) {\n return Math.max(Math.min(a, 100), 0);\n }\n\n // Wraps a variable as an array, if it isn't one yet.\n // Note that an input array is returned by reference!\n function asArray(a) {\n return Array.isArray(a) ? a : [a];\n }\n\n // Counts decimals\n function countDecimals(numStr) {\n numStr = String(numStr);\n var pieces = numStr.split(\".\");\n return pieces.length > 1 ? pieces[1].length : 0;\n }\n\n // http://youmightnotneedjquery.com/#add_class\n function addClass(el, className) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n el.className += \" \" + className;\n }\n }\n\n // http://youmightnotneedjquery.com/#remove_class\n function removeClass(el, className) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(\n new RegExp(\"(^|\\\\b)\" + className.split(\" \").join(\"|\") + \"(\\\\b|$)\", \"gi\"),\n \" \"\n );\n }\n }\n\n // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/\n function hasClass(el, className) {\n return el.classList\n ? el.classList.contains(className)\n : new RegExp(\"\\\\b\" + className + \"\\\\b\").test(el.className);\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes\n function getPageOffset(doc) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (doc.compatMode || \"\") === \"CSS1Compat\";\n var x = supportPageOffset\n ? window.pageXOffset\n : isCSS1Compat\n ? doc.documentElement.scrollLeft\n : doc.body.scrollLeft;\n var y = supportPageOffset\n ? window.pageYOffset\n : isCSS1Compat\n ? doc.documentElement.scrollTop\n : doc.body.scrollTop;\n\n return {\n x: x,\n y: y\n };\n }\n\n // we provide a function to compute constants instead\n // of accessing window.* as soon as the module needs it\n // so that we do not compute anything if not needed\n function getActions() {\n // Determine the events to bind. IE11 implements pointerEvents without\n // a prefix, which breaks compatibility with the IE10 implementation.\n return window.navigator.pointerEnabled\n ? {\n start: \"pointerdown\",\n move: \"pointermove\",\n end: \"pointerup\"\n }\n : window.navigator.msPointerEnabled\n ? {\n start: \"MSPointerDown\",\n move: \"MSPointerMove\",\n end: \"MSPointerUp\"\n }\n : {\n start: \"mousedown touchstart\",\n move: \"mousemove touchmove\",\n end: \"mouseup touchend\"\n };\n }\n\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n // Issue #785\n function getSupportsPassive() {\n var supportsPassive = false;\n\n /* eslint-disable */\n try {\n var opts = Object.defineProperty({}, \"passive\", {\n get: function() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener(\"test\", null, opts);\n } catch (e) {}\n /* eslint-enable */\n\n return supportsPassive;\n }\n\n function getSupportsTouchActionNone() {\n return window.CSS && CSS.supports && CSS.supports(\"touch-action\", \"none\");\n }\n\n //endregion\n\n //region Range Calculation\n\n // Determine the size of a sub-range in relation to a full range.\n function subRangeRatio(pa, pb) {\n return 100 / (pb - pa);\n }\n\n // (percentage) How many percent is this value of this range?\n function fromPercentage(range, value) {\n return (value * 100) / (range[1] - range[0]);\n }\n\n // (percentage) Where is this value on this range?\n function toPercentage(range, value) {\n return fromPercentage(range, range[0] < 0 ? value + Math.abs(range[0]) : value - range[0]);\n }\n\n // (value) How much is this percentage on this range?\n function isPercentage(range, value) {\n return (value * (range[1] - range[0])) / 100 + range[0];\n }\n\n function getJ(value, arr) {\n var j = 1;\n\n while (value >= arr[j]) {\n j += 1;\n }\n\n return j;\n }\n\n // (percentage) Input a value, find where, on a scale of 0-100, it applies.\n function toStepping(xVal, xPct, value) {\n if (value >= xVal.slice(-1)[0]) {\n return 100;\n }\n\n var j = getJ(value, xVal);\n var va = xVal[j - 1];\n var vb = xVal[j];\n var pa = xPct[j - 1];\n var pb = xPct[j];\n\n return pa + toPercentage([va, vb], value) / subRangeRatio(pa, pb);\n }\n\n // (value) Input a percentage, find where it is on the specified range.\n function fromStepping(xVal, xPct, value) {\n // There is no range group that fits 100\n if (value >= 100) {\n return xVal.slice(-1)[0];\n }\n\n var j = getJ(value, xPct);\n var va = xVal[j - 1];\n var vb = xVal[j];\n var pa = xPct[j - 1];\n var pb = xPct[j];\n\n return isPercentage([va, vb], (value - pa) * subRangeRatio(pa, pb));\n }\n\n // (percentage) Get the step that applies at a certain value.\n function getStep(xPct, xSteps, snap, value) {\n if (value === 100) {\n return value;\n }\n\n var j = getJ(value, xPct);\n var a = xPct[j - 1];\n var b = xPct[j];\n\n // If 'snap' is set, steps are used as fixed points on the slider.\n if (snap) {\n // Find the closest position, a or b.\n if (value - a > (b - a) / 2) {\n return b;\n }\n\n return a;\n }\n\n if (!xSteps[j - 1]) {\n return value;\n }\n\n return xPct[j - 1] + closest(value - xPct[j - 1], xSteps[j - 1]);\n }\n\n function handleEntryPoint(index, value, that) {\n var percentage;\n\n // Wrap numerical input in an array.\n if (typeof value === \"number\") {\n value = [value];\n }\n\n // Reject any invalid input, by testing whether value is an array.\n if (!Array.isArray(value)) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'range' contains invalid value.\");\n }\n\n // Covert min/max syntax to 0 and 100.\n if (index === \"min\") {\n percentage = 0;\n } else if (index === \"max\") {\n percentage = 100;\n } else {\n percentage = parseFloat(index);\n }\n\n // Check for correct input.\n if (!isNumeric(percentage) || !isNumeric(value[0])) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'range' value isn't numeric.\");\n }\n\n // Store values.\n that.xPct.push(percentage);\n that.xVal.push(value[0]);\n\n // NaN will evaluate to false too, but to keep\n // logging clear, set step explicitly. Make sure\n // not to override the 'step' setting with false.\n if (!percentage) {\n if (!isNaN(value[1])) {\n that.xSteps[0] = value[1];\n }\n } else {\n that.xSteps.push(isNaN(value[1]) ? false : value[1]);\n }\n\n that.xHighestCompleteStep.push(0);\n }\n\n function handleStepPoint(i, n, that) {\n // Ignore 'false' stepping.\n if (!n) {\n return;\n }\n\n // Step over zero-length ranges (#948);\n if (that.xVal[i] === that.xVal[i + 1]) {\n that.xSteps[i] = that.xHighestCompleteStep[i] = that.xVal[i];\n\n return;\n }\n\n // Factor to range ratio\n that.xSteps[i] =\n fromPercentage([that.xVal[i], that.xVal[i + 1]], n) / subRangeRatio(that.xPct[i], that.xPct[i + 1]);\n\n var totalSteps = (that.xVal[i + 1] - that.xVal[i]) / that.xNumSteps[i];\n var highestStep = Math.ceil(Number(totalSteps.toFixed(3)) - 1);\n var step = that.xVal[i] + that.xNumSteps[i] * highestStep;\n\n that.xHighestCompleteStep[i] = step;\n }\n\n //endregion\n\n //region Spectrum\n\n function Spectrum(entry, snap, singleStep) {\n this.xPct = [];\n this.xVal = [];\n this.xSteps = [singleStep || false];\n this.xNumSteps = [false];\n this.xHighestCompleteStep = [];\n\n this.snap = snap;\n\n var index;\n var ordered = []; // [0, 'min'], [1, '50%'], [2, 'max']\n\n // Map the object keys to an array.\n for (index in entry) {\n if (entry.hasOwnProperty(index)) {\n ordered.push([entry[index], index]);\n }\n }\n\n // Sort all entries by value (numeric sort).\n if (ordered.length && typeof ordered[0][0] === \"object\") {\n ordered.sort(function(a, b) {\n return a[0][0] - b[0][0];\n });\n } else {\n ordered.sort(function(a, b) {\n return a[0] - b[0];\n });\n }\n\n // Convert all entries to subranges.\n for (index = 0; index < ordered.length; index++) {\n handleEntryPoint(ordered[index][1], ordered[index][0], this);\n }\n\n // Store the actual step values.\n // xSteps is sorted in the same order as xPct and xVal.\n this.xNumSteps = this.xSteps.slice(0);\n\n // Convert all numeric steps to the percentage of the subrange they represent.\n for (index = 0; index < this.xNumSteps.length; index++) {\n handleStepPoint(index, this.xNumSteps[index], this);\n }\n }\n\n Spectrum.prototype.getMargin = function(value) {\n var step = this.xNumSteps[0];\n\n if (step && (value / step) % 1 !== 0) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'limit', 'margin' and 'padding' must be divisible by step.\");\n }\n\n return this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false;\n };\n\n Spectrum.prototype.toStepping = function(value) {\n value = toStepping(this.xVal, this.xPct, value);\n\n return value;\n };\n\n Spectrum.prototype.fromStepping = function(value) {\n return fromStepping(this.xVal, this.xPct, value);\n };\n\n Spectrum.prototype.getStep = function(value) {\n value = getStep(this.xPct, this.xSteps, this.snap, value);\n\n return value;\n };\n\n Spectrum.prototype.getDefaultStep = function(value, isDown, size) {\n var j = getJ(value, this.xPct);\n\n // When at the top or stepping down, look at the previous sub-range\n if (value === 100 || (isDown && value === this.xPct[j - 1])) {\n j = Math.max(j - 1, 1);\n }\n\n return (this.xVal[j] - this.xVal[j - 1]) / size;\n };\n\n Spectrum.prototype.getNearbySteps = function(value) {\n var j = getJ(value, this.xPct);\n\n return {\n stepBefore: {\n startValue: this.xVal[j - 2],\n step: this.xNumSteps[j - 2],\n highestStep: this.xHighestCompleteStep[j - 2]\n },\n thisStep: {\n startValue: this.xVal[j - 1],\n step: this.xNumSteps[j - 1],\n highestStep: this.xHighestCompleteStep[j - 1]\n },\n stepAfter: {\n startValue: this.xVal[j],\n step: this.xNumSteps[j],\n highestStep: this.xHighestCompleteStep[j]\n }\n };\n };\n\n Spectrum.prototype.countStepDecimals = function() {\n var stepDecimals = this.xNumSteps.map(countDecimals);\n return Math.max.apply(null, stepDecimals);\n };\n\n // Outside testing\n Spectrum.prototype.convert = function(value) {\n return this.getStep(this.toStepping(value));\n };\n\n //endregion\n\n //region Options\n\n /*\tEvery input option is tested and parsed. This'll prevent\n endless validation in internal methods. These tests are\n structured with an item for every option available. An\n option can be marked as required by setting the 'r' flag.\n The testing function is provided with three arguments:\n - The provided value for the option;\n - A reference to the options object;\n - The name for the option;\n\n The testing function returns false when an error is detected,\n or true when everything is OK. It can also modify the option\n object, to make sure all values can be correctly looped elsewhere. */\n\n var defaultFormatter = {\n to: function(value) {\n return value !== undefined && value.toFixed(2);\n },\n from: Number\n };\n\n function validateFormat(entry) {\n // Any object with a to and from method is supported.\n if (isValidFormatter(entry)) {\n return true;\n }\n\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'format' requires 'to' and 'from' methods.\");\n }\n\n function testStep(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'step' is not numeric.\");\n }\n\n // The step option can still be used to set stepping\n // for linear sliders. Overwritten if set in 'range'.\n parsed.singleStep = entry;\n }\n\n function testRange(parsed, entry) {\n // Filter incorrect input.\n if (typeof entry !== \"object\" || Array.isArray(entry)) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'range' is not an object.\");\n }\n\n // Catch missing start or end.\n if (entry.min === undefined || entry.max === undefined) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): Missing 'min' or 'max' in 'range'.\");\n }\n\n // Catch equal start or end.\n if (entry.min === entry.max) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'range' 'min' and 'max' cannot be equal.\");\n }\n\n parsed.spectrum = new Spectrum(entry, parsed.snap, parsed.singleStep);\n }\n\n function testStart(parsed, entry) {\n entry = asArray(entry);\n\n // Validate input. Values aren't tested, as the public .val method\n // will always provide a valid location.\n if (!Array.isArray(entry) || !entry.length) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'start' option is incorrect.\");\n }\n\n // Store the number of handles.\n parsed.handles = entry.length;\n\n // When the slider is initialized, the .val method will\n // be called with the start options.\n parsed.start = entry;\n }\n\n function testSnap(parsed, entry) {\n // Enforce 100% stepping within subranges.\n parsed.snap = entry;\n\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'snap' option must be a boolean.\");\n }\n }\n\n function testAnimate(parsed, entry) {\n // Enforce 100% stepping within subranges.\n parsed.animate = entry;\n\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'animate' option must be a boolean.\");\n }\n }\n\n function testAnimationDuration(parsed, entry) {\n parsed.animationDuration = entry;\n\n if (typeof entry !== \"number\") {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'animationDuration' option must be a number.\");\n }\n }\n\n function testConnect(parsed, entry) {\n var connect = [false];\n var i;\n\n // Map legacy options\n if (entry === \"lower\") {\n entry = [true, false];\n } else if (entry === \"upper\") {\n entry = [false, true];\n }\n\n // Handle boolean options\n if (entry === true || entry === false) {\n for (i = 1; i < parsed.handles; i++) {\n connect.push(entry);\n }\n\n connect.push(false);\n }\n\n // Reject invalid input\n else if (!Array.isArray(entry) || !entry.length || entry.length !== parsed.handles + 1) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'connect' option doesn't match handle count.\");\n } else {\n connect = entry;\n }\n\n parsed.connect = connect;\n }\n\n function testOrientation(parsed, entry) {\n // Set orientation to an a numerical value for easy\n // array selection.\n switch (entry) {\n case \"horizontal\":\n parsed.ort = 0;\n break;\n case \"vertical\":\n parsed.ort = 1;\n break;\n default:\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'orientation' option is invalid.\");\n }\n }\n\n function testMargin(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'margin' option must be numeric.\");\n }\n\n // Issue #582\n if (entry === 0) {\n return;\n }\n\n parsed.margin = parsed.spectrum.getMargin(entry);\n\n if (!parsed.margin) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'margin' option is only supported on linear sliders.\");\n }\n }\n\n function testLimit(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'limit' option must be numeric.\");\n }\n\n parsed.limit = parsed.spectrum.getMargin(entry);\n\n if (!parsed.limit || parsed.handles < 2) {\n throw new Error(\n \"noUiSlider (\" +\n VERSION +\n \"): 'limit' option is only supported on linear sliders with 2 or more handles.\"\n );\n }\n }\n\n function testPadding(parsed, entry) {\n if (!isNumeric(entry) && !Array.isArray(entry)) {\n throw new Error(\n \"noUiSlider (\" + VERSION + \"): 'padding' option must be numeric or array of exactly 2 numbers.\"\n );\n }\n\n if (Array.isArray(entry) && !(entry.length === 2 || isNumeric(entry[0]) || isNumeric(entry[1]))) {\n throw new Error(\n \"noUiSlider (\" + VERSION + \"): 'padding' option must be numeric or array of exactly 2 numbers.\"\n );\n }\n\n if (entry === 0) {\n return;\n }\n\n if (!Array.isArray(entry)) {\n entry = [entry, entry];\n }\n\n // 'getMargin' returns false for invalid values.\n parsed.padding = [parsed.spectrum.getMargin(entry[0]), parsed.spectrum.getMargin(entry[1])];\n\n if (parsed.padding[0] === false || parsed.padding[1] === false) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option is only supported on linear sliders.\");\n }\n\n if (parsed.padding[0] < 0 || parsed.padding[1] < 0) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option must be a positive number(s).\");\n }\n\n if (parsed.padding[0] + parsed.padding[1] > 100) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option must not exceed 100% of the range.\");\n }\n }\n\n function testDirection(parsed, entry) {\n // Set direction as a numerical value for easy parsing.\n // Invert connection for RTL sliders, so that the proper\n // handles get the connect/background classes.\n switch (entry) {\n case \"ltr\":\n parsed.dir = 0;\n break;\n case \"rtl\":\n parsed.dir = 1;\n break;\n default:\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'direction' option was not recognized.\");\n }\n }\n\n function testBehaviour(parsed, entry) {\n // Make sure the input is a string.\n if (typeof entry !== \"string\") {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'behaviour' must be a string containing options.\");\n }\n\n // Check if the string contains any keywords.\n // None are required.\n var tap = entry.indexOf(\"tap\") >= 0;\n var drag = entry.indexOf(\"drag\") >= 0;\n var fixed = entry.indexOf(\"fixed\") >= 0;\n var snap = entry.indexOf(\"snap\") >= 0;\n var hover = entry.indexOf(\"hover\") >= 0;\n var unconstrained = entry.indexOf(\"unconstrained\") >= 0;\n\n if (fixed) {\n if (parsed.handles !== 2) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'fixed' behaviour must be used with 2 handles\");\n }\n\n // Use margin to enforce fixed state\n testMargin(parsed, parsed.start[1] - parsed.start[0]);\n }\n\n if (unconstrained && (parsed.margin || parsed.limit)) {\n throw new Error(\n \"noUiSlider (\" + VERSION + \"): 'unconstrained' behaviour cannot be used with margin or limit\"\n );\n }\n\n parsed.events = {\n tap: tap || snap,\n drag: drag,\n fixed: fixed,\n snap: snap,\n hover: hover,\n unconstrained: unconstrained\n };\n }\n\n function testTooltips(parsed, entry) {\n if (entry === false) {\n return;\n }\n\n if (entry === true) {\n parsed.tooltips = [];\n\n for (var i = 0; i < parsed.handles; i++) {\n parsed.tooltips.push(true);\n }\n } else {\n parsed.tooltips = asArray(entry);\n\n if (parsed.tooltips.length !== parsed.handles) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): must pass a formatter for all handles.\");\n }\n\n parsed.tooltips.forEach(function(formatter) {\n if (\n typeof formatter !== \"boolean\" &&\n (typeof formatter !== \"object\" || typeof formatter.to !== \"function\")\n ) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'tooltips' must be passed a formatter or 'false'.\");\n }\n });\n }\n }\n\n function testAriaFormat(parsed, entry) {\n parsed.ariaFormat = entry;\n validateFormat(entry);\n }\n\n function testFormat(parsed, entry) {\n parsed.format = entry;\n validateFormat(entry);\n }\n\n function testKeyboardSupport(parsed, entry) {\n parsed.keyboardSupport = entry;\n\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'keyboardSupport' option must be a boolean.\");\n }\n }\n\n function testDocumentElement(parsed, entry) {\n // This is an advanced option. Passed values are used without validation.\n parsed.documentElement = entry;\n }\n\n function testCssPrefix(parsed, entry) {\n if (typeof entry !== \"string\" && entry !== false) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'cssPrefix' must be a string or `false`.\");\n }\n\n parsed.cssPrefix = entry;\n }\n\n function testCssClasses(parsed, entry) {\n if (typeof entry !== \"object\") {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'cssClasses' must be an object.\");\n }\n\n if (typeof parsed.cssPrefix === \"string\") {\n parsed.cssClasses = {};\n\n for (var key in entry) {\n if (!entry.hasOwnProperty(key)) {\n continue;\n }\n\n parsed.cssClasses[key] = parsed.cssPrefix + entry[key];\n }\n } else {\n parsed.cssClasses = entry;\n }\n }\n\n // Test all developer settings and parse to assumption-safe values.\n function testOptions(options) {\n // To prove a fix for #537, freeze options here.\n // If the object is modified, an error will be thrown.\n // Object.freeze(options);\n\n var parsed = {\n margin: 0,\n limit: 0,\n padding: 0,\n animate: true,\n animationDuration: 300,\n ariaFormat: defaultFormatter,\n format: defaultFormatter\n };\n\n // Tests are executed in the order they are presented here.\n var tests = {\n step: { r: false, t: testStep },\n start: { r: true, t: testStart },\n connect: { r: true, t: testConnect },\n direction: { r: true, t: testDirection },\n snap: { r: false, t: testSnap },\n animate: { r: false, t: testAnimate },\n animationDuration: { r: false, t: testAnimationDuration },\n range: { r: true, t: testRange },\n orientation: { r: false, t: testOrientation },\n margin: { r: false, t: testMargin },\n limit: { r: false, t: testLimit },\n padding: { r: false, t: testPadding },\n behaviour: { r: true, t: testBehaviour },\n ariaFormat: { r: false, t: testAriaFormat },\n format: { r: false, t: testFormat },\n tooltips: { r: false, t: testTooltips },\n keyboardSupport: { r: true, t: testKeyboardSupport },\n documentElement: { r: false, t: testDocumentElement },\n cssPrefix: { r: true, t: testCssPrefix },\n cssClasses: { r: true, t: testCssClasses }\n };\n\n var defaults = {\n connect: false,\n direction: \"ltr\",\n behaviour: \"tap\",\n orientation: \"horizontal\",\n keyboardSupport: true,\n cssPrefix: \"noUi-\",\n cssClasses: {\n target: \"target\",\n base: \"base\",\n origin: \"origin\",\n handle: \"handle\",\n handleLower: \"handle-lower\",\n handleUpper: \"handle-upper\",\n touchArea: \"touch-area\",\n horizontal: \"horizontal\",\n vertical: \"vertical\",\n background: \"background\",\n connect: \"connect\",\n connects: \"connects\",\n ltr: \"ltr\",\n rtl: \"rtl\",\n textDirectionLtr: \"txt-dir-ltr\",\n textDirectionRtl: \"txt-dir-rtl\",\n draggable: \"draggable\",\n drag: \"state-drag\",\n tap: \"state-tap\",\n active: \"active\",\n tooltip: \"tooltip\",\n pips: \"pips\",\n pipsHorizontal: \"pips-horizontal\",\n pipsVertical: \"pips-vertical\",\n marker: \"marker\",\n markerHorizontal: \"marker-horizontal\",\n markerVertical: \"marker-vertical\",\n markerNormal: \"marker-normal\",\n markerLarge: \"marker-large\",\n markerSub: \"marker-sub\",\n value: \"value\",\n valueHorizontal: \"value-horizontal\",\n valueVertical: \"value-vertical\",\n valueNormal: \"value-normal\",\n valueLarge: \"value-large\",\n valueSub: \"value-sub\"\n }\n };\n\n // AriaFormat defaults to regular format, if any.\n if (options.format && !options.ariaFormat) {\n options.ariaFormat = options.format;\n }\n\n // Run all options through a testing mechanism to ensure correct\n // input. It should be noted that options might get modified to\n // be handled properly. E.g. wrapping integers in arrays.\n Object.keys(tests).forEach(function(name) {\n // If the option isn't set, but it is required, throw an error.\n if (!isSet(options[name]) && defaults[name] === undefined) {\n if (tests[name].r) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): '\" + name + \"' is required.\");\n }\n\n return true;\n }\n\n tests[name].t(parsed, !isSet(options[name]) ? defaults[name] : options[name]);\n });\n\n // Forward pips options\n parsed.pips = options.pips;\n\n // All recent browsers accept unprefixed transform.\n // We need -ms- for IE9 and -webkit- for older Android;\n // Assume use of -webkit- if unprefixed and -ms- are not supported.\n // https://caniuse.com/#feat=transforms2d\n var d = document.createElement(\"div\");\n var msPrefix = d.style.msTransform !== undefined;\n var noPrefix = d.style.transform !== undefined;\n\n parsed.transformRule = noPrefix ? \"transform\" : msPrefix ? \"msTransform\" : \"webkitTransform\";\n\n // Pips don't move, so we can place them using left/top.\n var styles = [[\"left\", \"top\"], [\"right\", \"bottom\"]];\n\n parsed.style = styles[parsed.dir][parsed.ort];\n\n return parsed;\n }\n\n //endregion\n\n function scope(target, options, originalOptions) {\n var actions = getActions();\n var supportsTouchActionNone = getSupportsTouchActionNone();\n var supportsPassive = supportsTouchActionNone && getSupportsPassive();\n\n // All variables local to 'scope' are prefixed with 'scope_'\n\n // Slider DOM Nodes\n var scope_Target = target;\n var scope_Base;\n var scope_Handles;\n var scope_Connects;\n var scope_Pips;\n var scope_Tooltips;\n\n // Slider state values\n var scope_Spectrum = options.spectrum;\n var scope_Values = [];\n var scope_Locations = [];\n var scope_HandleNumbers = [];\n var scope_ActiveHandlesCount = 0;\n var scope_Events = {};\n\n // Exposed API\n var scope_Self;\n\n // Document Nodes\n var scope_Document = target.ownerDocument;\n var scope_DocumentElement = options.documentElement || scope_Document.documentElement;\n var scope_Body = scope_Document.body;\n\n // Pips constants\n var PIPS_NONE = -1;\n var PIPS_NO_VALUE = 0;\n var PIPS_LARGE_VALUE = 1;\n var PIPS_SMALL_VALUE = 2;\n\n // For horizontal sliders in standard ltr documents,\n // make .noUi-origin overflow to the left so the document doesn't scroll.\n var scope_DirOffset = scope_Document.dir === \"rtl\" || options.ort === 1 ? 0 : 100;\n\n // Creates a node, adds it to target, returns the new node.\n function addNodeTo(addTarget, className) {\n var div = scope_Document.createElement(\"div\");\n\n if (className) {\n addClass(div, className);\n }\n\n addTarget.appendChild(div);\n\n return div;\n }\n\n // Append a origin to the base\n function addOrigin(base, handleNumber) {\n var origin = addNodeTo(base, options.cssClasses.origin);\n var handle = addNodeTo(origin, options.cssClasses.handle);\n\n addNodeTo(handle, options.cssClasses.touchArea);\n\n handle.setAttribute(\"data-handle\", handleNumber);\n\n if (options.keyboardSupport) {\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\n // 0 = focusable and reachable\n handle.setAttribute(\"tabindex\", \"0\");\n handle.addEventListener(\"keydown\", function(event) {\n return eventKeydown(event, handleNumber);\n });\n }\n\n handle.setAttribute(\"role\", \"slider\");\n handle.setAttribute(\"aria-orientation\", options.ort ? \"vertical\" : \"horizontal\");\n\n if (handleNumber === 0) {\n addClass(handle, options.cssClasses.handleLower);\n } else if (handleNumber === options.handles - 1) {\n addClass(handle, options.cssClasses.handleUpper);\n }\n\n return origin;\n }\n\n // Insert nodes for connect elements\n function addConnect(base, add) {\n if (!add) {\n return false;\n }\n\n return addNodeTo(base, options.cssClasses.connect);\n }\n\n // Add handles to the slider base.\n function addElements(connectOptions, base) {\n var connectBase = addNodeTo(base, options.cssClasses.connects);\n\n scope_Handles = [];\n scope_Connects = [];\n\n scope_Connects.push(addConnect(connectBase, connectOptions[0]));\n\n // [::::O====O====O====]\n // connectOptions = [0, 1, 1, 1]\n\n for (var i = 0; i < options.handles; i++) {\n // Keep a list of all added handles.\n scope_Handles.push(addOrigin(base, i));\n scope_HandleNumbers[i] = i;\n scope_Connects.push(addConnect(connectBase, connectOptions[i + 1]));\n }\n }\n\n // Initialize a single slider.\n function addSlider(addTarget) {\n // Apply classes and data to the target.\n addClass(addTarget, options.cssClasses.target);\n\n if (options.dir === 0) {\n addClass(addTarget, options.cssClasses.ltr);\n } else {\n addClass(addTarget, options.cssClasses.rtl);\n }\n\n if (options.ort === 0) {\n addClass(addTarget, options.cssClasses.horizontal);\n } else {\n addClass(addTarget, options.cssClasses.vertical);\n }\n\n var textDirection = getComputedStyle(addTarget).direction;\n\n if (textDirection === \"rtl\") {\n addClass(addTarget, options.cssClasses.textDirectionRtl);\n } else {\n addClass(addTarget, options.cssClasses.textDirectionLtr);\n }\n\n return addNodeTo(addTarget, options.cssClasses.base);\n }\n\n function addTooltip(handle, handleNumber) {\n if (!options.tooltips[handleNumber]) {\n return false;\n }\n\n return addNodeTo(handle.firstChild, options.cssClasses.tooltip);\n }\n\n function isSliderDisabled() {\n return scope_Target.hasAttribute(\"disabled\");\n }\n\n // Disable the slider dragging if any handle is disabled\n function isHandleDisabled(handleNumber) {\n var handleOrigin = scope_Handles[handleNumber];\n return handleOrigin.hasAttribute(\"disabled\");\n }\n\n function removeTooltips() {\n if (scope_Tooltips) {\n removeEvent(\"update.tooltips\");\n scope_Tooltips.forEach(function(tooltip) {\n if (tooltip) {\n removeElement(tooltip);\n }\n });\n scope_Tooltips = null;\n }\n }\n\n // The tooltips option is a shorthand for using the 'update' event.\n function tooltips() {\n removeTooltips();\n\n // Tooltips are added with options.tooltips in original order.\n scope_Tooltips = scope_Handles.map(addTooltip);\n\n bindEvent(\"update.tooltips\", function(values, handleNumber, unencoded) {\n if (!scope_Tooltips[handleNumber]) {\n return;\n }\n\n var formattedValue = values[handleNumber];\n\n if (options.tooltips[handleNumber] !== true) {\n formattedValue = options.tooltips[handleNumber].to(unencoded[handleNumber]);\n }\n\n scope_Tooltips[handleNumber].innerHTML = formattedValue;\n });\n }\n\n function aria() {\n bindEvent(\"update\", function(values, handleNumber, unencoded, tap, positions) {\n // Update Aria Values for all handles, as a change in one changes min and max values for the next.\n scope_HandleNumbers.forEach(function(index) {\n var handle = scope_Handles[index];\n\n var min = checkHandlePosition(scope_Locations, index, 0, true, true, true);\n var max = checkHandlePosition(scope_Locations, index, 100, true, true, true);\n\n var now = positions[index];\n\n // Formatted value for display\n var text = options.ariaFormat.to(unencoded[index]);\n\n // Map to slider range values\n min = scope_Spectrum.fromStepping(min).toFixed(1);\n max = scope_Spectrum.fromStepping(max).toFixed(1);\n now = scope_Spectrum.fromStepping(now).toFixed(1);\n\n handle.children[0].setAttribute(\"aria-valuemin\", min);\n handle.children[0].setAttribute(\"aria-valuemax\", max);\n handle.children[0].setAttribute(\"aria-valuenow\", now);\n handle.children[0].setAttribute(\"aria-valuetext\", text);\n });\n });\n }\n\n function getGroup(mode, values, stepped) {\n // Use the range.\n if (mode === \"range\" || mode === \"steps\") {\n return scope_Spectrum.xVal;\n }\n\n if (mode === \"count\") {\n if (values < 2) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): 'values' (>= 2) required for mode 'count'.\");\n }\n\n // Divide 0 - 100 in 'count' parts.\n var interval = values - 1;\n var spread = 100 / interval;\n\n values = [];\n\n // List these parts and have them handled as 'positions'.\n while (interval--) {\n values[interval] = interval * spread;\n }\n\n values.push(100);\n\n mode = \"positions\";\n }\n\n if (mode === \"positions\") {\n // Map all percentages to on-range values.\n return values.map(function(value) {\n return scope_Spectrum.fromStepping(stepped ? scope_Spectrum.getStep(value) : value);\n });\n }\n\n if (mode === \"values\") {\n // If the value must be stepped, it needs to be converted to a percentage first.\n if (stepped) {\n return values.map(function(value) {\n // Convert to percentage, apply step, return to value.\n return scope_Spectrum.fromStepping(scope_Spectrum.getStep(scope_Spectrum.toStepping(value)));\n });\n }\n\n // Otherwise, we can simply use the values.\n return values;\n }\n }\n\n function generateSpread(density, mode, group) {\n function safeIncrement(value, increment) {\n // Avoid floating point variance by dropping the smallest decimal places.\n return (value + increment).toFixed(7) / 1;\n }\n\n var indexes = {};\n var firstInRange = scope_Spectrum.xVal[0];\n var lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length - 1];\n var ignoreFirst = false;\n var ignoreLast = false;\n var prevPct = 0;\n\n // Create a copy of the group, sort it and filter away all duplicates.\n group = unique(\n group.slice().sort(function(a, b) {\n return a - b;\n })\n );\n\n // Make sure the range starts with the first element.\n if (group[0] !== firstInRange) {\n group.unshift(firstInRange);\n ignoreFirst = true;\n }\n\n // Likewise for the last one.\n if (group[group.length - 1] !== lastInRange) {\n group.push(lastInRange);\n ignoreLast = true;\n }\n\n group.forEach(function(current, index) {\n // Get the current step and the lower + upper positions.\n var step;\n var i;\n var q;\n var low = current;\n var high = group[index + 1];\n var newPct;\n var pctDifference;\n var pctPos;\n var type;\n var steps;\n var realSteps;\n var stepSize;\n var isSteps = mode === \"steps\";\n\n // When using 'steps' mode, use the provided steps.\n // Otherwise, we'll step on to the next subrange.\n if (isSteps) {\n step = scope_Spectrum.xNumSteps[index];\n }\n\n // Default to a 'full' step.\n if (!step) {\n step = high - low;\n }\n\n // Low can be 0, so test for false. If high is undefined,\n // we are at the last subrange. Index 0 is already handled.\n if (low === false || high === undefined) {\n return;\n }\n\n // Make sure step isn't 0, which would cause an infinite loop (#654)\n step = Math.max(step, 0.0000001);\n\n // Find all steps in the subrange.\n for (i = low; i <= high; i = safeIncrement(i, step)) {\n // Get the percentage value for the current step,\n // calculate the size for the subrange.\n newPct = scope_Spectrum.toStepping(i);\n pctDifference = newPct - prevPct;\n\n steps = pctDifference / density;\n realSteps = Math.round(steps);\n\n // This ratio represents the amount of percentage-space a point indicates.\n // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-divided.\n // Round the percentage offset to an even number, then divide by two\n // to spread the offset on both sides of the range.\n stepSize = pctDifference / realSteps;\n\n // Divide all points evenly, adding the correct number to this subrange.\n // Run up to <= so that 100% gets a point, event if ignoreLast is set.\n for (q = 1; q <= realSteps; q += 1) {\n // The ratio between the rounded value and the actual size might be ~1% off.\n // Correct the percentage offset by the number of points\n // per subrange. density = 1 will result in 100 points on the\n // full range, 2 for 50, 4 for 25, etc.\n pctPos = prevPct + q * stepSize;\n indexes[pctPos.toFixed(5)] = [scope_Spectrum.fromStepping(pctPos), 0];\n }\n\n // Determine the point type.\n type = group.indexOf(i) > -1 ? PIPS_LARGE_VALUE : isSteps ? PIPS_SMALL_VALUE : PIPS_NO_VALUE;\n\n // Enforce the 'ignoreFirst' option by overwriting the type for 0.\n if (!index && ignoreFirst) {\n type = 0;\n }\n\n if (!(i === high && ignoreLast)) {\n // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.\n indexes[newPct.toFixed(5)] = [i, type];\n }\n\n // Update the percentage count.\n prevPct = newPct;\n }\n });\n\n return indexes;\n }\n\n function addMarking(spread, filterFunc, formatter) {\n var element = scope_Document.createElement(\"div\");\n\n var valueSizeClasses = [];\n valueSizeClasses[PIPS_NO_VALUE] = options.cssClasses.valueNormal;\n valueSizeClasses[PIPS_LARGE_VALUE] = options.cssClasses.valueLarge;\n valueSizeClasses[PIPS_SMALL_VALUE] = options.cssClasses.valueSub;\n\n var markerSizeClasses = [];\n markerSizeClasses[PIPS_NO_VALUE] = options.cssClasses.markerNormal;\n markerSizeClasses[PIPS_LARGE_VALUE] = options.cssClasses.markerLarge;\n markerSizeClasses[PIPS_SMALL_VALUE] = options.cssClasses.markerSub;\n\n var valueOrientationClasses = [options.cssClasses.valueHorizontal, options.cssClasses.valueVertical];\n var markerOrientationClasses = [options.cssClasses.markerHorizontal, options.cssClasses.markerVertical];\n\n addClass(element, options.cssClasses.pips);\n addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);\n\n function getClasses(type, source) {\n var a = source === options.cssClasses.value;\n var orientationClasses = a ? valueOrientationClasses : markerOrientationClasses;\n var sizeClasses = a ? valueSizeClasses : markerSizeClasses;\n\n return source + \" \" + orientationClasses[options.ort] + \" \" + sizeClasses[type];\n }\n\n function addSpread(offset, value, type) {\n // Apply the filter function, if it is set.\n type = filterFunc ? filterFunc(value, type) : type;\n\n if (type === PIPS_NONE) {\n return;\n }\n\n // Add a marker for every point\n var node = addNodeTo(element, false);\n node.className = getClasses(type, options.cssClasses.marker);\n node.style[options.style] = offset + \"%\";\n\n // Values are only appended for points marked '1' or '2'.\n if (type > PIPS_NO_VALUE) {\n node = addNodeTo(element, false);\n node.className = getClasses(type, options.cssClasses.value);\n node.setAttribute(\"data-value\", value);\n node.style[options.style] = offset + \"%\";\n node.innerHTML = formatter.to(value);\n }\n }\n\n // Append all points.\n Object.keys(spread).forEach(function(offset) {\n addSpread(offset, spread[offset][0], spread[offset][1]);\n });\n\n return element;\n }\n\n function removePips() {\n if (scope_Pips) {\n removeElement(scope_Pips);\n scope_Pips = null;\n }\n }\n\n function pips(grid) {\n // Fix #669\n removePips();\n\n var mode = grid.mode;\n var density = grid.density || 1;\n var filter = grid.filter || false;\n var values = grid.values || false;\n var stepped = grid.stepped || false;\n var group = getGroup(mode, values, stepped);\n var spread = generateSpread(density, mode, group);\n var format = grid.format || {\n to: Math.round\n };\n\n scope_Pips = scope_Target.appendChild(addMarking(spread, filter, format));\n\n return scope_Pips;\n }\n\n // Shorthand for base dimensions.\n function baseSize() {\n var rect = scope_Base.getBoundingClientRect();\n var alt = \"offset\" + [\"Width\", \"Height\"][options.ort];\n return options.ort === 0 ? rect.width || scope_Base[alt] : rect.height || scope_Base[alt];\n }\n\n // Handler for attaching events trough a proxy.\n function attachEvent(events, element, callback, data) {\n // This function can be used to 'filter' events to the slider.\n // element is a node, not a nodeList\n\n var method = function(e) {\n e = fixEvent(e, data.pageOffset, data.target || element);\n\n // fixEvent returns false if this event has a different target\n // when handling (multi-) touch events;\n if (!e) {\n return false;\n }\n\n // doNotReject is passed by all end events to make sure released touches\n // are not rejected, leaving the slider \"stuck\" to the cursor;\n if (isSliderDisabled() && !data.doNotReject) {\n return false;\n }\n\n // Stop if an active 'tap' transition is taking place.\n if (hasClass(scope_Target, options.cssClasses.tap) && !data.doNotReject) {\n return false;\n }\n\n // Ignore right or middle clicks on start #454\n if (events === actions.start && e.buttons !== undefined && e.buttons > 1) {\n return false;\n }\n\n // Ignore right or middle clicks on start #454\n if (data.hover && e.buttons) {\n return false;\n }\n\n // 'supportsPassive' is only true if a browser also supports touch-action: none in CSS.\n // iOS safari does not, so it doesn't get to benefit from passive scrolling. iOS does support\n // touch-action: manipulation, but that allows panning, which breaks\n // sliders after zooming/on non-responsive pages.\n // See: https://bugs.webkit.org/show_bug.cgi?id=133112\n if (!supportsPassive) {\n e.preventDefault();\n }\n\n e.calcPoint = e.points[options.ort];\n\n // Call the event handler with the event [ and additional data ].\n callback(e, data);\n };\n\n var methods = [];\n\n // Bind a closure on the target for every event type.\n events.split(\" \").forEach(function(eventName) {\n element.addEventListener(eventName, method, supportsPassive ? { passive: true } : false);\n methods.push([eventName, method]);\n });\n\n return methods;\n }\n\n // Provide a clean event with standardized offset values.\n function fixEvent(e, pageOffset, eventTarget) {\n // Filter the event to register the type, which can be\n // touch, mouse or pointer. Offset changes need to be\n // made on an event specific basis.\n var touch = e.type.indexOf(\"touch\") === 0;\n var mouse = e.type.indexOf(\"mouse\") === 0;\n var pointer = e.type.indexOf(\"pointer\") === 0;\n\n var x;\n var y;\n\n // IE10 implemented pointer events with a prefix;\n if (e.type.indexOf(\"MSPointer\") === 0) {\n pointer = true;\n }\n\n // The only thing one handle should be concerned about is the touches that originated on top of it.\n if (touch) {\n // Returns true if a touch originated on the target.\n var isTouchOnTarget = function(checkTouch) {\n return checkTouch.target === eventTarget || eventTarget.contains(checkTouch.target);\n };\n\n // In the case of touchstart events, we need to make sure there is still no more than one\n // touch on the target so we look amongst all touches.\n if (e.type === \"touchstart\") {\n var targetTouches = Array.prototype.filter.call(e.touches, isTouchOnTarget);\n\n // Do not support more than one touch per handle.\n if (targetTouches.length > 1) {\n return false;\n }\n\n x = targetTouches[0].pageX;\n y = targetTouches[0].pageY;\n } else {\n // In the other cases, find on changedTouches is enough.\n var targetTouch = Array.prototype.find.call(e.changedTouches, isTouchOnTarget);\n\n // Cancel if the target touch has not moved.\n if (!targetTouch) {\n return false;\n }\n\n x = targetTouch.pageX;\n y = targetTouch.pageY;\n }\n }\n\n pageOffset = pageOffset || getPageOffset(scope_Document);\n\n if (mouse || pointer) {\n x = e.clientX + pageOffset.x;\n y = e.clientY + pageOffset.y;\n }\n\n e.pageOffset = pageOffset;\n e.points = [x, y];\n e.cursor = mouse || pointer; // Fix #435\n\n return e;\n }\n\n // Translate a coordinate in the document to a percentage on the slider\n function calcPointToPercentage(calcPoint) {\n var location = calcPoint - offset(scope_Base, options.ort);\n var proposal = (location * 100) / baseSize();\n\n // Clamp proposal between 0% and 100%\n // Out-of-bound coordinates may occur when .noUi-base pseudo-elements\n // are used (e.g. contained handles feature)\n proposal = limit(proposal);\n\n return options.dir ? 100 - proposal : proposal;\n }\n\n // Find handle closest to a certain percentage on the slider\n function getClosestHandle(clickedPosition) {\n var smallestDifference = 100;\n var handleNumber = false;\n\n scope_Handles.forEach(function(handle, index) {\n // Disabled handles are ignored\n if (isHandleDisabled(index)) {\n return;\n }\n\n var handlePosition = scope_Locations[index];\n var differenceWithThisHandle = Math.abs(handlePosition - clickedPosition);\n\n // Initial state\n var clickAtEdge = differenceWithThisHandle === 100 && smallestDifference === 100;\n\n // Difference with this handle is smaller than the previously checked handle\n var isCloser = differenceWithThisHandle < smallestDifference;\n var isCloserAfter = differenceWithThisHandle <= smallestDifference && clickedPosition > handlePosition;\n\n if (isCloser || isCloserAfter || clickAtEdge) {\n handleNumber = index;\n smallestDifference = differenceWithThisHandle;\n }\n });\n\n return handleNumber;\n }\n\n // Fire 'end' when a mouse or pen leaves the document.\n function documentLeave(event, data) {\n if (event.type === \"mouseout\" && event.target.nodeName === \"HTML\" && event.relatedTarget === null) {\n eventEnd(event, data);\n }\n }\n\n // Handle movement on document for handle and range drag.\n function eventMove(event, data) {\n // Fix #498\n // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).\n // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero\n // IE9 has .buttons and .which zero on mousemove.\n // Firefox breaks the spec MDN defines.\n if (navigator.appVersion.indexOf(\"MSIE 9\") === -1 && event.buttons === 0 && data.buttonsProperty !== 0) {\n return eventEnd(event, data);\n }\n\n // Check if we are moving up or down\n var movement = (options.dir ? -1 : 1) * (event.calcPoint - data.startCalcPoint);\n\n // Convert the movement into a percentage of the slider width/height\n var proposal = (movement * 100) / data.baseSize;\n\n moveHandles(movement > 0, proposal, data.locations, data.handleNumbers);\n }\n\n // Unbind move events on document, call callbacks.\n function eventEnd(event, data) {\n // The handle is no longer active, so remove the class.\n if (data.handle) {\n removeClass(data.handle, options.cssClasses.active);\n scope_ActiveHandlesCount -= 1;\n }\n\n // Unbind the move and end events, which are added on 'start'.\n data.listeners.forEach(function(c) {\n scope_DocumentElement.removeEventListener(c[0], c[1]);\n });\n\n if (scope_ActiveHandlesCount === 0) {\n // Remove dragging class.\n removeClass(scope_Target, options.cssClasses.drag);\n setZindex();\n\n // Remove cursor styles and text-selection events bound to the body.\n if (event.cursor) {\n scope_Body.style.cursor = \"\";\n scope_Body.removeEventListener(\"selectstart\", preventDefault);\n }\n }\n\n data.handleNumbers.forEach(function(handleNumber) {\n fireEvent(\"change\", handleNumber);\n fireEvent(\"set\", handleNumber);\n fireEvent(\"end\", handleNumber);\n });\n }\n\n // Bind move events on document.\n function eventStart(event, data) {\n // Ignore event if any handle is disabled\n if (data.handleNumbers.some(isHandleDisabled)) {\n return false;\n }\n\n var handle;\n\n if (data.handleNumbers.length === 1) {\n var handleOrigin = scope_Handles[data.handleNumbers[0]];\n\n handle = handleOrigin.children[0];\n scope_ActiveHandlesCount += 1;\n\n // Mark the handle as 'active' so it can be styled.\n addClass(handle, options.cssClasses.active);\n }\n\n // A drag should never propagate up to the 'tap' event.\n event.stopPropagation();\n\n // Record the event listeners.\n var listeners = [];\n\n // Attach the move and end events.\n var moveEvent = attachEvent(actions.move, scope_DocumentElement, eventMove, {\n // The event target has changed so we need to propagate the original one so that we keep\n // relying on it to extract target touches.\n target: event.target,\n handle: handle,\n listeners: listeners,\n startCalcPoint: event.calcPoint,\n baseSize: baseSize(),\n pageOffset: event.pageOffset,\n handleNumbers: data.handleNumbers,\n buttonsProperty: event.buttons,\n locations: scope_Locations.slice()\n });\n\n var endEvent = attachEvent(actions.end, scope_DocumentElement, eventEnd, {\n target: event.target,\n handle: handle,\n listeners: listeners,\n doNotReject: true,\n handleNumbers: data.handleNumbers\n });\n\n var outEvent = attachEvent(\"mouseout\", scope_DocumentElement, documentLeave, {\n target: event.target,\n handle: handle,\n listeners: listeners,\n doNotReject: true,\n handleNumbers: data.handleNumbers\n });\n\n // We want to make sure we pushed the listeners in the listener list rather than creating\n // a new one as it has already been passed to the event handlers.\n listeners.push.apply(listeners, moveEvent.concat(endEvent, outEvent));\n\n // Text selection isn't an issue on touch devices,\n // so adding cursor styles can be skipped.\n if (event.cursor) {\n // Prevent the 'I' cursor and extend the range-drag cursor.\n scope_Body.style.cursor = getComputedStyle(event.target).cursor;\n\n // Mark the target with a dragging state.\n if (scope_Handles.length > 1) {\n addClass(scope_Target, options.cssClasses.drag);\n }\n\n // Prevent text selection when dragging the handles.\n // In noUiSlider <= 9.2.0, this was handled by calling preventDefault on mouse/touch start/move,\n // which is scroll blocking. The selectstart event is supported by FireFox starting from version 52,\n // meaning the only holdout is iOS Safari. This doesn't matter: text selection isn't triggered there.\n // The 'cursor' flag is false.\n // See: http://caniuse.com/#search=selectstart\n scope_Body.addEventListener(\"selectstart\", preventDefault, false);\n }\n\n data.handleNumbers.forEach(function(handleNumber) {\n fireEvent(\"start\", handleNumber);\n });\n }\n\n // Move closest handle to tapped location.\n function eventTap(event) {\n // The tap event shouldn't propagate up\n event.stopPropagation();\n\n var proposal = calcPointToPercentage(event.calcPoint);\n var handleNumber = getClosestHandle(proposal);\n\n // Tackle the case that all handles are 'disabled'.\n if (handleNumber === false) {\n return false;\n }\n\n // Flag the slider as it is now in a transitional state.\n // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.\n if (!options.events.snap) {\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\n }\n\n setHandle(handleNumber, proposal, true, true);\n\n setZindex();\n\n fireEvent(\"slide\", handleNumber, true);\n fireEvent(\"update\", handleNumber, true);\n fireEvent(\"change\", handleNumber, true);\n fireEvent(\"set\", handleNumber, true);\n\n if (options.events.snap) {\n eventStart(event, { handleNumbers: [handleNumber] });\n }\n }\n\n // Fires a 'hover' event for a hovered mouse/pen position.\n function eventHover(event) {\n var proposal = calcPointToPercentage(event.calcPoint);\n\n var to = scope_Spectrum.getStep(proposal);\n var value = scope_Spectrum.fromStepping(to);\n\n Object.keys(scope_Events).forEach(function(targetEvent) {\n if (\"hover\" === targetEvent.split(\".\")[0]) {\n scope_Events[targetEvent].forEach(function(callback) {\n callback.call(scope_Self, value);\n });\n }\n });\n }\n\n // Handles keydown on focused handles\n // Don't move the document when pressing arrow keys on focused handles\n function eventKeydown(event, handleNumber) {\n if (isSliderDisabled() || isHandleDisabled(handleNumber)) {\n return false;\n }\n\n var horizontalKeys = [\"Left\", \"Right\"];\n var verticalKeys = [\"Down\", \"Up\"];\n var largeStepKeys = [\"PageDown\", \"PageUp\"];\n var edgeKeys = [\"Home\", \"End\"];\n\n if (options.dir && !options.ort) {\n // On an right-to-left slider, the left and right keys act inverted\n horizontalKeys.reverse();\n } else if (options.ort && !options.dir) {\n // On a top-to-bottom slider, the up and down keys act inverted\n verticalKeys.reverse();\n largeStepKeys.reverse();\n }\n\n // Strip \"Arrow\" for IE compatibility. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\n var key = event.key.replace(\"Arrow\", \"\");\n\n var isLargeDown = key === largeStepKeys[0];\n var isLargeUp = key === largeStepKeys[1];\n var isDown = key === verticalKeys[0] || key === horizontalKeys[0] || isLargeDown;\n var isUp = key === verticalKeys[1] || key === horizontalKeys[1] || isLargeUp;\n var isMin = key === edgeKeys[0];\n var isMax = key === edgeKeys[1];\n\n if (!isDown && !isUp && !isMin && !isMax) {\n return true;\n }\n\n event.preventDefault();\n\n var to;\n\n if (isUp || isDown) {\n var multiplier = 5;\n var direction = isDown ? 0 : 1;\n var steps = getNextStepsForHandle(handleNumber);\n var step = steps[direction];\n\n // At the edge of a slider, do nothing\n if (step === null) {\n return false;\n }\n\n // No step set, use the default of 10% of the sub-range\n if (step === false) {\n step = scope_Spectrum.getDefaultStep(scope_Locations[handleNumber], isDown, 10);\n }\n\n if (isLargeUp || isLargeDown) {\n step *= multiplier;\n }\n\n // Step over zero-length ranges (#948);\n step = Math.max(step, 0.0000001);\n\n // Decrement for down steps\n step = (isDown ? -1 : 1) * step;\n\n to = scope_Values[handleNumber] + step;\n } else if (isMax) {\n // End key\n to = options.spectrum.xVal[options.spectrum.xVal.length - 1];\n } else {\n // Home key\n to = options.spectrum.xVal[0];\n }\n\n setHandle(handleNumber, scope_Spectrum.toStepping(to), true, true);\n\n fireEvent(\"slide\", handleNumber);\n fireEvent(\"update\", handleNumber);\n fireEvent(\"change\", handleNumber);\n fireEvent(\"set\", handleNumber);\n\n return false;\n }\n\n // Attach events to several slider parts.\n function bindSliderEvents(behaviour) {\n // Attach the standard drag event to the handles.\n if (!behaviour.fixed) {\n scope_Handles.forEach(function(handle, index) {\n // These events are only bound to the visual handle\n // element, not the 'real' origin element.\n attachEvent(actions.start, handle.children[0], eventStart, {\n handleNumbers: [index]\n });\n });\n }\n\n // Attach the tap event to the slider base.\n if (behaviour.tap) {\n attachEvent(actions.start, scope_Base, eventTap, {});\n }\n\n // Fire hover events\n if (behaviour.hover) {\n attachEvent(actions.move, scope_Base, eventHover, {\n hover: true\n });\n }\n\n // Make the range draggable.\n if (behaviour.drag) {\n scope_Connects.forEach(function(connect, index) {\n if (connect === false || index === 0 || index === scope_Connects.length - 1) {\n return;\n }\n\n var handleBefore = scope_Handles[index - 1];\n var handleAfter = scope_Handles[index];\n var eventHolders = [connect];\n\n addClass(connect, options.cssClasses.draggable);\n\n // When the range is fixed, the entire range can\n // be dragged by the handles. The handle in the first\n // origin will propagate the start event upward,\n // but it needs to be bound manually on the other.\n if (behaviour.fixed) {\n eventHolders.push(handleBefore.children[0]);\n eventHolders.push(handleAfter.children[0]);\n }\n\n eventHolders.forEach(function(eventHolder) {\n attachEvent(actions.start, eventHolder, eventStart, {\n handles: [handleBefore, handleAfter],\n handleNumbers: [index - 1, index]\n });\n });\n });\n }\n }\n\n // Attach an event to this slider, possibly including a namespace\n function bindEvent(namespacedEvent, callback) {\n scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];\n scope_Events[namespacedEvent].push(callback);\n\n // If the event bound is 'update,' fire it immediately for all handles.\n if (namespacedEvent.split(\".\")[0] === \"update\") {\n scope_Handles.forEach(function(a, index) {\n fireEvent(\"update\", index);\n });\n }\n }\n\n // Undo attachment of event\n function removeEvent(namespacedEvent) {\n var event = namespacedEvent && namespacedEvent.split(\".\")[0];\n var namespace = event && namespacedEvent.substring(event.length);\n\n Object.keys(scope_Events).forEach(function(bind) {\n var tEvent = bind.split(\".\")[0];\n var tNamespace = bind.substring(tEvent.length);\n\n if ((!event || event === tEvent) && (!namespace || namespace === tNamespace)) {\n delete scope_Events[bind];\n }\n });\n }\n\n // External event handling\n function fireEvent(eventName, handleNumber, tap) {\n Object.keys(scope_Events).forEach(function(targetEvent) {\n var eventType = targetEvent.split(\".\")[0];\n\n if (eventName === eventType) {\n scope_Events[targetEvent].forEach(function(callback) {\n callback.call(\n // Use the slider public API as the scope ('this')\n scope_Self,\n // Return values as array, so arg_1[arg_2] is always valid.\n scope_Values.map(options.format.to),\n // Handle index, 0 or 1\n handleNumber,\n // Un-formatted slider values\n scope_Values.slice(),\n // Event is fired by tap, true or false\n tap || false,\n // Left offset of the handle, in relation to the slider\n scope_Locations.slice()\n );\n });\n }\n });\n }\n\n // Split out the handle positioning logic so the Move event can use it, too\n function checkHandlePosition(reference, handleNumber, to, lookBackward, lookForward, getValue) {\n // For sliders with multiple handles, limit movement to the other handle.\n // Apply the margin option by adding it to the handle positions.\n if (scope_Handles.length > 1 && !options.events.unconstrained) {\n if (lookBackward && handleNumber > 0) {\n to = Math.max(to, reference[handleNumber - 1] + options.margin);\n }\n\n if (lookForward && handleNumber < scope_Handles.length - 1) {\n to = Math.min(to, reference[handleNumber + 1] - options.margin);\n }\n }\n\n // The limit option has the opposite effect, limiting handles to a\n // maximum distance from another. Limit must be > 0, as otherwise\n // handles would be unmovable.\n if (scope_Handles.length > 1 && options.limit) {\n if (lookBackward && handleNumber > 0) {\n to = Math.min(to, reference[handleNumber - 1] + options.limit);\n }\n\n if (lookForward && handleNumber < scope_Handles.length - 1) {\n to = Math.max(to, reference[handleNumber + 1] - options.limit);\n }\n }\n\n // The padding option keeps the handles a certain distance from the\n // edges of the slider. Padding must be > 0.\n if (options.padding) {\n if (handleNumber === 0) {\n to = Math.max(to, options.padding[0]);\n }\n\n if (handleNumber === scope_Handles.length - 1) {\n to = Math.min(to, 100 - options.padding[1]);\n }\n }\n\n to = scope_Spectrum.getStep(to);\n\n // Limit percentage to the 0 - 100 range\n to = limit(to);\n\n // Return false if handle can't move\n if (to === reference[handleNumber] && !getValue) {\n return false;\n }\n\n return to;\n }\n\n // Uses slider orientation to create CSS rules. a = base value;\n function inRuleOrder(v, a) {\n var o = options.ort;\n return (o ? a : v) + \", \" + (o ? v : a);\n }\n\n // Moves handle(s) by a percentage\n // (bool, % to move, [% where handle started, ...], [index in scope_Handles, ...])\n function moveHandles(upward, proposal, locations, handleNumbers) {\n var proposals = locations.slice();\n\n var b = [!upward, upward];\n var f = [upward, !upward];\n\n // Copy handleNumbers so we don't change the dataset\n handleNumbers = handleNumbers.slice();\n\n // Check to see which handle is 'leading'.\n // If that one can't move the second can't either.\n if (upward) {\n handleNumbers.reverse();\n }\n\n // Step 1: get the maximum percentage that any of the handles can move\n if (handleNumbers.length > 1) {\n handleNumbers.forEach(function(handleNumber, o) {\n var to = checkHandlePosition(\n proposals,\n handleNumber,\n proposals[handleNumber] + proposal,\n b[o],\n f[o],\n false\n );\n\n // Stop if one of the handles can't move.\n if (to === false) {\n proposal = 0;\n } else {\n proposal = to - proposals[handleNumber];\n proposals[handleNumber] = to;\n }\n });\n }\n\n // If using one handle, check backward AND forward\n else {\n b = f = [true];\n }\n\n var state = false;\n\n // Step 2: Try to set the handles with the found percentage\n handleNumbers.forEach(function(handleNumber, o) {\n state = setHandle(handleNumber, locations[handleNumber] + proposal, b[o], f[o]) || state;\n });\n\n // Step 3: If a handle moved, fire events\n if (state) {\n handleNumbers.forEach(function(handleNumber) {\n fireEvent(\"update\", handleNumber);\n fireEvent(\"slide\", handleNumber);\n });\n }\n }\n\n // Takes a base value and an offset. This offset is used for the connect bar size.\n // In the initial design for this feature, the origin element was 1% wide.\n // Unfortunately, a rounding bug in Chrome makes it impossible to implement this feature\n // in this manner: https://bugs.chromium.org/p/chromium/issues/detail?id=798223\n function transformDirection(a, b) {\n return options.dir ? 100 - a - b : a;\n }\n\n // Updates scope_Locations and scope_Values, updates visual state\n function updateHandlePosition(handleNumber, to) {\n // Update locations.\n scope_Locations[handleNumber] = to;\n\n // Convert the value to the slider stepping/range.\n scope_Values[handleNumber] = scope_Spectrum.fromStepping(to);\n\n var translation = 10 * (transformDirection(to, 0) - scope_DirOffset);\n var translateRule = \"translate(\" + inRuleOrder(translation + \"%\", \"0\") + \")\";\n\n scope_Handles[handleNumber].style[options.transformRule] = translateRule;\n\n updateConnect(handleNumber);\n updateConnect(handleNumber + 1);\n }\n\n // Handles before the slider middle are stacked later = higher,\n // Handles after the middle later is lower\n // [[7] [8] .......... | .......... [5] [4]\n function setZindex() {\n scope_HandleNumbers.forEach(function(handleNumber) {\n var dir = scope_Locations[handleNumber] > 50 ? -1 : 1;\n var zIndex = 3 + (scope_Handles.length + dir * handleNumber);\n scope_Handles[handleNumber].style.zIndex = zIndex;\n });\n }\n\n // Test suggested values and apply margin, step.\n function setHandle(handleNumber, to, lookBackward, lookForward) {\n to = checkHandlePosition(scope_Locations, handleNumber, to, lookBackward, lookForward, false);\n\n if (to === false) {\n return false;\n }\n\n updateHandlePosition(handleNumber, to);\n\n return true;\n }\n\n // Updates style attribute for connect nodes\n function updateConnect(index) {\n // Skip connects set to false\n if (!scope_Connects[index]) {\n return;\n }\n\n var l = 0;\n var h = 100;\n\n if (index !== 0) {\n l = scope_Locations[index - 1];\n }\n\n if (index !== scope_Connects.length - 1) {\n h = scope_Locations[index];\n }\n\n // We use two rules:\n // 'translate' to change the left/top offset;\n // 'scale' to change the width of the element;\n // As the element has a width of 100%, a translation of 100% is equal to 100% of the parent (.noUi-base)\n var connectWidth = h - l;\n var translateRule = \"translate(\" + inRuleOrder(transformDirection(l, connectWidth) + \"%\", \"0\") + \")\";\n var scaleRule = \"scale(\" + inRuleOrder(connectWidth / 100, \"1\") + \")\";\n\n scope_Connects[index].style[options.transformRule] = translateRule + \" \" + scaleRule;\n }\n\n // Parses value passed to .set method. Returns current value if not parse-able.\n function resolveToValue(to, handleNumber) {\n // Setting with null indicates an 'ignore'.\n // Inputting 'false' is invalid.\n if (to === null || to === false || to === undefined) {\n return scope_Locations[handleNumber];\n }\n\n // If a formatted number was passed, attempt to decode it.\n if (typeof to === \"number\") {\n to = String(to);\n }\n\n to = options.format.from(to);\n to = scope_Spectrum.toStepping(to);\n\n // If parsing the number failed, use the current value.\n if (to === false || isNaN(to)) {\n return scope_Locations[handleNumber];\n }\n\n return to;\n }\n\n // Set the slider value.\n function valueSet(input, fireSetEvent) {\n var values = asArray(input);\n var isInit = scope_Locations[0] === undefined;\n\n // Event fires by default\n fireSetEvent = fireSetEvent === undefined ? true : !!fireSetEvent;\n\n // Animation is optional.\n // Make sure the initial values were set before using animated placement.\n if (options.animate && !isInit) {\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\n }\n\n // First pass, without lookAhead but with lookBackward. Values are set from left to right.\n scope_HandleNumbers.forEach(function(handleNumber) {\n setHandle(handleNumber, resolveToValue(values[handleNumber], handleNumber), true, false);\n });\n\n var i = scope_HandleNumbers.length === 1 ? 0 : 1;\n\n // Secondary passes. Now that all base values are set, apply constraints.\n // Iterate all handles to ensure constraints are applied for the entire slider (Issue #1009)\n for (; i < scope_HandleNumbers.length; ++i) {\n scope_HandleNumbers.forEach(function(handleNumber) {\n setHandle(handleNumber, scope_Locations[handleNumber], true, true);\n });\n }\n\n setZindex();\n\n scope_HandleNumbers.forEach(function(handleNumber) {\n fireEvent(\"update\", handleNumber);\n\n // Fire the event only for handles that received a new value, as per #579\n if (values[handleNumber] !== null && fireSetEvent) {\n fireEvent(\"set\", handleNumber);\n }\n });\n }\n\n // Reset slider to initial values\n function valueReset(fireSetEvent) {\n valueSet(options.start, fireSetEvent);\n }\n\n // Set value for a single handle\n function valueSetHandle(handleNumber, value, fireSetEvent) {\n // Ensure numeric input\n handleNumber = Number(handleNumber);\n\n if (!(handleNumber >= 0 && handleNumber < scope_HandleNumbers.length)) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): invalid handle number, got: \" + handleNumber);\n }\n\n // Look both backward and forward, since we don't want this handle to \"push\" other handles (#960);\n setHandle(handleNumber, resolveToValue(value, handleNumber), true, true);\n\n fireEvent(\"update\", handleNumber);\n\n if (fireSetEvent) {\n fireEvent(\"set\", handleNumber);\n }\n }\n\n // Get the slider value.\n function valueGet() {\n var values = scope_Values.map(options.format.to);\n\n // If only one handle is used, return a single value.\n if (values.length === 1) {\n return values[0];\n }\n\n return values;\n }\n\n // Removes classes from the root and empties it.\n function destroy() {\n for (var key in options.cssClasses) {\n if (!options.cssClasses.hasOwnProperty(key)) {\n continue;\n }\n removeClass(scope_Target, options.cssClasses[key]);\n }\n\n while (scope_Target.firstChild) {\n scope_Target.removeChild(scope_Target.firstChild);\n }\n\n delete scope_Target.noUiSlider;\n }\n\n function getNextStepsForHandle(handleNumber) {\n var location = scope_Locations[handleNumber];\n var nearbySteps = scope_Spectrum.getNearbySteps(location);\n var value = scope_Values[handleNumber];\n var increment = nearbySteps.thisStep.step;\n var decrement = null;\n\n // If snapped, directly use defined step value\n if (options.snap) {\n return [\n value - nearbySteps.stepBefore.startValue || null,\n nearbySteps.stepAfter.startValue - value || null\n ];\n }\n\n // If the next value in this step moves into the next step,\n // the increment is the start of the next step - the current value\n if (increment !== false) {\n if (value + increment > nearbySteps.stepAfter.startValue) {\n increment = nearbySteps.stepAfter.startValue - value;\n }\n }\n\n // If the value is beyond the starting point\n if (value > nearbySteps.thisStep.startValue) {\n decrement = nearbySteps.thisStep.step;\n } else if (nearbySteps.stepBefore.step === false) {\n decrement = false;\n }\n\n // If a handle is at the start of a step, it always steps back into the previous step first\n else {\n decrement = value - nearbySteps.stepBefore.highestStep;\n }\n\n // Now, if at the slider edges, there is no in/decrement\n if (location === 100) {\n increment = null;\n } else if (location === 0) {\n decrement = null;\n }\n\n // As per #391, the comparison for the decrement step can have some rounding issues.\n var stepDecimals = scope_Spectrum.countStepDecimals();\n\n // Round per #391\n if (increment !== null && increment !== false) {\n increment = Number(increment.toFixed(stepDecimals));\n }\n\n if (decrement !== null && decrement !== false) {\n decrement = Number(decrement.toFixed(stepDecimals));\n }\n\n return [decrement, increment];\n }\n\n // Get the current step size for the slider.\n function getNextSteps() {\n return scope_HandleNumbers.map(getNextStepsForHandle);\n }\n\n // Updateable: margin, limit, padding, step, range, animate, snap\n function updateOptions(optionsToUpdate, fireSetEvent) {\n // Spectrum is created using the range, snap, direction and step options.\n // 'snap' and 'step' can be updated.\n // If 'snap' and 'step' are not passed, they should remain unchanged.\n var v = valueGet();\n\n var updateAble = [\n \"margin\",\n \"limit\",\n \"padding\",\n \"range\",\n \"animate\",\n \"snap\",\n \"step\",\n \"format\",\n \"pips\",\n \"tooltips\"\n ];\n\n // Only change options that we're actually passed to update.\n updateAble.forEach(function(name) {\n // Check for undefined. null removes the value.\n if (optionsToUpdate[name] !== undefined) {\n originalOptions[name] = optionsToUpdate[name];\n }\n });\n\n var newOptions = testOptions(originalOptions);\n\n // Load new options into the slider state\n updateAble.forEach(function(name) {\n if (optionsToUpdate[name] !== undefined) {\n options[name] = newOptions[name];\n }\n });\n\n scope_Spectrum = newOptions.spectrum;\n\n // Limit, margin and padding depend on the spectrum but are stored outside of it. (#677)\n options.margin = newOptions.margin;\n options.limit = newOptions.limit;\n options.padding = newOptions.padding;\n\n // Update pips, removes existing.\n if (options.pips) {\n pips(options.pips);\n } else {\n removePips();\n }\n\n // Update tooltips, removes existing.\n if (options.tooltips) {\n tooltips();\n } else {\n removeTooltips();\n }\n\n // Invalidate the current positioning so valueSet forces an update.\n scope_Locations = [];\n valueSet(optionsToUpdate.start || v, fireSetEvent);\n }\n\n // Initialization steps\n function setupSlider() {\n // Create the base element, initialize HTML and set classes.\n // Add handles and connect elements.\n scope_Base = addSlider(scope_Target);\n\n addElements(options.connect, scope_Base);\n\n // Attach user events.\n bindSliderEvents(options.events);\n\n // Use the public value method to set the start values.\n valueSet(options.start);\n\n if (options.pips) {\n pips(options.pips);\n }\n\n if (options.tooltips) {\n tooltips();\n }\n\n aria();\n }\n\n setupSlider();\n\n // noinspection JSUnusedGlobalSymbols\n scope_Self = {\n destroy: destroy,\n steps: getNextSteps,\n on: bindEvent,\n off: removeEvent,\n get: valueGet,\n set: valueSet,\n setHandle: valueSetHandle,\n reset: valueReset,\n // Exposed for unit testing, don't use this in your application.\n __moveHandles: function(a, b, c) {\n moveHandles(a, b, scope_Locations, c);\n },\n options: originalOptions, // Issue #600, #678\n updateOptions: updateOptions,\n target: scope_Target, // Issue #597\n removePips: removePips,\n removeTooltips: removeTooltips,\n pips: pips // Issue #594\n };\n\n return scope_Self;\n }\n\n // Run the standard initializer\n function initialize(target, originalOptions) {\n if (!target || !target.nodeName) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): create requires a single element, got: \" + target);\n }\n\n // Throw an error if the slider was already initialized.\n if (target.noUiSlider) {\n throw new Error(\"noUiSlider (\" + VERSION + \"): Slider was already initialized.\");\n }\n\n // Test the options and create the slider environment;\n var options = testOptions(originalOptions, target);\n var api = scope(target, options, originalOptions);\n\n target.noUiSlider = api;\n\n return api;\n }\n\n // Use an object instead of a function for future expandability;\n return {\n // Exposed for unit testing, don't use this in your application.\n __spectrum: Spectrum,\n version: VERSION,\n create: initialize\n };\n});\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createSvgIcon;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _SvgIcon = _interopRequireDefault(require(\"@material-ui/core/SvgIcon\"));\n\nfunction createSvgIcon(path, displayName) {\n var Component = _react.default.memo(_react.default.forwardRef(function (props, ref) {\n return _react.default.createElement(_SvgIcon.default, (0, _extends2.default)({\n ref: ref\n }, props), path);\n }));\n\n if (process.env.NODE_ENV !== 'production') {\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = _SvgIcon.default.muiName;\n return Component;\n}","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get';\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil â¤ï¸\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(options) {\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n var _tag = createStyleElement(this);\n\n var before;\n\n if (this.tags.length === 0) {\n before = this.before;\n } else {\n before = this.tags[this.tags.length - 1].nextSibling;\n }\n\n this.container.insertBefore(_tag, before);\n this.tags.push(_tag);\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is a really hot path\n // we check the second character first because having \"i\"\n // as the second character will happen less often than\n // having \"@\" as the first character\n var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n\n sheet.insertRule(rule, // we need to insert @import rules before anything else\n // otherwise there will be an error\n // technically this means that the @import rules will\n // _usually_(not always since there could be multiple style tags)\n // be the first ones in prod and generally later in dev\n // this shouldn't really matter in the real world though\n // @import is generally only used for font faces from google fonts and etc.\n // so while this could be technically correct then it would be slower and larger\n // for a tiny bit of correctness that won't matter in the real world\n isImportRule ? 0 : sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n if (block) {\n Sheet.current.insert(block + '}');\n }\n}\n\nvar Sheet = {\n current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n {\n switch (content.charCodeAt(0)) {\n case 64:\n {\n // @import\n Sheet.current.insert(content + ';');\n return '';\n }\n // charcode for l\n\n case 108:\n {\n // charcode for b\n // this ignores label\n if (content.charCodeAt(2) === 98) {\n return '';\n }\n }\n }\n\n break;\n }\n // selector\n\n case 2:\n {\n if (ns === 0) return content + delimiter;\n break;\n }\n // at-rule\n\n case 3:\n {\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n {\n Sheet.current.insert(selectors[0] + content);\n return '';\n }\n\n default:\n {\n return content + (at === 0 ? delimiter : '');\n }\n }\n }\n\n case -2:\n {\n content.split(needle).forEach(toSheet);\n }\n }\n};\n\nvar createCache = function createCache(options) {\n if (options === undefined) options = {};\n var key = options.key || 'css';\n var stylisOptions;\n\n if (options.prefix !== undefined) {\n stylisOptions = {\n prefix: options.prefix\n };\n }\n\n var stylis = new Stylis(stylisOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n\n {\n container = options.container || document.head;\n var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n Array.prototype.forEach.call(nodes, function (node) {\n var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n attrib.split(' ').forEach(function (id) {\n inserted[id] = true;\n });\n\n if (node.parentNode !== container) {\n container.appendChild(node);\n }\n });\n }\n\n var _insert;\n\n {\n stylis.use(options.stylisPlugins)(ruleSheet);\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n Sheet.current = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n var map = serialized.map;\n Sheet.current = {\n insert: function insert(rule) {\n sheet.insert(rule + map);\n }\n };\n }\n\n stylis(selector, serialized.styles);\n\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n };\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n var commentStart = /\\/\\*/g;\n var commentEnd = /\\*\\//g;\n stylis.use(function (context, content) {\n switch (context) {\n case -1:\n {\n while (commentStart.test(content)) {\n commentEnd.lastIndex = commentStart.lastIndex;\n\n if (commentEnd.test(content)) {\n commentStart.lastIndex = commentEnd.lastIndex;\n continue;\n }\n\n throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n }\n\n commentStart.lastIndex = 0;\n break;\n }\n }\n });\n stylis.use(function (context, content, selectors) {\n switch (context) {\n case -1:\n {\n var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n var ignore = ignoreRegExp.test(content);\n\n if (unsafePseudoClass && !ignore) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n }\n });\n }\n\n break;\n }\n }\n });\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className]);\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 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 default unitlessKeys;\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","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n\n if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n shouldWarnAboutInterpolatingClassNameFromCss = false;\n }\n\n return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i], false);\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings, false);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nexport default css;\n","import _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Component } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar EmotionCacheContext = createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n var render = function render(props, ref) {\n return createElement(EmotionCacheContext.Consumer, null, function (cache) {\n return func(props, cache, ref);\n });\n }; // $FlowFixMe\n\n\n return forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar render = function render(cache, props, theme, ref) {\n var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles);\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n var ele = createElement(type, newProps);\n\n return ele;\n};\n\nvar Emotion =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache, ref) {\n // use Context.read for the theme when it's stable\n if (typeof props.css === 'function') {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n return render(cache, props, theme, ref);\n });\n }\n\n return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n} // $FlowFixMe\n\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type;\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|)jsx.*\\n\\s+at ([A-Z][A-Za-z$]+) /);\n\n if (!match) {\n // safari and firefox\n match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n }\n\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n\n createElementArgArray[1] = newProps;\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n\n if (typeof styles === 'function') {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n var serialized = serializeStyles([styles(theme)]);\n return createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n });\n }\n\n var serialized = serializeStyles([styles]);\n return createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerGlobal, _React$Component);\n\n function InnerGlobal(props, context, updater) {\n return _React$Component.call(this, props, context, updater) || this;\n }\n\n var _proto = InnerGlobal.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.sheet = new StyleSheet({\n key: this.props.cache.key + \"-global\",\n nonce: this.props.cache.sheet.nonce,\n container: this.props.cache.sheet.container\n }); // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n if (node !== null) {\n this.sheet.tags.push(node);\n }\n\n if (this.props.cache.sheet.tags.length) {\n this.sheet.before = this.props.cache.sheet.tags[0];\n }\n\n this.insertStyles();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.serialized.name !== this.props.serialized.name) {\n this.insertStyles();\n }\n };\n\n _proto.insertStyles = function insertStyles$1() {\n if (this.props.serialized.next !== undefined) {\n // insert keyframes\n insertStyles(this.props.cache, this.props.serialized.next, true);\n }\n\n if (this.sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n this.sheet.before = element;\n this.sheet.flush();\n }\n\n this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.sheet.flush();\n };\n\n _proto.render = function render() {\n\n return null;\n };\n\n return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = withEmotionCache(function (props, context) {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n var hasRendered = false;\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, context.registered);\n\n {\n insertStyles(context, serialized, false);\n }\n\n return context.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(context.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: theme\n };\n var ele = props.children(content);\n hasRendered = true;\n\n return ele;\n });\n});\n\nexport { CacheProvider, ClassNames, Global, ThemeContext, jsx, keyframes, withEmotionCache };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport debounce from '../utils/debounce';\nimport { Transition } from 'react-transition-group';\nimport { elementAcceptingRef } from '@material-ui/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useTheme from '../styles/useTheme';\nimport { duration } from '../styles/transitions';\nimport { reflow, getTransitionProps } from '../transitions/utils'; // Translate the node so he can't be seen on the screen.\n// Later, we gonna translate back the node to his original location\n// with `none`.`\n\nfunction getTranslateValue(direction, node) {\n var rect = node.getBoundingClientRect();\n var transform;\n\n if (node.fakeTransform) {\n transform = node.fakeTransform;\n } else {\n var computedStyle = window.getComputedStyle(node);\n transform = computedStyle.getPropertyValue('-webkit-transform') || computedStyle.getPropertyValue('transform');\n }\n\n var offsetX = 0;\n var offsetY = 0;\n\n if (transform && transform !== 'none' && typeof transform === 'string') {\n var transformValues = transform.split('(')[1].split(')')[0].split(',');\n offsetX = parseInt(transformValues[4], 10);\n offsetY = parseInt(transformValues[5], 10);\n }\n\n if (direction === 'left') {\n return \"translateX(\".concat(window.innerWidth, \"px) translateX(-\").concat(rect.left - offsetX, \"px)\");\n }\n\n if (direction === 'right') {\n return \"translateX(-\".concat(rect.left + rect.width - offsetX, \"px)\");\n }\n\n if (direction === 'up') {\n return \"translateY(\".concat(window.innerHeight, \"px) translateY(-\").concat(rect.top - offsetY, \"px)\");\n } // direction === 'down'\n\n\n return \"translateY(-\".concat(rect.top + rect.height - offsetY, \"px)\");\n}\n\nexport function setTranslateValue(direction, node) {\n var transform = getTranslateValue(direction, node);\n\n if (transform) {\n node.style.webkitTransform = transform;\n node.style.transform = transform;\n }\n}\nvar defaultTimeout = {\n enter: duration.enteringScreen,\n exit: duration.leavingScreen\n};\n/**\n * The Slide transition is used by the [Drawer](/components/drawers/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Slide = React.forwardRef(function Slide(props, ref) {\n var children = props.children,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'down' : _props$direction,\n inProp = props.in,\n onEnter = props.onEnter,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n style = props.style,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? defaultTimeout : _props$timeout,\n other = _objectWithoutProperties(props, [\"children\", \"direction\", \"in\", \"onEnter\", \"onEntering\", \"onExit\", \"onExited\", \"style\", \"timeout\"]);\n\n var theme = useTheme();\n var childrenRef = React.useRef(null);\n /**\n * used in cloneElement(children, { ref: handleRef })\n */\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n childrenRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRefIntermediary = useForkRef(children.ref, handleOwnRef);\n var handleRef = useForkRef(handleRefIntermediary, ref);\n\n var handleEnter = function handleEnter(_, isAppearing) {\n var node = childrenRef.current;\n setTranslateValue(direction, node);\n reflow(node);\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n };\n\n var handleEntering = function handleEntering(_, isAppearing) {\n var node = childrenRef.current;\n var transitionProps = getTransitionProps({\n timeout: timeout,\n style: style\n }, {\n mode: 'enter'\n });\n node.style.webkitTransition = theme.transitions.create('-webkit-transform', _extends({}, transitionProps, {\n easing: theme.transitions.easing.easeOut\n }));\n node.style.transition = theme.transitions.create('transform', _extends({}, transitionProps, {\n easing: theme.transitions.easing.easeOut\n }));\n node.style.webkitTransform = 'none';\n node.style.transform = 'none';\n\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n };\n\n var handleExit = function handleExit() {\n var node = childrenRef.current;\n var transitionProps = getTransitionProps({\n timeout: timeout,\n style: style\n }, {\n mode: 'exit'\n });\n node.style.webkitTransition = theme.transitions.create('-webkit-transform', _extends({}, transitionProps, {\n easing: theme.transitions.easing.sharp\n }));\n node.style.transition = theme.transitions.create('transform', _extends({}, transitionProps, {\n easing: theme.transitions.easing.sharp\n }));\n setTranslateValue(direction, node);\n\n if (onExit) {\n onExit(node);\n }\n };\n\n var handleExited = function handleExited() {\n var node = childrenRef.current; // No need for transitions when the component is hidden\n\n node.style.webkitTransition = '';\n node.style.transition = '';\n\n if (onExited) {\n onExited(node);\n }\n };\n\n var updatePosition = React.useCallback(function () {\n if (childrenRef.current) {\n setTranslateValue(direction, childrenRef.current);\n }\n }, [direction]);\n React.useEffect(function () {\n // Skip configuration where the position is screen size invariant.\n if (inProp || direction === 'down' || direction === 'right') {\n return undefined;\n }\n\n var handleResize = debounce(function () {\n if (childrenRef.current) {\n setTranslateValue(direction, childrenRef.current);\n }\n });\n window.addEventListener('resize', handleResize);\n return function () {\n handleResize.clear();\n window.removeEventListener('resize', handleResize);\n };\n }, [direction, inProp]);\n React.useEffect(function () {\n if (!inProp) {\n // We need to update the position of the drawer when the direction change and\n // when it's hidden.\n updatePosition();\n }\n }, [inProp, updatePosition]);\n return React.createElement(Transition, _extends({\n onEnter: handleEnter,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n appear: true,\n in: inProp,\n timeout: timeout\n }, other), function (state, childProps) {\n return React.cloneElement(children, _extends({\n ref: handleRef,\n style: _extends({\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, style, {}, children.props.style)\n }, childProps));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Slide.propTypes = {\n /**\n * A single child content element.\n */\n children: elementAcceptingRef,\n\n /**\n * Direction the child node will enter from.\n */\n direction: PropTypes.oneOf(['left', 'right', 'up', 'down']),\n\n /**\n * If `true`, show the component; triggers the enter or exit animation.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Slide;","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 166;\n var timeout;\n\n function debounced() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // eslint-disable-next-line consistent-this\n var that = this;\n\n var later = function later() {\n func.apply(that, args);\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n\n debounced.clear = function () {\n clearTimeout(timeout);\n };\n\n return debounced;\n}","export { default } from './Slide';","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport { duration } from '../styles/transitions';\nimport ClickAwayListener from '../ClickAwayListener';\nimport useEventCallback from '../utils/useEventCallback';\nimport capitalize from '../utils/capitalize';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport Grow from '../Grow';\nimport SnackbarContent from '../SnackbarContent';\nexport var styles = function styles(theme) {\n var top1 = {\n top: 8\n };\n var bottom1 = {\n bottom: 8\n };\n var right = {\n justifyContent: 'flex-end'\n };\n var left = {\n justifyContent: 'flex-start'\n };\n var top3 = {\n top: 24\n };\n var bottom3 = {\n bottom: 24\n };\n var right3 = {\n right: 24\n };\n var left3 = {\n left: 24\n };\n var center = {\n left: '50%',\n right: 'auto',\n transform: 'translateX(-50%)'\n };\n return {\n /* Styles applied to the root element. */\n root: {\n zIndex: theme.zIndex.snackbar,\n position: 'fixed',\n display: 'flex',\n left: 8,\n right: 8,\n justifyContent: 'center',\n alignItems: 'center'\n },\n\n /* Styles applied to the root element if `anchorOrigin={{ 'top', 'center' }}`. */\n anchorOriginTopCenter: _extends({}, top1, _defineProperty({}, theme.breakpoints.up('sm'), _extends({}, top3, {}, center))),\n\n /* Styles applied to the root element if `anchorOrigin={{ 'bottom', 'center' }}`. */\n anchorOriginBottomCenter: _extends({}, bottom1, _defineProperty({}, theme.breakpoints.up('sm'), _extends({}, bottom3, {}, center))),\n\n /* Styles applied to the root element if `anchorOrigin={{ 'top', 'right' }}`. */\n anchorOriginTopRight: _extends({}, top1, {}, right, _defineProperty({}, theme.breakpoints.up('sm'), _extends({\n left: 'auto'\n }, top3, {}, right3))),\n\n /* Styles applied to the root element if `anchorOrigin={{ 'bottom', 'right' }}`. */\n anchorOriginBottomRight: _extends({}, bottom1, {}, right, _defineProperty({}, theme.breakpoints.up('sm'), _extends({\n left: 'auto'\n }, bottom3, {}, right3))),\n\n /* Styles applied to the root element if `anchorOrigin={{ 'top', 'left' }}`. */\n anchorOriginTopLeft: _extends({}, top1, {}, left, _defineProperty({}, theme.breakpoints.up('sm'), _extends({\n right: 'auto'\n }, top3, {}, left3))),\n\n /* Styles applied to the root element if `anchorOrigin={{ 'bottom', 'left' }}`. */\n anchorOriginBottomLeft: _extends({}, bottom1, {}, left, _defineProperty({}, theme.breakpoints.up('sm'), _extends({\n right: 'auto'\n }, bottom3, {}, left3)))\n };\n};\nvar Snackbar = React.forwardRef(function Snackbar(props, ref) {\n var action = props.action,\n _props$anchorOrigin = props.anchorOrigin;\n _props$anchorOrigin = _props$anchorOrigin === void 0 ? {\n vertical: 'bottom',\n horizontal: 'center'\n } : _props$anchorOrigin;\n\n var vertical = _props$anchorOrigin.vertical,\n horizontal = _props$anchorOrigin.horizontal,\n _props$autoHideDurati = props.autoHideDuration,\n autoHideDuration = _props$autoHideDurati === void 0 ? null : _props$autoHideDurati,\n children = props.children,\n classes = props.classes,\n className = props.className,\n ClickAwayListenerProps = props.ClickAwayListenerProps,\n ContentProps = props.ContentProps,\n _props$disableWindowB = props.disableWindowBlurListener,\n disableWindowBlurListener = _props$disableWindowB === void 0 ? false : _props$disableWindowB,\n message = props.message,\n onClose = props.onClose,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n open = props.open,\n resumeHideDuration = props.resumeHideDuration,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Grow : _props$TransitionComp,\n _props$transitionDura = props.transitionDuration,\n transitionDuration = _props$transitionDura === void 0 ? {\n enter: duration.enteringScreen,\n exit: duration.leavingScreen\n } : _props$transitionDura,\n TransitionProps = props.TransitionProps,\n other = _objectWithoutProperties(props, [\"action\", \"anchorOrigin\", \"autoHideDuration\", \"children\", \"classes\", \"className\", \"ClickAwayListenerProps\", \"ContentProps\", \"disableWindowBlurListener\", \"message\", \"onClose\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"onMouseEnter\", \"onMouseLeave\", \"open\", \"resumeHideDuration\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"]);\n\n var timerAutoHide = React.useRef();\n\n var _React$useState = React.useState(true),\n exited = _React$useState[0],\n setExited = _React$useState[1];\n\n var handleClose = useEventCallback(function () {\n if (onClose) {\n onClose.apply(void 0, arguments);\n }\n });\n var setAutoHideTimer = useEventCallback(function (autoHideDurationParam) {\n if (!onClose || autoHideDurationParam == null) {\n return;\n }\n\n clearTimeout(timerAutoHide.current);\n timerAutoHide.current = setTimeout(function () {\n handleClose(null, 'timeout');\n }, autoHideDurationParam);\n });\n React.useEffect(function () {\n if (open) {\n setAutoHideTimer(autoHideDuration);\n }\n\n return function () {\n clearTimeout(timerAutoHide.current);\n };\n }, [open, autoHideDuration, setAutoHideTimer]); // Pause the timer when the user is interacting with the Snackbar\n // or when the user hide the window.\n\n var handlePause = function handlePause() {\n clearTimeout(timerAutoHide.current);\n }; // Restart the timer when the user is no longer interacting with the Snackbar\n // or when the window is shown back.\n\n\n var handleResume = React.useCallback(function () {\n if (autoHideDuration != null) {\n setAutoHideTimer(resumeHideDuration != null ? resumeHideDuration : autoHideDuration * 0.5);\n }\n }, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);\n\n var handleMouseEnter = function handleMouseEnter(event) {\n if (onMouseEnter) {\n onMouseEnter(event);\n }\n\n handlePause();\n };\n\n var handleMouseLeave = function handleMouseLeave(event) {\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n\n handleResume();\n };\n\n var handleClickAway = function handleClickAway(event) {\n if (onClose) {\n onClose(event, 'clickaway');\n }\n };\n\n var handleExited = function handleExited() {\n setExited(true);\n };\n\n var handleEnter = function handleEnter() {\n setExited(false);\n };\n\n React.useEffect(function () {\n if (!disableWindowBlurListener && open) {\n window.addEventListener('focus', handleResume);\n window.addEventListener('blur', handlePause);\n return function () {\n window.removeEventListener('focus', handleResume);\n window.removeEventListener('blur', handlePause);\n };\n }\n\n return undefined;\n }, [disableWindowBlurListener, handleResume, open]); // So we only render active snackbars.\n\n if (!open && exited) {\n return null;\n }\n\n return React.createElement(ClickAwayListener, _extends({\n onClickAway: handleClickAway\n }, ClickAwayListenerProps), React.createElement(\"div\", _extends({\n className: clsx(classes.root, classes[\"anchorOrigin\".concat(capitalize(vertical)).concat(capitalize(horizontal))], className),\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ref: ref\n }, other), React.createElement(TransitionComponent, _extends({\n appear: true,\n in: open,\n onEnter: createChainedFunction(handleEnter, onEnter),\n onEntered: onEntered,\n onEntering: onEntering,\n onExit: onExit,\n onExited: createChainedFunction(handleExited, onExited),\n onExiting: onExiting,\n timeout: transitionDuration,\n direction: vertical === 'top' ? 'down' : 'up'\n }, TransitionProps), children || React.createElement(SnackbarContent, _extends({\n message: message,\n action: action\n }, ContentProps)))));\n});\nprocess.env.NODE_ENV !== \"production\" ? Snackbar.propTypes = {\n /**\n * The action to display. It renders after the message, at the end of the snackbar.\n */\n action: PropTypes.node,\n\n /**\n * The anchor of the `Snackbar`.\n */\n anchorOrigin: PropTypes.shape({\n horizontal: PropTypes.oneOf(['left', 'center', 'right']).isRequired,\n vertical: PropTypes.oneOf(['top', 'bottom']).isRequired\n }),\n\n /**\n * The number of milliseconds to wait before automatically calling the\n * `onClose` function. `onClose` should then set the state of the `open`\n * prop to hide the Snackbar. This behavior is disabled by default with\n * the `null` value.\n */\n autoHideDuration: PropTypes.number,\n\n /**\n * Replace the `SnackbarContent` component.\n */\n children: PropTypes.element,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * Props applied to the `ClickAwayListener` element.\n */\n ClickAwayListenerProps: PropTypes.object,\n\n /**\n * Props applied to the [`SnackbarContent`](/api/snackbar-content/) element.\n */\n ContentProps: PropTypes.object,\n\n /**\n * If `true`, the `autoHideDuration` timer will expire even if the window is not focused.\n */\n disableWindowBlurListener: PropTypes.bool,\n\n /**\n * When displaying multiple consecutive Snackbars from a parent rendering a single\n * <Snackbar/>, add the key prop to ensure independent treatment of each message.\n * e.g. <Snackbar key={message} />, otherwise, the message may update-in-place and\n * features such as autoHideDuration may be canceled.\n */\n key: PropTypes.any,\n\n /**\n * The message to display.\n */\n message: PropTypes.node,\n\n /**\n * Callback fired when the component requests to be closed.\n * Typically `onClose` is used to set state in the parent component,\n * which is used to control the `Snackbar` `open` prop.\n * The `reason` parameter can optionally be used to control the response to `onClose`,\n * for example ignoring `clickaway`.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"timeout\"` (`autoHideDuration` expired), `\"clickaway\"`.\n */\n onClose: PropTypes.func,\n\n /**\n * Callback fired before the transition is entering.\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired when the transition has entered.\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired when the transition is entering.\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired before the transition is exiting.\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired when the transition has exited.\n */\n onExited: PropTypes.func,\n\n /**\n * Callback fired when the transition is exiting.\n */\n onExiting: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseLeave: PropTypes.func,\n\n /**\n * If `true`, `Snackbar` is open.\n */\n open: PropTypes.bool,\n\n /**\n * The number of milliseconds to wait before dismissing after user interaction.\n * If `autoHideDuration` prop isn't specified, it does nothing.\n * If `autoHideDuration` prop is specified but `resumeHideDuration` isn't,\n * we default to `autoHideDuration / 2` ms.\n */\n resumeHideDuration: PropTypes.number,\n\n /**\n * The component used for the transition.\n * [Follow this guide](/components/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n\n /**\n * Props applied to the [`Transition`](http://reactcommunity.org/react-transition-group/transition#Transition-props) element.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n flip: false,\n name: 'MuiSnackbar'\n})(Snackbar);","export { default } from './Snackbar';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function isPlainObject(item) {\n return item && _typeof(item) === 'object' && item.constructor === Object;\n}\nexport default function deepmerge(target, source) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n clone: true\n };\n var output = options.clone ? _extends({}, target) : target;\n\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(function (key) {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n\n if (isPlainObject(source[key]) && key in target) {\n output[key] = deepmerge(target[key], source[key], options);\n } else {\n output[key] = source[key];\n }\n });\n }\n\n return output;\n}","import nested from '../ThemeProvider/nested';\n/**\n * This is the list of the style rule name we use as drop in replacement for the built-in\n * pseudo classes (:checked, :disabled, :focused, etc.).\n *\n * Why do they exist in the first place?\n * These classes are used at a specificity of 2.\n * It allows them to override previously definied styles as well as\n * being untouched by simple user overrides.\n */\n\nvar pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected']; // Returns a function which generates unique class names based on counters.\n// When new generator function is created, rule counter is reset.\n// We need to reset the rule counter for SSR for each request.\n//\n// It's inspired by\n// https://github.com/cssinjs/jss/blob/4e6a05dd3f7b6572fdd3ab216861d9e446c20331/src/utils/createGenerateClassName.js\n\nexport default function createGenerateClassName() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$disableGloba = options.disableGlobal,\n disableGlobal = _options$disableGloba === void 0 ? false : _options$disableGloba,\n _options$productionPr = options.productionPrefix,\n productionPrefix = _options$productionPr === void 0 ? 'jss' : _options$productionPr,\n _options$seed = options.seed,\n seed = _options$seed === void 0 ? '' : _options$seed;\n var seedPrefix = seed === '' ? '' : \"\".concat(seed, \"-\");\n var ruleCounter = 0;\n return function (rule, styleSheet) {\n ruleCounter += 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (ruleCounter >= 1e10) {\n console.warn(['Material-UI: you might have a memory leak.', 'The ruleCounter is not supposed to grow that much.'].join(''));\n }\n }\n\n var name = styleSheet.options.name; // Is a global static MUI style?\n\n if (name && name.indexOf('Mui') === 0 && !styleSheet.options.link && !disableGlobal) {\n // We can use a shorthand class name, we never use the keys to style the components.\n if (pseudoClasses.indexOf(rule.key) !== -1) {\n return \"Mui-\".concat(rule.key);\n }\n\n var prefix = \"\".concat(seedPrefix).concat(name, \"-\").concat(rule.key);\n\n if (!styleSheet.options.theme[nested] || seed !== '') {\n return prefix;\n }\n\n return \"\".concat(prefix, \"-\").concat(ruleCounter);\n }\n\n if (process.env.NODE_ENV === 'production') {\n return \"\".concat(seedPrefix).concat(productionPrefix).concat(ruleCounter);\n }\n\n var suffix = \"\".concat(rule.key, \"-\").concat(ruleCounter); // Help with debuggability.\n\n if (styleSheet.options.classNamePrefix) {\n return \"\".concat(seedPrefix).concat(styleSheet.options.classNamePrefix, \"-\").concat(suffix);\n }\n\n return \"\".concat(seedPrefix).concat(suffix);\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport { fade } from '../styles/colorManipulator';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n textAlign: 'center',\n flex: '0 0 auto',\n fontSize: theme.typography.pxToRem(24),\n padding: 12,\n borderRadius: '50%',\n overflow: 'visible',\n // Explicitly set the default value to solve a bug on IE 11.\n color: theme.palette.action.active,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n }),\n '&:hover': {\n backgroundColor: fade(theme.palette.action.active, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&$disabled': {\n backgroundColor: 'transparent',\n color: theme.palette.action.disabled\n }\n },\n\n /* Styles applied to the root element if `edge=\"start\"`. */\n edgeStart: {\n marginLeft: -12,\n '$sizeSmall&': {\n marginLeft: -3\n }\n },\n\n /* Styles applied to the root element if `edge=\"end\"`. */\n edgeEnd: {\n marginRight: -12,\n '$sizeSmall&': {\n marginRight: -3\n }\n },\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `size=\"small\"`. */\n sizeSmall: {\n padding: 3,\n fontSize: theme.typography.pxToRem(18)\n },\n\n /* Styles applied to the children container element. */\n label: {\n width: '100%',\n display: 'flex',\n alignItems: 'inherit',\n justifyContent: 'inherit'\n }\n };\n};\n/**\n * Refer to the [Icons](/components/icons/) section of the documentation\n * regarding the available icon options.\n */\n\nvar IconButton = React.forwardRef(function IconButton(props, ref) {\n var _props$edge = props.edge,\n edge = _props$edge === void 0 ? false : _props$edge,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'default' : _props$color,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableFocusRi = props.disableFocusRipple,\n disableFocusRipple = _props$disableFocusRi === void 0 ? false : _props$disableFocusRi,\n _props$size = props.size,\n size = _props$size === void 0 ? 'medium' : _props$size,\n other = _objectWithoutProperties(props, [\"edge\", \"children\", \"classes\", \"className\", \"color\", \"disabled\", \"disableFocusRipple\", \"size\"]);\n\n return React.createElement(ButtonBase, _extends({\n className: clsx(classes.root, className, color !== 'default' && classes[\"color\".concat(capitalize(color))], disabled && classes.disabled, size === \"small\" && classes[\"size\".concat(capitalize(size))], {\n 'start': classes.edgeStart,\n 'end': classes.edgeEnd\n }[edge]),\n centerRipple: true,\n focusRipple: !disableFocusRipple,\n disabled: disabled,\n ref: ref\n }, other), React.createElement(\"span\", {\n className: classes.label\n }, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? IconButton.propTypes = {\n /**\n * The icon element.\n */\n children: chainPropTypes(PropTypes.node, function (props) {\n var found = React.Children.toArray(props.children).some(function (child) {\n return React.isValidElement(child) && child.props.onClick;\n });\n\n if (found) {\n return new Error(['Material-UI: you are providing an onClick event listener ' + 'to a child of a button element.', 'Firefox will never trigger the event.', 'You should move the onClick listener to the parent button element.', 'https://github.com/mui-org/material-ui/issues/13957'].join('\\n'));\n }\n\n return null;\n }),\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary']),\n\n /**\n * If `true`, the button will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the keyboard focus ripple will be disabled.\n * `disableRipple` must also be true.\n */\n disableFocusRipple: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect will be disabled.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n */\n edge: PropTypes.oneOf(['start', 'end', false]),\n\n /**\n * The size of the button.\n * `small` is equivalent to the dense button styling.\n */\n size: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiIconButton'\n})(IconButton);","import {log} from '@luma.gl/gltools';\n\n// Install stubs for removed methods\nexport function stubRemovedMethods(instance, className, version, methodNames) {\n const upgradeMessage = `See luma.gl ${version} Upgrade Guide at \\\nhttp://uber.github.io/luma.gl/#/documentation/overview/upgrade-guide`;\n\n const prototype = Object.getPrototypeOf(instance);\n\n methodNames.forEach(methodName => {\n if (prototype.methodName) {\n return;\n }\n\n prototype[methodName] = () => {\n log.removed(`Calling removed method ${className}.${methodName}: `, upgradeMessage)();\n throw new Error(methodName);\n };\n });\n}\n","// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\nimport WEBGL_FEATURES from './webgl-features-table';\nimport {isWebGL2, log} from '@luma.gl/gltools';\nimport {assert} from '../utils';\n\nconst LOG_UNSUPPORTED_FEATURE = 2;\n\n// Check one feature\nexport function hasFeature(gl, feature) {\n return hasFeatures(gl, feature);\n}\n\n// Check one or more features\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => {\n return isFeatureSupported(gl, feature);\n });\n}\n\n// Return a list of supported features\nexport function getFeatures(gl) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n for (const cap in WEBGL_FEATURES) {\n if (gl.luma.caps[cap] === undefined) {\n gl.luma.caps[cap] = isFeatureSupported(gl, cap);\n }\n }\n return gl.luma.caps;\n}\n\n// TODO - cache the value\nfunction isFeatureSupported(gl, cap) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n\n if (gl.luma.caps[cap] === undefined) {\n gl.luma.caps[cap] = queryFeature(gl, cap);\n }\n\n if (!gl.luma.caps[cap]) {\n log.log(LOG_UNSUPPORTED_FEATURE, `Feature: ${cap} not supported`)();\n }\n\n return gl.luma.caps[cap];\n}\n\nfunction queryFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n let isSupported;\n\n // Get extension name from table\n const featureDefinition = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking one or more extensions\n if (typeof featureDefinition === 'function') {\n isSupported = featureDefinition(gl);\n } else if (Array.isArray(featureDefinition)) {\n isSupported = true;\n for (const extension of featureDefinition) {\n isSupported = isSupported && Boolean(gl.getExtension(extension));\n }\n } else if (typeof featureDefinition === 'string') {\n isSupported = Boolean(gl.getExtension(featureDefinition));\n } else if (typeof featureDefinition === 'boolean') {\n isSupported = featureDefinition;\n } else {\n assert(false);\n }\n\n return isSupported;\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n margin: 0\n },\n\n /* Styles applied to the root element if `variant=\"body2\"`. */\n body2: theme.typography.body2,\n\n /* Styles applied to the root element if `variant=\"body1\"`. */\n body1: theme.typography.body1,\n\n /* Styles applied to the root element if `variant=\"caption\"`. */\n caption: theme.typography.caption,\n\n /* Styles applied to the root element if `variant=\"button\"`. */\n button: theme.typography.button,\n\n /* Styles applied to the root element if `variant=\"h1\"`. */\n h1: theme.typography.h1,\n\n /* Styles applied to the root element if `variant=\"h2\"`. */\n h2: theme.typography.h2,\n\n /* Styles applied to the root element if `variant=\"h3\"`. */\n h3: theme.typography.h3,\n\n /* Styles applied to the root element if `variant=\"h4\"`. */\n h4: theme.typography.h4,\n\n /* Styles applied to the root element if `variant=\"h5\"`. */\n h5: theme.typography.h5,\n\n /* Styles applied to the root element if `variant=\"h6\"`. */\n h6: theme.typography.h6,\n\n /* Styles applied to the root element if `variant=\"subtitle1\"`. */\n subtitle1: theme.typography.subtitle1,\n\n /* Styles applied to the root element if `variant=\"subtitle2\"`. */\n subtitle2: theme.typography.subtitle2,\n\n /* Styles applied to the root element if `variant=\"overline\"`. */\n overline: theme.typography.overline,\n\n /* Styles applied to the root element if `variant=\"srOnly\"`. Only accessible to screen readers. */\n srOnly: {\n position: 'absolute',\n height: 1,\n width: 1,\n overflow: 'hidden'\n },\n\n /* Styles applied to the root element if `align=\"left\"`. */\n alignLeft: {\n textAlign: 'left'\n },\n\n /* Styles applied to the root element if `align=\"center\"`. */\n alignCenter: {\n textAlign: 'center'\n },\n\n /* Styles applied to the root element if `align=\"right\"`. */\n alignRight: {\n textAlign: 'right'\n },\n\n /* Styles applied to the root element if `align=\"justify\"`. */\n alignJustify: {\n textAlign: 'justify'\n },\n\n /* Styles applied to the root element if `nowrap={true}`. */\n noWrap: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n },\n\n /* Styles applied to the root element if `gutterBottom={true}`. */\n gutterBottom: {\n marginBottom: '0.35em'\n },\n\n /* Styles applied to the root element if `paragraph={true}`. */\n paragraph: {\n marginBottom: 16\n },\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"textPrimary\"`. */\n colorTextPrimary: {\n color: theme.palette.text.primary\n },\n\n /* Styles applied to the root element if `color=\"textSecondary\"`. */\n colorTextSecondary: {\n color: theme.palette.text.secondary\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `display=\"inline\"`. */\n displayInline: {\n display: 'inline'\n },\n\n /* Styles applied to the root element if `display=\"block\"`. */\n displayBlock: {\n display: 'block'\n }\n };\n};\nvar defaultVariantMapping = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p'\n};\nvar Typography = React.forwardRef(function Typography(props, ref) {\n var _props$align = props.align,\n align = _props$align === void 0 ? 'inherit' : _props$align,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'initial' : _props$color,\n component = props.component,\n _props$display = props.display,\n display = _props$display === void 0 ? 'initial' : _props$display,\n _props$gutterBottom = props.gutterBottom,\n gutterBottom = _props$gutterBottom === void 0 ? false : _props$gutterBottom,\n _props$noWrap = props.noWrap,\n noWrap = _props$noWrap === void 0 ? false : _props$noWrap,\n _props$paragraph = props.paragraph,\n paragraph = _props$paragraph === void 0 ? false : _props$paragraph,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'body1' : _props$variant,\n _props$variantMapping = props.variantMapping,\n variantMapping = _props$variantMapping === void 0 ? defaultVariantMapping : _props$variantMapping,\n other = _objectWithoutProperties(props, [\"align\", \"classes\", \"className\", \"color\", \"component\", \"display\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"]);\n\n var Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n return React.createElement(Component, _extends({\n className: clsx(classes.root, className, variant !== 'inherit' && classes[variant], color !== 'initial' && classes[\"color\".concat(capitalize(color))], noWrap && classes.noWrap, gutterBottom && classes.gutterBottom, paragraph && classes.paragraph, align !== 'inherit' && classes[\"align\".concat(capitalize(align))], display !== 'initial' && classes[\"display\".concat(capitalize(display))]),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes = {\n /**\n * Set the text-align on the component.\n */\n align: PropTypes.oneOf(['inherit', 'left', 'center', 'right', 'justify']),\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['initial', 'inherit', 'primary', 'secondary', 'textPrimary', 'textSecondary', 'error']),\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n * Overrides the behavior of the `variantMapping` prop.\n */\n component: PropTypes.elementType,\n\n /**\n * Controls the display type\n */\n display: PropTypes.oneOf(['initial', 'block', 'inline']),\n\n /**\n * If `true`, the text will have a bottom margin.\n */\n gutterBottom: PropTypes.bool,\n\n /**\n * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n *\n * Note that text overflow can only happen with block or inline-block level elements\n * (the element needs to have a width in order to overflow).\n */\n noWrap: PropTypes.bool,\n\n /**\n * If `true`, the text will have a bottom margin.\n */\n paragraph: PropTypes.bool,\n\n /**\n * Applies the theme typography styles.\n */\n variant: PropTypes.oneOf(['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'caption', 'button', 'overline', 'srOnly', 'inherit']),\n\n /**\n * The component maps the variant prop to a range of different DOM element types.\n * For instance, subtitle1 to `<h6>`.\n * If you wish to change that mapping, you can provide your own.\n * Alternatively, you can use the `component` prop.\n */\n variantMapping: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTypography'\n})(Typography);","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nfunction getStorage(type) {\n try {\n const storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\n\n// Store keys in local storage via simple interface\nexport default class LocalStorage {\n constructor(id, defaultSettings, type = 'sessionStorage') {\n this.storage = getStorage(type);\n this.id = id;\n this.config = {};\n Object.assign(this.config, defaultSettings);\n this._loadConfiguration();\n }\n\n getConfiguration() {\n return this.config;\n }\n\n setConfiguration(configuration) {\n this.config = {};\n return this.updateConfiguration(configuration);\n }\n\n updateConfiguration(configuration) {\n Object.assign(this.config, configuration);\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n return this;\n }\n\n // Get config from persistent store, if available\n _loadConfiguration() {\n let configuration = {};\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n Object.assign(this.config, configuration);\n return this;\n }\n}\n","// TODO: Currently unused, keeping in case we want it later for log formatting\nexport function formatTime(ms) {\n let formatted;\n if (ms < 10) {\n formatted = `${ms.toFixed(2)}ms`;\n } else if (ms < 100) {\n formatted = `${ms.toFixed(1)}ms`;\n } else if (ms < 1000) {\n formatted = `${ms.toFixed(0)}ms`;\n } else {\n formatted = `${(ms / 1000).toFixed(2)}s`;\n }\n return formatted;\n}\n\nexport function leftPad(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return `${' '.repeat(padLength)}${string}`;\n}\n\nexport function rightPad(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return `${string}${' '.repeat(padLength)}`;\n}\n\nexport function formatValue(v, opts = {}) {\n const EPSILON = 1e-16;\n const {isInteger = false} = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n return v.toFixed(0);\n }\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\n// Helper to formatValue\nfunction formatArrayValue(v, opts) {\n const {maxElts = 16, size = 1} = opts;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], opts);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\n// Inspired by https://github.com/hughsk/console-image (MIT license)\nexport function formatImage(image, message, scale, maxWidth = 600) {\n const imageUrl = image.src.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n if (image.width > maxWidth) {\n scale = Math.min(scale, maxWidth / image.width);\n }\n\n const width = image.width * scale;\n const height = image.height * scale;\n\n const style = [\n 'font-size:1px;',\n `padding:${Math.floor(height / 2)}px ${Math.floor(width / 2)}px;`,\n `line-height:${height}px;`,\n `background:url(${imageUrl});`,\n `background-size:${width}px ${height}px;`,\n 'color:transparent;'\n ].join('');\n\n return [`${message} %c+`, style];\n}\n","import {isBrowser} from './globals';\n\nexport const COLOR = {\n BLACK: 30,\n RED: 31,\n GREEN: 32,\n YELLOW: 33,\n BLUE: 34,\n MAGENTA: 35,\n CYAN: 36,\n WHITE: 37,\n\n BRIGHT_BLACK: 90,\n BRIGHT_RED: 91,\n BRIGHT_GREEN: 92,\n BRIGHT_YELLOW: 93,\n BRIGHT_BLUE: 94,\n BRIGHT_MAGENTA: 95,\n BRIGHT_CYAN: 96,\n BRIGHT_WHITE: 97\n};\n\nfunction getColor(color) {\n return typeof color === 'string' ? COLOR[color.toUpperCase()] || COLOR.WHITE : color;\n}\n\nexport function addColor(string, color, background) {\n if (!isBrowser && typeof string === 'string') {\n if (color) {\n color = getColor(color);\n string = `\\u001b[${color}m${string}\\u001b[39m`;\n }\n if (background) {\n // background colors values are +10\n color = getColor(background);\n string = `\\u001b[${background + 10}m${string}\\u001b[49m`;\n }\n }\n return string;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/**\n * Binds the \"this\" argument of all functions on a class instance to the instance\n * @param {Object} obj - class instance (typically a react component)\n */\nexport function autobind(obj, predefined = ['constructor']) {\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n for (const key of propNames) {\n if (typeof obj[key] === 'function') {\n if (!predefined.find(name => key === name)) {\n obj[key] = obj[key].bind(obj);\n }\n }\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable no-console */\nimport {VERSION, isBrowser} from '../utils/globals';\nimport LocalStorage from '../utils/local-storage';\nimport {formatImage, formatTime, leftPad} from '../utils/formatters';\nimport {addColor} from '../utils/color';\nimport {autobind} from '../utils/autobind';\nimport assert from '../utils/assert';\nimport getHiResTimestamp from '../utils/hi-res-timestamp';\n\n/* eslint-disable no-console */\n\n// Instrumentation in other packages may override console methods, so preserve them here\nconst originalConsole = {\n debug: isBrowser ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\n\nconst DEFAULT_SETTINGS = {\n enabled: true,\n level: 0\n};\n\nfunction noop() {}\n\nconst cache = {};\nconst ONCE = {once: true};\n\n/*\nfunction throttle(tag, timeout) {\n const prevTime = cache[tag];\n const time = Date.now();\n if (!prevTime || (time - prevTime > timeout)) {\n cache[tag] = time;\n return true;\n }\n return false;\n}\n\n// Assertions don't generate standard exceptions and don't print nicely\nfunction checkForAssertionErrors(args) {\n const isAssertion =\n args &&\n args.length > 0 &&\n typeof args[0] === 'object' &&\n args[0] !== null &&\n args[0].name === 'AssertionError';\n\n if (isAssertion) {\n args = Array.prototype.slice.call(args);\n args.unshift(`assert(${args[0].message})`);\n }\n return args;\n}\n*/\n\nfunction getTableHeader(table) {\n for (const key in table) {\n for (const title in table[key]) {\n return title || 'untitled';\n }\n }\n return 'empty';\n}\n\n// A console wrapper\n\nexport default class Log {\n constructor({id} = {}) {\n this.id = id;\n this.VERSION = VERSION;\n this._startTs = getHiResTimestamp();\n this._deltaTs = getHiResTimestamp();\n // TODO - fix support from throttling groups\n this.LOG_THROTTLE_TIMEOUT = 0; // Time before throttled messages are logged again\n this._storage = new LocalStorage(`__probe-${this.id}__`, DEFAULT_SETTINGS);\n this.userData = {};\n\n this.timeStamp(`${this.id} started`);\n\n autobind(this);\n Object.seal(this);\n }\n\n set level(newLevel) {\n this.setLevel(newLevel);\n }\n\n get level() {\n return this.getLevel();\n }\n\n isEnabled() {\n return this._storage.config.enabled;\n }\n\n getLevel() {\n return this._storage.config.level;\n }\n\n // @return {Number} milliseconds, with fractions\n getTotal() {\n return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n }\n\n // @return {Number} milliseconds, with fractions\n getDelta() {\n return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n }\n\n // Deprecated\n set priority(newPriority) {\n this.level = newPriority;\n }\n\n get priority() {\n return this.level;\n }\n\n getPriority() {\n return this.level;\n }\n\n // Configure\n\n enable(enabled = true) {\n this._storage.updateConfiguration({enabled});\n return this;\n }\n\n setLevel(level) {\n this._storage.updateConfiguration({level});\n return this;\n }\n\n // Unconditional logging\n\n assert(condition, message) {\n assert(condition, message);\n }\n\n // Warn, but only once, no console flooding\n warn(message) {\n return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n }\n\n // Print an error\n error(message) {\n return this._getLogFunction(0, message, originalConsole.error, arguments);\n }\n\n deprecated(oldUsage, newUsage) {\n return this.warn(`\\`${oldUsage}\\` is deprecated and will be removed \\\nin a later version. Use \\`${newUsage}\\` instead`);\n }\n\n removed(oldUsage, newUsage) {\n return this.error(`\\`${oldUsage}\\` has been removed. Use \\`${newUsage}\\` instead`);\n }\n\n // Conditional logging\n\n // Log to a group\n probe(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n\n // Log a debug message\n log(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n }\n\n // Log a normal message\n info(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n\n // Log a normal message, but only once, no console flooding\n once(logLevel, message) {\n return this._getLogFunction(\n logLevel,\n message,\n originalConsole.debug || originalConsole.info,\n arguments,\n ONCE\n );\n }\n\n // Logs an object as a table\n table(logLevel, table, columns) {\n if (table) {\n return this._getLogFunction(logLevel, table, console.table || noop, columns && [columns], {\n tag: getTableHeader(table)\n });\n }\n return noop;\n }\n\n // logs an image under Chrome\n image({logLevel, priority, image, message = '', scale = 1}) {\n if (!this._shouldLog(logLevel || priority)) {\n return noop;\n }\n return isBrowser\n ? logImageInBrowser({image, message, scale})\n : logImageInNode({image, message, scale});\n }\n\n // Logs the current settings as a table\n settings() {\n if (console.table) {\n console.table(this._storage.config);\n } else {\n console.log(this._storage.config);\n }\n }\n\n // logs the current status of the setting\n get(setting) {\n return this._storage.config[setting];\n }\n\n // update the status of the setting\n set(setting, value) {\n this._storage.updateConfiguration({[setting]: value});\n }\n\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n\n timeEnd(logLevel, message) {\n return this._getLogFunction(\n logLevel,\n message,\n console.timeEnd ? console.timeEnd : console.info\n );\n }\n\n timeStamp(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n }\n\n group(logLevel, message, opts = {collapsed: false}) {\n opts = normalizeArguments({logLevel, message, opts});\n const {collapsed} = opts;\n opts.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n\n return this._getLogFunction(opts);\n }\n\n groupCollapsed(logLevel, message, opts = {}) {\n return this.group(logLevel, message, Object.assign({}, opts, {collapsed: true}));\n }\n\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n }\n\n // EXPERIMENTAL\n\n withGroup(logLevel, message, func) {\n this.group(logLevel, message)();\n\n try {\n func();\n } finally {\n this.groupEnd(logLevel)();\n }\n }\n\n trace() {\n if (console.trace) {\n console.trace();\n }\n }\n\n // PRIVATE METHODS\n\n _shouldLog(logLevel) {\n return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n }\n\n _getLogFunction(logLevel, message, method, args = [], opts) {\n if (this._shouldLog(logLevel)) {\n // normalized opts + timings\n opts = normalizeArguments({logLevel, message, args, opts});\n method = method || opts.method;\n assert(method);\n\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n // reset delta timer\n this._deltaTs = getHiResTimestamp();\n\n const tag = opts.tag || opts.message;\n\n if (opts.once) {\n if (!cache[tag]) {\n cache[tag] = getHiResTimestamp();\n } else {\n return noop;\n }\n }\n\n // TODO - Make throttling work with groups\n // if (opts.nothrottle || !throttle(tag, this.LOG_THROTTLE_TIMEOUT)) {\n // return noop;\n // }\n\n message = decorateMessage(this.id, opts.message, opts);\n\n // Bind console function so that it can be called after being returned\n return method.bind(console, message, ...opts.args);\n }\n return noop;\n }\n}\n\nLog.VERSION = VERSION;\n\n// Get logLevel from first argument:\n// - log(logLevel, message, args) => logLevel\n// - log(message, args) => 0\n// - log({logLevel, ...}, message, args) => logLevel\n// - log({logLevel, message, args}) => logLevel\nfunction normalizeLogLevel(logLevel) {\n if (!logLevel) {\n return 0;\n }\n let resolvedLevel;\n\n switch (typeof logLevel) {\n case 'number':\n resolvedLevel = logLevel;\n break;\n\n case 'object':\n // Backward compatibility\n // TODO - deprecate `priority`\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n\n default:\n return 0;\n }\n // 'log level must be a number'\n assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n\n return resolvedLevel;\n}\n\n// \"Normalizes\" the various argument patterns into an object with known types\n// - log(logLevel, message, args) => {logLevel, message, args}\n// - log(message, args) => {logLevel: 0, message, args}\n// - log({logLevel, ...}, message, args) => {logLevel, message, args}\n// - log({logLevel, message, args}) => {logLevel, message, args}\nexport function normalizeArguments(opts) {\n const {logLevel, message} = opts;\n opts.logLevel = normalizeLogLevel(logLevel);\n // We use `arguments` instead of rest parameters (...args) because IE\n // does not support the syntax. Rest parameters is transpiled to code with\n // perf impact. Doing it here instead avoids constructing args when logging is\n // disabled.\n // TODO - remove when/if IE support is dropped\n const args = opts.args ? Array.from(opts.args) : [];\n /* eslint-disable no-empty */\n // args should only contain arguments that appear after `message`\n while (args.length && args.shift() !== message) {}\n /* eslint-enable no-empty */\n opts.args = args;\n\n switch (typeof logLevel) {\n case 'string':\n case 'function':\n if (message !== undefined) {\n args.unshift(message);\n }\n opts.message = logLevel;\n break;\n\n case 'object':\n Object.assign(opts, logLevel);\n break;\n\n default:\n }\n\n // Resolve functions into strings by calling them\n if (typeof opts.message === 'function') {\n opts.message = opts.message();\n }\n const messageType = typeof opts.message;\n // 'log message must be a string' or object\n assert(messageType === 'string' || messageType === 'object');\n\n // original opts + normalized opts + opts arg + fixed up message\n return Object.assign(opts, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n if (typeof message === 'string') {\n const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n message = opts.time ? `${id}: ${time} ${message}` : `${id}: ${message}`;\n message = addColor(message, opts.color, opts.background);\n }\n return message;\n}\n\n// Use the asciify module to log an image under node.js\nfunction logImageInNode({image, message = '', scale = 1}) {\n // Note: Runtime load of the \"asciify-image\" module, avoids including in browser bundles\n let asciify = null;\n try {\n asciify = module.require('asciify-image');\n } catch (error) {\n // asciify not installed, silently ignore\n }\n if (asciify) {\n return () =>\n asciify(image, {fit: 'box', width: `${Math.round(80 * scale)}%`}).then(data =>\n console.log(data)\n );\n }\n return noop;\n}\n\nfunction logImageInBrowser({image, message = '', scale = 1}) {\n if (typeof image === 'string') {\n const img = new Image();\n img.onload = () => {\n const args = formatImage(img, message, scale);\n console.log(...args);\n };\n img.src = image;\n return noop;\n }\n const element = image.nodeName || '';\n if (element.toLowerCase() === 'img') {\n console.log(...formatImage(image, message, scale));\n return noop;\n }\n if (element.toLowerCase() === 'canvas') {\n const img = new Image();\n img.onload = () => console.log(...formatImage(img, message, scale));\n img.src = image.toDataURL();\n return noop;\n }\n return noop;\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getDisplayName } from '@material-ui/utils';\nexport default function mergeClasses() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var baseClasses = options.baseClasses,\n newClasses = options.newClasses,\n Component = options.Component;\n\n if (!newClasses) {\n return baseClasses;\n }\n\n var nextClasses = _extends({}, baseClasses);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof newClasses === 'string') {\n console.error([\"Material-UI: the value `\".concat(newClasses, \"` \") + \"provided to the classes prop of \".concat(getDisplayName(Component), \" is incorrect.\"), 'You might want to use the className prop instead.'].join('\\n'));\n return baseClasses;\n }\n }\n\n Object.keys(newClasses).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!baseClasses[key] && newClasses[key]) {\n console.error([\"Material-UI: the key `\".concat(key, \"` \") + \"provided to the classes prop is not implemented in \".concat(getDisplayName(Component), \".\"), \"You can only override one of the following: \".concat(Object.keys(baseClasses).join(','), \".\")].join('\\n'));\n }\n\n if (newClasses[key] && typeof newClasses[key] !== 'string') {\n console.error([\"Material-UI: the key `\".concat(key, \"` \") + \"provided to the classes prop is not valid for \".concat(getDisplayName(Component), \".\"), \"You need to provide a non empty string instead of: \".concat(newClasses[key], \".\")].join('\\n'));\n }\n }\n\n if (newClasses[key]) {\n nextClasses[key] = \"\".concat(baseClasses[key], \" \").concat(newClasses[key]);\n }\n });\n return nextClasses;\n}","// Used https://github.com/thinkloop/multi-key-cache as inspiration\nvar multiKeyStore = {\n set: function set(cache, key1, key2, value) {\n var subCache = cache.get(key1);\n\n if (!subCache) {\n subCache = new Map();\n cache.set(key1, subCache);\n }\n\n subCache.set(key2, value);\n },\n get: function get(cache, key1, key2) {\n var subCache = cache.get(key1);\n return subCache ? subCache.get(key2) : undefined;\n },\n delete: function _delete(cache, key1, key2) {\n var subCache = cache.get(key1);\n subCache.delete(key2);\n }\n};\nexport default multiKeyStore;","/* eslint-disable import/prefer-default-export */\n// Global index counter to preserve source order.\n// We create the style sheet during at the creation of the component,\n// children are handled after the parents, so the order of style elements would be parent->child.\n// It is a problem though when a parent passes a className\n// which needs to override any child's styles.\n// StyleSheet of the child has a higher specificity, because of the source order.\n// So our solution is to render sheets them in the reverse order child->sheet, so\n// that parent has a higher specificity.\nvar indexCounter = -1e9;\nexport function increment() {\n indexCounter += 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (indexCounter >= 0) {\n console.warn(['Material-UI: you might have a memory leak.', 'The indexCounter is not supposed to grow that much.'].join('\\n'));\n }\n }\n\n return indexCounter;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { deepmerge } from '@material-ui/utils';\nimport noopTheme from './noopTheme';\nexport default function getStylesCreator(stylesOrCreator) {\n var themingEnabled = typeof stylesOrCreator === 'function';\n\n if (process.env.NODE_ENV !== 'production') {\n if (_typeof(stylesOrCreator) !== 'object' && !themingEnabled) {\n console.error(['Material-UI: the `styles` argument provided is invalid.', 'You need to provide a function generating the styles or a styles object.'].join('\\n'));\n }\n }\n\n return {\n create: function create(theme, name) {\n var styles;\n\n try {\n styles = themingEnabled ? stylesOrCreator(theme) : stylesOrCreator;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n if (themingEnabled === true && theme === noopTheme) {\n // TODO: prepend error message/name instead\n console.error(['Material-UI: the `styles` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n }\n }\n\n throw err;\n }\n\n if (!name || !theme.overrides || !theme.overrides[name]) {\n return styles;\n }\n\n var overrides = theme.overrides[name];\n\n var stylesWithOverrides = _extends({}, styles);\n\n Object.keys(overrides).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!stylesWithOverrides[key]) {\n console.warn(['Material-UI: you are trying to override a style that does not exist.', \"Fix the `\".concat(key, \"` key of `theme.overrides.\").concat(name, \"`.\")].join('\\n'));\n }\n }\n\n stylesWithOverrides[key] = deepmerge(stylesWithOverrides[key], overrides[key]);\n });\n return stylesWithOverrides;\n },\n options: {}\n };\n}","// We use the same empty object to ref count the styles that don't need a theme object.\nvar noopTheme = {};\nexport default noopTheme;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { getDynamicStyles } from 'jss';\nimport mergeClasses from '../mergeClasses';\nimport multiKeyStore from './multiKeyStore';\nimport useTheme from '../useTheme';\nimport { StylesContext } from '../StylesProvider';\nimport { increment } from './indexCounter';\nimport getStylesCreator from '../getStylesCreator';\nimport noopTheme from '../getStylesCreator/noopTheme';\n\nfunction getClasses(_ref, classes, Component) {\n var state = _ref.state,\n stylesOptions = _ref.stylesOptions;\n\n if (stylesOptions.disableGeneration) {\n return classes || {};\n }\n\n if (!state.cacheClasses) {\n state.cacheClasses = {\n // Cache for the finalized classes value.\n value: null,\n // Cache for the last used classes prop pointer.\n lastProp: null,\n // Cache for the last used rendered classes pointer.\n lastJSS: {}\n };\n } // Tracks if either the rendered classes or classes prop has changed,\n // requiring the generation of a new finalized classes object.\n\n\n var generate = false;\n\n if (state.classes !== state.cacheClasses.lastJSS) {\n state.cacheClasses.lastJSS = state.classes;\n generate = true;\n }\n\n if (classes !== state.cacheClasses.lastProp) {\n state.cacheClasses.lastProp = classes;\n generate = true;\n }\n\n if (generate) {\n state.cacheClasses.value = mergeClasses({\n baseClasses: state.cacheClasses.lastJSS,\n newClasses: classes,\n Component: Component\n });\n }\n\n return state.cacheClasses.value;\n}\n\nfunction attach(_ref2, props) {\n var state = _ref2.state,\n theme = _ref2.theme,\n stylesOptions = _ref2.stylesOptions,\n stylesCreator = _ref2.stylesCreator,\n name = _ref2.name;\n\n if (stylesOptions.disableGeneration) {\n return;\n }\n\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n\n if (!sheetManager) {\n sheetManager = {\n refs: 0,\n staticSheet: null,\n dynamicStyles: null\n };\n multiKeyStore.set(stylesOptions.sheetsManager, stylesCreator, theme, sheetManager);\n }\n\n var options = _extends({}, stylesCreator.options, {}, stylesOptions, {\n theme: theme,\n flip: typeof stylesOptions.flip === 'boolean' ? stylesOptions.flip : theme.direction === 'rtl'\n });\n\n options.generateId = options.serverGenerateClassName || options.generateClassName;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n\n if (sheetManager.refs === 0) {\n var staticSheet;\n\n if (stylesOptions.sheetsCache) {\n staticSheet = multiKeyStore.get(stylesOptions.sheetsCache, stylesCreator, theme);\n }\n\n var styles = stylesCreator.create(theme, name);\n\n if (!staticSheet) {\n staticSheet = stylesOptions.jss.createStyleSheet(styles, _extends({\n link: false\n }, options));\n staticSheet.attach();\n\n if (stylesOptions.sheetsCache) {\n multiKeyStore.set(stylesOptions.sheetsCache, stylesCreator, theme, staticSheet);\n }\n }\n\n if (sheetsRegistry) {\n sheetsRegistry.add(staticSheet);\n }\n\n sheetManager.staticSheet = staticSheet;\n sheetManager.dynamicStyles = getDynamicStyles(styles);\n }\n\n if (sheetManager.dynamicStyles) {\n var dynamicSheet = stylesOptions.jss.createStyleSheet(sheetManager.dynamicStyles, _extends({\n link: true\n }, options));\n dynamicSheet.update(props);\n dynamicSheet.attach();\n state.dynamicSheet = dynamicSheet;\n state.classes = mergeClasses({\n baseClasses: sheetManager.staticSheet.classes,\n newClasses: dynamicSheet.classes\n });\n\n if (sheetsRegistry) {\n sheetsRegistry.add(dynamicSheet);\n }\n } else {\n state.classes = sheetManager.staticSheet.classes;\n }\n\n sheetManager.refs += 1;\n}\n\nfunction update(_ref3, props) {\n var state = _ref3.state;\n\n if (state.dynamicSheet) {\n state.dynamicSheet.update(props);\n }\n}\n\nfunction detach(_ref4) {\n var state = _ref4.state,\n theme = _ref4.theme,\n stylesOptions = _ref4.stylesOptions,\n stylesCreator = _ref4.stylesCreator;\n\n if (stylesOptions.disableGeneration) {\n return;\n }\n\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n sheetManager.refs -= 1;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n\n if (sheetManager.refs === 0) {\n multiKeyStore.delete(stylesOptions.sheetsManager, stylesCreator, theme);\n stylesOptions.jss.removeStyleSheet(sheetManager.staticSheet);\n\n if (sheetsRegistry) {\n sheetsRegistry.remove(sheetManager.staticSheet);\n }\n }\n\n if (state.dynamicSheet) {\n stylesOptions.jss.removeStyleSheet(state.dynamicSheet);\n\n if (sheetsRegistry) {\n sheetsRegistry.remove(state.dynamicSheet);\n }\n }\n}\n\nfunction useSynchronousEffect(func, values) {\n var key = React.useRef([]);\n var output; // Store \"generation\" key. Just returns a new object every time\n\n var currentKey = React.useMemo(function () {\n return {};\n }, values); // eslint-disable-line react-hooks/exhaustive-deps\n // \"the first render\", or \"memo dropped the value\"\n\n if (key.current !== currentKey) {\n key.current = currentKey;\n output = func();\n }\n\n React.useEffect(function () {\n return function () {\n if (output) {\n output();\n }\n };\n }, [currentKey] // eslint-disable-line react-hooks/exhaustive-deps\n );\n}\n\nexport default function makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var name = options.name,\n classNamePrefixOption = options.classNamePrefix,\n Component = options.Component,\n _options$defaultTheme = options.defaultTheme,\n defaultTheme = _options$defaultTheme === void 0 ? noopTheme : _options$defaultTheme,\n stylesOptions2 = _objectWithoutProperties(options, [\"name\", \"classNamePrefix\", \"Component\", \"defaultTheme\"]);\n\n var stylesCreator = getStylesCreator(stylesOrCreator);\n var classNamePrefix = name || classNamePrefixOption || 'makeStyles';\n stylesCreator.options = {\n index: increment(),\n name: name,\n meta: classNamePrefix,\n classNamePrefix: classNamePrefix\n };\n return function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var theme = useTheme() || defaultTheme;\n\n var stylesOptions = _extends({}, React.useContext(StylesContext), {}, stylesOptions2);\n\n var instance = React.useRef();\n var shouldUpdate = React.useRef();\n useSynchronousEffect(function () {\n var current = {\n name: name,\n state: {},\n stylesCreator: stylesCreator,\n stylesOptions: stylesOptions,\n theme: theme\n };\n attach(current, props);\n shouldUpdate.current = false;\n instance.current = current;\n return function () {\n detach(current);\n };\n }, [theme, stylesCreator]);\n React.useEffect(function () {\n if (shouldUpdate.current) {\n update(instance.current, props);\n }\n\n shouldUpdate.current = true;\n });\n return getClasses(instance.current, props.classes, Component);\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import getHiResTimestamp from '../utils/hi-res-timestamp';\n\nexport default class Stat {\n constructor(name, type) {\n this.name = name;\n this.type = type;\n this.sampleSize = 1;\n this.reset();\n }\n\n setSampleSize(samples) {\n this.sampleSize = samples;\n\n return this;\n }\n\n // Call to increment count (+1)\n incrementCount() {\n this.addCount(1);\n\n return this;\n }\n\n // Call to decrement count (-1)\n decrementCount() {\n this.subtractCount(1);\n\n return this;\n }\n\n // Increase count\n addCount(value) {\n this._count += value;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n // Decrease count\n subtractCount(value) {\n this._count -= value;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n // Add an arbitrary timing and bump the count\n addTime(time) {\n this._time += time;\n this.lastTiming = time;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n // Start a timer\n timeStart() {\n this._startTime = getHiResTimestamp();\n this._timerPending = true;\n\n return this;\n }\n\n // End a timer. Adds to time and bumps the timing count.\n timeEnd() {\n if (!this._timerPending) {\n return this;\n }\n\n this.addTime(getHiResTimestamp() - this._startTime);\n this._timerPending = false;\n this._checkSampling();\n\n return this;\n }\n\n getSampleAverageCount() {\n return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n }\n\n // Calculate average time / count for the previous window\n getSampleAverageTime() {\n return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n }\n\n // Calculate counts per second for the previous window\n getSampleHz() {\n return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n }\n\n getAverageCount() {\n return this.samples > 0 ? this.count / this.samples : 0;\n }\n\n // Calculate average time / count\n getAverageTime() {\n return this.samples > 0 ? this.time / this.samples : 0;\n }\n\n // Calculate counts per second\n getHz() {\n return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n }\n\n reset() {\n this.time = 0;\n this.count = 0;\n this.samples = 0;\n this.lastTiming = 0;\n this.lastSampleTime = 0;\n this.lastSampleCount = 0;\n this._count = 0;\n this._time = 0;\n this._samples = 0;\n this._startTime = 0;\n this._timerPending = false;\n\n return this;\n }\n\n _checkSampling() {\n if (this._samples === this.sampleSize) {\n this.lastSampleTime = this._time;\n this.lastSampleCount = this._count;\n this.count += this._count;\n this.time += this._time;\n this.samples += this._samples;\n this._time = 0;\n this._count = 0;\n this._samples = 0;\n }\n }\n}\n","import Stat from './stat';\n\nexport default class Stats {\n constructor({id, stats}) {\n this.id = id;\n this.stats = {};\n\n this._initializeStats(stats);\n\n Object.seal(this);\n }\n\n // Acquire a stat. Create if it doesn't exist.\n get(name, type = 'count') {\n return this._getOrCreate({name, type});\n }\n\n get size() {\n return Object.keys(this.stats).length;\n }\n\n // Reset all stats\n reset() {\n for (const key in this.stats) {\n this.stats[key].reset();\n }\n\n return this;\n }\n\n forEach(fn) {\n for (const key in this.stats) {\n fn(this.stats[key]);\n }\n }\n\n getTable() {\n const table = {};\n this.forEach(stat => {\n table[stat.name] = {\n time: stat.time || 0,\n count: stat.count || 0,\n average: stat.getAverageTime() || 0,\n hz: stat.getHz() || 0\n };\n });\n\n return table;\n }\n\n _initializeStats(stats = []) {\n stats.forEach(stat => this._getOrCreate(stat));\n }\n\n _getOrCreate(stat) {\n if (!stat || !stat.name) {\n return null;\n }\n\n const {name, type} = stat;\n if (!this.stats[name]) {\n if (stat instanceof Stat) {\n this.stats[name] = stat;\n } else {\n this.stats[name] = new Stat(name, type);\n }\n }\n return this.stats[name];\n }\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport createGenerateClassName from '../createGenerateClassName';\nimport { create } from 'jss';\nimport jssPreset from '../jssPreset'; // Default JSS instance.\n\nvar jss = create(jssPreset()); // Use a singleton or the provided one by the context.\n//\n// The counter-based approach doesn't tolerate any mistake.\n// It's much safer to use the same counter everywhere.\n\nvar generateClassName = createGenerateClassName(); // Exported for test purposes\n\nexport var sheetsManager = new Map();\nvar defaultOptions = {\n disableGeneration: false,\n generateClassName: generateClassName,\n jss: jss,\n sheetsCache: null,\n sheetsManager: sheetsManager,\n sheetsRegistry: null\n};\nexport var StylesContext = React.createContext(defaultOptions);\n\nif (process.env.NODE_ENV !== 'production') {\n StylesContext.displayName = 'StylesContext';\n}\n\nvar injectFirstNode;\nexport default function StylesProvider(props) {\n var children = props.children,\n _props$injectFirst = props.injectFirst,\n injectFirst = _props$injectFirst === void 0 ? false : _props$injectFirst,\n _props$disableGenerat = props.disableGeneration,\n disableGeneration = _props$disableGenerat === void 0 ? false : _props$disableGenerat,\n localOptions = _objectWithoutProperties(props, [\"children\", \"injectFirst\", \"disableGeneration\"]);\n\n var outerOptions = React.useContext(StylesContext);\n\n var context = _extends({}, outerOptions, {\n disableGeneration: disableGeneration\n }, localOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window === 'undefined' && !context.sheetsManager) {\n console.error('Material-UI: you need to use the ServerStyleSheets API when rendering on the server.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (context.jss.options.insertionPoint && injectFirst) {\n console.error('Material-UI: you cannot use a custom insertionPoint and <StylesContext injectFirst> at the same time.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (injectFirst && localOptions.jss) {\n console.error('Material-UI: you cannot use the jss and injectFirst props at the same time.');\n }\n }\n\n if (!context.jss.options.insertionPoint && injectFirst && typeof window !== 'undefined') {\n if (!injectFirstNode) {\n var head = document.head;\n injectFirstNode = document.createComment('mui-inject-first');\n head.insertBefore(injectFirstNode, head.firstChild);\n }\n\n context.jss = create({\n plugins: jssPreset().plugins,\n insertionPoint: injectFirstNode\n });\n }\n\n return React.createElement(StylesContext.Provider, {\n value: context\n }, children);\n}\nprocess.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * You can disable the generation of the styles with this option.\n * It can be useful when traversing the React tree outside of the HTML\n * rendering step on the server.\n * Let's say you are using react-apollo to extract all\n * the queries made by the interface server-side - you can significantly speed up the traversal with this prop.\n */\n disableGeneration: PropTypes.bool,\n\n /**\n * JSS's class name generator.\n */\n generateClassName: PropTypes.func,\n\n /**\n * By default, the styles are injected last in the <head> element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override Material-UI's styles, set this prop.\n */\n injectFirst: PropTypes.bool,\n\n /**\n * JSS's instance.\n */\n jss: PropTypes.object,\n\n /**\n * @ignore\n */\n serverGenerateClassName: PropTypes.func,\n\n /**\n * @ignore\n *\n * Beta feature.\n *\n * Cache for the sheets.\n */\n sheetsCache: PropTypes.object,\n\n /**\n * @ignore\n *\n * The sheetsManager is used to deduplicate style sheet injection in the page.\n * It's deduplicating using the (theme, styles) couple.\n * On the server, you should provide a new instance for each request.\n */\n sheetsManager: PropTypes.object,\n\n /**\n * @ignore\n *\n * Collect the sheets.\n */\n sheetsRegistry: PropTypes.object\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = exactProp(StylesProvider.propTypes) : void 0;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested'; // To support composition of theme.\n\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === 'function') {\n var mergedTheme = localTheme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!mergedTheme) {\n console.error(['Material-UI: you should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\\n'));\n }\n }\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, {}, localTheme);\n}\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\n\n\nfunction ThemeProvider(props) {\n var children = props.children,\n localTheme = props.theme;\n var outerTheme = useTheme();\n\n if (process.env.NODE_ENV !== 'production') {\n if (outerTheme === null && typeof localTheme === 'function') {\n console.error(['Material-UI: you are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n\n var theme = React.useMemo(function () {\n var output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n\n if (output != null) {\n output[nested] = outerTheme !== null;\n }\n\n return output;\n }, [localTheme, outerTheme]);\n return React.createElement(ThemeContext.Provider, {\n value: theme\n }, children);\n}\n\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\n\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\n\nfunction getScale(value) {\n return \"scale(\".concat(value, \", \").concat(Math.pow(value, 2), \")\");\n}\n\nvar styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n/**\n * The Grow transition is used by the [Tooltip](/components/tooltips/) and\n * [Popover](/components/popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Grow = React.forwardRef(function Grow(props, ref) {\n var children = props.children,\n inProp = props.in,\n onEnter = props.onEnter,\n onExit = props.onExit,\n style = props.style,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? 'auto' : _props$timeout,\n other = _objectWithoutProperties(props, [\"children\", \"in\", \"onEnter\", \"onExit\", \"style\", \"timeout\"]);\n\n var timer = React.useRef();\n var autoTimeout = React.useRef();\n var handleRef = useForkRef(children.ref, ref);\n var theme = useTheme();\n\n var handleEnter = function handleEnter(node, isAppearing) {\n reflow(node); // So the animation always start from the start.\n\n var _getTransitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'enter'\n }),\n transitionDuration = _getTransitionProps.duration,\n delay = _getTransitionProps.delay;\n\n var duration;\n\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n\n node.style.transition = [theme.transitions.create('opacity', {\n duration: duration,\n delay: delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay: delay\n })].join(',');\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n };\n\n var handleExit = function handleExit(node) {\n var _getTransitionProps2 = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'exit'\n }),\n transitionDuration = _getTransitionProps2.duration,\n delay = _getTransitionProps2.delay;\n\n var duration;\n\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n\n node.style.transition = [theme.transitions.create('opacity', {\n duration: duration,\n delay: delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay: delay || duration * 0.333\n })].join(',');\n node.style.opacity = '0';\n node.style.transform = getScale(0.75);\n\n if (onExit) {\n onExit(node);\n }\n };\n\n var addEndListener = function addEndListener(_, next) {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTimeout.current || 0);\n }\n };\n\n React.useEffect(function () {\n return function () {\n clearTimeout(timer.current);\n };\n }, []);\n return React.createElement(Transition, _extends({\n appear: true,\n in: inProp,\n onEnter: handleEnter,\n onExit: handleExit,\n addEndListener: addEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other), function (state, childProps) {\n return React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], {}, style, {}, children.props.style),\n ref: handleRef\n }, childProps));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes = {\n /**\n * A single child content element.\n */\n children: PropTypes.element,\n\n /**\n * If `true`, show the component; triggers the enter or exit animation.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n */\n timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n enter: PropTypes.number,\n exit: PropTypes.number\n }), PropTypes.oneOf(['auto'])])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport useForkRef from '../utils/useForkRef';\nimport setRef from '../utils/setRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport { elementAcceptingRef, exactProp } from '@material-ui/utils';\n\nfunction mapEventPropToEvent(eventProp) {\n return eventProp.substring(2).toLowerCase();\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n */\n\n\nvar ClickAwayListener = React.forwardRef(function ClickAwayListener(props, ref) {\n var children = props.children,\n _props$mouseEvent = props.mouseEvent,\n mouseEvent = _props$mouseEvent === void 0 ? 'onClick' : _props$mouseEvent,\n _props$touchEvent = props.touchEvent,\n touchEvent = _props$touchEvent === void 0 ? 'onTouchEnd' : _props$touchEvent,\n onClickAway = props.onClickAway;\n var movedRef = React.useRef(false);\n var nodeRef = React.useRef(null);\n var mountedRef = React.useRef(false);\n React.useEffect(function () {\n mountedRef.current = true;\n return function () {\n mountedRef.current = false;\n };\n }, []);\n var handleNodeRef = useForkRef(nodeRef, ref); // can be removed once we drop support for non ref forwarding class components\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n setRef(handleNodeRef, ReactDOM.findDOMNode(instance));\n }, [handleNodeRef]);\n var handleRef = useForkRef(children.ref, handleOwnRef);\n var handleClickAway = useEventCallback(function (event) {\n // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviours like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n // IE 11 support, which trigger the handleClickAway even after the unbind\n if (!mountedRef.current) {\n return;\n } // Do not act if user performed touchmove\n\n\n if (movedRef.current) {\n movedRef.current = false;\n return;\n } // The child might render null.\n\n\n if (!nodeRef.current) {\n return;\n } // Multi window support\n\n\n var doc = ownerDocument(nodeRef.current);\n\n if (doc.documentElement && doc.documentElement.contains(event.target) && !nodeRef.current.contains(event.target)) {\n onClickAway(event);\n }\n });\n var handleTouchMove = React.useCallback(function () {\n movedRef.current = true;\n }, []);\n React.useEffect(function () {\n if (touchEvent !== false) {\n var mappedTouchEvent = mapEventPropToEvent(touchEvent);\n var doc = ownerDocument(nodeRef.current);\n doc.addEventListener(mappedTouchEvent, handleClickAway);\n doc.addEventListener('touchmove', handleTouchMove);\n return function () {\n doc.removeEventListener(mappedTouchEvent, handleClickAway);\n doc.removeEventListener('touchmove', handleTouchMove);\n };\n }\n\n return undefined;\n }, [handleClickAway, handleTouchMove, touchEvent]);\n React.useEffect(function () {\n if (mouseEvent !== false) {\n var mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n var doc = ownerDocument(nodeRef.current);\n doc.addEventListener(mappedMouseEvent, handleClickAway);\n return function () {\n doc.removeEventListener(mappedMouseEvent, handleClickAway);\n };\n }\n\n return undefined;\n }, [handleClickAway, mouseEvent]);\n return React.createElement(React.Fragment, null, React.cloneElement(children, {\n ref: handleRef\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes = {\n /**\n * The wrapped element.\n */\n children: elementAcceptingRef.isRequired,\n\n /**\n * The mouse event to listen to. You can disable the listener by providing `false`.\n */\n mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', false]),\n\n /**\n * Callback fired when a \"click away\" event is detected.\n */\n onClickAway: PropTypes.func.isRequired,\n\n /**\n * The touch event to listen to. You can disable the listener by providing `false`.\n */\n touchEvent: PropTypes.oneOf(['onTouchStart', 'onTouchEnd', false])\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\n\nexport default ClickAwayListener;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nvar SIZE = 44;\n\nfunction getRelativeValue(value, min, max) {\n return (Math.min(Math.max(min, value), max) - min) / (max - min);\n}\n\nfunction easeOut(t) {\n t = getRelativeValue(t, 0, 1); // https://gist.github.com/gre/1650294\n\n t = (t -= 1) * t * t + 1;\n return t;\n}\n\nfunction easeIn(t) {\n return t * t;\n}\n\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-block'\n },\n\n /* Styles applied to the root element if `variant=\"static\"`. */\n static: {\n transition: theme.transitions.create('transform')\n },\n\n /* Styles applied to the root element if `variant=\"indeterminate\"`. */\n indeterminate: {\n animation: '$circular-rotate 1.4s linear infinite'\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the `svg` element. */\n svg: {\n display: 'block' // Keeps the progress centered\n\n },\n\n /* Styles applied to the `circle` svg path. */\n circle: {\n stroke: 'currentColor' // Use butt to follow the specification, by chance, it's already the default CSS value.\n // strokeLinecap: 'butt',\n\n },\n\n /* Styles applied to the `circle` svg path if `variant=\"static\"`. */\n circleStatic: {\n transition: theme.transitions.create('stroke-dashoffset')\n },\n\n /* Styles applied to the `circle` svg path if `variant=\"indeterminate\"`. */\n circleIndeterminate: {\n animation: '$circular-dash 1.4s ease-in-out infinite',\n // Some default value that looks fine waiting for the animation to kicks in.\n strokeDasharray: '80px, 200px',\n strokeDashoffset: '0px' // Add the unit to fix a Edge 16 and below bug.\n\n },\n '@keyframes circular-rotate': {\n '100%': {\n transform: 'rotate(360deg)'\n }\n },\n '@keyframes circular-dash': {\n '0%': {\n strokeDasharray: '1px, 200px',\n strokeDashoffset: '0px'\n },\n '50%': {\n strokeDasharray: '100px, 200px',\n strokeDashoffset: '-15px'\n },\n '100%': {\n strokeDasharray: '100px, 200px',\n strokeDashoffset: '-125px'\n }\n },\n\n /* Styles applied to the `circle` svg path if `disableShrink={true}`. */\n circleDisableShrink: {\n animation: 'none'\n }\n };\n};\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\n\nvar CircularProgress = React.forwardRef(function CircularProgress(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n _props$disableShrink = props.disableShrink,\n disableShrink = _props$disableShrink === void 0 ? false : _props$disableShrink,\n _props$size = props.size,\n size = _props$size === void 0 ? 40 : _props$size,\n style = props.style,\n _props$thickness = props.thickness,\n thickness = _props$thickness === void 0 ? 3.6 : _props$thickness,\n _props$value = props.value,\n value = _props$value === void 0 ? 0 : _props$value,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'indeterminate' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"disableShrink\", \"size\", \"style\", \"thickness\", \"value\", \"variant\"]);\n\n var circleStyle = {};\n var rootStyle = {};\n var rootProps = {};\n\n if (variant === 'determinate' || variant === 'static') {\n var circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n circleStyle.strokeDasharray = circumference.toFixed(3);\n rootProps['aria-valuenow'] = Math.round(value);\n\n if (variant === 'static') {\n circleStyle.strokeDashoffset = \"\".concat(((100 - value) / 100 * circumference).toFixed(3), \"px\");\n rootStyle.transform = 'rotate(-90deg)';\n } else {\n circleStyle.strokeDashoffset = \"\".concat((easeIn((100 - value) / 100) * circumference).toFixed(3), \"px\");\n rootStyle.transform = \"rotate(\".concat((easeOut(value / 70) * 270).toFixed(3), \"deg)\");\n }\n }\n\n return React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, color !== 'inherit' && classes[\"color\".concat(capitalize(color))], {\n 'indeterminate': classes.indeterminate,\n 'static': classes.static\n }[variant]),\n style: _extends({\n width: size,\n height: size\n }, rootStyle, {}, style),\n ref: ref,\n role: \"progressbar\"\n }, rootProps, other), React.createElement(\"svg\", {\n className: classes.svg,\n viewBox: \"\".concat(SIZE / 2, \" \").concat(SIZE / 2, \" \").concat(SIZE, \" \").concat(SIZE)\n }, React.createElement(\"circle\", {\n className: clsx(classes.circle, disableShrink && classes.circleDisableShrink, {\n 'indeterminate': classes.circleIndeterminate,\n 'static': classes.circleStatic\n }[variant]),\n style: circleStyle,\n cx: SIZE,\n cy: SIZE,\n r: (SIZE - thickness) / 2,\n fill: \"none\",\n strokeWidth: thickness\n })));\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary', 'inherit']),\n\n /**\n * If `true`, the shrink animation is disabled.\n * This only works if variant is `indeterminate`.\n */\n disableShrink: chainPropTypes(PropTypes.bool, function (props) {\n if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n return new Error('Material-UI: you have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n }\n\n return null;\n }),\n\n /**\n * The size of the circle.\n * If using a number, the pixel unit is assumed.\n * If using a string, you need to provide the CSS unit, e.g '3rem'.\n */\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The thickness of the circle.\n */\n thickness: PropTypes.number,\n\n /**\n * The value of the progress indicator for the determinate and static variants.\n * Value between 0 and 100.\n */\n value: PropTypes.number,\n\n /**\n * The variant to use.\n * Use indeterminate when there is no progress value.\n */\n variant: PropTypes.oneOf(['determinate', 'indeterminate', 'static'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiCircularProgress',\n flip: false\n})(CircularProgress);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport capitalize from '../utils/capitalize';\nimport withStyles from '../styles/withStyles';\nimport { darken, lighten } from '../styles/colorManipulator';\nimport useTheme from '../styles/useTheme';\nvar TRANSITION_DURATION = 4; // seconds\n\nexport var styles = function styles(theme) {\n var getColor = function getColor(color) {\n return theme.palette.type === 'light' ? lighten(color, 0.62) : darken(color, 0.5);\n };\n\n var backgroundPrimary = getColor(theme.palette.primary.main);\n var backgroundSecondary = getColor(theme.palette.secondary.main);\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n overflow: 'hidden',\n height: 4\n },\n\n /* Styles applied to the root and bar2 element if `color=\"primary\"`; bar2 if `variant=\"buffer\"`. */\n colorPrimary: {\n backgroundColor: backgroundPrimary\n },\n\n /* Styles applied to the root and bar2 elements if `color=\"secondary\"`; bar2 if `variant=\"buffer\"`. */\n colorSecondary: {\n backgroundColor: backgroundSecondary\n },\n\n /* Styles applied to the root element if `variant=\"determinate\"`. */\n determinate: {},\n\n /* Styles applied to the root element if `variant=\"indeterminate\"`. */\n indeterminate: {},\n\n /* Styles applied to the root element if `variant=\"buffer\"`. */\n buffer: {\n backgroundColor: 'transparent'\n },\n\n /* Styles applied to the root element if `variant=\"query\"`. */\n query: {\n transform: 'rotate(180deg)'\n },\n\n /* Styles applied to the additional bar element if `variant=\"buffer\"`. */\n dashed: {\n position: 'absolute',\n marginTop: 0,\n height: '100%',\n width: '100%',\n animation: '$buffer 3s infinite linear'\n },\n\n /* Styles applied to the additional bar element if `variant=\"buffer\"` and `color=\"primary\"`. */\n dashedColorPrimary: {\n backgroundImage: \"radial-gradient(\".concat(backgroundPrimary, \" 0%, \").concat(backgroundPrimary, \" 16%, transparent 42%)\"),\n backgroundSize: '10px 10px',\n backgroundPosition: '0px -23px'\n },\n\n /* Styles applied to the additional bar element if `variant=\"buffer\"` and `color=\"secondary\"`. */\n dashedColorSecondary: {\n backgroundImage: \"radial-gradient(\".concat(backgroundSecondary, \" 0%, \").concat(backgroundSecondary, \" 16%, transparent 42%)\"),\n backgroundSize: '10px 10px',\n backgroundPosition: '0px -23px'\n },\n\n /* Styles applied to the layered bar1 and bar2 elements. */\n bar: {\n width: '100%',\n position: 'absolute',\n left: 0,\n bottom: 0,\n top: 0,\n transition: 'transform 0.2s linear',\n transformOrigin: 'left'\n },\n\n /* Styles applied to the bar elements if `color=\"primary\"`; bar2 if `variant` not \"buffer\". */\n barColorPrimary: {\n backgroundColor: theme.palette.primary.main\n },\n\n /* Styles applied to the bar elements if `color=\"secondary\"`; bar2 if `variant` not \"buffer\". */\n barColorSecondary: {\n backgroundColor: theme.palette.secondary.main\n },\n\n /* Styles applied to the bar1 element if `variant=\"indeterminate or query\"`. */\n bar1Indeterminate: {\n width: 'auto',\n animation: '$indeterminate1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite'\n },\n\n /* Styles applied to the bar1 element if `variant=\"determinate\"`. */\n bar1Determinate: {\n transition: \"transform .\".concat(TRANSITION_DURATION, \"s linear\")\n },\n\n /* Styles applied to the bar1 element if `variant=\"buffer\"`. */\n bar1Buffer: {\n zIndex: 1,\n transition: \"transform .\".concat(TRANSITION_DURATION, \"s linear\")\n },\n\n /* Styles applied to the bar2 element if `variant=\"indeterminate or query\"`. */\n bar2Indeterminate: {\n width: 'auto',\n animation: '$indeterminate2 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite'\n },\n\n /* Styles applied to the bar2 element if `variant=\"buffer\"`. */\n bar2Buffer: {\n transition: \"transform .\".concat(TRANSITION_DURATION, \"s linear\")\n },\n // Legends:\n // || represents the viewport\n // - represents a light background\n // x represents a dark background\n '@keyframes indeterminate1': {\n // |-----|---x-||-----||-----|\n '0%': {\n left: '-35%',\n right: '100%'\n },\n // |-----|-----||-----||xxxx-|\n '60%': {\n left: '100%',\n right: '-90%'\n },\n '100%': {\n left: '100%',\n right: '-90%'\n }\n },\n '@keyframes indeterminate2': {\n // |xxxxx|xxxxx||-----||-----|\n '0%': {\n left: '-200%',\n right: '100%'\n },\n // |-----|-----||-----||-x----|\n '60%': {\n left: '107%',\n right: '-8%'\n },\n '100%': {\n left: '107%',\n right: '-8%'\n }\n },\n '@keyframes buffer': {\n '0%': {\n opacity: 1,\n backgroundPosition: '0px -23px'\n },\n '50%': {\n opacity: 0,\n backgroundPosition: '0px -23px'\n },\n '100%': {\n opacity: 1,\n backgroundPosition: '-200px -23px'\n }\n }\n };\n};\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\n\nvar LinearProgress = React.forwardRef(function LinearProgress(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n value = props.value,\n valueBuffer = props.valueBuffer,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'indeterminate' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"value\", \"valueBuffer\", \"variant\"]);\n\n var theme = useTheme();\n var rootProps = {};\n var inlineStyles = {\n bar1: {},\n bar2: {}\n };\n\n if (variant === 'determinate' || variant === 'buffer') {\n if (value !== undefined) {\n rootProps['aria-valuenow'] = Math.round(value);\n var transform = value - 100;\n\n if (theme.direction === 'rtl') {\n transform = -transform;\n }\n\n inlineStyles.bar1.transform = \"translateX(\".concat(transform, \"%)\");\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Material-UI: you need to provide a value prop ' + 'when using the determinate or buffer variant of LinearProgress .');\n }\n }\n\n if (variant === 'buffer') {\n if (valueBuffer !== undefined) {\n var _transform = (valueBuffer || 0) - 100;\n\n if (theme.direction === 'rtl') {\n _transform = -_transform;\n }\n\n inlineStyles.bar2.transform = \"translateX(\".concat(_transform, \"%)\");\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Material-UI: you need to provide a valueBuffer prop ' + 'when using the buffer variant of LinearProgress.');\n }\n }\n\n return React.createElement(\"div\", _extends({\n className: clsx(classes.root, classes[\"color\".concat(capitalize(color))], className, {\n 'determinate': classes.determinate,\n 'indeterminate': classes.indeterminate,\n 'buffer': classes.buffer,\n 'query': classes.query\n }[variant]),\n role: \"progressbar\"\n }, rootProps, {\n ref: ref\n }, other), variant === 'buffer' ? React.createElement(\"div\", {\n className: clsx(classes.dashed, classes[\"dashedColor\".concat(capitalize(color))])\n }) : null, React.createElement(\"div\", {\n className: clsx(classes.bar, classes[\"barColor\".concat(capitalize(color))], (variant === 'indeterminate' || variant === 'query') && classes.bar1Indeterminate, {\n 'determinate': classes.bar1Determinate,\n 'buffer': classes.bar1Buffer\n }[variant]),\n style: inlineStyles.bar1\n }), variant === 'determinate' ? null : React.createElement(\"div\", {\n className: clsx(classes.bar, (variant === 'indeterminate' || variant === 'query') && classes.bar2Indeterminate, variant === 'buffer' ? [classes[\"color\".concat(capitalize(color))], classes.bar2Buffer] : classes[\"barColor\".concat(capitalize(color))]),\n style: inlineStyles.bar2\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? LinearProgress.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n\n /**\n * The value of the progress indicator for the determinate and buffer variants.\n * Value between 0 and 100.\n */\n value: PropTypes.number,\n\n /**\n * The value for the buffer variant.\n * Value between 0 and 100.\n */\n valueBuffer: PropTypes.number,\n\n /**\n * The variant to use.\n * Use indeterminate or query when there is no progress value.\n */\n variant: PropTypes.oneOf(['determinate', 'indeterminate', 'buffer', 'query'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiLinearProgress'\n})(LinearProgress);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n// A grid component using the following libs as inspiration.\n//\n// For the implementation:\n// - https://getbootstrap.com/docs/4.3/layout/grid/\n// - https://github.com/kristoferjoseph/flexboxgrid/blob/master/src/css/flexboxgrid.css\n// - https://github.com/roylee0704/react-flexbox-grid\n// - https://material.angularjs.org/latest/layout/introduction\n//\n// Follow this flexbox Guide to better understand the underlying model:\n// - https://css-tricks.com/snippets/css/a-guide-to-flexbox/\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport requirePropFactory from '../utils/requirePropFactory';\nvar SPACINGS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\nfunction generateGrid(globalStyles, theme, breakpoint) {\n var styles = {};\n GRID_SIZES.forEach(function (size) {\n var key = \"grid-\".concat(breakpoint, \"-\").concat(size);\n\n if (size === true) {\n // For the auto layouting\n styles[key] = {\n flexBasis: 0,\n flexGrow: 1,\n maxWidth: '100%'\n };\n return;\n }\n\n if (size === 'auto') {\n styles[key] = {\n flexBasis: 'auto',\n flexGrow: 0,\n maxWidth: 'none'\n };\n return;\n } // Keep 7 significant numbers.\n\n\n var width = \"\".concat(Math.round(size / 12 * 10e7) / 10e5, \"%\"); // Close to the bootstrap implementation:\n // https://github.com/twbs/bootstrap/blob/8fccaa2439e97ec72a4b7dc42ccc1f649790adb0/scss/mixins/_grid.scss#L41\n\n styles[key] = {\n flexBasis: width,\n flexGrow: 0,\n maxWidth: width\n };\n }); // No need for a media query for the first size.\n\n if (breakpoint === 'xs') {\n _extends(globalStyles, styles);\n } else {\n globalStyles[theme.breakpoints.up(breakpoint)] = styles;\n }\n}\n\nfunction getOffset(val) {\n var div = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var parse = parseFloat(val);\n return \"\".concat(parse / div).concat(String(val).replace(String(parse), '') || 'px');\n}\n\nfunction generateGutter(theme, breakpoint) {\n var styles = {};\n SPACINGS.forEach(function (spacing) {\n var themeSpacing = theme.spacing(spacing);\n\n if (themeSpacing === 0) {\n return;\n }\n\n styles[\"spacing-\".concat(breakpoint, \"-\").concat(spacing)] = {\n margin: \"-\".concat(getOffset(themeSpacing, 2)),\n width: \"calc(100% + \".concat(getOffset(themeSpacing), \")\"),\n '& > $item': {\n padding: getOffset(themeSpacing, 2)\n }\n };\n });\n return styles;\n} // Default CSS values\n// flex: '0 1 auto',\n// flexDirection: 'row',\n// alignItems: 'flex-start',\n// flexWrap: 'nowrap',\n// justifyContent: 'flex-start',\n\n\nexport var styles = function styles(theme) {\n return _extends({\n /* Styles applied to the root element */\n root: {},\n\n /* Styles applied to the root element if `container={true}`. */\n container: {\n boxSizing: 'border-box',\n display: 'flex',\n flexWrap: 'wrap',\n width: '100%'\n },\n\n /* Styles applied to the root element if `item={true}`. */\n item: {\n boxSizing: 'border-box',\n margin: '0' // For instance, it's useful when used with a `figure` element.\n\n },\n\n /* Styles applied to the root element if `zeroMinWidth={true}`. */\n zeroMinWidth: {\n minWidth: 0\n },\n\n /* Styles applied to the root element if `direction=\"column\"`. */\n 'direction-xs-column': {\n flexDirection: 'column'\n },\n\n /* Styles applied to the root element if `direction=\"column-reverse\"`. */\n 'direction-xs-column-reverse': {\n flexDirection: 'column-reverse'\n },\n\n /* Styles applied to the root element if `direction=\"row-reverse\"`. */\n 'direction-xs-row-reverse': {\n flexDirection: 'row-reverse'\n },\n\n /* Styles applied to the root element if `wrap=\"nowrap\"`. */\n 'wrap-xs-nowrap': {\n flexWrap: 'nowrap'\n },\n\n /* Styles applied to the root element if `wrap=\"reverse\"`. */\n 'wrap-xs-wrap-reverse': {\n flexWrap: 'wrap-reverse'\n },\n\n /* Styles applied to the root element if `alignItems=\"center\"`. */\n 'align-items-xs-center': {\n alignItems: 'center'\n },\n\n /* Styles applied to the root element if `alignItems=\"flex-start\"`. */\n 'align-items-xs-flex-start': {\n alignItems: 'flex-start'\n },\n\n /* Styles applied to the root element if `alignItems=\"flex-end\"`. */\n 'align-items-xs-flex-end': {\n alignItems: 'flex-end'\n },\n\n /* Styles applied to the root element if `alignItems=\"baseline\"`. */\n 'align-items-xs-baseline': {\n alignItems: 'baseline'\n },\n\n /* Styles applied to the root element if `alignContent=\"center\"`. */\n 'align-content-xs-center': {\n alignContent: 'center'\n },\n\n /* Styles applied to the root element if `alignContent=\"flex-start\"`. */\n 'align-content-xs-flex-start': {\n alignContent: 'flex-start'\n },\n\n /* Styles applied to the root element if `alignContent=\"flex-end\"`. */\n 'align-content-xs-flex-end': {\n alignContent: 'flex-end'\n },\n\n /* Styles applied to the root element if `alignContent=\"space-between\"`. */\n 'align-content-xs-space-between': {\n alignContent: 'space-between'\n },\n\n /* Styles applied to the root element if `alignContent=\"space-around\"`. */\n 'align-content-xs-space-around': {\n alignContent: 'space-around'\n },\n\n /* Styles applied to the root element if `justify=\"center\"`. */\n 'justify-xs-center': {\n justifyContent: 'center'\n },\n\n /* Styles applied to the root element if `justify=\"flex-end\"`. */\n 'justify-xs-flex-end': {\n justifyContent: 'flex-end'\n },\n\n /* Styles applied to the root element if `justify=\"space-between\"`. */\n 'justify-xs-space-between': {\n justifyContent: 'space-between'\n },\n\n /* Styles applied to the root element if `justify=\"space-around\"`. */\n 'justify-xs-space-around': {\n justifyContent: 'space-around'\n },\n\n /* Styles applied to the root element if `justify=\"space-evenly\"`. */\n 'justify-xs-space-evenly': {\n justifyContent: 'space-evenly'\n }\n }, generateGutter(theme, 'xs'), {}, theme.breakpoints.keys.reduce(function (accumulator, key) {\n // Use side effect over immutability for better performance.\n generateGrid(accumulator, theme, key);\n return accumulator;\n }, {}));\n};\nvar Grid = React.forwardRef(function Grid(props, ref) {\n var _props$alignContent = props.alignContent,\n alignContent = _props$alignContent === void 0 ? 'stretch' : _props$alignContent,\n _props$alignItems = props.alignItems,\n alignItems = _props$alignItems === void 0 ? 'stretch' : _props$alignItems,\n classes = props.classes,\n classNameProp = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$container = props.container,\n container = _props$container === void 0 ? false : _props$container,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'row' : _props$direction,\n _props$item = props.item,\n item = _props$item === void 0 ? false : _props$item,\n _props$justify = props.justify,\n justify = _props$justify === void 0 ? 'flex-start' : _props$justify,\n _props$lg = props.lg,\n lg = _props$lg === void 0 ? false : _props$lg,\n _props$md = props.md,\n md = _props$md === void 0 ? false : _props$md,\n _props$sm = props.sm,\n sm = _props$sm === void 0 ? false : _props$sm,\n _props$spacing = props.spacing,\n spacing = _props$spacing === void 0 ? 0 : _props$spacing,\n _props$wrap = props.wrap,\n wrap = _props$wrap === void 0 ? 'wrap' : _props$wrap,\n _props$xl = props.xl,\n xl = _props$xl === void 0 ? false : _props$xl,\n _props$xs = props.xs,\n xs = _props$xs === void 0 ? false : _props$xs,\n _props$zeroMinWidth = props.zeroMinWidth,\n zeroMinWidth = _props$zeroMinWidth === void 0 ? false : _props$zeroMinWidth,\n other = _objectWithoutProperties(props, [\"alignContent\", \"alignItems\", \"classes\", \"className\", \"component\", \"container\", \"direction\", \"item\", \"justify\", \"lg\", \"md\", \"sm\", \"spacing\", \"wrap\", \"xl\", \"xs\", \"zeroMinWidth\"]);\n\n var className = clsx(classes.root, classNameProp, container && [classes.container, spacing !== 0 && classes[\"spacing-xs-\".concat(String(spacing))]], item && classes.item, zeroMinWidth && classes.zeroMinWidth, direction !== 'row' && classes[\"direction-xs-\".concat(String(direction))], wrap !== 'wrap' && classes[\"wrap-xs-\".concat(String(wrap))], alignItems !== 'stretch' && classes[\"align-items-xs-\".concat(String(alignItems))], alignContent !== 'stretch' && classes[\"align-content-xs-\".concat(String(alignContent))], justify !== 'flex-start' && classes[\"justify-xs-\".concat(String(justify))], xs !== false && classes[\"grid-xs-\".concat(String(xs))], sm !== false && classes[\"grid-sm-\".concat(String(sm))], md !== false && classes[\"grid-md-\".concat(String(md))], lg !== false && classes[\"grid-lg-\".concat(String(lg))], xl !== false && classes[\"grid-xl-\".concat(String(xl))]);\n return React.createElement(Component, _extends({\n className: className,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grid.propTypes = {\n /**\n * Defines the `align-content` style property.\n * It's applied for all screen sizes.\n */\n alignContent: PropTypes.oneOf(['stretch', 'center', 'flex-start', 'flex-end', 'space-between', 'space-around']),\n\n /**\n * Defines the `align-items` style property.\n * It's applied for all screen sizes.\n */\n alignItems: PropTypes.oneOf(['flex-start', 'center', 'flex-end', 'stretch', 'baseline']),\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, the component will have the flex *container* behavior.\n * You should be wrapping *items* with a *container*.\n */\n container: PropTypes.bool,\n\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n */\n direction: PropTypes.oneOf(['row', 'row-reverse', 'column', 'column-reverse']),\n\n /**\n * If `true`, the component will have the flex *item* behavior.\n * You should be wrapping *items* with a *container*.\n */\n item: PropTypes.bool,\n\n /**\n * Defines the `justify-content` style property.\n * It is applied for all screen sizes.\n */\n justify: PropTypes.oneOf(['flex-start', 'center', 'flex-end', 'space-between', 'space-around', 'space-evenly']),\n\n /**\n * Defines the number of grids the component is going to use.\n * It's applied for the `lg` breakpoint and wider screens if not overridden.\n */\n lg: PropTypes.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),\n\n /**\n * Defines the number of grids the component is going to use.\n * It's applied for the `md` breakpoint and wider screens if not overridden.\n */\n md: PropTypes.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),\n\n /**\n * Defines the number of grids the component is going to use.\n * It's applied for the `sm` breakpoint and wider screens if not overridden.\n */\n sm: PropTypes.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),\n\n /**\n * Defines the space between the type `item` component.\n * It can only be used on a type `container` component.\n */\n spacing: PropTypes.oneOf(SPACINGS),\n\n /**\n * Defines the `flex-wrap` style property.\n * It's applied for all screen sizes.\n */\n wrap: PropTypes.oneOf(['nowrap', 'wrap', 'wrap-reverse']),\n\n /**\n * Defines the number of grids the component is going to use.\n * It's applied for the `xl` breakpoint and wider screens.\n */\n xl: PropTypes.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),\n\n /**\n * Defines the number of grids the component is going to use.\n * It's applied for all the screen sizes with the lowest priority.\n */\n xs: PropTypes.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),\n\n /**\n * If `true`, it sets `min-width: 0` on the item.\n * Refer to the limitations section of the documentation to better understand the use case.\n */\n zeroMinWidth: PropTypes.bool\n} : void 0;\nvar StyledGrid = withStyles(styles, {\n name: 'MuiGrid'\n})(Grid);\n\nif (process.env.NODE_ENV !== 'production') {\n var requireProp = requirePropFactory('Grid');\n StyledGrid.propTypes = _extends({}, StyledGrid.propTypes, {\n alignContent: requireProp('container'),\n alignItems: requireProp('container'),\n direction: requireProp('container'),\n justify: requireProp('container'),\n lg: requireProp('item'),\n md: requireProp('item'),\n sm: requireProp('item'),\n spacing: requireProp('container'),\n wrap: requireProp('container'),\n xs: requireProp('item'),\n zeroMinWidth: requireProp('item')\n });\n}\n\nexport default StyledGrid;","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import GL from '@luma.gl/constants';\nimport {isWebGL2, log} from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {assertWebGL2Context} from '../webgl-utils';\nimport {isObjectEmpty} from '../utils';\n\n// NOTE: The `bindOnUse` flag is a major workaround:\n// See https://github.com/KhronosGroup/WebGL/issues/2346\n\nexport default class TransformFeedback extends Resource {\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n assertWebGL2Context(gl);\n super(gl, props);\n\n this.initialize(props);\n this.stubRemovedMethods('TransformFeedback', 'v6.0', ['pause', 'resume']);\n Object.seal(this);\n }\n\n initialize(props = {}) {\n this.buffers = {};\n this.unused = {};\n this.configuration = null;\n this.bindOnUse = true;\n\n // Unbind any currently bound buffers\n if (!isObjectEmpty(this.buffers)) {\n this.bind(() => this._unbindBuffers());\n }\n\n this.setProps(props);\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n if ('buffers' in props) {\n this.setBuffers(props.buffers);\n }\n }\n\n setBuffers(buffers = {}) {\n this.bind(() => {\n for (const bufferName in buffers) {\n this.setBuffer(bufferName, buffers[bufferName]);\n }\n });\n return this;\n }\n\n setBuffer(locationOrName, bufferOrParams) {\n const location = this._getVaryingIndex(locationOrName);\n const {buffer, byteSize, byteOffset} = this._getBufferParams(bufferOrParams);\n\n if (location < 0) {\n this.unused[locationOrName] = buffer;\n log.warn(() => `${this.id} unused varying buffer ${locationOrName}`)();\n return this;\n }\n\n this.buffers[location] = bufferOrParams;\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n if (!this.bindOnUse) {\n this._bindBuffer(location, buffer, byteOffset, byteSize);\n }\n\n return this;\n }\n\n begin(primitiveMode = GL.POINTS) {\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n this._bindBuffers();\n this.gl.beginTransformFeedback(primitiveMode);\n return this;\n }\n\n end() {\n this.gl.endTransformFeedback();\n this._unbindBuffers();\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);\n return this;\n }\n\n // PRIVATE METHODS\n\n _getBufferParams(bufferOrParams) {\n let byteOffset;\n let byteSize;\n let buffer;\n if (bufferOrParams instanceof Buffer === false) {\n buffer = bufferOrParams.buffer;\n byteSize = bufferOrParams.byteSize;\n byteOffset = bufferOrParams.byteOffset;\n } else {\n buffer = bufferOrParams;\n }\n // to use bindBufferRange, either offset or size must be specified, use default value for the other.\n if (byteOffset !== undefined || byteSize !== undefined) {\n byteOffset = byteOffset || 0;\n byteSize = byteSize || buffer.byteLength - byteOffset;\n }\n return {buffer, byteOffset, byteSize};\n }\n\n _getVaryingInfo(locationOrName) {\n return this.configuration && this.configuration.getVaryingInfo(locationOrName);\n }\n\n _getVaryingIndex(locationOrName) {\n if (this.configuration) {\n return this.configuration.getVaryingInfo(locationOrName).location;\n }\n const location = Number(locationOrName);\n return Number.isFinite(location) ? location : -1;\n }\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n _bindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n const {buffer, byteSize, byteOffset} = this._getBufferParams(this.buffers[bufferIndex]);\n this._bindBuffer(bufferIndex, buffer, byteOffset, byteSize);\n }\n }\n }\n\n _unbindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n this._bindBuffer(bufferIndex, null);\n }\n }\n }\n\n _bindBuffer(index, buffer, byteOffset = 0, byteSize) {\n const handle = buffer && buffer.handle;\n if (!handle || byteSize === undefined) {\n this.gl.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle);\n } else {\n this.gl.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteSize);\n }\n return this;\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createTransformFeedback();\n }\n\n _deleteHandle() {\n this.gl.deleteTransformFeedback(this.handle);\n }\n\n _bindHandle(handle) {\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n }\n}\n","import {uid, assert} from '@luma.gl/webgl';\n\n// Rendering primitives - specify how to extract primitives from vertices.\n// NOTE: These are numerically identical to the corresponding WebGL/OpenGL constants\nexport const DRAW_MODE = {\n POINTS: 0x0000, // draw single points.\n LINES: 0x0001, // draw lines. Each vertex connects to the one after it.\n LINE_LOOP: 0x0002, // draw lines. Each set of two vertices is treated as a separate line segment.\n LINE_STRIP: 0x0003, // draw a connected group of line segments from the first vertex to the last\n TRIANGLES: 0x0004, // draw triangles. Each set of three vertices creates a separate triangle.\n TRIANGLE_STRIP: 0x0005, // draw a connected group of triangles.\n TRIANGLE_FAN: 0x0006 // draw a connected group of triangles.\n // Each vertex connects to the previous and the first vertex in the fan.\n};\n\nexport default class Geometry {\n static get DRAW_MODE() {\n return DRAW_MODE;\n }\n\n constructor(props = {}) {\n const {\n id = uid('geometry'),\n drawMode = DRAW_MODE.TRIANGLES,\n attributes = {},\n indices = null,\n vertexCount = null\n } = props;\n\n this.id = id;\n this.drawMode = drawMode | 0;\n this.attributes = {};\n this.userData = {};\n\n this._setAttributes(attributes, indices);\n\n this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n\n // stubRemovedMethods(this, [\n // 'setNeedsRedraw', 'needsRedraw', 'setAttributes'\n // ], 'Immutable');\n\n // stubRemovedMethods(this, [\n // 'hasAttribute', 'getAttribute', 'getArray'\n // ], 'Use geometry.attributes and geometry.indices');\n\n // deprecateMethods(this, ['getAttributes'])\n }\n\n get mode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n // Return an object with all attributes plus indices added as a field.\n getAttributes() {\n return this.indices ? {indices: this.indices, ...this.attributes} : this.attributes;\n }\n\n // PRIVATE\n\n _print(attributeName) {\n return `Geometry ${this.id} attribute ${attributeName}`;\n }\n\n // Attribute\n // value: typed array\n // type: indices, vertices, uvs\n // size: elements per vertex\n // target: WebGL buffer type (string or constant)\n _setAttributes(attributes, indices) {\n if (indices) {\n this.indices = ArrayBuffer.isView(indices) ? {value: indices, size: 1} : indices;\n }\n\n for (const attributeName in attributes) {\n let attribute = attributes[attributeName];\n\n // Wrap \"unwrapped\" arrays and try to autodetect their type\n attribute = ArrayBuffer.isView(attribute) ? {value: attribute} : attribute;\n\n assert(\n ArrayBuffer.isView(attribute.value),\n `${this._print(attributeName)}: must be typed array or object with value as typed array`\n );\n\n if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {\n attribute.size = 3;\n }\n\n // Move indices to separate field\n if (attributeName === 'indices') {\n assert(!this.indices);\n this.indices = attribute;\n } else {\n this.attributes[attributeName] = attribute;\n }\n }\n\n if (this.indices && this.indices.isIndexed !== undefined) {\n this.indices = Object.assign({}, this.indices);\n delete this.indices.isIndexed;\n }\n\n return this;\n }\n\n _calculateVertexCount(attributes, indices) {\n if (indices) {\n return indices.value.length;\n }\n let vertexCount = Infinity;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const {value, size, constant} = attribute;\n if (!constant && value && size >= 1) {\n vertexCount = Math.min(vertexCount, value.length / size);\n }\n }\n\n assert(Number.isFinite(vertexCount));\n return vertexCount;\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\n/* global process, window, global, document, self, importScripts */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst global_ = globals.global || globals.self || globals.window;\nconst document_ = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\nexport const isBrowser =\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n\nexport const isWorker = typeof importScripts === 'function';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && process.version.match(/v([0-9]*)/);\nexport const nodeVersion = (matches && parseFloat(matches[1])) || 0;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport { fade } from '../styles/colorManipulator';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n height: 1,\n margin: 0,\n // Reset browser default style.\n border: 'none',\n flexShrink: 0,\n backgroundColor: theme.palette.divider\n },\n\n /* Styles applied to the root element if `absolute={true}`. */\n absolute: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%'\n },\n\n /* Styles applied to the root element if `variant=\"inset\"`. */\n inset: {\n marginLeft: 72\n },\n\n /* Styles applied to the root element if `light={true}`. */\n light: {\n backgroundColor: fade(theme.palette.divider, 0.08)\n },\n\n /* Styles applied to the root element if `variant=\"middle\"`. */\n middle: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n },\n\n /* Styles applied to the root element if `orientation=\"vertical\"`. */\n vertical: {\n height: '100%',\n width: 1\n },\n\n /* Styles applied to the root element if `flexItem={true}`. */\n flexItem: {\n alignSelf: 'stretch',\n height: 'auto'\n }\n };\n};\nvar Divider = React.forwardRef(function Divider(props, ref) {\n var _props$absolute = props.absolute,\n absolute = _props$absolute === void 0 ? false : _props$absolute,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'hr' : _props$component,\n _props$flexItem = props.flexItem,\n flexItem = _props$flexItem === void 0 ? false : _props$flexItem,\n _props$light = props.light,\n light = _props$light === void 0 ? false : _props$light,\n _props$orientation = props.orientation,\n orientation = _props$orientation === void 0 ? 'horizontal' : _props$orientation,\n _props$role = props.role,\n role = _props$role === void 0 ? Component !== 'hr' ? 'separator' : undefined : _props$role,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'fullWidth' : _props$variant,\n other = _objectWithoutProperties(props, [\"absolute\", \"classes\", \"className\", \"component\", \"flexItem\", \"light\", \"orientation\", \"role\", \"variant\"]);\n\n return React.createElement(Component, _extends({\n className: clsx(classes.root, className, variant !== 'fullWidth' && classes[variant], absolute && classes.absolute, flexItem && classes.flexItem, light && classes.light, orientation === 'vertical' && classes.vertical),\n role: role,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Divider.propTypes = {\n /**\n * Absolutely position the element.\n */\n absolute: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, a vertical divider will have the correct height when used in flex container.\n * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n */\n flexItem: PropTypes.bool,\n\n /**\n * If `true`, the divider will have a lighter color.\n */\n light: PropTypes.bool,\n\n /**\n * The divider orientation.\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n /**\n * @ignore\n */\n role: PropTypes.string,\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['fullWidth', 'inset', 'middle'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiDivider'\n})(Divider);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ListContext from '../List/ListContext';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n minWidth: 56,\n color: theme.palette.action.active,\n flexShrink: 0,\n display: 'inline-flex'\n },\n\n /* Styles applied to the root element when the parent `ListItem` uses `alignItems=\"flex-start\"`. */\n alignItemsFlexStart: {\n marginTop: 8\n }\n };\n};\n/**\n * A simple wrapper to apply `List` styles to an `Icon` or `SvgIcon`.\n */\n\nvar ListItemIcon = React.forwardRef(function ListItemIcon(props, ref) {\n var classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"classes\", \"className\"]);\n\n var context = React.useContext(ListContext);\n return React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, context.alignItems === 'flex-start' && classes.alignItemsFlexStart),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemIcon.propTypes = {\n /**\n * The content of the component, normally `Icon`, `SvgIcon`,\n * or a `@material-ui/icons` SVG icon element.\n */\n children: PropTypes.element.isRequired,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiListItemIcon'\n})(ListItemIcon);","import React from 'react';\nimport createSvgIcon from './utils/createSvgIcon';\nexport default createSvgIcon(React.createElement(\"path\", {\n d: \"M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'ExitToApp');","import React from 'react';\nimport createSvgIcon from './utils/createSvgIcon';\nexport default createSvgIcon(React.createElement(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z\"\n}), 'AccountCircle');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nimport Paper from '../Paper';\nexport var styles = function styles(theme) {\n var backgroundColorDefault = theme.palette.type === 'light' ? theme.palette.grey[100] : theme.palette.grey[900];\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n boxSizing: 'border-box',\n // Prevent padding issue with the Modal and fixed positioned AppBar.\n zIndex: theme.zIndex.appBar,\n flexShrink: 0\n },\n\n /* Styles applied to the root element if `position=\"fixed\"`. */\n positionFixed: {\n position: 'fixed',\n top: 0,\n left: 'auto',\n right: 0,\n '@media print': {\n // Prevent the app bar to be visible on each printed page.\n position: 'absolute'\n }\n },\n\n /* Styles applied to the root element if `position=\"absolute\"`. */\n positionAbsolute: {\n position: 'absolute',\n top: 0,\n left: 'auto',\n right: 0\n },\n\n /* Styles applied to the root element if `position=\"sticky\"`. */\n positionSticky: {\n // âš ï¸ sticky is not supported by IE 11.\n position: 'sticky',\n top: 0,\n left: 'auto',\n right: 0\n },\n\n /* Styles applied to the root element if `position=\"static\"`. */\n positionStatic: {\n position: 'static',\n transform: 'translateZ(0)' // Make sure we can see the elevation.\n\n },\n\n /* Styles applied to the root element if `position=\"relative\"`. */\n positionRelative: {\n position: 'relative'\n },\n\n /* Styles applied to the root element if `color=\"default\"`. */\n colorDefault: {\n backgroundColor: backgroundColorDefault,\n color: theme.palette.getContrastText(backgroundColorDefault)\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n backgroundColor: theme.palette.secondary.main,\n color: theme.palette.secondary.contrastText\n },\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n\n /* Styles applied to the root element if `color=\"transparent\"`. */\n colorTransparent: {\n backgroundColor: 'transparent',\n color: 'inherit'\n }\n };\n};\nvar AppBar = React.forwardRef(function AppBar(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n _props$position = props.position,\n position = _props$position === void 0 ? 'fixed' : _props$position,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"position\"]);\n\n return React.createElement(Paper, _extends({\n square: true,\n component: \"header\",\n elevation: 4,\n className: clsx(classes.root, classes[\"position\".concat(capitalize(position))], classes[\"color\".concat(capitalize(color))], className, position === 'fixed' && 'mui-fixed'),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AppBar.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary', 'transparent']),\n\n /**\n * The positioning type. The behavior of the different options is described\n * [in the MDN web docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).\n * Note: `sticky` is not universally supported and will fall back to `static` when unavailable.\n */\n position: PropTypes.oneOf(['absolute', 'fixed', 'relative', 'static', 'sticky'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiAppBar'\n})(AppBar);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center'\n },\n\n /* Styles applied to the root element if `disableGutters={false}`. */\n gutters: _defineProperty({\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2)\n }, theme.breakpoints.up('sm'), {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3)\n }),\n\n /* Styles applied to the root element if `variant=\"regular\"`. */\n regular: theme.mixins.toolbar,\n\n /* Styles applied to the root element if `variant=\"dense\"`. */\n dense: {\n minHeight: 48\n }\n };\n};\nvar Toolbar = React.forwardRef(function Toolbar(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'regular' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"disableGutters\", \"variant\"]);\n\n return React.createElement(Component, _extends({\n className: clsx(classes.root, classes[variant], className, !disableGutters && classes.gutters),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes = {\n /**\n * Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, disables gutter padding.\n */\n disableGutters: PropTypes.bool,\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['regular', 'dense'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiToolbar'\n})(Toolbar);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport { fade } from '../styles/colorManipulator';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.button, {\n boxSizing: 'border-box',\n minWidth: 64,\n padding: '6px 16px',\n borderRadius: theme.shape.borderRadius,\n color: theme.palette.text.primary,\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border'], {\n duration: theme.transitions.duration.short\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: fade(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n },\n '&$disabled': {\n backgroundColor: 'transparent'\n }\n },\n '&$disabled': {\n color: theme.palette.action.disabled\n }\n }),\n\n /* Styles applied to the span element that wraps the children. */\n label: {\n width: '100%',\n // Ensure the correct width for iOS Safari\n display: 'inherit',\n alignItems: 'inherit',\n justifyContent: 'inherit'\n },\n\n /* Styles applied to the root element if `variant=\"text\"`. */\n text: {\n padding: '6px 8px'\n },\n\n /* Styles applied to the root element if `variant=\"text\"` and `color=\"primary\"`. */\n textPrimary: {\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"text\"` and `color=\"secondary\"`. */\n textSecondary: {\n color: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"`. */\n outlined: {\n padding: '5px 15px',\n border: \"1px solid \".concat(theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'),\n '&$disabled': {\n border: \"1px solid \".concat(theme.palette.action.disabledBackground)\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"primary\"`. */\n outlinedPrimary: {\n color: theme.palette.primary.main,\n border: \"1px solid \".concat(fade(theme.palette.primary.main, 0.5)),\n '&:hover': {\n border: \"1px solid \".concat(theme.palette.primary.main),\n backgroundColor: fade(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"secondary\"`. */\n outlinedSecondary: {\n color: theme.palette.secondary.main,\n border: \"1px solid \".concat(fade(theme.palette.secondary.main, 0.5)),\n '&:hover': {\n border: \"1px solid \".concat(theme.palette.secondary.main),\n backgroundColor: fade(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&$disabled': {\n border: \"1px solid \".concat(theme.palette.action.disabled)\n }\n },\n\n /* Styles applied to the root element if `variant=\"contained\"`. */\n contained: {\n color: theme.palette.getContrastText(theme.palette.grey[300]),\n backgroundColor: theme.palette.grey[300],\n boxShadow: theme.shadows[2],\n '&:hover': {\n backgroundColor: theme.palette.grey.A100,\n boxShadow: theme.shadows[4],\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n boxShadow: theme.shadows[2],\n backgroundColor: theme.palette.grey[300]\n },\n '&$disabled': {\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n '&$focusVisible': {\n boxShadow: theme.shadows[6]\n },\n '&:active': {\n boxShadow: theme.shadows[8]\n },\n '&$disabled': {\n color: theme.palette.action.disabled,\n boxShadow: theme.shadows[0],\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n\n /* Styles applied to the root element if `variant=\"contained\"` and `color=\"primary\"`. */\n containedPrimary: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette.primary.main\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"contained\"` and `color=\"secondary\"`. */\n containedSecondary: {\n color: theme.palette.secondary.contrastText,\n backgroundColor: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: theme.palette.secondary.dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette.secondary.main\n }\n }\n },\n\n /* Styles applied to the root element if `disableElevation={true}`. */\n disableElevation: {\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none'\n },\n '&$focusVisible': {\n boxShadow: 'none'\n },\n '&:active': {\n boxShadow: 'none'\n },\n '&$disabled': {\n boxShadow: 'none'\n }\n },\n\n /* Pseudo-class applied to the ButtonBase root element if the button is keyboard focused. */\n focusVisible: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit',\n borderColor: 'currentColor'\n },\n\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"text\"`. */\n textSizeSmall: {\n padding: '4px 5px',\n fontSize: theme.typography.pxToRem(13)\n },\n\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"text\"`. */\n textSizeLarge: {\n padding: '8px 11px',\n fontSize: theme.typography.pxToRem(15)\n },\n\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"outlined\"`. */\n outlinedSizeSmall: {\n padding: '3px 9px',\n fontSize: theme.typography.pxToRem(13)\n },\n\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"outlined\"`. */\n outlinedSizeLarge: {\n padding: '7px 21px',\n fontSize: theme.typography.pxToRem(15)\n },\n\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"contained\"`. */\n containedSizeSmall: {\n padding: '4px 10px',\n fontSize: theme.typography.pxToRem(13)\n },\n\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"contained\"`. */\n containedSizeLarge: {\n padding: '8px 22px',\n fontSize: theme.typography.pxToRem(15)\n },\n\n /* Styles applied to the root element if `size=\"small\"`. */\n sizeSmall: {},\n\n /* Styles applied to the root element if `size=\"large\"`. */\n sizeLarge: {},\n\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {\n width: '100%'\n },\n\n /* Styles applied to the startIcon element if supplied. */\n startIcon: {\n display: 'inherit',\n marginRight: 8,\n marginLeft: -4,\n '&$iconSizeSmall': {\n marginLeft: -2\n }\n },\n\n /* Styles applied to the endIcon element if supplied. */\n endIcon: {\n display: 'inherit',\n marginRight: -4,\n marginLeft: 8,\n '&$iconSizeSmall': {\n marginRight: -2\n }\n },\n\n /* Styles applied to the icon element if supplied and `size=\"small\"`. */\n iconSizeSmall: {\n '& > *:first-child': {\n fontSize: 18\n }\n },\n\n /* Styles applied to the icon element if supplied and `size=\"medium\"`. */\n iconSizeMedium: {\n '& > *:first-child': {\n fontSize: 20\n }\n },\n\n /* Styles applied to the icon element if supplied and `size=\"large\"`. */\n iconSizeLarge: {\n '& > *:first-child': {\n fontSize: 22\n }\n }\n };\n};\nvar Button = React.forwardRef(function Button(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'default' : _props$color,\n _props$component = props.component,\n component = _props$component === void 0 ? 'button' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableElevati = props.disableElevation,\n disableElevation = _props$disableElevati === void 0 ? false : _props$disableElevati,\n _props$disableFocusRi = props.disableFocusRipple,\n disableFocusRipple = _props$disableFocusRi === void 0 ? false : _props$disableFocusRi,\n endIconProp = props.endIcon,\n focusVisibleClassName = props.focusVisibleClassName,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$size = props.size,\n size = _props$size === void 0 ? 'medium' : _props$size,\n startIconProp = props.startIcon,\n _props$type = props.type,\n type = _props$type === void 0 ? 'button' : _props$type,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'text' : _props$variant,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"]);\n\n var startIcon = startIconProp && React.createElement(\"span\", {\n className: clsx(classes.startIcon, classes[\"iconSize\".concat(capitalize(size))])\n }, startIconProp);\n var endIcon = endIconProp && React.createElement(\"span\", {\n className: clsx(classes.endIcon, classes[\"iconSize\".concat(capitalize(size))])\n }, endIconProp);\n return React.createElement(ButtonBase, _extends({\n className: clsx(classes.root, classes[variant], className, color === 'inherit' ? classes.colorInherit : color !== 'default' && classes[\"\".concat(variant).concat(capitalize(color))], size !== 'medium' && [classes[\"\".concat(variant, \"Size\").concat(capitalize(size))], classes[\"size\".concat(capitalize(size))]], disableElevation && classes.disableElevation, disabled && classes.disabled, fullWidth && classes.fullWidth),\n component: component,\n disabled: disabled,\n focusRipple: !disableFocusRipple,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n ref: ref,\n type: type\n }, other), React.createElement(\"span\", {\n className: classes.label\n }, startIcon, children, endIcon));\n});\nprocess.env.NODE_ENV !== \"production\" ? Button.propTypes = {\n /**\n * The content of the button.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary']),\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, the button will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, no elevation is used.\n */\n disableElevation: PropTypes.bool,\n\n /**\n * If `true`, the keyboard focus ripple will be disabled.\n * `disableRipple` must also be true.\n */\n disableFocusRipple: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect will be disabled.\n *\n * âš ï¸ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `focusVisibleClassName`.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * Element placed after the children.\n */\n endIcon: PropTypes.node,\n\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * If `true`, the button will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n\n /**\n * The URL to link to when the button is clicked.\n * If defined, an `a` element will be used as the root node.\n */\n href: PropTypes.string,\n\n /**\n * The size of the button.\n * `small` is equivalent to the dense button styling.\n */\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n\n /**\n * Element placed before the children.\n */\n startIcon: PropTypes.node,\n\n /**\n * @ignore\n */\n type: PropTypes.string,\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['text', 'outlined', 'contained'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiButton'\n})(Button);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport capitalize from '../utils/capitalize';\nimport withStyles from '../styles/withStyles';\nimport { elementTypeAcceptingRef } from '@material-ui/utils';\nimport { useIsFocusVisible } from '../utils/focusVisible';\nimport useForkRef from '../utils/useForkRef';\nimport Typography from '../Typography';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {},\n\n /* Styles applied to the root element if `underline=\"none\"`. */\n underlineNone: {\n textDecoration: 'none'\n },\n\n /* Styles applied to the root element if `underline=\"hover\"`. */\n underlineHover: {\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline'\n }\n },\n\n /* Styles applied to the root element if `underline=\"always\"`. */\n underlineAlways: {\n textDecoration: 'underline'\n },\n // Same reset as ButtonBase.root\n\n /* Styles applied to the root element if `component=\"button\"`. */\n button: {\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n '-moz-appearance': 'none',\n // Reset\n '-webkit-appearance': 'none',\n // Reset\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n '&$focusVisible': {\n outline: 'auto'\n }\n },\n\n /* Pseudo-class applied to the root element if the link is keyboard focused. */\n focusVisible: {}\n};\nvar Link = React.forwardRef(function Link(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n _props$component = props.component,\n component = _props$component === void 0 ? 'a' : _props$component,\n onBlur = props.onBlur,\n onFocus = props.onFocus,\n TypographyClasses = props.TypographyClasses,\n _props$underline = props.underline,\n underline = _props$underline === void 0 ? 'hover' : _props$underline,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'inherit' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"component\", \"onBlur\", \"onFocus\", \"TypographyClasses\", \"underline\", \"variant\"]);\n\n var _useIsFocusVisible = useIsFocusVisible(),\n isFocusVisible = _useIsFocusVisible.isFocusVisible,\n onBlurVisible = _useIsFocusVisible.onBlurVisible,\n focusVisibleRef = _useIsFocusVisible.ref;\n\n var _React$useState = React.useState(false),\n focusVisible = _React$useState[0],\n setFocusVisible = _React$useState[1];\n\n var handlerRef = useForkRef(ref, focusVisibleRef);\n\n var handleBlur = function handleBlur(event) {\n if (focusVisible) {\n onBlurVisible();\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n var handleFocus = function handleFocus(event) {\n if (isFocusVisible(event)) {\n setFocusVisible(true);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n return React.createElement(Typography, _extends({\n className: clsx(classes.root, classes[\"underline\".concat(capitalize(underline))], className, focusVisible && classes.focusVisible, component === 'button' && classes.button),\n classes: TypographyClasses,\n color: color,\n component: component,\n onBlur: handleBlur,\n onFocus: handleFocus,\n ref: handlerRef,\n variant: variant\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes = {\n /**\n * The content of the link.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the link.\n */\n color: PropTypes.oneOf(['initial', 'inherit', 'primary', 'secondary', 'textPrimary', 'textSecondary', 'error']),\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: elementTypeAcceptingRef,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * `classes` prop applied to the [`Typography`](/api/typography/) element.\n */\n TypographyClasses: PropTypes.object,\n\n /**\n * Controls when the link should have an underline.\n */\n underline: PropTypes.oneOf(['none', 'hover', 'always']),\n\n /**\n * Applies the theme typography styles.\n */\n variant: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiLink'\n})(Link);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n\n/* eslint-disable jsx-a11y/aria-role */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ButtonBase from '../ButtonBase';\nimport IconButton from '../IconButton';\nimport withStyles from '../styles/withStyles';\nimport ExpansionPanelContext from '../ExpansionPanel/ExpansionPanelContext';\nexport var styles = function styles(theme) {\n var transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n minHeight: 8 * 6,\n transition: theme.transitions.create(['min-height', 'background-color'], transition),\n padding: '0 24px 0 24px',\n '&:hover:not($disabled)': {\n cursor: 'pointer'\n },\n '&$expanded': {\n minHeight: 64\n },\n '&$focused': {\n backgroundColor: theme.palette.grey[300]\n },\n '&$disabled': {\n opacity: 0.38\n }\n },\n\n /* Pseudo-class applied to the root element, children wrapper element and `IconButton` component if `expanded={true}`. */\n expanded: {},\n\n /* Pseudo-class applied to the root element if `focused={true}`. */\n focused: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the children wrapper element. */\n content: {\n display: 'flex',\n flexGrow: 1,\n transition: theme.transitions.create(['margin'], transition),\n margin: '12px 0',\n '&$expanded': {\n margin: '20px 0'\n }\n },\n\n /* Styles applied to the `IconButton` component when `expandIcon` is supplied. */\n expandIcon: {\n transform: 'rotate(0deg)',\n transition: theme.transitions.create('transform', transition),\n '&:hover': {\n // Disable the hover effect for the IconButton,\n // because a hover effect should apply to the entire Expand button and\n // not only to the IconButton.\n backgroundColor: 'transparent'\n },\n '&$expanded': {\n transform: 'rotate(180deg)'\n }\n }\n };\n};\nvar ExpansionPanelSummary = React.forwardRef(function ExpansionPanelSummary(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n expandIcon = props.expandIcon,\n IconButtonProps = props.IconButtonProps,\n onBlur = props.onBlur,\n onClick = props.onClick,\n onFocusVisible = props.onFocusVisible,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"expandIcon\", \"IconButtonProps\", \"onBlur\", \"onClick\", \"onFocusVisible\"]);\n\n var _React$useState = React.useState(false),\n focusedState = _React$useState[0],\n setFocusedState = _React$useState[1];\n\n var handleFocusVisible = function handleFocusVisible(event) {\n setFocusedState(true);\n\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n };\n\n var handleBlur = function handleBlur(event) {\n setFocusedState(false);\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n var _React$useContext = React.useContext(ExpansionPanelContext),\n _React$useContext$dis = _React$useContext.disabled,\n disabled = _React$useContext$dis === void 0 ? false : _React$useContext$dis,\n expanded = _React$useContext.expanded,\n toggle = _React$useContext.toggle;\n\n var handleChange = function handleChange(event) {\n if (toggle) {\n toggle(event);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n return React.createElement(ButtonBase, _extends({\n focusRipple: false,\n disableRipple: true,\n disabled: disabled,\n component: \"div\",\n \"aria-expanded\": expanded,\n className: clsx(classes.root, className, disabled && classes.disabled, expanded && classes.expanded, focusedState && classes.focused),\n onFocusVisible: handleFocusVisible,\n onBlur: handleBlur,\n onClick: handleChange,\n ref: ref\n }, other), React.createElement(\"div\", {\n className: clsx(classes.content, expanded && classes.expanded)\n }, children), expandIcon && React.createElement(IconButton, _extends({\n className: clsx(classes.expandIcon, expanded && classes.expanded),\n edge: \"end\",\n component: \"div\",\n tabIndex: null,\n role: null,\n \"aria-hidden\": true\n }, IconButtonProps), expandIcon));\n});\nprocess.env.NODE_ENV !== \"production\" ? ExpansionPanelSummary.propTypes = {\n /**\n * The content of the expansion panel summary.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The icon to display as the expand indicator.\n */\n expandIcon: PropTypes.node,\n\n /**\n * Props applied to the `IconButton` element wrapping the expand icon.\n */\n IconButtonProps: PropTypes.object,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocusVisible: PropTypes.func\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiExpansionPanelSummary'\n})(ExpansionPanelSummary);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n padding: '8px 24px 24px'\n }\n};\nvar ExpansionPanelDetails = React.forwardRef(function ExpansionPanelDetails(props, ref) {\n var classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"classes\", \"className\"]);\n\n return React.createElement(\"div\", _extends({\n className: clsx(classes.root, className),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ExpansionPanelDetails.propTypes = {\n /**\n * The content of the expansion panel details.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiExpansionPanelDetails'\n})(ExpansionPanelDetails);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Paper from '../Paper';\nimport withStyles from '../styles/withStyles';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n overflow: 'hidden'\n }\n};\nvar Card = React.forwardRef(function Card(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$raised = props.raised,\n raised = _props$raised === void 0 ? false : _props$raised,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"raised\"]);\n\n return React.createElement(Paper, _extends({\n className: clsx(classes.root, className),\n elevation: raised ? 8 : 1,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the card will use raised styling.\n */\n raised: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiCard'\n})(Card);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n padding: 16,\n '&:last-child': {\n paddingBottom: 24\n }\n }\n};\nvar CardContent = React.forwardRef(function CardContent(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\"]);\n\n return React.createElement(Component, _extends({\n className: clsx(classes.root, className),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiCardContent'\n})(CardContent);","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","let channelHandles = 1;\nlet animationHandles = 1;\n\nexport class Timeline {\n constructor() {\n this.time = 0;\n this.channels = new Map();\n this.animations = new Map();\n this.playing = false;\n this.lastEngineTime = -1;\n }\n\n addChannel(props) {\n const {delay = 0, duration = Number.POSITIVE_INFINITY, rate = 1, repeat = 1} = props;\n\n const handle = channelHandles++;\n const channel = {\n time: 0,\n delay,\n duration,\n rate,\n repeat\n };\n this._setChannelTime(channel, this.time);\n this.channels.set(handle, channel);\n\n return handle;\n }\n\n removeChannel(handle) {\n this.channels.delete(handle);\n\n for (const [animationHandle, animation] of this.animations) {\n if (animation.channel === handle) {\n this.detachAnimation(animationHandle);\n }\n }\n }\n\n isFinished(handle) {\n const channel = this.channels.get(handle);\n if (channel === undefined) {\n return false;\n }\n\n return this.time >= channel.delay + channel.duration * channel.repeat;\n }\n\n getTime(handle) {\n if (handle === undefined) {\n return this.time;\n }\n\n const channel = this.channels.get(handle);\n\n if (channel === undefined) {\n return -1;\n }\n\n return channel.time;\n }\n\n setTime(time) {\n this.time = Math.max(0, time);\n\n const channels = this.channels.values();\n for (const channel of channels) {\n this._setChannelTime(channel, this.time);\n }\n\n const animations = this.animations.values();\n for (const animationData of animations) {\n const {animation, channel} = animationData;\n animation.setTime(this.getTime(channel));\n }\n }\n\n play() {\n this.playing = true;\n }\n\n pause() {\n this.playing = false;\n this.lastEngineTime = -1;\n }\n\n reset() {\n this.setTime(0);\n }\n\n attachAnimation(animation, channelHandle) {\n const animationHandle = animationHandles++;\n\n this.animations.set(animationHandle, {\n animation,\n channel: channelHandle\n });\n\n animation.setTime(this.getTime(channelHandle));\n\n return animationHandle;\n }\n\n detachAnimation(handle) {\n this.animations.delete(handle);\n }\n\n update(engineTime) {\n if (this.playing) {\n if (this.lastEngineTime === -1) {\n this.lastEngineTime = engineTime;\n }\n this.setTime(this.time + (engineTime - this.lastEngineTime));\n this.lastEngineTime = engineTime;\n }\n }\n\n _setChannelTime(channel, time) {\n const offsetTime = time - channel.delay;\n const totalDuration = channel.duration * channel.repeat;\n // Note(Tarek): Don't loop on final repeat.\n if (offsetTime >= totalDuration) {\n channel.time = channel.duration * channel.rate;\n } else {\n channel.time = Math.max(0, offsetTime) % channel.duration;\n channel.time *= channel.rate;\n }\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport log from '../utils/log';\nimport {createMat4, extractCameraVectors, getFrustumPlanes} from '../utils/math-utils';\n\nimport {Matrix4, Vector3, equals} from 'math.gl';\nimport * as mat4 from 'gl-matrix/mat4';\n\nimport {\n getDistanceScales,\n getMeterZoom,\n lngLatToWorld,\n worldToLngLat,\n worldToPixels,\n pixelsToWorld\n} from '@math.gl/web-mercator';\n\nimport {PROJECTION_MODE} from '../lib/constants';\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\nconst IDENTITY = createMat4();\n\nconst ZERO_VECTOR = [0, 0, 0];\n\nconst DEFAULT_ZOOM = 0;\n\nconst DEFAULT_DISTANCE_SCALES = {\n unitsPerMeter: [1, 1, 1],\n metersPerUnit: [1, 1, 1]\n};\n\nexport default class Viewport {\n /**\n * @classdesc\n * Manages coordinate system transformations for deck.gl.\n *\n * Note: The Viewport is immutable in the sense that it only has accessors.\n * A new viewport instance should be created if any parameters have changed.\n */\n constructor(opts = {}) {\n const {\n id = null,\n // Window width/height in pixels (for pixel projection)\n x = 0,\n y = 0,\n width = 1,\n height = 1\n } = opts;\n\n this.id = id || this.constructor.displayName || 'viewport';\n\n this.x = x;\n this.y = y;\n // Silently allow apps to send in w,h = 0,0\n this.width = width || 1;\n this.height = height || 1;\n this._frustumPlanes = {};\n\n this._initViewMatrix(opts);\n this._initProjectionMatrix(opts);\n this._initPixelMatrices();\n\n // Bind methods for easy access\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n\n get metersPerPixel() {\n return this.distanceScales.metersPerUnit[2] / this.scale;\n }\n\n get projectionMode() {\n if (this.isGeospatial) {\n return this.zoom < 12\n ? PROJECTION_MODE.WEB_MERCATOR\n : PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET;\n }\n return PROJECTION_MODE.IDENTITY;\n }\n\n // Two viewports are equal if width and height are identical, and if\n // their view and projection matrices are (approximately) equal.\n equals(viewport) {\n if (!(viewport instanceof Viewport)) {\n return false;\n }\n\n return (\n viewport.width === this.width &&\n viewport.height === this.height &&\n viewport.scale === this.scale &&\n equals(viewport.projectionMatrix, this.projectionMatrix) &&\n equals(viewport.viewMatrix, this.viewMatrix)\n );\n // TODO - check distance scales?\n }\n\n /**\n * Projects xyz (possibly latitude and longitude) to pixel coordinates in window\n * using viewport projection parameters\n * - [longitude, latitude] to [x, y]\n * - [longitude, latitude, Z] => [x, y, z]\n * Note: By default, returns top-left coordinates for canvas/SVG type render\n *\n * @param {Array} lngLatZ - [lng, lat] or [lng, lat, Z]\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether projected coords are top left\n * @return {Array} - [x, y] or [x, y, z] in top left coords\n */\n project(xyz, {topLeft = true} = {}) {\n const worldPosition = this.projectPosition(xyz);\n const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n }\n\n /**\n * Unproject pixel coordinates on screen onto world coordinates,\n * (possibly [lon, lat]) on map.\n * - [x, y] => [lng, lat]\n * - [x, y, z] => [lng, lat, Z]\n * @param {Array} xyz -\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether origin is top left\n * @return {Array|null} - [lng, lat, Z] or [X, Y, Z]\n */\n unproject(xyz, {topLeft = true, targetZ} = {}) {\n const [x, y, z] = xyz;\n\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n }\n\n // NON_LINEAR PROJECTION HOOKS\n // Used for web meractor projection\n\n projectPosition(xyz) {\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n return [X, Y, Z];\n }\n\n unprojectPosition(xyz) {\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n return [X, Y, Z];\n }\n\n /**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n * @param {Array} lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return {Array} [x,y] coordinates.\n */\n projectFlat(xyz) {\n if (this.isGeospatial) {\n return lngLatToWorld(xyz);\n }\n return xyz;\n }\n\n /**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n * @param {object|Vector} xy - object with {x,y} members\n * representing point on projected map plane\n * @return {GeoCoordinates} - object with {lat,lon} of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\n unprojectFlat(xyz) {\n if (this.isGeospatial) {\n return worldToLngLat(xyz);\n }\n return xyz;\n }\n\n getDistanceScales(coordinateOrigin = null) {\n if (coordinateOrigin) {\n return getDistanceScales({\n longitude: coordinateOrigin[0],\n latitude: coordinateOrigin[1],\n highPrecision: true\n });\n }\n return this.distanceScales;\n }\n\n containsPixel({x, y, width = 1, height = 1}) {\n return (\n x < this.x + this.width &&\n this.x < x + width &&\n y < this.y + this.height &&\n this.y < y + height\n );\n }\n\n // Extract frustum planes in common space\n getFrustumPlanes() {\n if (this._frustumPlanes.near) {\n return this._frustumPlanes;\n }\n\n const {near, far, fovyRadians, aspect} = this.projectionProps;\n\n Object.assign(\n this._frustumPlanes,\n getFrustumPlanes({\n aspect,\n near,\n far,\n fovyRadians,\n position: this.cameraPosition,\n direction: this.cameraDirection,\n up: this.cameraUp,\n right: this.cameraRight\n })\n );\n\n return this._frustumPlanes;\n }\n\n // EXPERIMENTAL METHODS\n\n getCameraPosition() {\n return this.cameraPosition;\n }\n\n getCameraDirection() {\n return this.cameraDirection;\n }\n\n getCameraUp() {\n return this.cameraUp;\n }\n\n // INTERNAL METHODS\n\n _createProjectionMatrix({orthographic, fovyRadians, aspect, focalDistance, near, far}) {\n return orthographic\n ? new Matrix4().orthographic({fovy: fovyRadians, aspect, focalDistance, near, far})\n : new Matrix4().perspective({fovy: fovyRadians, aspect, near, far});\n }\n\n /* eslint-disable complexity, max-statements */\n _initViewMatrix(opts) {\n const {\n // view matrix\n viewMatrix = IDENTITY,\n\n longitude = null, // Anchor: lng lat zoom makes viewport work w/ geospatial coordinate systems\n latitude = null,\n zoom = null,\n\n position = null, // Anchor position offset (in meters for geospatial viewports)\n modelMatrix = null, // A model matrix to be applied to position, to match the layer props API\n focalDistance = 1, // Only needed for orthographic views\n\n distanceScales = null\n } = opts;\n\n // Check if we have a geospatial anchor\n this.isGeospatial = Number.isFinite(latitude) && Number.isFinite(longitude);\n\n this.zoom = zoom;\n if (!Number.isFinite(this.zoom)) {\n this.zoom = this.isGeospatial\n ? getMeterZoom({latitude}) + Math.log2(focalDistance)\n : DEFAULT_ZOOM;\n }\n const scale = Math.pow(2, this.zoom);\n this.scale = scale;\n\n // Calculate distance scales if lng/lat/zoom are provided\n this.distanceScales = this.isGeospatial\n ? getDistanceScales({latitude, longitude})\n : distanceScales || DEFAULT_DISTANCE_SCALES;\n\n this.focalDistance = focalDistance;\n\n this.distanceScales.metersPerUnit = new Vector3(this.distanceScales.metersPerUnit);\n this.distanceScales.unitsPerMeter = new Vector3(this.distanceScales.unitsPerMeter);\n\n this.position = ZERO_VECTOR;\n this.meterOffset = ZERO_VECTOR;\n if (position) {\n // Apply model matrix if supplied\n this.position = position;\n this.modelMatrix = modelMatrix;\n this.meterOffset = modelMatrix ? modelMatrix.transformVector(position) : position;\n }\n\n if (this.isGeospatial) {\n // Determine camera center\n this.longitude = longitude;\n this.latitude = latitude;\n this.center = this._getCenterInWorld({longitude, latitude});\n } else {\n this.center = position ? this.projectPosition(position) : [0, 0, 0];\n }\n this.viewMatrixUncentered = viewMatrix;\n // Make a centered version of the matrix for projection modes without an offset\n this.viewMatrix = new Matrix4()\n // Apply the uncentered view matrix\n .multiplyRight(this.viewMatrixUncentered)\n // And center it\n .translate(new Vector3(this.center || ZERO_VECTOR).negate());\n }\n /* eslint-enable complexity, max-statements */\n\n _getCenterInWorld({longitude, latitude}) {\n const {meterOffset, distanceScales} = this;\n\n // Make a centered version of the matrix for projection modes without an offset\n const center2d = this.projectFlat([longitude, latitude]);\n const center = new Vector3(center2d[0], center2d[1], 0);\n\n if (meterOffset) {\n const commonPosition = new Vector3(meterOffset)\n // Convert to pixels in current zoom\n .scale(distanceScales.unitsPerMeter);\n center.add(commonPosition);\n }\n\n return center;\n }\n\n _initProjectionMatrix(opts) {\n const {\n // Projection matrix\n projectionMatrix = null,\n\n // Projection matrix parameters, used if projectionMatrix not supplied\n orthographic = false,\n fovyRadians,\n fovy = 75,\n near = 0.1, // Distance of near clipping plane\n far = 1000, // Distance of far clipping plane\n focalDistance = 1\n } = opts;\n\n this.projectionProps = {\n orthographic,\n fovyRadians: fovyRadians || fovy * DEGREES_TO_RADIANS,\n aspect: this.width / this.height,\n focalDistance,\n near,\n far\n };\n\n this.projectionMatrix = projectionMatrix || this._createProjectionMatrix(this.projectionProps);\n }\n\n _initPixelMatrices() {\n // Note: As usual, matrix operations should be applied in \"reverse\" order\n // since vectors will be multiplied in from the right during transformation\n const vpm = createMat4();\n mat4.multiply(vpm, vpm, this.projectionMatrix);\n mat4.multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n\n // console.log('VPM', this.viewMatrix, this.projectionMatrix, this.viewProjectionMatrix);\n\n // Calculate inverse view matrix\n this.viewMatrixInverse = mat4.invert([], this.viewMatrix) || this.viewMatrix;\n\n // Decompose camera directions\n const {eye, direction, up, right} = extractCameraVectors({\n viewMatrix: this.viewMatrix,\n viewMatrixInverse: this.viewMatrixInverse\n });\n this.cameraPosition = eye;\n this.cameraDirection = direction;\n this.cameraUp = up;\n this.cameraRight = right;\n\n // console.log(this.cameraPosition, this.cameraDirection, this.cameraUp);\n\n /*\n * Builds matrices that converts preprojected lngLats to screen pixels\n * and vice versa.\n * Note: Currently returns bottom-left coordinates!\n * Note: Starts with the GL projection matrix and adds steps to the\n * scale and translate that matrix onto the window.\n * Note: WebGL controls clip space to screen projection with gl.viewport\n * and does not need this step.\n */\n\n // matrix for conversion from world location to screen (pixel) coordinates\n const viewportMatrix = createMat4(); // matrix from NDC to viewport.\n const pixelProjectionMatrix = createMat4(); // matrix from world space to viewport.\n mat4.scale(viewportMatrix, viewportMatrix, [this.width / 2, -this.height / 2, 1]);\n mat4.translate(viewportMatrix, viewportMatrix, [1, -1, 0]);\n mat4.multiply(pixelProjectionMatrix, viewportMatrix, this.viewProjectionMatrix);\n this.pixelProjectionMatrix = pixelProjectionMatrix;\n this.viewportMatrix = viewportMatrix;\n\n this.pixelUnprojectionMatrix = mat4.invert(createMat4(), this.pixelProjectionMatrix);\n if (!this.pixelUnprojectionMatrix) {\n log.warn('Pixel project matrix not invertible')();\n // throw new Error('Pixel project matrix not invertible');\n }\n }\n}\n\nViewport.displayName = 'Viewport';\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nconst vs = `\nstruct VertexGeometry {\n vec4 position;\n vec3 worldPosition;\n vec3 worldPositionAlt;\n vec3 normal;\n vec2 uv;\n vec3 pickingColor;\n} geometry;\n`;\n\nconst fs = `\n#define SMOOTH_EDGE_RADIUS 0.5\n\nstruct FragmentGeometry {\n vec2 uv;\n} geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n`;\n\nexport default {name: 'geometry', vs, fs};\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {ProgramManager} from '@luma.gl/core';\nimport {gouraudLighting, phongLighting} from '@luma.gl/core';\nimport geometry from './misc/geometry';\nimport project from './project/project';\nimport project32 from './project32/project32';\nimport shadow from './shadow/shadow';\nimport picking from './picking/picking';\n\nconst DEFAULT_MODULES = [geometry, project];\n\nconst SHADER_HOOKS = [\n 'vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)',\n 'vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)',\n 'vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)',\n 'fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)'\n];\n\nexport function createProgramManager(gl) {\n const programManager = ProgramManager.getDefaultProgramManager(gl);\n\n for (const shaderModule of DEFAULT_MODULES) {\n programManager.addDefaultModule(shaderModule);\n }\n for (const shaderHook of SHADER_HOOKS) {\n programManager.addShaderHook(shaderHook);\n }\n\n return programManager;\n}\n\nexport {picking, project, project32, gouraudLighting, phongLighting, shadow};\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport assert from '../utils/assert';\nimport {Timeline} from '@luma.gl/core';\nimport Layer from './layer';\nimport {LIFECYCLE} from '../lifecycle/constants';\nimport log from '../utils/log';\nimport debug from '../debug';\nimport {flatten} from '../utils/flatten';\nimport {Stats} from 'probe.gl';\n\nimport Viewport from '../viewports/viewport';\nimport {createProgramManager} from '../shaderlib';\n\nconst TRACE_SET_LAYERS = 'layerManager.setLayers';\nconst TRACE_ACTIVATE_VIEWPORT = 'layerManager.activateViewport';\n\n// CONTEXT IS EXPOSED TO LAYERS\nconst INITIAL_CONTEXT = Object.seal({\n layerManager: null,\n deck: null,\n gl: null,\n\n // General resources\n stats: null, // for tracking lifecycle performance\n\n // GL Resources\n shaderCache: null,\n pickingFBO: null, // Screen-size framebuffer that layers can reuse\n\n mousePosition: null,\n\n userData: {} // Place for any custom app `context`\n});\n\nconst layerName = layer => (layer instanceof Layer ? `${layer}` : !layer ? 'null' : 'invalid');\n\nexport default class LayerManager {\n // eslint-disable-next-line\n constructor(gl, {deck, stats, viewport = null, timeline = null} = {}) {\n // Currently deck.gl expects the DeckGL.layers array to be different\n // whenever React rerenders. If the same layers array is used, the\n // LayerManager's diffing algorithm will generate a fatal error and\n // break the rendering.\n\n // `this.lastRenderedLayers` stores the UNFILTERED layers sent\n // down to LayerManager, so that `layers` reference can be compared.\n // If it's the same across two React render calls, the diffing logic\n // will be skipped.\n this.lastRenderedLayers = [];\n this.layers = [];\n\n this.context = Object.assign({}, INITIAL_CONTEXT, {\n layerManager: this,\n deck,\n gl,\n // Enabling luma.gl Program caching using private API (_cachePrograms)\n programManager: gl && createProgramManager(gl),\n stats: stats || new Stats({id: 'deck.gl'}),\n // Make sure context.viewport is not empty on the first layer initialization\n viewport: viewport || new Viewport({id: 'DEFAULT-INITIAL-VIEWPORT'}), // Current viewport, exposed to layers for project* function\n timeline: timeline || new Timeline()\n });\n\n this._needsRedraw = 'Initial render';\n this._needsUpdate = false;\n this._debug = false;\n\n this.activateViewport = this.activateViewport.bind(this);\n\n Object.seal(this);\n }\n\n // Method to call when the layer manager is not needed anymore.\n finalize() {\n // Finalize all layers\n for (const layer of this.layers) {\n this._finalizeLayer(layer);\n }\n }\n\n // Check if a redraw is needed\n needsRedraw(opts = {clearRedrawFlags: false}) {\n let redraw = this._needsRedraw;\n if (opts.clearRedrawFlags) {\n this._needsRedraw = false;\n }\n\n // This layers list doesn't include sublayers, relying on composite layers\n for (const layer of this.layers) {\n // Call every layer to clear their flags\n const layerNeedsRedraw = layer.getNeedsRedraw(opts);\n redraw = redraw || layerNeedsRedraw;\n }\n\n return redraw;\n }\n\n // Check if a deep update of all layers is needed\n needsUpdate() {\n return this._needsUpdate;\n }\n\n // Layers will be redrawn (in next animation frame)\n setNeedsRedraw(reason) {\n this._needsRedraw = this._needsRedraw || reason;\n }\n\n // Layers will be updated deeply (in next animation frame)\n // Potentially regenerating attributes and sub layers\n setNeedsUpdate(reason) {\n this._needsUpdate = this._needsUpdate || reason;\n }\n\n // Gets an (optionally) filtered list of layers\n getLayers({layerIds = null} = {}) {\n // Filtering by layerId compares beginning of strings, so that sublayers will be included\n // Dependes on the convention of adding suffixes to the parent's layer name\n return layerIds\n ? this.layers.filter(layer => layerIds.find(layerId => layer.id.indexOf(layerId) === 0))\n : this.layers;\n }\n\n // Set props needed for layer rendering and picking.\n setProps(props) {\n if ('debug' in props) {\n this._debug = props.debug;\n }\n\n // A way for apps to add data to context that can be accessed in layers\n if ('userData' in props) {\n this.context.userData = props.userData;\n }\n\n // TODO - For now we set layers before viewports to preserve changeFlags\n if ('layers' in props) {\n this.setLayers(props.layers);\n }\n }\n\n // Supply a new layer list, initiating sublayer generation and layer matching\n setLayers(newLayers, forceUpdate = false) {\n // TODO - something is generating state updates that cause rerender of the same\n const shouldUpdate = forceUpdate || newLayers !== this.lastRenderedLayers;\n debug(TRACE_SET_LAYERS, this, shouldUpdate, newLayers);\n\n if (!shouldUpdate) {\n return this;\n }\n this.lastRenderedLayers = newLayers;\n\n newLayers = flatten(newLayers, {filter: Boolean});\n\n for (const layer of newLayers) {\n layer.context = this.context;\n }\n\n this._updateLayers(this.layers, newLayers);\n\n return this;\n }\n\n // Update layers from last cycle if `setNeedsUpdate()` has been called\n updateLayers() {\n // NOTE: For now, even if only some layer has changed, we update all layers\n // to ensure that layer id maps etc remain consistent even if different\n // sublayers are rendered\n const reason = this.needsUpdate();\n if (reason) {\n this.setNeedsRedraw(`updating layers: ${reason}`);\n // Force a full update\n const forceUpdate = true;\n this.setLayers(this.lastRenderedLayers, forceUpdate);\n }\n }\n\n //\n // PRIVATE METHODS\n //\n\n // Make a viewport \"current\" in layer context, updating viewportChanged flags\n activateViewport(viewport) {\n assert(viewport, 'LayerManager: viewport not set');\n\n const oldViewport = this.context.viewport;\n const viewportChanged = !oldViewport || !viewport.equals(oldViewport);\n\n if (viewportChanged) {\n debug(TRACE_ACTIVATE_VIEWPORT, this, viewport);\n\n this.context.viewport = viewport;\n const changeFlags = {viewportChanged: true};\n\n // Update layers states\n // Let screen space layers update their state based on viewport\n for (const layer of this.layers) {\n layer.setChangeFlags(changeFlags);\n this._updateLayer(layer);\n }\n }\n\n return this;\n }\n\n // Match all layers, checking for caught errors\n // To avoid having an exception in one layer disrupt other layers\n // TODO - mark layers with exceptions as bad and remove from rendering cycle?\n _updateLayers(oldLayers, newLayers) {\n // Create old layer map\n const oldLayerMap = {};\n for (const oldLayer of oldLayers) {\n if (oldLayerMap[oldLayer.id]) {\n log.warn(`Multiple old layers with same id ${layerName(oldLayer)}`)();\n } else {\n oldLayerMap[oldLayer.id] = oldLayer;\n }\n }\n\n // Allocate array for generated layers\n const generatedLayers = [];\n\n // Match sublayers\n const error = this._updateSublayersRecursively(newLayers, oldLayerMap, generatedLayers);\n\n // Finalize unmatched layers\n const error2 = this._finalizeOldLayers(oldLayerMap);\n\n let needsUpdate = false;\n for (const layer of generatedLayers) {\n if (layer.hasUniformTransition()) {\n needsUpdate = true;\n break;\n }\n }\n\n this._needsUpdate = needsUpdate;\n this.layers = generatedLayers;\n\n // Throw first error found, if any\n const firstError = error || error2;\n if (firstError) {\n throw firstError;\n }\n }\n\n /* eslint-disable complexity,max-statements */\n // Note: adds generated layers to `generatedLayers` array parameter\n _updateSublayersRecursively(newLayers, oldLayerMap, generatedLayers) {\n let error = null;\n\n for (const newLayer of newLayers) {\n newLayer.context = this.context;\n\n // Given a new coming layer, find its matching old layer (if any)\n const oldLayer = oldLayerMap[newLayer.id];\n if (oldLayer === null) {\n // null, rather than undefined, means this id was originally there\n log.warn(`Multiple new layers with same id ${layerName(newLayer)}`)();\n }\n // Remove the old layer from candidates, as it has been matched with this layer\n oldLayerMap[newLayer.id] = null;\n\n let sublayers = null;\n\n // We must not generate exceptions until after layer matching is complete\n try {\n if (this._debug && oldLayer !== newLayer) {\n newLayer.validateProps();\n }\n\n if (!oldLayer) {\n const err = this._initializeLayer(newLayer);\n error = error || err;\n } else {\n this._transferLayerState(oldLayer, newLayer);\n const err = this._updateLayer(newLayer);\n error = error || err;\n }\n generatedLayers.push(newLayer);\n\n // Call layer lifecycle method: render sublayers\n sublayers = newLayer.isComposite && newLayer.getSubLayers();\n // End layer lifecycle method: render sublayers\n } catch (err) {\n log.warn(`error during matching of ${layerName(newLayer)}`, err)();\n error = error || err; // Record first exception\n }\n\n if (sublayers) {\n const err = this._updateSublayersRecursively(sublayers, oldLayerMap, generatedLayers);\n error = error || err;\n }\n }\n\n return error;\n }\n /* eslint-enable complexity,max-statements */\n\n // Finalize any old layers that were not matched\n _finalizeOldLayers(oldLayerMap) {\n let error = null;\n for (const layerId in oldLayerMap) {\n const layer = oldLayerMap[layerId];\n if (layer) {\n const err = this._finalizeLayer(layer);\n error = error || err;\n }\n }\n return error;\n }\n\n // EXCEPTION SAFE LAYER ACCESS\n\n // Initializes a single layer, calling layer methods\n _initializeLayer(layer) {\n try {\n layer._initialize();\n layer.lifecycle = LIFECYCLE.INITIALIZED;\n } catch (err) {\n log.warn(`error while initializing ${layerName(layer)}\\n`, err)();\n return err;\n // TODO - what should the lifecycle state be here? LIFECYCLE.INITIALIZATION_FAILED?\n }\n\n return null;\n }\n\n _transferLayerState(oldLayer, newLayer) {\n newLayer._transferState(oldLayer);\n newLayer.lifecycle = LIFECYCLE.MATCHED;\n\n if (newLayer !== oldLayer) {\n oldLayer.lifecycle = LIFECYCLE.AWAITING_GC;\n }\n }\n\n // Updates a single layer, cleaning all flags\n _updateLayer(layer) {\n try {\n layer._update();\n } catch (err) {\n log.warn(`error during update of ${layerName(layer)}`, err)();\n // Save first error\n return err;\n }\n return null;\n }\n\n // Finalizes a single layer\n _finalizeLayer(layer) {\n this._needsRedraw = this._needsRedraw || `finalized ${layerName(layer)}`;\n\n layer.lifecycle = LIFECYCLE.AWAITING_FINALIZATION;\n\n try {\n layer._finalize();\n layer.lifecycle = LIFECYCLE.FINALIZED;\n } catch (err) {\n log.warn(`error during finalization of ${layerName(layer)}`, err)();\n return err;\n }\n return null;\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport assert from '../utils/assert';\nimport {deepEqual} from '../utils/deep-equal';\nimport log from '../utils/log';\nimport {flatten} from '../utils/flatten';\n\nexport default class ViewManager {\n constructor(props = {}) {\n // List of view descriptors, gets re-evaluated when width/height changes\n this.views = [];\n this.width = 100;\n this.height = 100;\n this.viewState = {};\n this.controllers = {};\n this.timeline = props.timeline;\n\n this._viewports = []; // Generated viewports\n this._viewportMap = {};\n this._isUpdating = false;\n this._needsRedraw = 'Initial render';\n this._needsUpdate = true;\n\n this._eventManager = props.eventManager;\n this._eventCallbacks = {\n onViewStateChange: props.onViewStateChange,\n onInteractiveStateChange: props.onInteractiveStateChange\n };\n\n Object.seal(this);\n\n // Init with default map viewport\n this.setProps(props);\n }\n\n finalize() {\n for (const key in this.controllers) {\n if (this.controllers[key]) {\n this.controllers[key].finalize();\n }\n }\n this.controllers = {};\n }\n\n // Check if a redraw is needed\n needsRedraw(opts = {clearRedrawFlags: false}) {\n const redraw = this._needsRedraw;\n if (opts.clearRedrawFlags) {\n this._needsRedraw = false;\n }\n return redraw;\n }\n\n // Layers will be updated deeply (in next animation frame)\n // Potentially regenerating attributes and sub layers\n setNeedsUpdate(reason) {\n this._needsUpdate = this._needsUpdate || reason;\n this._needsRedraw = this._needsRedraw || reason;\n }\n\n // Checks each viewport for transition updates\n updateViewStates() {\n for (const viewId in this.controllers) {\n const controller = this.controllers[viewId];\n if (controller) {\n controller.updateTransition();\n }\n }\n }\n\n /** Get a set of viewports for a given width and height\n * TODO - Intention is for deck.gl to autodeduce width and height and drop the need for props\n * @param rect (object, optional) - filter the viewports\n * + not provided - return all viewports\n * + {x, y} - only return viewports that contain this pixel\n * + {x, y, width, height} - only return viewports that overlap with this rectangle\n */\n getViewports(rect) {\n if (rect) {\n return this._viewports.filter(viewport => viewport.containsPixel(rect));\n }\n return this._viewports;\n }\n\n getViews() {\n const viewMap = {};\n this.views.forEach(view => {\n viewMap[view.id] = view;\n });\n return viewMap;\n }\n\n // Resolves a viewId string to a View, if already a View returns it.\n getView(viewOrViewId) {\n return typeof viewOrViewId === 'string'\n ? this.views.find(view => view.id === viewOrViewId)\n : viewOrViewId;\n }\n\n // Returns the viewState for a specific viewId. Matches the viewState by\n // 1. view.viewStateId\n // 2. view.id\n // 3. root viewState\n // then applies the view's filter if any\n getViewState(viewId) {\n const view = this.getView(viewId);\n // Backward compatibility: view state for single view\n const viewState = (view && this.viewState[view.getViewStateId()]) || this.viewState;\n return view ? view.filterViewState(viewState) : viewState;\n }\n\n getViewport(viewId) {\n return this._viewportMap[viewId];\n }\n\n /**\n * Unproject pixel coordinates on screen onto world coordinates,\n * (possibly [lon, lat]) on map.\n * - [x, y] => [lng, lat]\n * - [x, y, z] => [lng, lat, Z]\n * @param {Array} xyz -\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether origin is top left\n * @return {Array|null} - [lng, lat, Z] or [X, Y, Z]\n */\n unproject(xyz, opts) {\n const viewports = this.getViewports();\n const pixel = {x: xyz[0], y: xyz[1]};\n for (let i = viewports.length - 1; i >= 0; --i) {\n const viewport = viewports[i];\n if (viewport.containsPixel(pixel)) {\n const p = xyz.slice();\n p[0] -= viewport.x;\n p[1] -= viewport.y;\n return viewport.unproject(p, opts);\n }\n }\n return null;\n }\n\n setProps(props) {\n if ('views' in props) {\n this._setViews(props.views);\n }\n\n // TODO - support multiple view states\n if ('viewState' in props) {\n this._setViewState(props.viewState);\n }\n\n if ('width' in props || 'height' in props) {\n this._setSize(props.width, props.height);\n }\n\n // Important: avoid invoking _update() inside itself\n // Nested updates result in unexpected side effects inside _rebuildViewports()\n // when using auto control in pure-js\n if (!this._isUpdating) {\n this._update();\n }\n }\n\n _update() {\n this._isUpdating = true;\n\n // Only rebuild viewports if the update flag is set\n if (this._needsUpdate) {\n this._needsUpdate = false;\n this._rebuildViewports();\n }\n\n // If viewport transition(s) are triggered during viewports update, controller(s)\n // will immediately call `onViewStateChange` which calls `viewManager.setProps` again.\n if (this._needsUpdate) {\n this._needsUpdate = false;\n this._rebuildViewports();\n }\n\n this._isUpdating = false;\n }\n\n _setSize(width, height) {\n assert(Number.isFinite(width) && Number.isFinite(height));\n if (width !== this.width || height !== this.height) {\n this.width = width;\n this.height = height;\n this.setNeedsUpdate('Size changed');\n }\n }\n\n // Update the view descriptor list and set change flag if needed\n // Does not actually rebuild the `Viewport`s until `getViewports` is called\n _setViews(views) {\n views = flatten(views, {filter: Boolean});\n\n const viewsChanged = this._diffViews(views, this.views);\n if (viewsChanged) {\n this.setNeedsUpdate('views changed');\n }\n\n this.views = views;\n }\n\n _setViewState(viewState) {\n if (viewState) {\n const viewStateChanged = !deepEqual(viewState, this.viewState);\n\n if (viewStateChanged) {\n this.setNeedsUpdate('viewState changed');\n }\n\n this.viewState = viewState;\n } else {\n log.warn('missing `viewState` or `initialViewState`')();\n }\n }\n\n //\n // PRIVATE METHODS\n //\n\n _onViewStateChange(viewId, event) {\n event.viewId = viewId;\n this._eventCallbacks.onViewStateChange(event);\n }\n\n _createController(props) {\n const Controller = props.type;\n\n const controller = new Controller(\n Object.assign(\n {\n timeline: this.timeline,\n eventManager: this._eventManager,\n // Set an internal callback that calls the prop callback if provided\n onViewStateChange: this._onViewStateChange.bind(this, props.id),\n onStateChange: this._eventCallbacks.onInteractiveStateChange\n },\n props\n )\n );\n\n return controller;\n }\n\n _updateController(view, viewState, viewport, controller) {\n if (view.controller) {\n const controllerProps = Object.assign({}, view.controller, viewState, {\n id: view.id,\n x: viewport.x,\n y: viewport.y,\n width: viewport.width,\n height: viewport.height\n });\n\n // TODO - check if view / controller type has changed, and replace the controller\n if (controller) {\n controller.setProps(controllerProps);\n } else {\n controller = this._createController(controllerProps);\n }\n return controller;\n }\n return null;\n }\n\n // Rebuilds viewports from descriptors towards a certain window size\n _rebuildViewports() {\n const {width, height, views} = this;\n\n const oldControllers = this.controllers;\n this._viewports = [];\n this.controllers = {};\n\n // Create controllers in reverse order, so that views on top receive events first\n for (let i = views.length; i--; ) {\n const view = views[i];\n const viewState = this.getViewState(view);\n const viewport = view.makeViewport({width, height, viewState});\n\n // Update the controller\n this.controllers[view.id] = this._updateController(\n view,\n viewState,\n viewport,\n oldControllers[view.id]\n );\n\n this._viewports.unshift(viewport);\n }\n\n // Remove unused controllers\n for (const id in oldControllers) {\n if (oldControllers[id] && !this.controllers[id]) {\n oldControllers[id].finalize();\n }\n }\n\n this._buildViewportMap();\n }\n\n _buildViewportMap() {\n // Build a view id to view index\n this._viewportMap = {};\n this._viewports.forEach(viewport => {\n if (viewport.id) {\n // TODO - issue warning if multiple viewports use same id\n this._viewportMap[viewport.id] = this._viewportMap[viewport.id] || viewport;\n }\n });\n }\n\n // Check if viewport array has changed, returns true if any change\n // Note that descriptors can be the same\n _diffViews(newViews, oldViews) {\n if (newViews.length !== oldViews.length) {\n return true;\n }\n\n return newViews.some((_, i) => !newViews[i].equals(oldViews[i]));\n }\n}\n","const PERCENT_OR_PIXELS_REGEX = /([0-9]+\\.?[0-9]*)(%|px)/;\n\n// Takes a number or a string of formats `50%`, `33.3%` or `200px`\nexport function parsePosition(value) {\n switch (typeof value) {\n case 'number':\n return {\n position: value,\n relative: false\n };\n\n case 'string':\n const match = value.match(PERCENT_OR_PIXELS_REGEX);\n if (match && match.length >= 3) {\n const relative = match[2] === '%';\n const position = parseFloat(match[1]);\n return {\n position: relative ? position / 100 : position,\n relative\n };\n }\n // fallthrough\n\n default:\n // eslint-disable-line\n throw new Error(`Could not parse position string ${value}`);\n }\n}\n\nexport function getPosition(position, extent) {\n return position.relative ? Math.round(position.position * extent) : position.position;\n}\n","import Viewport from '../viewports/viewport';\nimport {parsePosition, getPosition} from '../utils/positions';\nimport {deepEqual} from '../utils/deep-equal';\nimport assert from '../utils/assert';\n\nexport default class View {\n constructor(props = {}) {\n const {\n id = null,\n\n // Window width/height in pixels (for pixel projection)\n x = 0,\n y = 0,\n width = '100%',\n height = '100%',\n\n // Viewport Options\n projectionMatrix = null, // Projection matrix\n fovy = 50, // Perspective projection parameters, used if projectionMatrix not supplied\n near = 0.1, // Distance of near clipping plane\n far = 1000, // Distance of far clipping plane\n modelMatrix = null, // A model matrix to be applied to position, to match the layer props API\n\n // A View can be a wrapper for a viewport instance\n viewportInstance = null,\n\n // Internal: Viewport Type\n type = Viewport // TODO - default to WebMercator?\n } = props;\n\n assert(!viewportInstance || viewportInstance instanceof Viewport);\n this.viewportInstance = viewportInstance;\n\n // Id\n this.id = id || this.constructor.displayName || 'view';\n this.type = type;\n\n this.props = Object.assign({}, props, {\n id: this.id,\n projectionMatrix,\n fovy,\n near,\n far,\n modelMatrix\n });\n\n // Extents\n this._parseDimensions({x, y, width, height});\n\n // Bind methods for easy access\n this.equals = this.equals.bind(this);\n\n Object.seal(this);\n }\n\n equals(view) {\n if (this === view) {\n return true;\n }\n\n // if `viewportInstance` is set, it is the only prop that is used\n // Delegate to `Viewport.equals`\n if (this.viewportInstance) {\n return view.viewportInstance && this.viewportInstance.equals(view.viewportInstance);\n }\n\n const viewChanged = deepEqual(this.props, view.props);\n\n return viewChanged;\n }\n\n // Build a `Viewport` from a view descriptor\n // TODO - add support for autosizing viewports using width and height\n makeViewport({width, height, viewState}) {\n if (this.viewportInstance) {\n return this.viewportInstance;\n }\n\n viewState = this.filterViewState(viewState);\n\n // Resolve relative viewport dimensions\n const viewportDimensions = this.getDimensions({width, height});\n const props = Object.assign({viewState}, viewState, this.props, viewportDimensions);\n return this._getViewport(props);\n }\n\n getViewStateId() {\n switch (typeof this.props.viewState) {\n case 'string':\n // if View.viewState is a string, return it\n return this.props.viewState;\n\n case 'object':\n // If it is an object, return its id component\n return this.props.viewState && this.props.viewState.id;\n\n default:\n return this.id;\n }\n }\n\n // Allows view to override (or completely define) viewState\n filterViewState(viewState) {\n if (this.props.viewState && typeof this.props.viewState === 'object') {\n // If we have specified an id, then intent is to override,\n // If not, completely specify the view state\n if (!this.props.viewState.id) {\n return this.props.viewState;\n }\n\n // Merge in all props from View's viewState, except id\n const newViewState = Object.assign({}, viewState);\n for (const key in this.props.viewState) {\n if (key !== 'id') {\n newViewState[key] = this.props.viewState[key];\n }\n }\n return newViewState;\n }\n\n return viewState;\n }\n\n // Resolve relative viewport dimensions into actual dimensions (y='50%', width=800 => y=400)\n getDimensions({width, height}) {\n return {\n x: getPosition(this._x, width),\n y: getPosition(this._y, height),\n width: getPosition(this._width, width),\n height: getPosition(this._height, height)\n };\n }\n\n // Used by sub classes to resolve controller props\n _getControllerProps(defaultOpts) {\n let opts = this.props.controller;\n\n if (!opts) {\n return null;\n }\n if (opts === true) {\n return defaultOpts;\n }\n if (typeof opts === 'function') {\n opts = {type: opts};\n }\n return Object.assign({}, defaultOpts, opts);\n }\n\n // Overridable method\n _getViewport(props) {\n // Get the type of the viewport\n const {type: ViewportType} = this;\n return new ViewportType(props);\n }\n\n // Parse relative viewport dimension descriptors (e.g {y: '50%', height: '50%'})\n _parseDimensions({x, y, width, height}) {\n this._x = parsePosition(x);\n this._y = parsePosition(y);\n this._width = parsePosition(width);\n this._height = parsePosition(height);\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// View and Projection Matrix calculations for mapbox-js style\n// map view properties\nimport Viewport from './viewport';\n\nimport {\n pixelsToWorld,\n getViewMatrix,\n addMetersToLngLat,\n getProjectionParameters,\n fitBounds\n} from '@math.gl/web-mercator';\n\n// TODO - import from math.gl\nimport * as vec2 from 'gl-matrix/vec2';\n\nexport default class WebMercatorViewport extends Viewport {\n /**\n * @classdesc\n * Creates view/projection matrices from mercator params\n * Note: The Viewport is immutable in the sense that it only has accessors.\n * A new viewport instance should be created if any parameters have changed.\n */\n /* eslint-disable complexity, max-statements */\n constructor(opts = {}) {\n const {\n latitude = 0,\n longitude = 0,\n zoom = 11,\n pitch = 0,\n bearing = 0,\n nearZMultiplier = 0.1,\n farZMultiplier = 1.01,\n orthographic = false\n } = opts;\n\n let {width, height, altitude = 1.5} = opts;\n const scale = Math.pow(2, zoom);\n\n // Silently allow apps to send in 0,0 to facilitate isomorphic render etc\n width = width || 1;\n height = height || 1;\n\n // Altitude - prevent division by 0\n // TODO - just throw an Error instead?\n altitude = Math.max(0.75, altitude);\n\n const {fov, aspect, focalDistance, near, far} = getProjectionParameters({\n width,\n height,\n pitch,\n altitude,\n nearZMultiplier,\n farZMultiplier\n });\n\n // The uncentered matrix allows us two move the center addition to the\n // shader (cheap) which gives a coordinate system that has its center in\n // the layer's center position. This makes rotations and other modelMatrx\n // transforms much more useful.\n const viewMatrixUncentered = getViewMatrix({\n height,\n pitch,\n bearing,\n scale,\n altitude\n });\n\n const viewportOpts = Object.assign({}, opts, {\n // x, y,\n width,\n height,\n\n // view matrix\n viewMatrix: viewMatrixUncentered,\n longitude,\n latitude,\n zoom,\n\n // projection matrix parameters\n orthographic,\n fovyRadians: fov,\n aspect,\n // TODO Viewport is already carefully set up to \"focus\" on ground, so can't use focal distance\n focalDistance: orthographic ? focalDistance : 1,\n near,\n far\n });\n\n super(viewportOpts);\n\n // Save parameters\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n\n this.orthographic = orthographic;\n\n Object.freeze(this);\n }\n /* eslint-enable complexity, max-statements */\n\n /**\n * Add a meter delta to a base lnglat coordinate, returning a new lnglat array\n *\n * Note: Uses simple linear approximation around the viewport center\n * Error increases with size of offset (roughly 1% per 100km)\n *\n * @param {[Number,Number]|[Number,Number,Number]) lngLatZ - base coordinate\n * @param {[Number,Number]|[Number,Number,Number]) xyz - array of meter deltas\n * @return {[Number,Number]|[Number,Number,Number]) array of [lng,lat,z] deltas\n */\n addMetersToLngLat(lngLatZ, xyz) {\n return addMetersToLngLat(lngLatZ, xyz);\n }\n\n /**\n * Get the map center that place a given [lng, lat] coordinate at screen\n * point [x, y]\n *\n * @param {Array} lngLat - [lng,lat] coordinates\n * Specifies a point on the sphere.\n * @param {Array} pos - [x,y] coordinates\n * Specifies a point on the screen.\n * @return {Array} [lng,lat] new map center.\n */\n getMapCenterByLngLatPosition({lngLat, pos}) {\n const fromLocation = pixelsToWorld(pos, this.pixelUnprojectionMatrix);\n const toLocation = this.projectFlat(lngLat);\n\n const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n const newCenter = vec2.add([], this.center, translate);\n\n return this.unprojectFlat(newCenter);\n }\n\n /**\n * Returns a new viewport that fit around the given rectangle.\n * Only supports non-perspective mode.\n * @param {Array} bounds - [[lon, lat], [lon, lat]]\n * @param {Number} [options.padding] - The amount of padding in pixels to add to the given bounds.\n * @param {Array} [options.offset] - The center of the given bounds relative to the map's center,\n * [x, y] measured in pixels.\n * @returns {WebMercatorViewport}\n */\n fitBounds(bounds, options = {}) {\n const {width, height} = this;\n const {longitude, latitude, zoom} = fitBounds(Object.assign({width, height, bounds}, options));\n return new WebMercatorViewport({width, height, longitude, latitude, zoom});\n }\n}\n\nWebMercatorViewport.displayName = 'WebMercatorViewport';\n","import {equals} from 'math.gl';\nimport assert from '../utils/assert';\n\nexport default class TransitionInterpolator {\n /**\n * @param opts {array|object}\n * @param opts.compare {array} - prop names used in equality check\n * @param opts.extract {array} - prop names needed for interpolation\n * @param opts.required {array} - prop names that must be supplied\n * alternatively, supply one list of prop names as `opts` if all of the above are the same.\n */\n constructor(opts = {}) {\n if (Array.isArray(opts)) {\n opts = {\n compare: opts,\n extract: opts,\n required: opts\n };\n }\n const {compare, extract, required} = opts;\n\n this._propsToCompare = compare;\n this._propsToExtract = extract;\n this._requiredProps = required;\n }\n\n /**\n * Checks if two sets of props need transition in between\n * @param currentProps {object} - a list of viewport props\n * @param nextProps {object} - a list of viewport props\n * @returns {bool} - true if two props are equivalent\n */\n arePropsEqual(currentProps, nextProps) {\n for (const key of this._propsToCompare || Object.keys(nextProps)) {\n if (\n !(key in currentProps) ||\n !(key in nextProps) ||\n !equals(currentProps[key], nextProps[key])\n ) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Called before transition starts to validate/pre-process start and end props\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Object} {start, end} - start and end props to be passed\n * to `interpolateProps`\n */\n initializeProps(startProps, endProps) {\n let result;\n\n if (this._propsToExtract) {\n const startViewStateProps = {};\n const endViewStateProps = {};\n\n for (const key of this._propsToExtract) {\n startViewStateProps[key] = startProps[key];\n endViewStateProps[key] = endProps[key];\n }\n result = {start: startViewStateProps, end: endViewStateProps};\n } else {\n result = {start: startProps, end: endProps};\n }\n\n this._checkRequiredProps(result.start);\n this._checkRequiredProps(result.end);\n\n return result;\n }\n\n /**\n * Returns viewport props in transition\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @param t {number} - a time factor between [0, 1]\n * @returns {object} - a list of interpolated viewport props\n */\n interpolateProps(startProps, endProps, t) {\n return endProps;\n }\n\n /**\n * Returns transition duration\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Number} - transition duration in milliseconds\n */\n getDuration(startProps, endProps) {\n return endProps.transitionDuration;\n }\n\n _checkRequiredProps(props) {\n if (!this._requiredProps) {\n return;\n }\n\n this._requiredProps.forEach(propName => {\n const value = props[propName];\n assert(\n Number.isFinite(value) || Array.isArray(value),\n `${propName} is required for transition`\n );\n });\n }\n}\n","import TransitionInterpolator from './transition-interpolator';\nimport {lerp} from 'math.gl';\n\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\n\n/**\n * Performs linear interpolation of two view states.\n */\nexport default class LinearInterpolator extends TransitionInterpolator {\n /**\n * @param {Array} transitionProps - list of props to apply linear transition to.\n */\n constructor(transitionProps = VIEWPORT_TRANSITION_PROPS) {\n super(transitionProps);\n }\n\n interpolateProps(startProps, endProps, t) {\n const viewport = {};\n for (const key in endProps) {\n viewport[key] = lerp(startProps[key], endProps[key], t);\n }\n return viewport;\n }\n}\n","import LinearInterpolator from '../transitions/linear-interpolator';\nimport Transition from '../transitions/transition';\n\nconst noop = () => {};\n\nexport const TRANSITION_EVENTS = {\n BREAK: 1,\n SNAP_TO_END: 2,\n IGNORE: 3\n};\n\nconst DEFAULT_PROPS = {\n transitionDuration: 0,\n transitionEasing: t => t,\n transitionInterpolator: new LinearInterpolator(),\n transitionInterruption: TRANSITION_EVENTS.BREAK,\n onTransitionStart: noop,\n onTransitionInterrupt: noop,\n onTransitionEnd: noop\n};\n\nexport default class TransitionManager {\n constructor(ControllerState, props = {}) {\n this.ControllerState = ControllerState;\n this.props = Object.assign({}, DEFAULT_PROPS, props);\n this.propsInTransition = null;\n this.transition = new Transition(props.timeline);\n\n this.onViewStateChange = props.onViewStateChange;\n\n this._onTransitionUpdate = this._onTransitionUpdate.bind(this);\n }\n\n finalize() {\n this.transition.cancel();\n }\n\n // Returns current transitioned viewport.\n getViewportInTransition() {\n return this.propsInTransition;\n }\n\n // Process the vewiport change, either ignore or trigger a new transition.\n // Return true if a new transition is triggered, false otherwise.\n processViewStateChange(nextProps) {\n let transitionTriggered = false;\n const currentProps = this.props;\n // Set this.props here as '_triggerTransition' calls '_updateViewport' that uses this.props.\n nextProps = Object.assign({}, DEFAULT_PROPS, nextProps);\n this.props = nextProps;\n\n // NOTE: Be cautious re-ordering statements in this function.\n if (this._shouldIgnoreViewportChange(currentProps, nextProps)) {\n return transitionTriggered;\n }\n\n if (this._isTransitionEnabled(nextProps)) {\n const {interruption, endProps} = this.transition.settings;\n const startProps = Object.assign(\n {},\n currentProps,\n interruption === TRANSITION_EVENTS.SNAP_TO_END\n ? endProps\n : this.propsInTransition || currentProps\n );\n\n this._triggerTransition(startProps, nextProps);\n\n transitionTriggered = true;\n } else {\n this.transition.cancel();\n }\n\n return transitionTriggered;\n }\n\n updateTransition() {\n this.transition.update();\n }\n\n // Helper methods\n\n _isTransitionEnabled(props) {\n const {transitionDuration, transitionInterpolator} = props;\n return (\n (transitionDuration > 0 || transitionDuration === 'auto') && Boolean(transitionInterpolator)\n );\n }\n\n _isUpdateDueToCurrentTransition(props) {\n if (this.transition.inProgress) {\n return this.transition.settings.interpolator.arePropsEqual(props, this.propsInTransition);\n }\n return false;\n }\n\n _shouldIgnoreViewportChange(currentProps, nextProps) {\n if (this.transition.inProgress) {\n // Ignore update if it is requested to be ignored\n return (\n this.transition.settings.interruption === TRANSITION_EVENTS.IGNORE ||\n // Ignore update if it is due to current active transition.\n this._isUpdateDueToCurrentTransition(nextProps)\n );\n } else if (this._isTransitionEnabled(nextProps)) {\n // Ignore if none of the viewport props changed.\n return nextProps.transitionInterpolator.arePropsEqual(currentProps, nextProps);\n }\n return true;\n }\n\n _triggerTransition(startProps, endProps) {\n const startViewstate = new this.ControllerState(startProps);\n const endViewStateProps = new this.ControllerState(endProps).shortestPathFrom(startViewstate);\n\n // update transitionDuration for 'auto' mode\n const {transitionInterpolator} = endProps;\n const duration = transitionInterpolator.getDuration\n ? transitionInterpolator.getDuration(startProps, endProps)\n : endProps.transitionDuration;\n\n const initialProps = endProps.transitionInterpolator.initializeProps(\n startProps,\n endViewStateProps\n );\n\n this.propsInTransition = {};\n this.duration = duration;\n this.transition.start({\n duration,\n easing: endProps.transitionEasing,\n interpolator: endProps.transitionInterpolator,\n interruption: endProps.transitionInterruption,\n\n startProps: initialProps.start,\n endProps: initialProps.end,\n\n onStart: endProps.onTransitionStart,\n onUpdate: this._onTransitionUpdate,\n onInterrupt: this._onTransitionEnd(endProps.onTransitionInterrupt),\n onEnd: this._onTransitionEnd(endProps.onTransitionEnd)\n });\n this.updateTransition();\n }\n\n _onTransitionEnd(callback) {\n return transition => {\n this.propsInTransition = null;\n callback(transition);\n };\n }\n\n _onTransitionUpdate(transition) {\n // NOTE: Be cautious re-ordering statements in this function.\n const {\n time,\n settings: {interpolator, startProps, endProps, duration, easing}\n } = transition;\n const t = easing(time / duration);\n const viewport = interpolator.interpolateProps(startProps, endProps, t);\n\n // This gurantees all props (e.g. bearing, longitude) are normalized\n // So when viewports are compared they are in same range.\n this.propsInTransition = new this.ControllerState(\n Object.assign({}, this.props, viewport)\n ).getViewportProps();\n\n if (this.onViewStateChange) {\n this.onViewStateChange({\n viewState: this.propsInTransition,\n interactionState: {inTransition: true},\n oldViewState: this.props\n });\n }\n }\n}\n\nTransitionManager.defaultProps = DEFAULT_PROPS;\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport TransitionManager from './transition-manager';\nimport log from '../utils/log';\nimport assert from '../utils/assert';\n\nconst NO_TRANSITION_PROPS = {\n transitionDuration: 0\n};\n\n// EVENT HANDLING PARAMETERS\nconst ZOOM_ACCEL = 0.01;\n\nconst EVENT_TYPES = {\n WHEEL: ['wheel'],\n PAN: ['panstart', 'panmove', 'panend'],\n PINCH: ['pinchstart', 'pinchmove', 'pinchend'],\n DOUBLE_TAP: ['doubletap'],\n KEYBOARD: ['keydown']\n};\n\nexport default class Controller {\n constructor(ControllerState, options = {}) {\n assert(ControllerState);\n this.ControllerState = ControllerState;\n this.controllerState = null;\n this.controllerStateProps = null;\n this.eventManager = null;\n this.transitionManager = new TransitionManager(ControllerState, options);\n this._events = null;\n this._state = {\n isDragging: false\n };\n this._customEvents = [];\n this.onViewStateChange = null;\n this.onStateChange = null;\n this.invertPan = false;\n\n this.handleEvent = this.handleEvent.bind(this);\n\n this.setProps(options);\n }\n\n set events(customEvents) {\n this.toggleEvents(this._customEvents, false);\n this.toggleEvents(customEvents, true);\n this._customEvents = customEvents;\n // Make sure default events are not overwritten\n this.setProps(this.controllerStateProps);\n }\n\n finalize() {\n for (const eventName in this._events) {\n if (this._events[eventName]) {\n this.eventManager.off(eventName, this.handleEvent);\n }\n }\n this.transitionManager.finalize();\n }\n\n /**\n * Callback for events\n * @param {hammer.Event} event\n */\n handleEvent(event) {\n const {ControllerState} = this;\n this.controllerState = new ControllerState(\n Object.assign({}, this.controllerStateProps, this._state)\n );\n\n switch (event.type) {\n case 'panstart':\n return this._onPanStart(event);\n case 'panmove':\n return this._onPan(event);\n case 'panend':\n return this._onPanEnd(event);\n case 'pinchstart':\n return this._onPinchStart(event);\n case 'pinchmove':\n return this._onPinch(event);\n case 'pinchend':\n return this._onPinchEnd(event);\n case 'doubletap':\n return this._onDoubleTap(event);\n case 'wheel':\n return this._onWheel(event);\n case 'keydown':\n return this._onKeyDown(event);\n default:\n return false;\n }\n }\n\n /* Event utils */\n // Event object: http://hammerjs.github.io/api/#event-object\n getCenter(event) {\n const {x, y} = this.controllerStateProps;\n const {offsetCenter} = event;\n return [offsetCenter.x - x, offsetCenter.y - y];\n }\n\n isPointInBounds(pos, event) {\n const {width, height} = this.controllerStateProps;\n if (event && event.handled) {\n return false;\n }\n\n const inside = pos[0] >= 0 && pos[0] <= width && pos[1] >= 0 && pos[1] <= height;\n if (inside && event) {\n event.stopPropagation();\n }\n return inside;\n }\n\n isFunctionKeyPressed(event) {\n const {srcEvent} = event;\n return Boolean(srcEvent.metaKey || srcEvent.altKey || srcEvent.ctrlKey || srcEvent.shiftKey);\n }\n\n isDragging() {\n return this._state.isDragging;\n }\n\n /**\n * Extract interactivity options\n */\n /* eslint-disable complexity, max-statements */\n setProps(props) {\n if ('onViewportChange' in props) {\n log.removed('onViewportChange')();\n }\n if ('onViewStateChange' in props) {\n this.onViewStateChange = props.onViewStateChange;\n }\n if ('onStateChange' in props) {\n this.onStateChange = props.onStateChange;\n }\n this.controllerStateProps = props;\n\n if ('eventManager' in props && this.eventManager !== props.eventManager) {\n // EventManager has changed\n this.eventManager = props.eventManager;\n this._events = {};\n this.toggleEvents(this._customEvents, true);\n }\n\n this.transitionManager.processViewStateChange(this.controllerStateProps);\n\n // TODO - make sure these are not reset on every setProps\n const {\n scrollZoom = true,\n dragPan = true,\n dragRotate = true,\n doubleClickZoom = true,\n touchZoom = true,\n touchRotate = false,\n keyboard = true\n } = props;\n\n // Register/unregister events\n const isInteractive = Boolean(this.onViewStateChange);\n this.toggleEvents(EVENT_TYPES.WHEEL, isInteractive && scrollZoom);\n this.toggleEvents(EVENT_TYPES.PAN, isInteractive && (dragPan || dragRotate));\n this.toggleEvents(EVENT_TYPES.PINCH, isInteractive && (touchZoom || touchRotate));\n this.toggleEvents(EVENT_TYPES.DOUBLE_TAP, isInteractive && doubleClickZoom);\n this.toggleEvents(EVENT_TYPES.KEYBOARD, isInteractive && keyboard);\n\n // Interaction toggles\n this.scrollZoom = scrollZoom;\n this.dragPan = dragPan;\n this.dragRotate = dragRotate;\n this.doubleClickZoom = doubleClickZoom;\n this.touchZoom = touchZoom;\n this.touchRotate = touchRotate;\n this.keyboard = keyboard;\n }\n /* eslint-enable complexity, max-statements */\n\n updateTransition() {\n this.transitionManager.updateTransition();\n }\n\n toggleEvents(eventNames, enabled) {\n if (this.eventManager) {\n eventNames.forEach(eventName => {\n if (this._events[eventName] !== enabled) {\n this._events[eventName] = enabled;\n if (enabled) {\n this.eventManager.on(eventName, this.handleEvent);\n } else {\n this.eventManager.off(eventName, this.handleEvent);\n }\n }\n });\n }\n }\n\n // Private Methods\n\n /* Callback util */\n // formats map state and invokes callback function\n updateViewport(newControllerState, extraProps = {}, interactionState = {}) {\n const viewState = Object.assign({}, newControllerState.getViewportProps(), extraProps);\n\n // TODO - to restore diffing, we need to include interactionState\n const changed = this.controllerState !== newControllerState;\n // const oldViewState = this.controllerState.getViewportProps();\n // const changed = Object.keys(viewState).some(key => oldViewState[key] !== viewState[key]);\n\n if (changed) {\n const oldViewState = this.controllerState ? this.controllerState.getViewportProps() : null;\n if (this.onViewStateChange) {\n this.onViewStateChange({viewState, interactionState, oldViewState});\n }\n }\n\n Object.assign(this._state, newControllerState.getInteractiveState(), interactionState);\n\n if (this.onStateChange) {\n this.onStateChange(this._state);\n }\n }\n\n /* Event handlers */\n // Default handler for the `panstart` event.\n _onPanStart(event) {\n const pos = this.getCenter(event);\n if (!this.isPointInBounds(pos, event)) {\n return false;\n }\n const newControllerState = this.controllerState.panStart({pos}).rotateStart({pos});\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {isDragging: true});\n return true;\n }\n\n // Default handler for the `panmove` event.\n _onPan(event) {\n if (!this.isDragging()) {\n return false;\n }\n let alternateMode = this.isFunctionKeyPressed(event) || event.rightButton;\n alternateMode = this.invertPan ? !alternateMode : alternateMode;\n return alternateMode ? this._onPanMove(event) : this._onPanRotate(event);\n }\n\n // Default handler for the `panend` event.\n _onPanEnd(event) {\n const newControllerState = this.controllerState.panEnd().rotateEnd();\n this.updateViewport(newControllerState, null, {\n isDragging: false,\n isPanning: false,\n isRotating: false\n });\n return true;\n }\n\n // Default handler for panning to move.\n // Called by `_onPan` when panning without function key pressed.\n _onPanMove(event) {\n if (!this.dragPan) {\n return false;\n }\n const pos = this.getCenter(event);\n const newControllerState = this.controllerState.pan({pos});\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n isDragging: true,\n isPanning: true\n });\n return true;\n }\n\n // Default handler for panning to rotate.\n // Called by `_onPan` when panning with function key pressed.\n _onPanRotate(event) {\n if (!this.dragRotate) {\n return false;\n }\n\n const {deltaX, deltaY} = event;\n const {width, height} = this.controllerState.getViewportProps();\n\n const deltaScaleX = deltaX / width;\n const deltaScaleY = deltaY / height;\n\n const newControllerState = this.controllerState.rotate({deltaScaleX, deltaScaleY});\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n isDragging: true,\n isRotating: true\n });\n return true;\n }\n\n // Default handler for the `wheel` event.\n _onWheel(event) {\n if (!this.scrollZoom) {\n return false;\n }\n event.preventDefault();\n\n const pos = this.getCenter(event);\n if (!this.isPointInBounds(pos, event)) {\n return false;\n }\n\n const {delta} = event;\n\n // Map wheel delta to relative scale\n let scale = 2 / (1 + Math.exp(-Math.abs(delta * ZOOM_ACCEL)));\n if (delta < 0 && scale !== 0) {\n scale = 1 / scale;\n }\n\n const newControllerState = this.controllerState.zoom({pos, scale});\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n isZooming: true,\n isPanning: true\n });\n return true;\n }\n\n // Default handler for the `pinchstart` event.\n _onPinchStart(event) {\n const pos = this.getCenter(event);\n if (!this.isPointInBounds(pos, event)) {\n return false;\n }\n\n const newControllerState = this.controllerState.zoomStart({pos}).rotateStart({pos});\n // hack - hammer's `rotation` field doesn't seem to produce the correct angle\n this._state.startPinchRotation = event.rotation;\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {isDragging: true});\n return true;\n }\n\n // Default handler for the `pinch` event.\n _onPinch(event) {\n if (!this.touchZoom && !this.touchRotate) {\n return false;\n }\n if (!this.isDragging()) {\n return false;\n }\n\n let newControllerState = this.controllerState;\n if (this.touchZoom) {\n const {scale} = event;\n const pos = this.getCenter(event);\n newControllerState = newControllerState.zoom({pos, scale});\n }\n if (this.touchRotate) {\n const {rotation} = event;\n const {startPinchRotation} = this._state;\n newControllerState = newControllerState.rotate({\n deltaScaleX: -(rotation - startPinchRotation) / 180\n });\n }\n\n this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n isDragging: true,\n isPanning: this.touchZoom,\n isZooming: this.touchZoom,\n isRotating: this.touchRotate\n });\n return true;\n }\n\n // Default handler for the `pinchend` event.\n _onPinchEnd(event) {\n const newControllerState = this.controllerState.zoomEnd().rotateEnd();\n this._state.startPinchRotation = 0;\n this.updateViewport(newControllerState, null, {\n isDragging: false,\n isPanning: false,\n isZooming: false,\n isRotating: false\n });\n return true;\n }\n\n // Default handler for the `doubletap` event.\n _onDoubleTap(event) {\n if (!this.doubleClickZoom) {\n return false;\n }\n const pos = this.getCenter(event);\n if (!this.isPointInBounds(pos, event)) {\n return false;\n }\n\n const isZoomOut = this.isFunctionKeyPressed(event);\n\n const newControllerState = this.controllerState.zoom({pos, scale: isZoomOut ? 0.5 : 2});\n this.updateViewport(newControllerState, this._getTransitionProps(), {\n isZooming: true,\n isPanning: true\n });\n return true;\n }\n\n /* eslint-disable complexity, max-statements */\n // Default handler for the `keydown` event\n _onKeyDown(event) {\n if (!this.keyboard) {\n return false;\n }\n const funcKey = this.isFunctionKeyPressed(event);\n const {controllerState} = this;\n let newControllerState;\n const interactionState = {};\n\n switch (event.srcEvent.keyCode) {\n case 189: // -\n newControllerState = funcKey\n ? controllerState.zoomOut().zoomOut()\n : controllerState.zoomOut();\n interactionState.isZooming = true;\n break;\n case 187: // +\n newControllerState = funcKey ? controllerState.zoomIn().zoomIn() : controllerState.zoomIn();\n interactionState.isZooming = true;\n break;\n case 37: // left\n if (funcKey) {\n newControllerState = controllerState.rotateLeft();\n interactionState.isRotating = true;\n } else {\n newControllerState = controllerState.moveLeft();\n interactionState.isPanning = true;\n }\n break;\n case 39: // right\n if (funcKey) {\n newControllerState = controllerState.rotateRight();\n interactionState.isRotating = true;\n } else {\n newControllerState = controllerState.moveRight();\n interactionState.isPanning = true;\n }\n break;\n case 38: // up\n if (funcKey) {\n newControllerState = controllerState.rotateUp();\n interactionState.isRotating = true;\n } else {\n newControllerState = controllerState.moveUp();\n interactionState.isPanning = true;\n }\n break;\n case 40: // down\n if (funcKey) {\n newControllerState = controllerState.rotateDown();\n interactionState.isRotating = true;\n } else {\n newControllerState = controllerState.moveDown();\n interactionState.isPanning = true;\n }\n break;\n default:\n return false;\n }\n this.updateViewport(newControllerState, this._getTransitionProps(), interactionState);\n return true;\n }\n /* eslint-enable complexity */\n\n _getTransitionProps() {\n // Transitions on double-tap and key-down are only supported by MapController\n return NO_TRANSITION_PROPS;\n }\n}\n","import assert from '../utils/assert';\n\n/* Helpers */\n\nexport default class ViewState {\n constructor(opts) {\n assert(Number.isFinite(opts.width), '`width` must be supplied');\n assert(Number.isFinite(opts.height), '`height` must be supplied');\n\n this._viewportProps = this._applyConstraints(opts);\n }\n\n getViewportProps() {\n return this._viewportProps;\n }\n\n shortestPathFrom(viewState) {\n return this._viewportProps;\n }\n\n // Redefined by subclass\n // Apply any constraints (mathematical or defined by _viewportProps) to map state\n _applyConstraints(props) {\n return props;\n }\n}\n","import {clamp} from 'math.gl';\nimport Controller from './controller';\nimport ViewState from './view-state';\nimport WebMercatorViewport, {normalizeViewportProps} from '@math.gl/web-mercator';\nimport assert from '../utils/assert';\nimport LinearInterpolator from '../transitions/linear-interpolator';\nimport {TRANSITION_EVENTS} from './transition-manager';\n\nconst PITCH_MOUSE_THRESHOLD = 5;\nconst PITCH_ACCEL = 1.2;\n\nconst LINEAR_TRANSITION_PROPS = {\n transitionDuration: 300,\n transitionEasing: t => t,\n transitionInterpolator: new LinearInterpolator(),\n transitionInterruption: TRANSITION_EVENTS.BREAK\n};\n\nconst NO_TRANSITION_PROPS = {\n transitionDuration: 0\n};\n\n// MAPBOX LIMITS\nexport const MAPBOX_LIMITS = {\n minZoom: 0,\n maxZoom: 20,\n minPitch: 0,\n maxPitch: 60\n};\n\nconst DEFAULT_STATE = {\n pitch: 0,\n bearing: 0,\n altitude: 1.5\n};\n\n/* Utils */\n\nclass MapState extends ViewState {\n constructor({\n /** Mapbox viewport properties */\n /** The width of the viewport */\n width,\n /** The height of the viewport */\n height,\n /** The latitude at the center of the viewport */\n latitude,\n /** The longitude at the center of the viewport */\n longitude,\n /** The tile zoom level of the map. */\n zoom,\n /** The bearing of the viewport in degrees */\n bearing = DEFAULT_STATE.bearing,\n /** The pitch of the viewport in degrees */\n pitch = DEFAULT_STATE.pitch,\n /**\n * Specify the altitude of the viewport camera\n * Unit: map heights, default 1.5\n * Non-public API, see https://github.com/mapbox/mapbox-gl-js/issues/1137\n */\n altitude = DEFAULT_STATE.altitude,\n\n /** Viewport constraints */\n maxZoom = MAPBOX_LIMITS.maxZoom,\n minZoom = MAPBOX_LIMITS.minZoom,\n maxPitch = MAPBOX_LIMITS.maxPitch,\n minPitch = MAPBOX_LIMITS.minPitch,\n\n /** Interaction states, required to calculate change during transform */\n /* The point on map being grabbed when the operation first started */\n startPanLngLat,\n /* Center of the zoom when the operation first started */\n startZoomLngLat,\n /** Bearing when current perspective rotate operation started */\n startBearing,\n /** Pitch when current perspective rotate operation started */\n startPitch,\n /** Zoom when current zoom operation started */\n startZoom\n } = {}) {\n assert(Number.isFinite(longitude), '`longitude` must be supplied');\n assert(Number.isFinite(latitude), '`latitude` must be supplied');\n assert(Number.isFinite(zoom), '`zoom` must be supplied');\n\n super({\n width,\n height,\n latitude,\n longitude,\n zoom,\n bearing,\n pitch,\n altitude,\n maxZoom,\n minZoom,\n maxPitch,\n minPitch\n });\n\n this._interactiveState = {\n startPanLngLat,\n startZoomLngLat,\n startBearing,\n startPitch,\n startZoom\n };\n }\n\n /* Public API */\n\n getViewportProps() {\n return this._viewportProps;\n }\n\n getInteractiveState() {\n return this._interactiveState;\n }\n\n /**\n * Start panning\n * @param {[Number, Number]} pos - position on screen where the pointer grabs\n */\n panStart({pos}) {\n return this._getUpdatedState({\n startPanLngLat: this._unproject(pos)\n });\n }\n\n /**\n * Pan\n * @param {[Number, Number]} pos - position on screen where the pointer is\n * @param {[Number, Number], optional} startPos - where the pointer grabbed at\n * the start of the operation. Must be supplied of `panStart()` was not called\n */\n pan({pos, startPos}) {\n const startPanLngLat = this._interactiveState.startPanLngLat || this._unproject(startPos);\n\n if (!startPanLngLat) {\n return this;\n }\n\n const [longitude, latitude] = this._calculateNewLngLat({startPanLngLat, pos});\n\n return this._getUpdatedState({\n longitude,\n latitude\n });\n }\n\n /**\n * End panning\n * Must call if `panStart()` was called\n */\n panEnd() {\n return this._getUpdatedState({\n startPanLngLat: null\n });\n }\n\n /**\n * Start rotating\n * @param {[Number, Number]} pos - position on screen where the center is\n */\n rotateStart({pos}) {\n return this._getUpdatedState({\n startBearing: this._viewportProps.bearing,\n startPitch: this._viewportProps.pitch\n });\n }\n\n /**\n * Rotate\n * @param {Number} deltaScaleX - a number between [-1, 1] specifying the\n * change to bearing.\n * @param {Number} deltaScaleY - a number between [-1, 1] specifying the\n * change to pitch. -1 sets to minPitch and 1 sets to maxPitch.\n */\n rotate({deltaScaleX = 0, deltaScaleY = 0}) {\n const {startBearing, startPitch} = this._interactiveState;\n\n if (!Number.isFinite(startBearing) || !Number.isFinite(startPitch)) {\n return this;\n }\n\n const {pitch, bearing} = this._calculateNewPitchAndBearing({\n deltaScaleX,\n deltaScaleY,\n startBearing,\n startPitch\n });\n\n return this._getUpdatedState({\n bearing,\n pitch\n });\n }\n\n /**\n * End rotating\n * Must call if `rotateStart()` was called\n */\n rotateEnd() {\n return this._getUpdatedState({\n startBearing: null,\n startPitch: null\n });\n }\n\n /**\n * Start zooming\n * @param {[Number, Number]} pos - position on screen where the center is\n */\n zoomStart({pos}) {\n return this._getUpdatedState({\n startZoomLngLat: this._unproject(pos),\n startZoom: this._viewportProps.zoom\n });\n }\n\n /**\n * Zoom\n * @param {[Number, Number]} pos - position on screen where the current center is\n * @param {[Number, Number]} startPos - the center position at\n * the start of the operation. Must be supplied of `zoomStart()` was not called\n * @param {Number} scale - a number between [0, 1] specifying the accumulated\n * relative scale.\n */\n zoom({pos, startPos, scale}) {\n // Make sure we zoom around the current mouse position rather than map center\n let {startZoom, startZoomLngLat} = this._interactiveState;\n\n if (!Number.isFinite(startZoom)) {\n // We have two modes of zoom:\n // scroll zoom that are discrete events (transform from the current zoom level),\n // and pinch zoom that are continuous events (transform from the zoom level when\n // pinch started).\n // If startZoom state is defined, then use the startZoom state;\n // otherwise assume discrete zooming\n startZoom = this._viewportProps.zoom;\n startZoomLngLat = this._unproject(startPos) || this._unproject(pos);\n }\n\n const zoom = this._calculateNewZoom({scale, startZoom});\n\n const zoomedViewport = new WebMercatorViewport(Object.assign({}, this._viewportProps, {zoom}));\n const [longitude, latitude] = zoomedViewport.getMapCenterByLngLatPosition({\n lngLat: startZoomLngLat,\n pos\n });\n\n return this._getUpdatedState({\n zoom,\n longitude,\n latitude\n });\n }\n\n /**\n * End zooming\n * Must call if `zoomStart()` was called\n */\n zoomEnd() {\n return this._getUpdatedState({\n startZoomLngLat: null,\n startZoom: null\n });\n }\n\n zoomIn() {\n return this._zoomFromCenter(2);\n }\n\n zoomOut() {\n return this._zoomFromCenter(0.5);\n }\n\n moveLeft() {\n return this._panFromCenter([100, 0]);\n }\n\n moveRight() {\n return this._panFromCenter([-100, 0]);\n }\n\n moveUp() {\n return this._panFromCenter([0, 100]);\n }\n\n moveDown() {\n return this._panFromCenter([0, -100]);\n }\n\n rotateLeft() {\n return this._getUpdatedState({\n bearing: this._viewportProps.bearing - 15\n });\n }\n\n rotateRight() {\n return this._getUpdatedState({\n bearing: this._viewportProps.bearing + 15\n });\n }\n\n rotateUp() {\n return this._getUpdatedState({\n pitch: this._viewportProps.pitch + 10\n });\n }\n\n rotateDown() {\n return this._getUpdatedState({\n pitch: this._viewportProps.pitch - 10\n });\n }\n\n shortestPathFrom(viewState) {\n // const endViewStateProps = new this.ControllerState(endProps).shortestPathFrom(startViewstate);\n const fromProps = viewState.getViewportProps();\n const props = Object.assign({}, this._viewportProps);\n const {bearing, longitude} = props;\n\n if (Math.abs(bearing - fromProps.bearing) > 180) {\n props.bearing = bearing < 0 ? bearing + 360 : bearing - 360;\n }\n if (Math.abs(longitude - fromProps.longitude) > 180) {\n props.longitude = longitude < 0 ? longitude + 360 : longitude - 360;\n }\n return props;\n }\n\n /* Private methods */\n\n _zoomFromCenter(scale) {\n const {width, height} = this._viewportProps;\n return this.zoom({\n pos: [width / 2, height / 2],\n scale\n });\n }\n\n _panFromCenter(offset) {\n const {width, height} = this._viewportProps;\n return this.pan({\n startPos: [width / 2, height / 2],\n pos: [width / 2 + offset[0], height / 2 + offset[1]]\n });\n }\n\n _getUpdatedState(newProps) {\n // Update _viewportProps\n return new MapState(Object.assign({}, this._viewportProps, this._interactiveState, newProps));\n }\n\n // Apply any constraints (mathematical or defined by _viewportProps) to map state\n _applyConstraints(props) {\n // Ensure zoom is within specified range\n const {maxZoom, minZoom, zoom} = props;\n props.zoom = clamp(zoom, minZoom, maxZoom);\n\n // Ensure pitch is within specified range\n const {maxPitch, minPitch, pitch} = props;\n props.pitch = clamp(pitch, minPitch, maxPitch);\n\n Object.assign(props, normalizeViewportProps(props));\n\n return props;\n }\n\n _unproject(pos) {\n const viewport = new WebMercatorViewport(this._viewportProps);\n return pos && viewport.unproject(pos);\n }\n\n // Calculate a new lnglat based on pixel dragging position\n _calculateNewLngLat({startPanLngLat, pos}) {\n const viewport = new WebMercatorViewport(this._viewportProps);\n return viewport.getMapCenterByLngLatPosition({lngLat: startPanLngLat, pos});\n }\n\n // Calculates new zoom\n _calculateNewZoom({scale, startZoom}) {\n const {maxZoom, minZoom} = this._viewportProps;\n const zoom = startZoom + Math.log2(scale);\n return clamp(zoom, minZoom, maxZoom);\n }\n\n // Calculates a new pitch and bearing from a position (coming from an event)\n _calculateNewPitchAndBearing({deltaScaleX, deltaScaleY, startBearing, startPitch}) {\n // clamp deltaScaleY to [-1, 1] so that rotation is constrained between minPitch and maxPitch.\n // deltaScaleX does not need to be clamped as bearing does not have constraints.\n deltaScaleY = clamp(deltaScaleY, -1, 1);\n\n const {minPitch, maxPitch} = this._viewportProps;\n\n const bearing = startBearing + 180 * deltaScaleX;\n let pitch = startPitch;\n if (deltaScaleY > 0) {\n // Gradually increase pitch\n pitch = startPitch + deltaScaleY * (maxPitch - startPitch);\n } else if (deltaScaleY < 0) {\n // Gradually decrease pitch\n pitch = startPitch - deltaScaleY * (minPitch - startPitch);\n }\n\n return {\n pitch,\n bearing\n };\n }\n}\n\nexport default class MapController extends Controller {\n constructor(props) {\n super(MapState, props);\n this.invertPan = true;\n }\n\n _getTransitionProps() {\n // Enables Transitions on double-tap and key-down events.\n return LINEAR_TRANSITION_PROPS;\n }\n\n _onPanRotate(event) {\n if (!this.dragRotate) {\n return false;\n }\n\n const {deltaX, deltaY} = event;\n const [, centerY] = this.getCenter(event);\n const startY = centerY - deltaY;\n const {width, height} = this.controllerState.getViewportProps();\n\n const deltaScaleX = deltaX / width;\n let deltaScaleY = 0;\n\n if (deltaY > 0) {\n if (Math.abs(height - startY) > PITCH_MOUSE_THRESHOLD) {\n // Move from 0 to -1 as we drag upwards\n deltaScaleY = (deltaY / (startY - height)) * PITCH_ACCEL;\n }\n } else if (deltaY < 0) {\n if (startY > PITCH_MOUSE_THRESHOLD) {\n // Move from 0 to 1 as we drag upwards\n deltaScaleY = 1 - centerY / startY;\n }\n }\n deltaScaleY = Math.min(1, Math.max(-1, deltaScaleY));\n\n const newControllerState = this.controllerState.rotate({deltaScaleX, deltaScaleY});\n return this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n isDragging: true,\n isRotating: true\n });\n }\n}\n\nexport const testExports = {MapState};\n","import View from './view';\nimport WebMercatorViewport from '../viewports/web-mercator-viewport';\nimport MapController from '../controllers/map-controller';\n\nexport default class MapView extends View {\n constructor(props) {\n super(\n Object.assign({}, props, {\n type: WebMercatorViewport\n })\n );\n }\n\n get controller() {\n return this._getControllerProps({\n type: MapController\n });\n }\n}\n\nMapView.displayName = 'MapView';\n","const DEFAULT_LIGHT_COLOR = [255, 255, 255];\nconst DEFAULT_LIGHT_INTENSITY = 1.0;\n\nlet idCount = 0;\n\nexport class AmbientLight {\n constructor(props = {}) {\n const {color = DEFAULT_LIGHT_COLOR} = props;\n const {intensity = DEFAULT_LIGHT_INTENSITY} = props;\n\n this.id = props.id || `ambient-${idCount++}`;\n this.color = color;\n this.intensity = intensity;\n this.type = 'ambient';\n }\n}\n","import {Vector3} from 'math.gl';\n\nconst DEFAULT_LIGHT_COLOR = [255, 255, 255];\nconst DEFAULT_LIGHT_INTENSITY = 1.0;\nconst DEFAULT_LIGHT_DIRECTION = [0.0, 0.0, -1.0];\n\nlet idCount = 0;\n\nexport class DirectionalLight {\n constructor(props = {}) {\n const {color = DEFAULT_LIGHT_COLOR} = props;\n const {intensity = DEFAULT_LIGHT_INTENSITY} = props;\n const {direction = DEFAULT_LIGHT_DIRECTION} = props;\n const {_shadow = false} = props;\n\n this.id = props.id || `directional-${idCount++}`;\n this.color = color;\n this.intensity = intensity;\n this.type = 'directional';\n this.direction = new Vector3(direction).normalize().toArray();\n this.shadow = _shadow;\n }\n\n getProjectedLight() {\n return this;\n }\n}\n","export default class Effect {\n constructor(props = {}) {\n const {id = 'effect'} = props;\n this.id = id;\n this.props = {};\n Object.assign(this.props, props);\n }\n\n preRender() {}\n\n getModuleParameters() {}\n\n cleanup() {}\n}\n","export default class Pass {\n constructor(gl, props = {}) {\n const {id = 'pass'} = props;\n this.id = id; // id of this pass\n this.gl = gl;\n this.props = {};\n Object.assign(this.props, props);\n }\n\n setProps(props) {\n Object.assign(this.props, props);\n }\n\n render() {}\n\n cleanup() {}\n}\n","import GL from '@luma.gl/constants';\nimport Pass from './pass';\nimport {clear, setParameters, withParameters, cssToDeviceRatio} from '@luma.gl/core';\n\nexport default class LayersPass extends Pass {\n render(props) {\n const gl = this.gl;\n\n setParameters(gl, {framebuffer: props.target});\n return this._drawLayers(props);\n }\n\n // PRIVATE\n // Draw a list of layers in a list of viewports\n _drawLayers(props) {\n const {viewports, views, onViewportActive, clearCanvas = true} = props;\n\n const gl = this.gl;\n if (clearCanvas) {\n clearGLCanvas(gl);\n }\n\n const renderStats = [];\n\n viewports.forEach((viewportOrDescriptor, i) => {\n // Get a viewport from a viewport descriptor (which can be a plain viewport)\n const viewport = viewportOrDescriptor.viewport || viewportOrDescriptor;\n const view = views && views[viewport.id];\n\n // Update context to point to this viewport\n onViewportActive(viewport);\n\n props.viewport = viewport;\n props.view = view;\n\n // render this viewport\n const stats = this._drawLayersInViewport(gl, props);\n renderStats.push(stats);\n });\n return renderStats;\n }\n\n // Draws a list of layers in one viewport\n // TODO - when picking we could completely skip rendering viewports that dont\n // intersect with the picking rect\n _drawLayersInViewport(\n gl,\n {layers, layerFilter, viewport, view, pass = 'unknown', effects, moduleParameters}\n ) {\n const glViewport = getGLViewport(gl, {viewport});\n\n if (view && view.props.clear) {\n const clearOpts = view.props.clear === true ? {color: true, depth: true} : view.props.clear;\n withParameters(\n gl,\n {\n scissorTest: true,\n scissor: glViewport\n },\n () => clear(gl, clearOpts)\n );\n }\n\n // render layers in normal colors\n const renderStatus = {\n totalCount: layers.length,\n visibleCount: 0,\n compositeCount: 0,\n pickableCount: 0\n };\n\n setParameters(gl, {viewport: glViewport});\n\n // render layers in normal colors\n layers.forEach((layer, layerIndex) => {\n // Check if we should draw layer\n const shouldDrawLayer = this._shouldDrawLayer(layer, viewport, pass, layerFilter);\n\n // Calculate stats\n if (shouldDrawLayer && layer.props.pickable) {\n renderStatus.pickableCount++;\n }\n if (layer.isComposite) {\n renderStatus.compositeCount++;\n }\n\n // Draw the layer\n if (shouldDrawLayer) {\n renderStatus.visibleCount++;\n\n const _moduleParameters = this._getModuleParameters(layer, effects, pass, moduleParameters);\n const uniforms = Object.assign({}, layer.context.uniforms, {layerIndex});\n const layerParameters = this.getLayerParameters(layer, layerIndex);\n\n layer.drawLayer({\n moduleParameters: _moduleParameters,\n uniforms,\n parameters: layerParameters\n });\n }\n });\n\n return renderStatus;\n }\n\n /* Methods for subclass overrides */\n shouldDrawLayer(layer) {\n return true;\n }\n\n getModuleParameters(layer, effects) {\n return null;\n }\n\n getLayerParameters(layer, layerIndex) {\n return layer.props.parameters;\n }\n\n /* Private */\n _shouldDrawLayer(layer, viewport, pass, layerFilter) {\n let shouldDrawLayer = this.shouldDrawLayer(layer) && !layer.isComposite && layer.props.visible;\n\n if (shouldDrawLayer && layerFilter) {\n shouldDrawLayer = layerFilter({\n layer,\n viewport,\n isPicking: pass.startsWith('picking'),\n renderPass: pass\n });\n }\n return shouldDrawLayer;\n }\n\n _getModuleParameters(layer, effects, pass, overrides) {\n const moduleParameters = Object.assign(Object.create(layer.props), {\n viewport: layer.context.viewport,\n mousePosition: layer.context.mousePosition,\n pickingActive: 0,\n devicePixelRatio: cssToDeviceRatio(this.gl)\n });\n\n if (effects) {\n for (const effect of effects) {\n Object.assign(moduleParameters, effect.getModuleParameters(layer));\n }\n }\n\n return Object.assign(moduleParameters, this.getModuleParameters(layer, effects), overrides);\n }\n}\n\n// Convert viewport top-left CSS coordinates to bottom up WebGL coordinates\nfunction getGLViewport(gl, {viewport}) {\n // TODO - dummy default for node\n // Fallback to width/height when clientWidth/clientHeight are 0 or undefined.\n const height = gl.canvas ? gl.canvas.clientHeight || gl.canvas.height : 100;\n // Convert viewport top-left CSS coordinates to bottom up WebGL coordinates\n const dimensions = viewport;\n const pixelRatio = cssToDeviceRatio(gl);\n return [\n dimensions.x * pixelRatio,\n (height - dimensions.y - dimensions.height) * pixelRatio,\n dimensions.width * pixelRatio,\n dimensions.height * pixelRatio\n ];\n}\n\nfunction clearGLCanvas(gl) {\n const width = gl.drawingBufferWidth;\n const height = gl.drawingBufferHeight;\n // clear depth and color buffers, restoring transparency\n setParameters(gl, {viewport: [0, 0, width, height]});\n gl.clear(GL.COLOR_BUFFER_BIT | GL.DEPTH_BUFFER_BIT);\n}\n","import {default as LayersPass} from './layers-pass';\nimport {\n Framebuffer,\n Texture2D,\n Renderbuffer,\n withParameters,\n cssToDeviceRatio\n} from '@luma.gl/core';\n\nexport default class ShadowPass extends LayersPass {\n constructor(gl, props) {\n super(gl, props);\n\n // The shadowMap texture\n this.shadowMap = new Texture2D(gl, {\n width: 1,\n height: 1,\n parameters: {\n [gl.TEXTURE_MIN_FILTER]: gl.LINEAR,\n [gl.TEXTURE_MAG_FILTER]: gl.LINEAR,\n [gl.TEXTURE_WRAP_S]: gl.CLAMP_TO_EDGE,\n [gl.TEXTURE_WRAP_T]: gl.CLAMP_TO_EDGE\n }\n });\n\n this.depthBuffer = new Renderbuffer(gl, {\n format: gl.DEPTH_COMPONENT16,\n width: 1,\n height: 1\n });\n\n this.fbo = new Framebuffer(gl, {\n id: 'shadowmap',\n width: 1,\n height: 1,\n attachments: {\n [gl.COLOR_ATTACHMENT0]: this.shadowMap,\n // Depth attachment has to be specified for depth test to work\n [gl.DEPTH_ATTACHMENT]: this.depthBuffer\n }\n });\n }\n\n render(params) {\n const target = this.fbo;\n\n withParameters(\n this.gl,\n {\n depthRange: [0, 1],\n depthTest: true,\n blend: false,\n clearColor: [1, 1, 1, 1]\n },\n () => {\n const viewport = params.viewports[0];\n const pixelRatio = cssToDeviceRatio(this.gl);\n const width = viewport.width * pixelRatio;\n const height = viewport.height * pixelRatio;\n if (width !== target.width || height !== target.height) {\n target.resize({width, height});\n }\n\n super.render({...params, target, pass: 'shadow'});\n }\n );\n }\n\n shouldDrawLayer(layer) {\n return layer.props.shadowEnabled !== false;\n }\n\n getModuleParameters() {\n return {\n drawToShadowMap: true\n };\n }\n\n delete() {\n if (this.fbo) {\n this.fbo.delete();\n this.fbo = null;\n }\n\n if (this.shadowMap) {\n this.shadowMap.delete();\n this.shadowMap = null;\n }\n\n if (this.depthBuffer) {\n this.depthBuffer.delete();\n this.depthBuffer = null;\n }\n }\n}\n","// Copyright (c) 2015-2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {COORDINATE_SYSTEM, PROJECTION_MODE} from '../../lib/constants';\nimport project from '../project/project';\nimport {Vector3, Matrix4} from 'math.gl';\nimport memoize from '../../utils/memoize';\nimport {pixelsToWorld} from '@math.gl/web-mercator';\n\nconst vs = `\nconst int max_lights = 2;\nuniform mat4 shadow_uViewProjectionMatrices[max_lights];\nuniform vec4 shadow_uProjectCenters[max_lights];\nuniform bool shadow_uDrawShadowMap;\nuniform bool shadow_uUseShadowMap;\nuniform int shadow_uLightId;\nuniform float shadow_uLightCount;\n\nvarying vec3 shadow_vPosition[max_lights];\n\nvec4 shadow_setVertexPosition(vec4 position_commonspace) {\n if (shadow_uDrawShadowMap) {\n return project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[shadow_uLightId], shadow_uProjectCenters[shadow_uLightId]);\n }\n if (shadow_uUseShadowMap) {\n for (int i = 0; i < max_lights; i++) {\n if(i < int(shadow_uLightCount)) {\n vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[i], shadow_uProjectCenters[i]);\n shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0;\n }\n }\n }\n return gl_Position;\n}\n`;\n\nconst fs = `\nconst int max_lights = 2;\nuniform bool shadow_uDrawShadowMap;\nuniform bool shadow_uUseShadowMap;\nuniform sampler2D shadow_uShadowMap0;\nuniform sampler2D shadow_uShadowMap1;\nuniform vec4 shadow_uColor;\nuniform float shadow_uLightCount;\n\nvarying vec3 shadow_vPosition[max_lights];\n\nconst vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0);\nconst vec4 bitUnpackShift = 1.0 / bitPackShift;\nconst vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n\nfloat shadow_getShadowWeight(vec3 position, sampler2D shadowMap) {\n vec4 rgbaDepth = texture2D(shadowMap, position.xy);\n\n float z = dot(rgbaDepth, bitUnpackShift);\n return smoothstep(0.001, 0.01, position.z - z);\n}\n\nvec4 shadow_filterShadowColor(vec4 color) {\n if (shadow_uDrawShadowMap) {\n vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift);\n rgbaDepth -= rgbaDepth.gbaa * bitMask;\n return rgbaDepth;\n }\n if (shadow_uUseShadowMap) {\n float shadowAlpha = 0.0;\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0);\n if(shadow_uLightCount > 1.0) {\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1);\n }\n shadowAlpha *= shadow_uColor.a / shadow_uLightCount;\n float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha);\n\n return vec4(\n mix(color.rgb, shadow_uColor.rgb, shadowAlpha / blendedAlpha),\n blendedAlpha\n );\n }\n return color;\n}\n`;\n\nconst getMemoizedViewportCenterPosition = memoize(getViewportCenterPosition);\nconst getMemoizedViewProjectionMatrices = memoize(getViewProjectionMatrices);\n\nconst DEFAULT_SHADOW_COLOR = [0, 0, 0, 1.0];\nconst VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];\n\nfunction screenToCommonSpace(xyz, pixelUnprojectionMatrix) {\n const [x, y, z] = xyz;\n const coord = pixelsToWorld([x, y, z], pixelUnprojectionMatrix);\n\n if (Number.isFinite(z)) {\n return coord;\n }\n return [coord[0], coord[1], 0];\n}\n\nfunction getViewportCenterPosition({viewport, center}) {\n return new Matrix4(viewport.viewProjectionMatrix).invert().transform(center);\n}\n\nfunction getViewProjectionMatrices({viewport, shadowMatrices}) {\n const projectionMatrices = [];\n const pixelUnprojectionMatrix = viewport.pixelUnprojectionMatrix;\n const farZ = viewport.isGeospatial ? undefined : 1;\n const corners = [\n [0, 0, farZ], // top left ground\n [viewport.width, 0, farZ], // top right ground\n [0, viewport.height, farZ], // bottom left ground\n [viewport.width, viewport.height, farZ], // bottom right ground\n [0, 0, -1], // top left near\n [viewport.width, 0, -1], // top right near\n [0, viewport.height, -1], // bottom left near\n [viewport.width, viewport.height, -1] // bottom right near\n ].map(pixel => screenToCommonSpace(pixel, pixelUnprojectionMatrix));\n\n for (const shadowMatrix of shadowMatrices) {\n const viewMatrix = shadowMatrix.clone().translate(new Vector3(viewport.center).negate());\n const positions = corners.map(corner => viewMatrix.transform(corner));\n const projectionMatrix = new Matrix4().ortho({\n left: Math.min(...positions.map(position => position[0])),\n right: Math.max(...positions.map(position => position[0])),\n bottom: Math.min(...positions.map(position => position[1])),\n top: Math.max(...positions.map(position => position[1])),\n near: Math.min(...positions.map(position => -position[2])),\n far: Math.max(...positions.map(position => -position[2]))\n });\n projectionMatrices.push(projectionMatrix.multiplyRight(shadowMatrix));\n }\n return projectionMatrices;\n}\n\nfunction createShadowUniforms(opts = {}, context = {}) {\n const uniforms = {\n shadow_uDrawShadowMap: Boolean(opts.drawToShadowMap),\n shadow_uUseShadowMap: opts.shadowMaps ? opts.shadowMaps.length > 0 : false,\n shadow_uColor: opts.shadowColor || DEFAULT_SHADOW_COLOR,\n shadow_uLightId: opts.shadowLightId || 0,\n shadow_uLightCount: opts.shadowMatrices.length\n };\n\n const center = getMemoizedViewportCenterPosition({\n viewport: opts.viewport,\n center: context.project_uCenter\n });\n\n const projectCenters = [];\n const viewProjectionMatrices = getMemoizedViewProjectionMatrices({\n shadowMatrices: opts.shadowMatrices,\n viewport: opts.viewport\n }).slice();\n\n for (let i = 0; i < opts.shadowMatrices.length; i++) {\n const viewProjectionMatrix = viewProjectionMatrices[i];\n const viewProjectionMatrixCentered = viewProjectionMatrix\n .clone()\n .translate(new Vector3(opts.viewport.center).negate());\n\n if (\n context.project_uCoordinateSystem === COORDINATE_SYSTEM.LNGLAT &&\n context.project_uProjectionMode === PROJECTION_MODE.WEB_MERCATOR\n ) {\n viewProjectionMatrices[i] = viewProjectionMatrixCentered;\n projectCenters[i] = center;\n } else {\n viewProjectionMatrices[i] = viewProjectionMatrix\n .clone()\n .multiplyRight(VECTOR_TO_POINT_MATRIX);\n projectCenters[i] = viewProjectionMatrixCentered.transform(center);\n }\n }\n\n for (let i = 0; i < viewProjectionMatrices.length; i++) {\n uniforms[`shadow_uViewProjectionMatrices[${i}]`] = viewProjectionMatrices[i];\n uniforms[`shadow_uProjectCenters[${i}]`] = projectCenters[i];\n\n if (opts.shadowMaps && opts.shadowMaps.length > 0) {\n uniforms[`shadow_uShadowMap${i}`] = opts.shadowMaps[i];\n } else {\n uniforms[`shadow_uShadowMap${i}`] = opts.dummyShadowMap;\n }\n }\n return uniforms;\n}\n\nexport default {\n name: 'shadow',\n dependencies: [project],\n vs,\n fs,\n inject: {\n 'vs:DECKGL_FILTER_GL_POSITION': `\n position = shadow_setVertexPosition(geometry.position);\n `,\n 'fs:DECKGL_FILTER_COLOR': `\n color = shadow_filterShadowColor(color);\n `\n },\n getUniforms: (opts = {}, context = {}) => {\n if (opts.drawToShadowMap || (opts.shadowMaps && opts.shadowMaps.length > 0)) {\n const shadowUniforms = {};\n const {shadowEnabled = true} = opts;\n if (shadowEnabled && opts.shadowMatrices && opts.shadowMatrices.length > 0) {\n Object.assign(shadowUniforms, createShadowUniforms(opts, context));\n } else {\n Object.assign(shadowUniforms, {\n shadow_uDrawShadowMap: false,\n shadow_uUseShadowMap: false\n });\n }\n\n return shadowUniforms;\n }\n return {};\n }\n};\n","import {Texture2D, ProgramManager} from '@luma.gl/core';\nimport {AmbientLight} from './ambient-light';\nimport {DirectionalLight} from './directional-light';\nimport Effect from '../../lib/effect';\nimport {Matrix4, Vector3} from 'math.gl';\nimport ShadowPass from '../../passes/shadow-pass';\nimport {default as shadow} from '../../shaderlib/shadow/shadow';\n\nconst DEFAULT_AMBIENT_LIGHT_PROPS = {color: [255, 255, 255], intensity: 1.0};\nconst DEFAULT_DIRECTIONAL_LIGHT_PROPS = [\n {\n color: [255, 255, 255],\n intensity: 1.0,\n direction: [-1, 3, -1]\n },\n {\n color: [255, 255, 255],\n intensity: 0.9,\n direction: [1, -8, -2.5]\n }\n];\nconst DEFAULT_SHADOW_COLOR = [0, 0, 0, 200 / 255];\n\n// Class to manage ambient, point and directional light sources in deck\nexport default class LightingEffect extends Effect {\n constructor(props) {\n super(props);\n this.ambientLight = null;\n this.directionalLights = [];\n this.pointLights = [];\n\n this.shadowColor = DEFAULT_SHADOW_COLOR;\n this.shadowPasses = [];\n this.shadowMaps = [];\n this.dummyShadowMap = null;\n this.shadow = false;\n this.programManager = null;\n\n for (const key in props) {\n const lightSource = props[key];\n\n switch (lightSource.type) {\n case 'ambient':\n this.ambientLight = lightSource;\n break;\n\n case 'directional':\n this.directionalLights.push(lightSource);\n break;\n\n case 'point':\n this.pointLights.push(lightSource);\n break;\n default:\n }\n }\n this._applyDefaultLights();\n\n this.shadow = this.directionalLights.some(light => light.shadow);\n }\n\n preRender(gl, {layers, layerFilter, viewports, onViewportActive, views}) {\n if (!this.shadow) return;\n\n // create light matrix every frame to make sure always updated from light source\n this.shadowMatrices = this._createLightMatrix();\n\n if (this.shadowPasses.length === 0) {\n this._createShadowPasses(gl);\n }\n if (!this.programManager) {\n // TODO - support multiple contexts\n this.programManager = ProgramManager.getDefaultProgramManager(gl);\n if (shadow) {\n this.programManager.addDefaultModule(shadow);\n }\n }\n\n if (!this.dummyShadowMap) {\n this.dummyShadowMap = new Texture2D(gl, {\n width: 1,\n height: 1\n });\n }\n\n for (let i = 0; i < this.shadowPasses.length; i++) {\n const shadowPass = this.shadowPasses[i];\n shadowPass.render({\n layers,\n layerFilter,\n viewports,\n onViewportActive,\n views,\n moduleParameters: {\n shadowLightId: i,\n dummyShadowMap: this.dummyShadowMap,\n shadowMatrices: this.shadowMatrices\n }\n });\n }\n }\n\n getModuleParameters(layer) {\n const parameters = this.shadow\n ? {\n shadowMaps: this.shadowMaps,\n dummyShadowMap: this.dummyShadowMap,\n shadowColor: this.shadowColor,\n shadowMatrices: this.shadowMatrices\n }\n : {};\n\n // when not rendering to screen, turn off lighting by adding empty light source object\n // lights shader module relies on the `lightSources` to turn on/off lighting\n parameters.lightSources = {\n ambientLight: this.ambientLight,\n directionalLights: this.directionalLights.map(directionalLight =>\n directionalLight.getProjectedLight({layer})\n ),\n pointLights: this.pointLights.map(pointLight => pointLight.getProjectedLight({layer}))\n };\n\n return parameters;\n }\n\n cleanup() {\n for (const shadowPass of this.shadowPasses) {\n shadowPass.delete();\n }\n this.shadowPasses.length = 0;\n this.shadowMaps.length = 0;\n\n if (this.dummyShadowMap) {\n this.dummyShadowMap.delete();\n this.dummyShadowMap = null;\n }\n\n if (this.shadow && this.programManager) {\n this.programManager.removeDefaultModule(shadow);\n this.programManager = null;\n }\n }\n\n _createLightMatrix() {\n const lightMatrices = [];\n for (const light of this.directionalLights) {\n const viewMatrix = new Matrix4().lookAt({\n eye: new Vector3(light.direction).negate()\n });\n\n lightMatrices.push(viewMatrix);\n }\n return lightMatrices;\n }\n\n _createShadowPasses(gl) {\n for (let i = 0; i < this.directionalLights.length; i++) {\n const shadowPass = new ShadowPass(gl);\n this.shadowPasses[i] = shadowPass;\n this.shadowMaps[i] = shadowPass.shadowMap;\n }\n }\n\n _applyDefaultLights() {\n const {ambientLight, pointLights, directionalLights} = this;\n if (!ambientLight && pointLights.length === 0 && directionalLights.length === 0) {\n this.ambientLight = new AmbientLight(DEFAULT_AMBIENT_LIGHT_PROPS);\n this.directionalLights.push(\n new DirectionalLight(DEFAULT_DIRECTIONAL_LIGHT_PROPS[0]),\n new DirectionalLight(DEFAULT_DIRECTIONAL_LIGHT_PROPS[1])\n );\n }\n }\n}\n","import {deepEqual} from '../utils/deep-equal';\nimport {default as LightingEffect} from '../effects/lighting/lighting-effect';\n\nconst DEFAULT_LIGHTING_EFFECT = new LightingEffect();\n\nexport default class EffectManager {\n constructor() {\n this.effects = [];\n this._internalEffects = [];\n this._needsRedraw = 'Initial render';\n this.setEffects();\n }\n\n setProps(props) {\n if ('effects' in props) {\n if (props.effects.length !== this.effects.length || !deepEqual(props.effects, this.effects)) {\n this.setEffects(props.effects);\n this._needsRedraw = 'effects changed';\n }\n }\n }\n\n needsRedraw(opts = {clearRedrawFlags: false}) {\n const redraw = this._needsRedraw;\n if (opts.clearRedrawFlags) {\n this._needsRedraw = false;\n }\n return redraw;\n }\n\n getEffects() {\n return this._internalEffects;\n }\n\n finalize() {\n this.cleanup();\n }\n\n // Private\n setEffects(effects = []) {\n this.cleanup();\n this.effects = effects;\n this._createInternalEffects();\n }\n\n cleanup() {\n for (const effect of this.effects) {\n effect.cleanup();\n }\n\n for (const effect of this._internalEffects) {\n effect.cleanup();\n }\n this.effects.length = 0;\n this._internalEffects.length = 0;\n }\n\n _createInternalEffects() {\n this._internalEffects = this.effects.slice();\n if (!this.effects.some(effect => effect instanceof LightingEffect)) {\n this._internalEffects.push(DEFAULT_LIGHTING_EFFECT);\n }\n }\n}\n","import LayersPass from './layers-pass';\n\nexport default class DrawLayersPass extends LayersPass {}\n","import LayersPass from './layers-pass';\nimport {withParameters} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\n\nconst PICKING_PARAMETERS = {\n blendFunc: [GL.ONE, GL.ZERO, GL.CONSTANT_ALPHA, GL.ZERO],\n blendEquation: GL.FUNC_ADD\n};\n\nexport default class PickLayersPass extends LayersPass {\n render(props) {\n if (props.pickingFBO) {\n this._drawPickingBuffer(props);\n } else {\n super.render(props);\n }\n }\n\n // Private\n // Draws list of layers and viewports into the picking buffer\n // Note: does not sample the buffer, that has to be done by the caller\n _drawPickingBuffer({\n layers,\n layerFilter,\n viewports,\n onViewportActive,\n pickingFBO,\n deviceRect: {x, y, width, height},\n pass = 'picking',\n redrawReason,\n pickZ\n }) {\n const gl = this.gl;\n this.pickZ = pickZ;\n\n // Make sure we clear scissor test and fbo bindings in case of exceptions\n // We are only interested in one pixel, no need to render anything else\n // Note that the callback here is called synchronously.\n // Set blend mode for picking\n // always overwrite existing pixel with [r,g,b,layerIndex]\n return withParameters(\n gl,\n {\n scissorTest: true,\n scissor: [x, y, width, height],\n clearColor: [0, 0, 0, 0],\n // When used as Mapbox custom layer, the context state may be dirty\n // TODO - Remove when mapbox fixes this issue\n // https://github.com/mapbox/mapbox-gl-js/issues/7801\n depthMask: true,\n depthTest: true,\n depthRange: [0, 1],\n colorMask: [true, true, true, true],\n // Blending\n ...PICKING_PARAMETERS,\n blend: !pickZ\n },\n () => {\n super.render({\n target: pickingFBO,\n layers,\n layerFilter,\n viewports,\n onViewportActive,\n pass,\n redrawReason\n });\n }\n );\n }\n\n // PRIVATE\n shouldDrawLayer(layer) {\n return layer.props.pickable;\n }\n\n getModuleParameters() {\n return {\n pickingActive: 1,\n pickingAttribute: this.pickZ,\n // turn off lighting by adding empty light source object\n // lights shader module relies on the `lightSources` to turn on/off lighting\n lightSources: {}\n };\n }\n\n getLayerParameters(layer, layerIndex) {\n // These will override any layer parameters\n const pickParameters = this.pickZ\n ? {blend: false}\n : {...PICKING_PARAMETERS, blend: true, blendColor: [0, 0, 0, (layerIndex + 1) / 255]};\n\n // Override layer parameters with pick parameters\n return Object.assign({}, layer.props.parameters, pickParameters);\n }\n}\n","import debug from '../debug';\nimport DrawLayersPass from '../passes/draw-layers-pass';\nimport PickLayersPass from '../passes/pick-layers-pass';\nimport {Framebuffer} from '@luma.gl/core';\n\nconst TRACE_RENDER_LAYERS = 'deckRenderer.renderLayers';\n\nexport default class DeckRenderer {\n constructor(gl) {\n this.gl = gl;\n this.layerFilter = null;\n this.drawPickingColors = false;\n this.drawLayersPass = new DrawLayersPass(gl);\n this.pickLayersPass = new PickLayersPass(gl);\n this.renderCount = 0;\n this._needsRedraw = 'Initial render';\n this.renderBuffers = [];\n this.lastPostProcessEffect = null;\n }\n\n setProps(props) {\n if ('layerFilter' in props && this.layerFilter !== props.layerFilter) {\n this.layerFilter = props.layerFilter;\n this._needsRedraw = 'layerFilter changed';\n }\n\n if ('drawPickingColors' in props && this.drawPickingColors !== props.drawPickingColors) {\n this.drawPickingColors = props.drawPickingColors;\n this._needsRedraw = 'drawPickingColors changed';\n }\n }\n\n /*\n target,\n layers,\n viewports,\n onViewportActive,\n views,\n redrawReason,\n clearCanvas,\n effects,\n pass,\n stats\n */\n renderLayers(opts) {\n const layerPass = this.drawPickingColors ? this.pickLayersPass : this.drawLayersPass;\n\n opts.layerFilter = this.layerFilter;\n opts.effects = opts.effects || [];\n opts.target = opts.target || Framebuffer.getDefaultFramebuffer(this.gl);\n\n this._preRender(opts.effects, opts);\n\n const outputBuffer = this.lastPostProcessEffect ? this.renderBuffers[0] : opts.target;\n const renderStats = layerPass.render({...opts, target: outputBuffer});\n\n this._postRender(opts.effects, opts);\n\n this.renderCount++;\n\n debug(TRACE_RENDER_LAYERS, this, renderStats, opts);\n }\n\n needsRedraw(opts = {clearRedrawFlags: false}) {\n const redraw = this._needsRedraw;\n if (opts.clearRedrawFlags) {\n this._needsRedraw = false;\n }\n return redraw;\n }\n\n finalize() {\n const {renderBuffers} = this;\n for (const buffer of renderBuffers) {\n buffer.delete();\n }\n renderBuffers.length = 0;\n }\n\n // Private\n _preRender(effects, opts) {\n let lastPostProcessEffect = null;\n\n for (const effect of effects) {\n effect.preRender(this.gl, opts);\n if (effect.postRender) {\n lastPostProcessEffect = effect;\n }\n }\n\n if (lastPostProcessEffect) {\n this._resizeRenderBuffers();\n }\n this.lastPostProcessEffect = lastPostProcessEffect;\n }\n\n _resizeRenderBuffers() {\n const {renderBuffers} = this;\n if (renderBuffers.length === 0) {\n renderBuffers.push(new Framebuffer(this.gl), new Framebuffer(this.gl));\n }\n for (const buffer of renderBuffers) {\n buffer.resize();\n }\n }\n\n _postRender(effects, opts) {\n const {renderBuffers} = this;\n const params = {\n inputBuffer: renderBuffers[0],\n swapBuffer: renderBuffers[1],\n target: null\n };\n for (const effect of effects) {\n if (effect.postRender) {\n if (effect === this.lastPostProcessEffect) {\n params.target = opts.target;\n effect.postRender(this.gl, params);\n break;\n }\n const buffer = effect.postRender(this.gl, params);\n params.inputBuffer = buffer;\n params.swapBuffer = buffer === renderBuffers[0] ? renderBuffers[1] : renderBuffers[0];\n }\n }\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport log from '../../utils/log';\n\nconst NO_PICKED_OBJECT = {\n pickedColor: null,\n pickedLayer: null,\n pickedObjectIndex: -1\n};\n\n/* eslint-disable max-depth, max-statements */\n/**\n * Pick at a specified pixel with a tolerance radius\n * Returns the closest object to the pixel in shape `{pickedColor, pickedLayer, pickedObjectIndex}`\n */\nexport function getClosestObject({\n pickedColors,\n layers,\n deviceX,\n deviceY,\n deviceRadius,\n deviceRect\n}) {\n if (pickedColors) {\n // Traverse all pixels in picking results and find the one closest to the supplied\n // [deviceX, deviceY]\n const {x, y, width, height} = deviceRect;\n let minSquareDistanceToCenter = deviceRadius * deviceRadius;\n let closestPixelIndex = -1;\n let i = 0;\n\n for (let row = 0; row < height; row++) {\n const dy = row + y - deviceY;\n const dy2 = dy * dy;\n\n if (dy2 > minSquareDistanceToCenter) {\n // skip this row\n i += 4 * width;\n } else {\n for (let col = 0; col < width; col++) {\n // Decode picked layer from color\n const pickedLayerIndex = pickedColors[i + 3] - 1;\n\n if (pickedLayerIndex >= 0) {\n const dx = col + x - deviceX;\n const d2 = dx * dx + dy2;\n\n if (d2 <= minSquareDistanceToCenter) {\n minSquareDistanceToCenter = d2;\n closestPixelIndex = i;\n }\n }\n i += 4;\n }\n }\n }\n\n if (closestPixelIndex >= 0) {\n // Decode picked object index from color\n const pickedLayerIndex = pickedColors[closestPixelIndex + 3] - 1;\n const pickedColor = pickedColors.slice(closestPixelIndex, closestPixelIndex + 4);\n const pickedLayer = layers[pickedLayerIndex];\n if (pickedLayer) {\n const pickedObjectIndex = pickedLayer.decodePickingColor(pickedColor);\n const dy = Math.floor(closestPixelIndex / 4 / width);\n const dx = closestPixelIndex / 4 - dy * width;\n return {pickedColor, pickedLayer, pickedObjectIndex, pickedX: x + dx, pickedY: y + dy};\n }\n log.error('Picked non-existent layer. Is picking buffer corrupt?')();\n }\n }\n return NO_PICKED_OBJECT;\n}\n\n/**\n * Examines a picking buffer for unique colors\n * Returns array of unique objects in shape `{x, y, pickedColor, pickedLayer, pickedObjectIndex}`\n */\nexport function getUniqueObjects({pickedColors, layers}) {\n const uniqueColors = new Map();\n\n // Traverse all pixels in picking results and get unique colors\n if (pickedColors) {\n for (let i = 0; i < pickedColors.length; i += 4) {\n // Decode picked layer from color\n const pickedLayerIndex = pickedColors[i + 3] - 1;\n\n if (pickedLayerIndex >= 0) {\n const pickedColor = pickedColors.slice(i, i + 4);\n const colorKey = pickedColor.join(',');\n // eslint-disable-next-line\n if (!uniqueColors.has(colorKey)) {\n const pickedLayer = layers[pickedLayerIndex];\n // eslint-disable-next-line\n if (pickedLayer) {\n uniqueColors.set(colorKey, {\n pickedColor,\n pickedLayer,\n pickedObjectIndex: pickedLayer.decodePickingColor(pickedColor)\n });\n } else {\n log.error('Picked non-existent layer. Is picking buffer corrupt?')();\n }\n }\n }\n }\n }\n\n return Array.from(uniqueColors.values());\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// TODO - break this monster function into 3+ parts\n/* eslint-disable max-depth, max-statements */\n\nexport function processPickInfo({\n pickInfo,\n lastPickedInfo,\n mode,\n layers,\n viewports,\n x,\n y,\n z,\n pixelRatio\n}) {\n const {pickedColor, pickedLayer, pickedObjectIndex} = pickInfo;\n\n const affectedLayers = pickedLayer ? [pickedLayer] : [];\n\n if (mode === 'hover') {\n // only invoke onHover events if picked object has changed\n const lastPickedObjectIndex = lastPickedInfo.index;\n const lastPickedLayerId = lastPickedInfo.layerId;\n const pickedLayerId = pickedLayer && pickedLayer.props.id;\n\n // proceed only if picked object changed\n if (pickedLayerId !== lastPickedLayerId || pickedObjectIndex !== lastPickedObjectIndex) {\n if (pickedLayerId !== lastPickedLayerId) {\n // We cannot store a ref to lastPickedLayer in the context because\n // the state of an outdated layer is no longer valid\n // and the props may have changed\n const lastPickedLayer = layers.find(layer => layer.props.id === lastPickedLayerId);\n if (lastPickedLayer) {\n // Let leave event fire before enter event\n affectedLayers.unshift(lastPickedLayer);\n }\n }\n\n // Update layer manager context\n lastPickedInfo.layerId = pickedLayerId;\n lastPickedInfo.index = pickedObjectIndex;\n lastPickedInfo.info = null;\n }\n }\n\n const viewport = getViewportFromCoordinates({viewports}); // TODO - add coords\n const coordinate = viewport && viewport.unproject([x, y], {targetZ: z});\n\n const baseInfo = {\n color: null,\n layer: null,\n index: -1,\n picked: false,\n x,\n y,\n pixel: [x, y],\n coordinate,\n // TODO remove the lngLat prop after compatibility check\n lngLat: coordinate,\n devicePixel: [pickInfo.pickedX, pickInfo.pickedY],\n pixelRatio\n };\n\n // Use a Map to store all picking infos.\n // The following two forEach loops are the result of\n // https://github.com/uber/deck.gl/issues/443\n // Please be very careful when changing this pattern\n const infos = new Map();\n\n // Make sure infos always contain something even if no layer is affected\n infos.set(null, baseInfo);\n\n affectedLayers.forEach(layer => {\n let info = Object.assign({}, baseInfo);\n\n if (layer === pickedLayer) {\n info.color = pickedColor;\n info.index = pickedObjectIndex;\n info.picked = true;\n }\n\n info = getLayerPickingInfo({layer, info, mode});\n\n if (layer === pickedLayer && mode === 'hover') {\n lastPickedInfo.info = info;\n }\n\n // This guarantees that there will be only one copy of info for\n // one composite layer\n if (info) {\n infos.set(info.layer.id, info);\n }\n\n if (mode === 'hover' && layer.props.autoHighlight) {\n layer.setModuleParameters({\n pickingSelectedColor: pickedLayer === layer ? pickedColor : null\n });\n // setModuleParameters does not trigger redraw\n layer.setNeedsRedraw();\n }\n });\n\n return infos;\n}\n\n// Walk up the layer composite chain to populate the info object\nexport function getLayerPickingInfo({layer, info, mode}) {\n while (layer && info) {\n // For a composite layer, sourceLayer will point to the sublayer\n // where the event originates from.\n // It provides additional context for the composite layer's\n // getPickingInfo() method to populate the info object\n const sourceLayer = info.layer || layer;\n info.layer = layer;\n // layer.pickLayer() function requires a non-null ```layer.state```\n // object to function properly. So the layer referenced here\n // must be the \"current\" layer, not an \"out-dated\" / \"invalidated\" layer\n info = layer.getPickingInfo({info, mode, sourceLayer});\n layer = layer.parent;\n }\n return info;\n}\n\n// Indentifies which viewport, if any corresponds to x and y\n// Returns first viewport if no match\n// TODO - need to determine which viewport we are in\n// TODO - document concept of \"primary viewport\" that matches all coords?\n// TODO - static method on Viewport class?\nfunction getViewportFromCoordinates({viewports}) {\n const viewport = viewports[0];\n return viewport;\n}\n\n// Per-layer event handlers (e.g. onClick, onHover) are provided by the\n// user and out of deck.gl's control. It's very much possible that\n// the user calls React lifecycle methods in these function, such as\n// ReactComponent.setState(). React lifecycle methods sometimes induce\n// a re-render and re-generation of props of deck.gl and its layers,\n// which invalidates all layers currently passed to this very function.\n\n// Therefore, per-layer event handlers must be invoked at the end\n// of the picking operation. NO operation that relies on the states of current\n// layers should be called after this code.\nexport function callLayerPickingCallbacks(infos, mode, event) {\n const unhandledPickInfos = [];\n\n infos.forEach(info => {\n if (!info.layer) {\n return;\n }\n\n switch (mode) {\n case 'hover':\n info.handled = info.layer.onHover(info, event);\n break;\n case 'query':\n default:\n }\n\n unhandledPickInfos.push(info);\n });\n\n return unhandledPickInfos;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {\n Framebuffer,\n Texture2D,\n isWebGL2,\n readPixelsToArray,\n cssToDeviceRatio,\n cssToDevicePixels\n} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\nimport assert from '../utils/assert';\nimport PickLayersPass from '../passes/pick-layers-pass';\nimport {getClosestObject, getUniqueObjects} from './picking/query-object';\nimport {processPickInfo, callLayerPickingCallbacks, getLayerPickingInfo} from './picking/pick-info';\n\nexport default class DeckPicker {\n constructor(gl) {\n this.gl = gl;\n this.pickingFBO = null;\n this.pickLayersPass = new PickLayersPass(gl);\n this.layerFilter = null;\n this.lastPickedInfo = {\n // For callback tracking and auto highlight\n index: -1,\n layerId: null,\n info: null\n };\n }\n\n setProps(props) {\n if ('layerFilter' in props) {\n this.layerFilter = props.layerFilter;\n }\n }\n\n finalize() {\n if (this.pickingFBO) {\n this.pickingFBO.delete();\n }\n if (this.depthFBO) {\n this.depthFBO.color.delete();\n this.depthFBO.delete();\n }\n }\n\n // Pick the closest info at given coordinate\n pickObject(opts) {\n return this._pickClosestObject(opts);\n }\n\n // Get all unique infos within a bounding box\n pickObjects(opts) {\n return this._pickVisibleObjects(opts);\n }\n\n // Returns a new picking info object by assuming the last picked object is still picked\n getLastPickedObject({x, y, layers, viewports}, lastPickedInfo = this.lastPickedInfo.info) {\n const lastPickedLayerId = lastPickedInfo && lastPickedInfo.layer && lastPickedInfo.layer.id;\n const layer = lastPickedLayerId ? layers.find(l => l.id === lastPickedLayerId) : null;\n const coordinate = viewports[0] && viewports[0].unproject([x, y]);\n\n const info = {\n x,\n y,\n coordinate,\n // TODO remove the lngLat prop after compatibility check\n lngLat: coordinate,\n layer\n };\n\n if (layer) {\n return Object.assign({}, lastPickedInfo, info);\n }\n return Object.assign(info, {color: null, object: null, index: -1});\n }\n\n // Private\n _resizeBuffer() {\n const {gl} = this;\n // Create a frame buffer if not already available\n if (!this.pickingFBO) {\n this.pickingFBO = new Framebuffer(gl);\n if (Framebuffer.isSupported(gl, {colorBufferFloat: true})) {\n this.depthFBO = new Framebuffer(gl);\n this.depthFBO.attach({\n [GL.COLOR_ATTACHMENT0]: new Texture2D(gl, {\n format: isWebGL2(gl) ? GL.RGBA32F : GL.RGBA,\n type: GL.FLOAT\n })\n });\n }\n }\n // Resize it to current canvas size (this is a noop if size hasn't changed)\n this.pickingFBO.resize({width: gl.canvas.width, height: gl.canvas.height});\n this.depthFBO.resize({width: gl.canvas.width, height: gl.canvas.height});\n return this.pickingFBO;\n }\n\n // Pick the closest object at the given (x,y) coordinate\n // eslint-disable-next-line max-statements,complexity\n _pickClosestObject({\n layers,\n viewports,\n x,\n y,\n radius = 0,\n depth = 1,\n mode = 'query',\n event,\n unproject3D,\n onViewportActive\n }) {\n this._resizeBuffer();\n // Convert from canvas top-left to WebGL bottom-left coordinates\n // Top-left coordinates [x, y] to bottom-left coordinates [deviceX, deviceY]\n // And compensate for pixelRatio\n const pixelRatio = cssToDeviceRatio(this.gl);\n const devicePixelRange = cssToDevicePixels(this.gl, [x, y], true);\n const devicePixel = [\n devicePixelRange.x + Math.floor(devicePixelRange.width / 2),\n devicePixelRange.y + Math.floor(devicePixelRange.height / 2)\n ];\n\n const deviceRadius = Math.round(radius * pixelRatio);\n const {width, height} = this.pickingFBO;\n const deviceRect = this._getPickingRect({\n deviceX: devicePixel[0],\n deviceY: devicePixel[1],\n deviceRadius,\n deviceWidth: width,\n deviceHeight: height\n });\n\n let infos;\n const result = [];\n const affectedLayers = {};\n\n for (let i = 0; i < depth; i++) {\n const pickedColors =\n deviceRect &&\n this._drawAndSample({\n layers,\n viewports,\n onViewportActive,\n deviceRect,\n pass: `picking:${mode}`,\n redrawReason: mode\n });\n\n const pickInfo = getClosestObject({\n pickedColors,\n layers,\n deviceX: devicePixel[0],\n deviceY: devicePixel[1],\n deviceRadius,\n deviceRect\n });\n\n let z;\n if (pickInfo.pickedLayer && unproject3D && this.depthFBO) {\n const zValues = this._drawAndSample({\n layers: [pickInfo.pickedLayer],\n viewports,\n onViewportActive,\n deviceRect: {x: pickInfo.pickedX, y: pickInfo.pickedY, width: 1, height: 1},\n pass: `picking:${mode}`,\n redrawReason: 'pick-z',\n pickZ: true\n });\n // picked value is in common space (pixels) from the camera target (viewport.position)\n // convert it to meters from the ground\n z = zValues[0] * viewports[0].distanceScales.metersPerUnit[2] + viewports[0].position[2];\n }\n\n // Only exclude if we need to run picking again.\n // We need to run picking again if an object is detected AND\n // we have not exhausted the requested depth.\n if (pickInfo.pickedColor && i + 1 < depth) {\n const layerId = pickInfo.pickedColor[3] - 1;\n affectedLayers[layerId] = true;\n layers[layerId].clearPickingColor(pickInfo.pickedColor);\n }\n\n // This logic needs to run even if no object is picked.\n infos = processPickInfo({\n pickInfo,\n lastPickedInfo: this.lastPickedInfo,\n mode,\n layers,\n viewports,\n x,\n y,\n z,\n pixelRatio\n });\n\n const processedPickInfos = callLayerPickingCallbacks(infos, mode, event);\n\n if (processedPickInfos) {\n processedPickInfos.forEach(info => result.push(info));\n }\n\n // If no object is picked stop.\n if (!pickInfo.pickedColor) {\n break;\n }\n }\n\n // reset only affected buffers\n for (const layerId in affectedLayers) {\n layers[layerId].restorePickingColors();\n }\n\n return {result, emptyInfo: infos && infos.get(null)};\n }\n\n // Pick all objects within the given bounding box\n _pickVisibleObjects({\n layers,\n viewports,\n x,\n y,\n width = 1,\n height = 1,\n mode = 'query',\n onViewportActive\n }) {\n this._resizeBuffer();\n // Convert from canvas top-left to WebGL bottom-left coordinates\n // And compensate for pixelRatio\n const pixelRatio = cssToDeviceRatio(this.gl);\n const leftTop = cssToDevicePixels(this.gl, [x, y], true);\n\n // take left and top (y inverted in device pixels) from start location\n const deviceLeft = leftTop.x;\n const deviceTop = leftTop.y + leftTop.height;\n\n // take right and bottom (y inverted in device pixels) from end location\n const rightBottom = cssToDevicePixels(this.gl, [x + width, y + height], true);\n const deviceRight = rightBottom.x + rightBottom.width;\n const deviceBottom = rightBottom.y;\n\n const deviceRect = {\n x: deviceLeft,\n y: deviceBottom,\n // deviceTop and deviceRight represent the first pixel outside the desired rect\n width: deviceRight - deviceLeft,\n height: deviceTop - deviceBottom\n };\n\n const pickedColors = this._drawAndSample({\n layers,\n viewports,\n onViewportActive,\n deviceRect,\n pass: `picking:${mode}`,\n redrawReason: mode\n });\n\n const pickInfos = getUniqueObjects({pickedColors, layers});\n\n // Only return unique infos, identified by info.object\n const uniqueInfos = new Map();\n\n pickInfos.forEach(pickInfo => {\n let info = {\n color: pickInfo.pickedColor,\n layer: null,\n index: pickInfo.pickedObjectIndex,\n picked: true,\n x,\n y,\n width,\n height,\n pixelRatio\n };\n\n info = getLayerPickingInfo({layer: pickInfo.pickedLayer, info, mode});\n if (!uniqueInfos.has(info.object)) {\n uniqueInfos.set(info.object, info);\n }\n });\n\n return Array.from(uniqueInfos.values());\n }\n\n // returns pickedColor or null if no pickable layers found.\n _drawAndSample({layers, viewports, onViewportActive, deviceRect, pass, redrawReason, pickZ}) {\n assert(deviceRect.width > 0 && deviceRect.height > 0);\n\n const pickableLayers = layers.filter(layer => layer.isPickable());\n if (pickableLayers.length < 1) {\n return null;\n }\n\n const pickingFBO = pickZ ? this.depthFBO : this.pickingFBO;\n\n this.pickLayersPass.render({\n layers,\n layerFilter: this.layerFilter,\n viewports,\n onViewportActive,\n pickingFBO,\n deviceRect,\n pass,\n redrawReason,\n pickZ\n });\n\n // Read from an already rendered picking buffer\n // Returns an Uint8ClampedArray of picked pixels\n const {x, y, width, height} = deviceRect;\n const pickedColors = new (pickZ ? Float32Array : Uint8Array)(width * height * 4);\n readPixelsToArray(pickingFBO, {\n sourceX: x,\n sourceY: y,\n sourceWidth: width,\n sourceHeight: height,\n target: pickedColors\n });\n\n return pickedColors;\n }\n\n // Calculate a picking rect centered on deviceX and deviceY and clipped to device\n // Returns null if pixel is outside of device\n _getPickingRect({deviceX, deviceY, deviceRadius, deviceWidth, deviceHeight}) {\n // Create a box of size `radius * 2 + 1` centered at [deviceX, deviceY]\n const x = Math.max(0, deviceX - deviceRadius);\n const y = Math.max(0, deviceY - deviceRadius);\n const width = Math.min(deviceWidth, deviceX + deviceRadius + 1) - x;\n const height = Math.min(deviceHeight, deviceY + deviceRadius + 1) - y;\n\n // x, y out of bounds.\n if (width <= 0 || height <= 0) {\n return null;\n }\n\n return {x, y, width, height};\n }\n}\n","// Copyright (c) 2015 - 2019 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* global document */\nconst defaultStyle = {\n zIndex: 1,\n position: 'absolute',\n pointerEvents: 'none',\n color: '#a0a7b4',\n backgroundColor: '#29323c',\n padding: '10px',\n top: 0,\n left: 0,\n display: 'none'\n};\n\nexport default class Tooltip {\n constructor(canvas) {\n const canvasParent = canvas.parentElement;\n\n if (canvasParent) {\n this.el = document.createElement('div');\n this.el.className = 'deck-tooltip';\n Object.assign(this.el.style, defaultStyle);\n canvasParent.appendChild(this.el);\n }\n }\n\n setTooltip(displayInfo, x, y) {\n const el = this.el;\n\n if (typeof displayInfo === 'string') {\n el.innerText = displayInfo;\n } else if (!displayInfo) {\n el.style.display = 'none';\n return;\n } else {\n if ('text' in displayInfo) {\n el.innerText = displayInfo.text;\n }\n if ('html' in displayInfo) {\n el.innerHTML = displayInfo.html;\n }\n if ('className' in displayInfo) {\n el.className = displayInfo.className;\n }\n Object.assign(el.style, displayInfo.style);\n }\n el.style.display = 'block';\n el.style.transform = `translate(${x}px, ${y}px)`;\n }\n\n remove() {\n if (this.el) {\n this.el.remove();\n }\n }\n}\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\n","/* global ImageBitmap, Image */\nimport {global, isBrowser} from '../utils/globals';\nimport assert from '../utils/assert';\n\nexport const IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== 'undefined';\nexport const HTML_IMAGE_SUPPORTED = typeof Image !== 'undefined'; // NOTE: \"false\" positives if jsdom is installed\nexport const NODE_IMAGE_SUPPORTED = Boolean(global._parseImageNode);\n\n// Checks if a loaders.gl image type is supported\nexport function isImageTypeSupported(type) {\n switch (type) {\n case 'auto':\n return true;\n case 'imagebitmap':\n return IMAGE_BITMAP_SUPPORTED;\n case 'html':\n return HTML_IMAGE_SUPPORTED;\n case 'ndarray':\n return NODE_IMAGE_SUPPORTED;\n default:\n throw new Error(`Unknown image format ${type}`);\n }\n}\n\n// Returns the best loaders.gl image type supported on current run-time environment\nexport function getDefaultImageType() {\n if (isImageTypeSupported('ndarray')) {\n return 'ndarray';\n }\n if (isImageTypeSupported('html')) {\n return 'html';\n }\n if (isImageTypeSupported('imagebitmap')) {\n return 'imagebitmap';\n }\n\n if (!isBrowser) {\n throw new Error(`Install '@loaders.gl/polyfills' to parse images under Node.js`);\n }\n\n return assert(false); // Internal error, no valid format available, should not happen\n}\n","import {isImageTypeSupported, getDefaultImageType} from '../parsed-image-api/image-type';\n\n// The user can request a specific output format via `options.type`\n// TODO - ImageBitmap vs HTMLImage depends on worker threads...\nexport default function getImageOutputFormat(options = {}) {\n const imageOptions = options.image || {};\n const type = imageOptions.type || 'auto';\n\n switch (type) {\n case 'imagebitmap':\n case 'html':\n case 'ndarray':\n // Check that it is actually supported\n if (!isImageTypeSupported(type)) {\n throw new Error(`Requested image type ${type} not available in current environment`);\n }\n return type;\n\n case 'auto':\n return getDefaultImageType();\n\n default:\n // Note: isImageTypeSupported throws on unknown type\n throw new Error(`Unknown image format ${type}`);\n }\n}\n","const BIG_ENDIAN = false;\nconst LITTLE_ENDIAN = true;\n\nexport const mimeTypeMap = new Map([\n ['image/png', {test: isPng, getSize: getPngSize}],\n ['image/jpeg', {test: isJpeg, getSize: getJpegSize}],\n ['image/gif', {test: isGif, getSize: getGifSize}],\n ['image/bmp', {test: isBmp, getSize: getBmpSize}]\n]);\n\n// PNG\n\nexport function isPng(dataView) {\n // Check file contains the first 4 bytes of the PNG signature.\n return dataView.byteLength >= 24 && dataView.getUint32(0, BIG_ENDIAN) === 0x89504e47;\n}\n\nfunction getPngSize(dataView) {\n // Extract size from a binary PNG file\n return {\n width: dataView.getUint32(16, BIG_ENDIAN),\n height: dataView.getUint32(20, BIG_ENDIAN)\n };\n}\n\n// GIF\n\nexport function isGif(dataView) {\n // Check first 4 bytes of the GIF signature (\"GIF8\").\n return dataView.byteLength >= 10 && dataView.getUint32(0, BIG_ENDIAN) === 0x47494638;\n}\n\n// Extract size from a binary GIF file\n// TODO: GIF is not this simple\nfunction getGifSize(dataView) {\n // GIF is little endian.\n return {\n width: dataView.getUint16(6, LITTLE_ENDIAN),\n height: dataView.getUint16(8, LITTLE_ENDIAN)\n };\n}\n\n// BMP\n\n// TODO: BMP is not this simple\nexport function isBmp(dataView) {\n // Check magic number is valid (first 2 characters should be \"BM\").\n return dataView.byteLength >= 2 && dataView.getUint16(0, BIG_ENDIAN) === 0x424d;\n}\n\nfunction getBmpSize(dataView) {\n // BMP is little endian.\n return {\n width: dataView.getUint32(18, LITTLE_ENDIAN),\n height: dataView.getUint32(22, LITTLE_ENDIAN)\n };\n}\n\n// JPEG\n\nexport function isJpeg(dataView) {\n // Check file contains the JPEG \"start of image\" (SOI) marker\n // followed by another marker.\n return (\n dataView.byteLength >= 3 &&\n dataView.getUint16(0, BIG_ENDIAN) === 0xffd8 &&\n dataView.getUint8(2, BIG_ENDIAN) === 0xff\n );\n}\n\n// Extract width and height from a binary JPEG file\nfunction getJpegSize(dataView) {\n // Check file contains the JPEG \"start of image\" (SOI) marker.\n if (dataView.byteLength < 2 || dataView.getUint16(0, BIG_ENDIAN) !== 0xffd8) {\n return null;\n }\n\n const {tableMarkers, sofMarkers} = getJpegMarkers();\n\n // Exclude the two byte SOI marker.\n let i = 2;\n while (i < dataView.byteLength) {\n const marker = dataView.getUint16(i, BIG_ENDIAN);\n\n // The frame that contains the width and height of the JPEG image.\n if (sofMarkers.has(marker)) {\n return {\n height: dataView.getUint16(i + 5, BIG_ENDIAN), // Number of lines\n width: dataView.getUint16(i + 7, BIG_ENDIAN) // Number of pixels per line\n };\n }\n\n // Miscellaneous tables/data preceding the frame header.\n if (!tableMarkers.has(marker)) {\n return null;\n }\n\n // Length includes size of length parameter but not the two byte header.\n i += 2;\n i += dataView.getUint16(i, BIG_ENDIAN);\n }\n\n return null;\n}\n\nfunction getJpegMarkers() {\n // Tables/misc header markers.\n // DQT, DHT, DAC, DRI, COM, APP_n\n const tableMarkers = new Set([0xffdb, 0xffc4, 0xffcc, 0xffdd, 0xfffe]);\n for (let i = 0xffe0; i < 0xfff0; ++i) {\n tableMarkers.add(i);\n }\n\n // SOF markers and DHP marker.\n // These markers are after tables/misc data.\n const sofMarkers = new Set([\n 0xffc0,\n 0xffc1,\n 0xffc2,\n 0xffc3,\n 0xffc5,\n 0xffc6,\n 0xffc7,\n 0xffc9,\n 0xffca,\n 0xffcb,\n 0xffcd,\n 0xffce,\n 0xffcf,\n 0xffde\n ]);\n\n return {tableMarkers, sofMarkers};\n}\n","// Attributions\n// * Based on binary-gltf-utils under MIT license: Copyright (c) 2016-17 Karl Cheng\n\n// TODO: make these functions work for Node.js buffers?\n// Quarantine references to Buffer to prevent bundler from adding big polyfills\n// import {bufferToArrayBuffer} from '../node/buffer-to-array-buffer';\n// TODO - this should be handled in @loaders.gl/polyfills\n\nimport {mimeTypeMap} from './binary-image-parsers';\n\nconst ERR_INVALID_MIME_TYPE = `Invalid MIME type. Supported MIME types are: ${Array.from(\n mimeTypeMap.keys()\n).join(', ')}`;\n\n// Supported image types are PNG, JPEG, GIF and BMP.\nexport function isBinaryImage(arrayBuffer, mimeType) {\n if (mimeType) {\n const {test} = getBinaryImageTypeHandlers(mimeType);\n const dataView = toDataView(arrayBuffer);\n return test(dataView);\n }\n // check if known type\n return Boolean(getBinaryImageMIMEType(arrayBuffer));\n}\n\n// Sniffs the contents of a file to attempt to deduce the image type\nexport function getBinaryImageMIMEType(arrayBuffer) {\n const dataView = toDataView(arrayBuffer);\n\n // Loop through each file type and see if they work.\n for (const [mimeType, {test}] of mimeTypeMap.entries()) {\n if (test(dataView)) {\n return mimeType;\n }\n }\n\n return null;\n}\n\nexport function getBinaryImageSize(arrayBuffer, mimeType = null) {\n mimeType = mimeType || getBinaryImageMIMEType(arrayBuffer);\n\n const {getSize} = getBinaryImageTypeHandlers(mimeType);\n\n const dataView = toDataView(arrayBuffer);\n const size = getSize(dataView);\n\n if (!size) {\n throw new Error(`invalid image data for type: ${mimeType}`);\n }\n\n return size;\n}\n\nfunction getBinaryImageTypeHandlers(mimeType) {\n const handlers = mimeTypeMap.get(mimeType);\n if (!handlers) {\n throw new Error(ERR_INVALID_MIME_TYPE);\n }\n return handlers;\n}\n\nfunction toDataView(data) {\n data = data.buffer || data;\n // TODO: make these functions work for Node.js buffers?\n // if (bufferToArrayBuffer) {\n // data = bufferToArrayBuffer(data);\n // }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n return new DataView(data.buffer || data);\n }\n\n throw new Error('toDataView');\n}\n","import {global} from '../utils/globals';\nimport assert from '../utils/assert';\nimport {getBinaryImageMIMEType} from '../binary-image-api/binary-image-api';\n\n// Parse to platform defined type (ndarray on node, ImageBitmap on browser)\nexport default function parseToNodeImage(arrayBuffer, options) {\n assert(global._parseImageNode); // '@loaders.gl/polyfills not installed'\n const mimeType = getBinaryImageMIMEType(arrayBuffer);\n return global._parseImageNode(arrayBuffer, mimeType, options);\n}\n","/* global self, Image, Blob */\n\n// Parses html image from array buffer\nexport default async function parseToHTMLImage(arrayBuffer, options) {\n // Note: image parsing requires conversion to Blob (for createObjectURL).\n // Potentially inefficient for not using `response.blob()` (and for File / Blob inputs)...\n // But presumably not worth adding 'blob' flag to loader objects?\n\n // TODO - how to determine mime type? Param? Sniff here?\n const mimeType = 'image/jpeg';\n const blob = new Blob([arrayBuffer], {type: mimeType});\n const URL = self.URL || self.webkitURL;\n const objectUrl = URL.createObjectURL(blob);\n try {\n return await loadToHTMLImage(objectUrl, options);\n } finally {\n URL.revokeObjectURL(objectUrl);\n }\n}\n\nexport async function loadToHTMLImage(url, options) {\n const image = new Image();\n image.src = url;\n\n // The `image.onload()` callback does not guarantee that the image has been decoded\n // so a main thread \"freeze\" can be incurred when using the image for the first time.\n // `Image.decode()` returns a promise that completes when image is decoded.\n\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/decode\n // Note: When calling `img.decode()`, we do not need to wait for `img.onload()`\n // Note: `HTMLImageElement.decode()` is not available in Edge and IE11\n if (options.image && options.image.decode && image.decode) {\n await image.decode();\n return image;\n }\n\n // Create a promise that tracks onload/onerror callbacks\n return await new Promise((resolve, reject) => {\n try {\n image.onload = () => resolve(image);\n image.onerror = err => reject(new Error(`Could not load image ${url}: ${err}`));\n } catch (error) {\n reject(error);\n }\n });\n}\n","/* global Blob, createImageBitmap */\n\n// Asynchronously parses an array buffer into an ImageBitmap - this contains the decoded data\n// Supported on worker threads, not supported on Edge, IE11 and Safari\n// https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap#Browser_compatibility\n\nexport default function parseToImageBitmap(arrayBuffer, options) {\n // NOTE: In some cases unnecessary conversion to blob (response, blob, file input)\n const blob = new Blob([new Uint8Array(arrayBuffer)]); // MIME type not needed...\n const imagebitmapOptions = options && options.imagebitmap;\n return imagebitmapOptions ? createImageBitmap(blob) : createImageBitmap(blob, imagebitmapOptions);\n}\n","/* global TextDecoder, btoa */ // encodeURLComponent,\nimport {loadToHTMLImage} from './parse-to-html-image';\n\nexport default async function parseSVG(arrayBuffer, options) {\n // Prepare a properly tagged data URL, and load using normal mechanism\n const textDecoder = new TextDecoder();\n const xmlText = textDecoder.decode(arrayBuffer);\n // TODO Escape in browser to support e.g. Chinese characters\n // if (typeof unescape === 'function' && typeof encodeURLComponent === 'function') {\n // xmlText = unescape(encodeURLComponent(xmlText));\n // }\n // base64 encoding is safer. utf-8 fails in some browsers\n const src = `data:image/svg+xml;base64,${btoa(xmlText)}`;\n return await loadToHTMLImage(src, options);\n}\n","import assert from '../utils/assert';\n\nimport getImageOutputFormat from './get-image-output-format';\nimport parseToNodeImage from './parse-to-node-image';\nimport parseToHTMLImage from './parse-to-html-image';\nimport parseToImageBitmap from './parse-to-image-bitmap';\nimport parseSVG from './parse-svg';\n\nconst SVG_DATA_URL_PATTERN = /^data:image\\/svg\\+xml/;\nconst SVG_URL_PATTERN = /\\.svg((\\?|#).*)?$/;\n\n// Parse to platform defined image type (ndarray on node, ImageBitmap or HTMLImage on browser)\nexport default async function parseImage(arrayBuffer, options, context) {\n options = options || {};\n\n const {url} = context || {};\n if (url && (SVG_DATA_URL_PATTERN.test(url) || SVG_URL_PATTERN.test(url))) {\n return await parseSVG(arrayBuffer, options);\n }\n\n const format = getImageOutputFormat(options);\n switch (format) {\n case 'imagebitmap':\n return await parseToImageBitmap(arrayBuffer, options);\n case 'html':\n return await parseToHTMLImage(arrayBuffer, options);\n case 'ndarray':\n return await parseToNodeImage(arrayBuffer, options);\n default:\n return assert(false);\n }\n}\n","/* global __VERSION__ */ // __VERSION__ is injected by babel-plugin-version-inline\nimport parseImage from './lib/parsers/parse-image';\nimport {isPng, isGif, isBmp, isJpeg} from './lib/binary-image-api/binary-image-parsers';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nconst EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg'];\nconst MIME_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/bmp',\n 'image/vndmicrosofticon',\n 'image/svg+xml'\n];\n\n// Loads a platform-specific image type that can be used as input data to WebGL textures\nconst ImageLoader = {\n name: 'Images',\n version: VERSION,\n mimeTypes: MIME_TYPES,\n extensions: EXTENSIONS,\n parse: parseImage,\n test: arrayBuffer => {\n const dataView = new DataView(arrayBuffer); // , byteOffset, byteLength);\n return isJpeg(dataView) || isBmp(dataView) || isGif(dataView) || isPng(dataView);\n },\n options: {\n image: {\n format: 'auto',\n decodeHTML: true // if format is HTML\n }\n // imagebitmap: {}\n }\n};\n\nexport default ImageLoader;\n","function isJSON(text) {\n const firstChar = text[0];\n const lastChar = text[text.length - 1];\n return (firstChar === '{' && lastChar === '}') || (firstChar === '[' && lastChar === ']');\n}\n\n// TODO - replace with the version in loaders.gl\nexport default {\n name: 'JSON',\n // TODO - can we stream process geojson?\n extensions: ['json', 'geojson'],\n testText: isJSON,\n parseTextSync: JSON.parse\n};\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {registerLoaders} from '@loaders.gl/core';\nimport {ImageLoader} from '@loaders.gl/images';\n\nimport {global} from 'probe.gl/env';\nimport log from '../utils/log';\nimport {register} from '../debug';\nimport jsonLoader from '../utils/json-loader';\n\n// Version detection using babel plugin\n// Fallback for tests and SSR since global variable is defined by Webpack.\n/* global __VERSION__ */\nconst version =\n typeof __VERSION__ !== 'undefined' ? __VERSION__ : global.DECK_VERSION || 'untranspiled source';\n\n// Note: a `deck` object not created by deck.gl may exist in the global scope\nconst existingVersion = global.deck && global.deck.VERSION;\n\nif (existingVersion && existingVersion !== version) {\n throw new Error(`deck.gl - multiple versions detected: ${existingVersion} vs ${version}`);\n}\n\nif (!existingVersion) {\n // eslint-disable-next-line\n if (process.env.NODE_ENV !== 'production') {\n log.log(\n 0,\n `deck.gl ${version} - set deck.log.level=1 (or higher) to trace attribute updates`\n )();\n }\n\n global.deck = Object.assign(global.deck || {}, {\n VERSION: version,\n version,\n log,\n // experimental\n _registerLoggers: register\n });\n\n registerLoaders([jsonLoader, ImageLoader]);\n}\n\nexport default global.deck;\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","// WebGL2 Query (also handles disjoint timer extensions)\n/* global requestAnimationFrame */\nimport Resource from './resource';\nimport {FEATURES, hasFeatures} from '../features';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert} from '../utils';\n\nconst GL_QUERY_RESULT = 0x8866; // Returns a GLuint containing the query result.\nconst GL_QUERY_RESULT_AVAILABLE = 0x8867; // whether query result is available.\n\nconst GL_TIME_ELAPSED_EXT = 0x88bf; // Elapsed time (in nanoseconds).\nconst GL_GPU_DISJOINT_EXT = 0x8fbb; // Whether GPU performed any disjoint operation.\n\nconst GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8c88; // #primitives written to feedback buffers\nconst GL_ANY_SAMPLES_PASSED = 0x8c2f; // Occlusion query (if drawing passed depth test)\nconst GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8d6a; // Occlusion query less accurate/faster version\n\nexport default class Query extends Resource {\n // Returns true if Query is supported by the WebGL implementation\n // Can also check whether timestamp queries are available.\n static isSupported(gl, opts = []) {\n const webgl2 = isWebGL2(gl);\n\n // Initial value\n const hasTimerQuery = hasFeatures(gl, FEATURES.TIMER_QUERY);\n let supported = webgl2 || hasTimerQuery;\n\n for (const key of opts) {\n switch (key) {\n case 'queries':\n supported = supported && webgl2;\n break;\n case 'timers':\n supported = supported && hasTimerQuery;\n break;\n default:\n assert(false);\n }\n }\n\n return supported;\n }\n\n // Create a query class\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n this.target = null;\n this._queryPending = false;\n this._pollingPromise = null;\n\n Object.seal(this);\n }\n\n // Shortcut for timer query (dependent on extension in both WebGL1 and 2)\n // Measures GPU time delta between this call and a matching `end` call in the\n // GPU instruction stream.\n beginTimeElapsedQuery() {\n return this.begin(GL_TIME_ELAPSED_EXT);\n }\n\n // Shortcut for occlusion queries\n beginOcclusionQuery({conservative = false} = {}) {\n return this.begin(conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);\n }\n\n // Shortcut for transformFeedbackQuery\n beginTransformFeedbackQuery() {\n return this.begin(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);\n }\n\n // Due to OpenGL API limitations, after calling `begin()` on one Query\n // instance, `end()` must be called on that same instance before\n // calling `begin()` on another query. While there can be multiple\n // outstanding queries representing disjoint `begin()`/`end()` intervals.\n // It is not possible to interleave or overlap `begin` and `end` calls.\n begin(target) {\n // Don't start a new query if one is already active.\n if (this._queryPending) {\n return this;\n }\n\n this.target = target;\n this.gl.beginQuery(this.target, this.handle);\n\n return this;\n }\n\n // ends the current query\n end() {\n // Can't end a new query if the last one hasn't been resolved.\n if (this._queryPending) {\n return this;\n }\n\n if (this.target) {\n this.gl.endQuery(this.target);\n this.target = null;\n this._queryPending = true;\n }\n return this;\n }\n\n // Returns true if the query result is available\n isResultAvailable() {\n if (!this._queryPending) {\n return false;\n }\n\n const resultAvailable = this.gl.getQueryParameter(this.handle, GL_QUERY_RESULT_AVAILABLE);\n if (resultAvailable) {\n this._queryPending = false;\n }\n return resultAvailable;\n }\n\n // Timing query is disjoint, i.e. results are invalid\n isTimerDisjoint() {\n return this.gl.getParameter(GL_GPU_DISJOINT_EXT);\n }\n\n // Returns query result.\n getResult() {\n return this.gl.getQueryParameter(this.handle, GL_QUERY_RESULT);\n }\n\n // Returns the query result, converted to milliseconds to match JavaScript conventions.\n getTimerMilliseconds() {\n return this.getResult() / 1e6;\n }\n\n // Polls the query\n createPoll(limit = Number.POSITIVE_INFINITY) {\n if (this._pollingPromise) {\n return this._pollingPromise;\n }\n\n let counter = 0;\n\n this._pollingPromise = new Promise((resolve, reject) => {\n const poll = () => {\n if (this.isResultAvailable()) {\n resolve(this.getResult());\n this._pollingPromise = null;\n } else if (counter++ > limit) {\n reject('Timed out');\n this._pollingPromise = null;\n } else {\n requestAnimationFrame(poll);\n }\n };\n\n requestAnimationFrame(poll);\n });\n\n return this._pollingPromise;\n }\n\n _createHandle() {\n return Query.isSupported(this.gl) ? this.gl.createQuery() : null;\n }\n\n _deleteHandle() {\n this.gl.deleteQuery(this.handle);\n }\n}\n","// Node.js polyfills for requestAnimationFrame and cancelAnimationFrame\n/* global window, setTimeout, clearTimeout */\n\nexport function requestAnimationFrame(callback) {\n return typeof window !== 'undefined' && window.requestAnimationFrame\n ? window.requestAnimationFrame(callback)\n : setTimeout(callback, 1000 / 60);\n}\n\nexport function cancelAnimationFrame(timerId) {\n return typeof window !== 'undefined' && window.cancelAnimationFrame\n ? window.cancelAnimationFrame(timerId)\n : clearTimeout(timerId);\n}\n","/* global window, OffscreenCanvas */\nimport {\n isWebGL,\n createGLContext,\n instrumentGLContext,\n resizeGLContext,\n resetParameters\n} from '@luma.gl/gltools';\nimport {\n requestAnimationFrame,\n cancelAnimationFrame,\n Query,\n lumaStats,\n // TODO - remove dependency on framebuffer (bundle size impact)\n Framebuffer,\n log,\n assert\n} from '@luma.gl/webgl';\nimport {isBrowser} from 'probe.gl/env';\n\nconst isPage = isBrowser() && typeof document !== 'undefined';\n\nlet statIdCounter = 0;\n\nexport default class AnimationLoop {\n /*\n * @param {HTMLCanvasElement} canvas - if provided, width and height will be passed to context\n */\n constructor(props = {}) {\n const {\n onCreateContext = opts => createGLContext(opts),\n onAddHTML = null,\n onInitialize = () => {},\n onRender = () => {},\n onFinalize = () => {},\n\n gl = null,\n glOptions = {},\n debug = false,\n\n createFramebuffer = false,\n\n // view parameters\n autoResizeViewport = true,\n autoResizeDrawingBuffer = true,\n stats = lumaStats.get(`animation-loop-${statIdCounter++}`)\n } = props;\n\n let {useDevicePixels = true} = props;\n\n if ('useDevicePixelRatio' in props) {\n log.deprecated('useDevicePixelRatio', 'useDevicePixels')();\n useDevicePixels = props.useDevicePixelRatio;\n }\n\n this.props = {\n onCreateContext,\n onAddHTML,\n onInitialize,\n onRender,\n onFinalize,\n\n gl,\n glOptions,\n debug,\n createFramebuffer\n };\n\n // state\n this.gl = gl;\n this.needsRedraw = null;\n this.timeline = null;\n this.stats = stats;\n this.cpuTime = this.stats.get('CPU Time');\n this.gpuTime = this.stats.get('GPU Time');\n this.frameRate = this.stats.get('Frame Rate');\n\n this._initialized = false;\n this._running = false;\n this._animationFrameId = null;\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._cpuStartTime = 0;\n\n this.setProps({\n autoResizeViewport,\n autoResizeDrawingBuffer,\n useDevicePixels\n });\n\n // Bind methods\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n\n this._pageLoadPromise = null;\n\n this._onMousemove = this._onMousemove.bind(this);\n this._onMouseleave = this._onMouseleave.bind(this);\n }\n\n delete() {\n this.stop();\n this._setDisplay(null);\n }\n\n setNeedsRedraw(reason) {\n assert(typeof reason === 'string');\n this.needsRedraw = this.needsRedraw || reason;\n return this;\n }\n\n setProps(props) {\n if ('autoResizeViewport' in props) {\n this.autoResizeViewport = props.autoResizeViewport;\n }\n if ('autoResizeDrawingBuffer' in props) {\n this.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer;\n }\n if ('useDevicePixels' in props) {\n this.useDevicePixels = props.useDevicePixels;\n }\n return this;\n }\n\n // Starts a render loop if not already running\n // @param {Object} context - contains frame specific info (E.g. tick, width, height, etc)\n start(opts = {}) {\n if (this._running) {\n return this;\n }\n this._running = true;\n // console.debug(`Starting ${this.constructor.name}`);\n // Wait for start promise before rendering frame\n this._getPageLoadPromise()\n .then(() => {\n if (!this._running || this._initialized) {\n return null;\n }\n\n // Create the WebGL context\n this._createWebGLContext(opts);\n this._createFramebuffer();\n this._startEventHandling();\n\n // Initialize the callback data\n this._initializeCallbackData();\n this._updateCallbackData();\n\n // Default viewport setup, in case onInitialize wants to render\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n\n this._gpuTimeQuery = Query.isSupported(this.gl, ['timers']) ? new Query(this.gl) : null;\n\n this._initialized = true;\n\n // Note: onIntialize can return a promise (in case it needs to load resources)\n return this.onInitialize(this.animationProps);\n })\n .then(appContext => {\n if (this._running) {\n this._addCallbackData(appContext || {});\n if (appContext !== false) {\n this._startLoop();\n }\n }\n });\n return this;\n }\n\n // Redraw now\n redraw() {\n this._beginTimers();\n\n this._setupFrame();\n this._updateCallbackData();\n\n this._renderFrame(this.animationProps);\n\n // clear needsRedraw flag\n this._clearNeedsRedraw();\n\n // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit\n // Chrome's offscreen canvas does not require gl.commit\n if (this.offScreen && this.gl.commit) {\n this.gl.commit();\n }\n\n if (this._resolveNextFrame) {\n this._resolveNextFrame(this);\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n }\n\n this._endTimers();\n\n return this;\n }\n\n // Stops a render loop if already running, finalizing\n stop() {\n // console.debug(`Stopping ${this.constructor.name}`);\n if (this._running) {\n this._finalizeCallbackData();\n cancelAnimationFrame(this._animationFrameId);\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._animationFrameId = null;\n this._running = false;\n }\n return this;\n }\n\n attachTimeline(timeline) {\n this.timeline = timeline;\n\n return this.timeline;\n }\n\n detachTimeline() {\n this.timeline = null;\n }\n\n waitForRender() {\n this.setNeedsRedraw('waitForRender');\n\n if (!this._nextFramePromise) {\n this._nextFramePromise = new Promise(resolve => {\n this._resolveNextFrame = resolve;\n });\n }\n return this._nextFramePromise;\n }\n\n async toDataURL() {\n this.setNeedsRedraw('toDataURL');\n\n await this.waitForRender();\n\n return this.gl.canvas.toDataURL();\n }\n\n onCreateContext(...args) {\n return this.props.onCreateContext(...args);\n }\n\n onInitialize(...args) {\n return this.props.onInitialize(...args);\n }\n\n onRender(...args) {\n return this.props.onRender(...args);\n }\n\n onFinalize(...args) {\n return this.props.onFinalize(...args);\n }\n\n // DEPRECATED/REMOVED METHODS\n\n getHTMLControlValue(id, defaultValue = 1) {\n const element = document.getElementById(id);\n return element ? Number(element.value) : defaultValue;\n }\n\n // Update parameters\n setViewParameters() {\n log.removed('AnimationLoop.setViewParameters', 'AnimationLoop.setProps')();\n return this;\n }\n\n // PRIVATE METHODS\n\n _startLoop() {\n const renderFrame = () => {\n if (!this._running) {\n return;\n }\n this.redraw();\n this._animationFrameId = this._requestAnimationFrame(renderFrame);\n };\n\n // cancel any pending renders to ensure only one loop can ever run\n cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = this._requestAnimationFrame(renderFrame);\n }\n\n // PRIVATE METHODS\n\n _getPageLoadPromise() {\n if (!this._pageLoadPromise) {\n this._pageLoadPromise = isPage\n ? new Promise((resolve, reject) => {\n if (isPage && document.readyState === 'complete') {\n resolve(document);\n return;\n }\n window.addEventListener('load', () => {\n resolve(document);\n });\n })\n : Promise.resolve({});\n }\n return this._pageLoadPromise;\n }\n\n _setDisplay(display) {\n if (this.display) {\n this.display.delete();\n this.display.animationLoop = null;\n }\n\n // store animation loop on the display\n if (display) {\n display.animationLoop = this;\n }\n\n this.display = display;\n }\n\n _requestAnimationFrame(renderFrameCallback) {\n // E.g. VR display has a separate animation frame to sync with headset\n if (this.display && this.display.requestAnimationFrame(renderFrameCallback)) {\n return;\n }\n\n requestAnimationFrame(renderFrameCallback);\n }\n\n // Called on each frame, can be overridden to call onRender multiple times\n // to support e.g. stereoscopic rendering\n _renderFrame(...args) {\n // Allow e.g. VR display to render multiple frames.\n if (this.display) {\n this.display._renderFrame(...args);\n return;\n }\n\n // call callback\n this.onRender(...args);\n // end callback\n }\n\n _clearNeedsRedraw() {\n this.needsRedraw = null;\n }\n\n _setupFrame() {\n if (this._onSetupFrame) {\n // call callback\n this._onSetupFrame(this.animationProps);\n // end callback\n } else {\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n this._resizeFramebuffer();\n }\n }\n\n // Initialize the object that will be passed to app callbacks\n _initializeCallbackData() {\n this.animationProps = {\n gl: this.gl,\n\n stop: this.stop,\n canvas: this.gl.canvas,\n framebuffer: this.framebuffer,\n\n // Initial values\n useDevicePixels: this.useDevicePixels,\n needsRedraw: null,\n\n // Animation props\n startTime: Date.now(),\n engineTime: 0,\n tick: 0,\n tock: 0,\n\n // Timeline time for back compatibility\n time: 0,\n\n // Experimental\n _timeline: this.timeline,\n _loop: this,\n _animationLoop: this,\n _mousePosition: null // Event props\n };\n }\n\n // Update the context object that will be passed to app callbacks\n _updateCallbackData() {\n const {width, height, aspect} = this._getSizeAndAspect();\n if (width !== this.animationProps.width || height !== this.animationProps.height) {\n this.setNeedsRedraw('drawing buffer resized');\n }\n if (aspect !== this.animationProps.aspect) {\n this.setNeedsRedraw('drawing buffer aspect changed');\n }\n\n this.animationProps.width = width;\n this.animationProps.height = height;\n this.animationProps.aspect = aspect;\n\n this.animationProps.needsRedraw = this.needsRedraw;\n\n // Update time properties\n this.animationProps.engineTime = Date.now() - this.animationProps.startTime;\n\n if (this.timeline) {\n this.timeline.update(this.animationProps.engineTime);\n }\n\n this.animationProps.tick = Math.floor((this.animationProps.time / 1000) * 60);\n this.animationProps.tock++;\n\n // For back compatibility\n this.animationProps.time = this.timeline\n ? this.timeline.getTime()\n : this.animationProps.engineTime;\n\n // experimental\n this.animationProps._offScreen = this.offScreen;\n }\n\n _finalizeCallbackData() {\n // call callback\n this.onFinalize(this.animationProps);\n // end callback\n }\n\n // Add application's data to the app context object\n _addCallbackData(appContext) {\n if (typeof appContext === 'object' && appContext !== null) {\n this.animationProps = Object.assign({}, this.animationProps, appContext);\n }\n }\n\n // Either uses supplied or existing context, or calls provided callback to create one\n _createWebGLContext(opts) {\n this.offScreen =\n opts.canvas &&\n typeof OffscreenCanvas !== 'undefined' &&\n opts.canvas instanceof OffscreenCanvas;\n\n // Create the WebGL context if necessary\n opts = Object.assign({}, opts, this.props.glOptions);\n this.gl = this.props.gl ? instrumentGLContext(this.props.gl, opts) : this.onCreateContext(opts);\n\n if (!isWebGL(this.gl)) {\n throw new Error('AnimationLoop.onCreateContext - illegal context returned');\n }\n\n // Reset the WebGL context.\n resetParameters(this.gl);\n\n this._createInfoDiv();\n }\n\n _createInfoDiv() {\n if (this.gl.canvas && this.props.onAddHTML) {\n /* global document */\n const wrapperDiv = document.createElement('div');\n document.body.appendChild(wrapperDiv);\n wrapperDiv.style.position = 'relative';\n const div = document.createElement('div');\n div.style.position = 'absolute';\n div.style.left = '10px';\n div.style.bottom = '10px';\n div.style.width = '300px';\n div.style.background = 'white';\n wrapperDiv.appendChild(this.gl.canvas);\n wrapperDiv.appendChild(div);\n const html = this.props.onAddHTML(div);\n if (html) {\n div.innerHTML = html;\n }\n }\n }\n\n _getSizeAndAspect() {\n // https://webglfundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html\n const width = this.gl.drawingBufferWidth;\n const height = this.gl.drawingBufferHeight;\n\n // https://webglfundamentals.org/webgl/lessons/webgl-anti-patterns.html\n let aspect = 1;\n const {canvas} = this.gl;\n\n if (canvas && canvas.clientHeight) {\n aspect = canvas.clientWidth / canvas.clientHeight;\n } else if (width > 0 && height > 0) {\n aspect = width / height;\n }\n\n return {width, height, aspect};\n }\n\n // Default viewport setup\n _resizeViewport() {\n if (this.autoResizeViewport) {\n this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight);\n }\n }\n\n // Resize the render buffer of the canvas to match canvas client size\n // Optionally multiplying with devicePixel ratio\n _resizeCanvasDrawingBuffer() {\n if (this.autoResizeDrawingBuffer) {\n resizeGLContext(this.gl, {useDevicePixels: this.useDevicePixels});\n }\n }\n\n // TBD - deprecated?\n _createFramebuffer() {\n // Setup default framebuffer\n if (this.props.createFramebuffer) {\n this.framebuffer = new Framebuffer(this.gl);\n }\n }\n\n _resizeFramebuffer() {\n if (this.framebuffer) {\n this.framebuffer.resize({\n width: this.gl.drawingBufferWidth,\n height: this.gl.drawingBufferHeight\n });\n }\n }\n\n _beginTimers() {\n this.frameRate.timeEnd();\n this.frameRate.timeStart();\n\n // Check if timer for last frame has completed.\n // GPU timer results are never available in the same\n // frame they are captured.\n if (\n this._gpuTimeQuery &&\n this._gpuTimeQuery.isResultAvailable() &&\n !this._gpuTimeQuery.isTimerDisjoint()\n ) {\n this.stats.get('GPU Time').addTime(this._gpuTimeQuery.getTimerMilliseconds());\n }\n\n if (this._gpuTimeQuery) {\n // GPU time query start\n this._gpuTimeQuery.beginTimeElapsedQuery();\n }\n\n this.cpuTime.timeStart();\n }\n\n _endTimers() {\n this.cpuTime.timeEnd();\n\n if (this._gpuTimeQuery) {\n // GPU time query end. Results will be available on next frame.\n this._gpuTimeQuery.end();\n }\n }\n\n // Event handling\n\n _startEventHandling() {\n const {canvas} = this.gl;\n if (canvas) {\n canvas.addEventListener('mousemove', this._onMousemove);\n canvas.addEventListener('mouseleave', this._onMouseleave);\n }\n }\n\n _onMousemove(e) {\n this.animationProps._mousePosition = [e.offsetX, e.offsetY];\n }\n _onMouseleave(e) {\n this.animationProps._mousePosition = null;\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport LayerManager from './layer-manager';\nimport ViewManager from './view-manager';\nimport MapView from '../views/map-view';\nimport EffectManager from './effect-manager';\nimport Effect from './effect';\nimport DeckRenderer from './deck-renderer';\nimport DeckPicker from './deck-picker';\nimport Tooltip from './tooltip';\nimport log from '../utils/log';\nimport deckGlobal from './init';\n\nimport {getBrowser} from 'probe.gl/env';\nimport GL from '@luma.gl/constants';\nimport {\n AnimationLoop,\n createGLContext,\n instrumentGLContext,\n setParameters,\n Timeline,\n lumaStats\n} from '@luma.gl/core';\nimport {Stats} from 'probe.gl';\nimport {EventManager} from 'mjolnir.js';\n\nimport assert from '../utils/assert';\nimport {EVENTS} from './constants';\n/* global document */\n\nfunction noop() {}\n\nconst getCursor = ({isDragging}) => (isDragging ? 'grabbing' : 'grab');\n\nfunction getPropTypes(PropTypes) {\n // Note: Arrays (layers, views, ) can contain falsy values\n return {\n id: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n // layer/view/controller settings\n layers: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n layerFilter: PropTypes.func,\n views: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n viewState: PropTypes.object,\n effects: PropTypes.arrayOf(PropTypes.instanceOf(Effect)),\n controller: PropTypes.oneOfType([PropTypes.func, PropTypes.bool, PropTypes.object]),\n\n // GL settings\n gl: PropTypes.object,\n glOptions: PropTypes.object,\n parameters: PropTypes.object,\n pickingRadius: PropTypes.number,\n useDevicePixels: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n touchAction: PropTypes.string,\n\n // Callbacks\n onWebGLInitialized: PropTypes.func,\n onResize: PropTypes.func,\n onViewStateChange: PropTypes.func,\n onBeforeRender: PropTypes.func,\n onAfterRender: PropTypes.func,\n onLoad: PropTypes.func,\n\n // Debug settings\n debug: PropTypes.bool,\n drawPickingColors: PropTypes.bool,\n\n // Experimental props\n _framebuffer: PropTypes.object,\n // Forces a redraw every animation frame\n _animate: PropTypes.bool\n };\n}\n\nconst defaultProps = {\n id: 'deckgl-overlay',\n width: '100%',\n height: '100%',\n\n pickingRadius: 0,\n layerFilter: null,\n glOptions: {},\n gl: null,\n layers: [],\n effects: [],\n views: null,\n controller: null, // Rely on external controller, e.g. react-map-gl\n useDevicePixels: true,\n touchAction: 'none',\n _framebuffer: null,\n _animate: false,\n\n onWebGLInitialized: noop,\n onResize: noop,\n onViewStateChange: noop,\n onBeforeRender: noop,\n onAfterRender: noop,\n onLoad: noop,\n _onMetrics: null,\n\n getCursor,\n\n debug: false,\n drawPickingColors: false\n};\n\n/* eslint-disable max-statements */\nexport default class Deck {\n constructor(props) {\n props = Object.assign({}, defaultProps, props);\n\n this.width = 0; // \"read-only\", auto-updated from canvas\n this.height = 0; // \"read-only\", auto-updated from canvas\n\n // Maps view descriptors to vieports, rebuilds when width/height/viewState/views change\n this.viewManager = null;\n this.layerManager = null;\n this.effectManager = null;\n this.deckRenderer = null;\n this.deckPicker = null;\n\n this._needsRedraw = true;\n this._pickRequest = {};\n // Pick and store the object under the pointer on `pointerdown`.\n // This object is reused for subsequent `onClick` and `onDrag*` callbacks.\n this._lastPointerDownInfo = null;\n\n this.viewState = props.initialViewState || null; // Internal view state if no callback is supplied\n this.interactiveState = {\n isDragging: false // Whether the cursor is down\n };\n\n // Bind methods\n this._onEvent = this._onEvent.bind(this);\n this._onPointerDown = this._onPointerDown.bind(this);\n this._onPointerMove = this._onPointerMove.bind(this);\n this._pickAndCallback = this._pickAndCallback.bind(this);\n this._onRendererInitialized = this._onRendererInitialized.bind(this);\n this._onRenderFrame = this._onRenderFrame.bind(this);\n this._onViewStateChange = this._onViewStateChange.bind(this);\n this._onInteractiveStateChange = this._onInteractiveStateChange.bind(this);\n\n if (props.viewState && props.initialViewState) {\n log.warn(\n 'View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.'\n )();\n }\n if (getBrowser() === 'IE') {\n log.warn('IE 11 support will be deprecated in v8.0')();\n }\n\n if (!props.gl) {\n // Note: LayerManager creation deferred until gl context available\n if (typeof document !== 'undefined') {\n this.canvas = this._createCanvas(props);\n }\n }\n this.animationLoop = this._createAnimationLoop(props);\n\n this.stats = new Stats({id: 'deck.gl'});\n this.metrics = {\n fps: 0,\n setPropsTime: 0,\n updateAttributesTime: 0,\n framesRedrawn: 0,\n pickTime: 0,\n pickCount: 0,\n gpuTime: 0,\n gpuTimePerFrame: 0,\n cpuTime: 0,\n cpuTimePerFrame: 0,\n bufferMemory: 0,\n textureMemory: 0,\n renderbufferMemory: 0,\n gpuMemory: 0\n };\n this._metricsCounter = 0;\n\n this.setProps(props);\n\n this.animationLoop.start();\n }\n\n finalize() {\n this.animationLoop.stop();\n this.animationLoop = null;\n this._lastPointerDownInfo = null;\n\n if (this.layerManager) {\n this.layerManager.finalize();\n this.layerManager = null;\n }\n\n if (this.viewManager) {\n this.viewManager.finalize();\n this.viewManager = null;\n }\n\n if (this.effectManager) {\n this.effectManager.finalize();\n this.effectManager = null;\n }\n\n if (this.deckRenderer) {\n this.deckRenderer.finalize();\n this.deckRenderer = null;\n }\n\n if (this.deckPicker) {\n this.deckPicker.finalize();\n this.deckPicker = null;\n }\n\n if (this.eventManager) {\n this.eventManager.destroy();\n }\n\n if (this.tooltip) {\n this.tooltip.remove();\n this.tooltip = null;\n }\n\n if (!this.props.canvas && !this.props.gl && this.canvas) {\n // remove internally created canvas\n this.canvas.parentElement.removeChild(this.canvas);\n this.canvas = null;\n }\n }\n\n setProps(props) {\n this.stats.get('setProps Time').timeStart();\n\n if ('onLayerHover' in props) {\n log.removed('onLayerHover', 'onHover')();\n }\n if ('onLayerClick' in props) {\n log.removed('onLayerClick', 'onClick')();\n }\n\n props = Object.assign({}, this.props, props);\n this.props = props;\n\n // Update CSS size of canvas\n this._setCanvasSize(props);\n\n // We need to overwrite CSS style width and height with actual, numeric values\n const newProps = Object.assign({}, props, {\n views: this._getViews(this.props),\n width: this.width,\n height: this.height\n });\n\n const viewState = this._getViewState(props);\n if (viewState) {\n newProps.viewState = viewState;\n }\n\n // Update view manager props\n if (this.viewManager) {\n this.viewManager.setProps(newProps);\n }\n\n // Update layer manager props (but not size)\n if (this.layerManager) {\n this.layerManager.setProps(newProps);\n }\n\n if (this.effectManager) {\n this.effectManager.setProps(newProps);\n }\n\n // Update animation loop\n if (this.animationLoop) {\n this.animationLoop.setProps(newProps);\n }\n\n if (this.deckRenderer) {\n this.deckRenderer.setProps(newProps);\n }\n\n if (this.deckPicker) {\n this.deckPicker.setProps(newProps);\n }\n\n this.stats.get('setProps Time').timeEnd();\n }\n\n // Public API\n // Check if a redraw is needed\n // Returns `false` or a string summarizing the redraw reason\n // opts.clearRedrawFlags (Boolean) - clear the redraw flag. Default `true`\n needsRedraw(opts = {clearRedrawFlags: false}) {\n if (this.props._animate) {\n return 'Deck._animate';\n }\n\n let redraw = this._needsRedraw;\n\n if (opts.clearRedrawFlags) {\n this._needsRedraw = false;\n }\n\n const viewManagerNeedsRedraw = this.viewManager.needsRedraw(opts);\n const layerManagerNeedsRedraw = this.layerManager.needsRedraw(opts);\n const effectManagerNeedsRedraw = this.effectManager.needsRedraw(opts);\n const deckRendererNeedsRedraw = this.deckRenderer.needsRedraw(opts);\n\n redraw =\n redraw ||\n viewManagerNeedsRedraw ||\n layerManagerNeedsRedraw ||\n effectManagerNeedsRedraw ||\n deckRendererNeedsRedraw;\n return redraw;\n }\n\n redraw(force) {\n if (!this.layerManager) {\n // Not yet initialized\n return;\n }\n // If force is falsy, check if we need to redraw\n const redrawReason = force || this.needsRedraw({clearRedrawFlags: true});\n\n if (!redrawReason) {\n return;\n }\n\n this.stats.get('Redraw Count').incrementCount();\n if (this.props._customRender) {\n this.props._customRender(redrawReason);\n } else {\n this._drawLayers(redrawReason);\n }\n }\n\n getViews() {\n return this.viewManager.views;\n }\n\n // Get a set of viewports for a given width and height\n getViewports(rect) {\n return this.viewManager.getViewports(rect);\n }\n\n /* {x, y, radius = 0, layerIds = null, unproject3D} */\n pickObject(opts) {\n const infos = this._pick('pickObject', 'pickObject Time', opts).result;\n return infos.length ? infos[0] : null;\n }\n\n /* {x, y, radius = 0, layerIds = null, unproject3D, depth = 10} */\n pickMultipleObjects(opts) {\n opts.depth = opts.depth || 10;\n return this._pick('pickObject', 'pickMultipleObjects Time', opts).result;\n }\n\n /* {x, y, width = 1, height = 1, layerIds = null} */\n pickObjects(opts) {\n return this._pick('pickObjects', 'pickObjects Time', opts);\n }\n\n // Private Methods\n\n _pick(method, statKey, opts) {\n const {stats} = this;\n\n stats.get('Pick Count').incrementCount();\n stats.get(statKey).timeStart();\n\n const infos = this.deckPicker[method](\n Object.assign(\n {\n layers: this.layerManager.getLayers(opts),\n viewports: this.getViewports(opts),\n onViewportActive: this.layerManager.activateViewport\n },\n opts\n )\n );\n\n stats.get(statKey).timeEnd();\n\n return infos;\n }\n\n // canvas, either string, canvas or `null`\n _createCanvas(props) {\n let canvas = props.canvas;\n\n // TODO EventManager should accept element id\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n assert(canvas);\n }\n\n if (!canvas) {\n canvas = document.createElement('canvas');\n const parent = props.parent || document.body;\n parent.appendChild(canvas);\n }\n\n const {id, style} = props;\n canvas.id = id;\n Object.assign(canvas.style, style);\n\n return canvas;\n }\n\n // Updates canvas width and/or height, if provided as props\n _setCanvasSize(props) {\n if (!this.canvas) {\n return;\n }\n\n let {width, height} = props;\n // Set size ONLY if props are being provided, otherwise let canvas be layouted freely\n if (width || width === 0) {\n width = Number.isFinite(width) ? `${width}px` : width;\n this.canvas.style.width = width;\n }\n if (height || height === 0) {\n height = Number.isFinite(height) ? `${height}px` : height;\n // Note: position==='absolute' required for height 100% to work\n this.canvas.style.position = 'absolute';\n this.canvas.style.height = height;\n }\n }\n\n // If canvas size has changed, updates\n _updateCanvasSize() {\n if (this._checkForCanvasSizeChange()) {\n const {width, height} = this;\n this.viewManager.setProps({width, height});\n this.props.onResize({width: this.width, height: this.height});\n }\n }\n\n // If canvas size has changed, reads out the new size and returns true\n _checkForCanvasSizeChange() {\n const {canvas} = this;\n if (!canvas) {\n return false;\n }\n // Fallback to width/height when clientWidth/clientHeight are 0 or undefined.\n const newWidth = canvas.clientWidth || canvas.width;\n const newHeight = canvas.clientHeight || canvas.height;\n if (newWidth !== this.width || newHeight !== this.height) {\n this.width = newWidth;\n this.height = newHeight;\n return true;\n }\n return false;\n }\n\n _createAnimationLoop(props) {\n const {width, height, gl, glOptions, debug, useDevicePixels, autoResizeDrawingBuffer} = props;\n\n return new AnimationLoop({\n width,\n height,\n useDevicePixels,\n autoResizeDrawingBuffer,\n autoResizeViewport: false,\n gl,\n onCreateContext: opts =>\n createGLContext(Object.assign({}, glOptions, opts, {canvas: this.canvas, debug})),\n onInitialize: this._onRendererInitialized,\n onRender: this._onRenderFrame,\n onBeforeRender: props.onBeforeRender,\n onAfterRender: props.onAfterRender\n });\n }\n\n // Get the most relevant view state: props.viewState, if supplied, shadows internal viewState\n // TODO: For backwards compatibility ensure numeric width and height is added to the viewState\n _getViewState(props) {\n return props.viewState || this.viewState;\n }\n\n // Get the view descriptor list\n _getViews(props) {\n // Default to a full screen map view port\n let views = props.views || [new MapView({id: 'default-view'})];\n views = Array.isArray(views) ? views : [views];\n if (views.length && props.controller) {\n // Backward compatibility: support controller prop\n views[0].props.controller = props.controller;\n }\n return views;\n }\n\n // The `pointermove` event may fire multiple times in between two animation frames,\n // it's a waste of time to run picking without rerender. Instead we save the last pick\n // request and only do it once on the next animation frame.\n _onPointerMove(event) {\n const {_pickRequest} = this;\n if (event.type === 'pointerleave') {\n _pickRequest.x = -1;\n _pickRequest.y = -1;\n _pickRequest.radius = 0;\n } else if (event.leftButton || event.rightButton) {\n // Do not trigger onHover callbacks if mouse button is down.\n return;\n } else {\n const pos = event.offsetCenter;\n // Do not trigger callbacks when click/hover position is invalid. Doing so will cause a\n // assertion error when attempting to unproject the position.\n if (!pos) {\n return;\n }\n _pickRequest.x = pos.x;\n _pickRequest.y = pos.y;\n _pickRequest.radius = this.props.pickingRadius;\n }\n\n if (this.layerManager) {\n this.layerManager.context.mousePosition = {x: _pickRequest.x, y: _pickRequest.y};\n }\n\n _pickRequest.callback = this.props.onHover;\n _pickRequest.event = event;\n _pickRequest.mode = 'hover';\n }\n\n // Actually run picking\n _pickAndCallback() {\n const {_pickRequest} = this;\n\n if (_pickRequest.mode) {\n // perform picking\n const {result, emptyInfo} = this._pick('pickObject', 'pickObject Time', _pickRequest);\n const shouldGenerateInfo = _pickRequest.callback || this.props.getTooltip;\n const pickedInfo = shouldGenerateInfo && (result.find(info => info.index >= 0) || emptyInfo);\n if (this.props.getTooltip) {\n const displayInfo = this.props.getTooltip(pickedInfo);\n this.tooltip.setTooltip(displayInfo, pickedInfo.x, pickedInfo.y);\n }\n if (_pickRequest.callback && !pickedInfo.handled) {\n _pickRequest.callback(pickedInfo, _pickRequest.event);\n }\n _pickRequest.mode = null;\n }\n }\n\n _updateCursor() {\n const container = this.props.parent || this.canvas;\n if (container) {\n container.style.cursor = this.props.getCursor(this.interactiveState);\n }\n }\n\n _setGLContext(gl) {\n if (this.layerManager) {\n return;\n }\n\n // if external context...\n if (!this.canvas) {\n this.canvas = gl.canvas;\n instrumentGLContext(gl, {enable: true, copyState: true});\n }\n\n this.tooltip = new Tooltip(this.canvas);\n\n setParameters(gl, {\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthTest: true,\n depthFunc: GL.LEQUAL\n });\n\n this.props.onWebGLInitialized(gl);\n\n // timeline for transitions\n const timeline = new Timeline();\n timeline.play();\n this.animationLoop.attachTimeline(timeline);\n\n this.eventManager = new EventManager(this.props.parent || gl.canvas, {\n touchAction: this.props.touchAction,\n events: {\n pointerdown: this._onPointerDown,\n pointermove: this._onPointerMove,\n pointerleave: this._onPointerMove\n }\n });\n for (const eventType in EVENTS) {\n this.eventManager.on(eventType, this._onEvent);\n }\n\n this.viewManager = new ViewManager({\n timeline,\n eventManager: this.eventManager,\n onViewStateChange: this._onViewStateChange,\n onInteractiveStateChange: this._onInteractiveStateChange,\n views: this._getViews(this.props),\n viewState: this._getViewState(this.props),\n width: this.width,\n height: this.height\n });\n\n // viewManager must be initialized before layerManager\n // layerManager depends on viewport created by viewManager.\n const viewport = this.viewManager.getViewports()[0];\n\n // Note: avoid React setState due GL animation loop / setState timing issue\n this.layerManager = new LayerManager(gl, {\n deck: this,\n stats: this.stats,\n viewport,\n timeline\n });\n\n this.effectManager = new EffectManager();\n\n this.deckRenderer = new DeckRenderer(gl);\n\n this.deckPicker = new DeckPicker(gl);\n\n this.setProps(this.props);\n\n this._updateCanvasSize();\n this.props.onLoad();\n }\n\n _drawLayers(redrawReason, renderOptions) {\n const {gl} = this.layerManager.context;\n\n setParameters(gl, this.props.parameters);\n\n this.props.onBeforeRender({gl});\n\n this.deckRenderer.renderLayers(\n Object.assign(\n {\n target: this.props._framebuffer,\n layers: this.layerManager.getLayers(),\n viewports: this.viewManager.getViewports(),\n onViewportActive: this.layerManager.activateViewport,\n views: this.viewManager.getViews(),\n pass: 'screen',\n redrawReason,\n effects: this.effectManager.getEffects()\n },\n renderOptions\n )\n );\n\n this.props.onAfterRender({gl});\n }\n\n // Callbacks\n\n _onRendererInitialized({gl}) {\n this._setGLContext(gl);\n }\n\n _onRenderFrame(animationProps) {\n this._getFrameStats();\n\n // Log perf stats every second\n if (this._metricsCounter++ % 60 === 0) {\n this._getMetrics();\n this.stats.reset();\n log.table(4, this.metrics)();\n\n // Experimental: report metrics\n if (this.props._onMetrics) {\n this.props._onMetrics(this.metrics);\n }\n }\n\n this._updateCanvasSize();\n\n this._updateCursor();\n\n // Update layers if needed (e.g. some async prop has loaded)\n // Note: This can trigger a redraw\n this.layerManager.updateLayers();\n\n // Perform picking request if any\n this._pickAndCallback();\n\n // Redraw if necessary\n this.redraw(false);\n\n // Update viewport transition if needed\n // Note: this can trigger `onViewStateChange`, and affect layers\n // We want to defer these changes to the next frame\n if (this.viewManager) {\n this.viewManager.updateViewStates();\n }\n }\n\n // Callbacks\n\n _onViewStateChange(params) {\n // Let app know that view state is changing, and give it a chance to change it\n const viewState = this.props.onViewStateChange(params) || params.viewState;\n\n // If initialViewState was set on creation, auto track position\n if (this.viewState) {\n this.viewState = {...this.viewState, [params.viewId]: viewState};\n if (!this.props.viewState) {\n // Apply internal view state\n this.viewManager.setProps({viewState: this.viewState});\n }\n }\n }\n\n _onInteractiveStateChange({isDragging = false}) {\n if (isDragging !== this.interactiveState.isDragging) {\n this.interactiveState.isDragging = isDragging;\n }\n }\n\n _onEvent(event) {\n const eventOptions = EVENTS[event.type];\n const pos = event.offsetCenter;\n\n if (!eventOptions || !pos) {\n return;\n }\n\n // Reuse last picked object\n const layers = this.layerManager.getLayers();\n const info = this.deckPicker.getLastPickedObject(\n {\n x: pos.x,\n y: pos.y,\n layers,\n viewports: this.getViewports(pos)\n },\n this._lastPointerDownInfo\n );\n\n const {layer} = info;\n const layerHandler =\n layer && (layer[eventOptions.handler] || layer.props[eventOptions.handler]);\n const rootHandler = this.props[eventOptions.handler];\n let handled = false;\n\n if (layerHandler) {\n handled = layerHandler.call(layer, info, event);\n }\n if (!handled && rootHandler) {\n rootHandler(info, event);\n }\n }\n\n _onPointerDown(event) {\n const pos = event.offsetCenter;\n this._lastPointerDownInfo = this.pickObject({\n x: pos.x,\n y: pos.y,\n radius: this.props.pickingRadius\n });\n }\n\n _getFrameStats() {\n const {stats} = this;\n stats.get('frameRate').timeEnd();\n stats.get('frameRate').timeStart();\n\n // Get individual stats from luma.gl so reset works\n const animationLoopStats = this.animationLoop.stats;\n stats.get('GPU Time').addTime(animationLoopStats.get('GPU Time').lastTiming);\n stats.get('CPU Time').addTime(animationLoopStats.get('CPU Time').lastTiming);\n }\n\n _getMetrics() {\n const {metrics, stats} = this;\n metrics.fps = stats.get('frameRate').getHz();\n metrics.setPropsTime = stats.get('setProps Time').time;\n metrics.updateAttributesTime = stats.get('Update Attributes').time;\n metrics.framesRedrawn = stats.get('Redraw Count').count;\n metrics.pickTime =\n stats.get('pickObject Time').time +\n stats.get('pickMultipleObjects Time').time +\n stats.get('pickObjects Time').time;\n metrics.pickCount = stats.get('Pick Count').count;\n\n // Luma stats\n metrics.gpuTime = stats.get('GPU Time').time;\n metrics.cpuTime = stats.get('CPU Time').time;\n metrics.gpuTimePerFrame = stats.get('GPU Time').getAverageTime();\n metrics.cpuTimePerFrame = stats.get('CPU Time').getAverageTime();\n\n const memoryStats = lumaStats.get('Memory Usage');\n metrics.bufferMemory = memoryStats.get('Buffer Memory').count;\n metrics.textureMemory = memoryStats.get('Texture Memory').count;\n metrics.renderbufferMemory = memoryStats.get('Renderbuffer Memory').count;\n metrics.gpuMemory = memoryStats.get('GPU Memory').count;\n }\n}\n\nDeck.getPropTypes = getPropTypes;\nDeck.defaultProps = defaultProps;\n\n// This is used to defeat tree shaking of init.js\n// https://github.com/uber/deck.gl/issues/3213\nDeck.VERSION = deckGlobal.VERSION;\n","// Check if one JavaScript class inherits from another\nexport function inheritsFrom(Type, ParentType) {\n while (Type) {\n if (Type === ParentType) {\n return true;\n }\n Type = Object.getPrototypeOf(Type);\n }\n return false;\n}\n","import React, {createElement} from 'react';\nimport {inheritsFrom} from './inherits-from';\nimport {Layer, View} from '@deck.gl/core';\n\n// recursively wrap render callbacks in `View`\nfunction wrapInView(node) {\n if (!node) {\n return node;\n }\n if (typeof node === 'function') {\n // React.Children does not traverse functions.\n // All render callbacks must be protected under a <View>\n return createElement(View, {}, node);\n }\n if (Array.isArray(node)) {\n return node.map(wrapInView);\n }\n if (inheritsFrom(node.type, View)) {\n return node;\n }\n return node;\n}\n\n// extracts any deck.gl layers masquerading as react elements from props.children\nexport default function extractJSXLayers({children, layers, views}) {\n const reactChildren = []; // extract real react elements (i.e. not deck.gl layers)\n const jsxLayers = []; // extracted layer from react children, will add to deck.gl layer array\n const jsxViews = {};\n\n // React.children\n React.Children.forEach(wrapInView(children), reactElement => {\n if (reactElement) {\n // For some reason Children.forEach doesn't filter out `null`s\n const ElementType = reactElement.type;\n if (inheritsFrom(ElementType, Layer)) {\n const layer = createLayer(ElementType, reactElement.props);\n jsxLayers.push(layer);\n } else {\n reactChildren.push(reactElement);\n }\n\n // empty id => default view\n if (ElementType !== View && inheritsFrom(ElementType, View) && reactElement.props.id) {\n const view = new ElementType(reactElement.props);\n jsxViews[view.id] = view;\n }\n }\n });\n\n // Avoid modifying views if no JSX views were found\n if (Object.keys(jsxViews).length > 0) {\n // If a view is specified in both views prop and JSX, use the one in views\n if (Array.isArray(views)) {\n views.forEach(view => {\n jsxViews[view.id] = view;\n });\n } else if (views) {\n jsxViews[views.id] = views;\n }\n views = Object.values(jsxViews);\n }\n\n // Avoid modifying layers array if no JSX layers were found\n layers = jsxLayers.length > 0 ? [...jsxLayers, ...layers] : layers;\n\n return {layers, children: reactChildren, views};\n}\n\nfunction createLayer(LayerType, reactProps) {\n const props = {};\n // Layer.defaultProps is treated as ReactElement.defaultProps and merged into react props\n // Remove them\n const defaultProps = LayerType.defaultProps || {};\n for (const key in reactProps) {\n if (defaultProps[key] !== reactProps[key]) {\n props[key] = reactProps[key];\n }\n }\n return new LayerType(props);\n}\n","import {cloneElement} from 'react';\n\nconst MAP_STYLE = {position: 'absolute', zIndex: -1};\n\nexport default function evaluateChildren(children, childProps) {\n if (!children) {\n return children;\n }\n if (typeof children === 'function') {\n return children(childProps);\n }\n if (Array.isArray(children)) {\n return children.map(child => evaluateChildren(child, childProps));\n }\n\n // Special treatment for react-map-gl's Map component\n // to support shorthand use case <DeckGL><StaticMap /></DeckGL>\n if (isReactMap(children)) {\n // Place map under the canvas\n childProps.style = MAP_STYLE;\n return cloneElement(children, childProps);\n }\n if (needsDeckGLViewProps(children)) {\n return cloneElement(children, childProps);\n }\n return children;\n}\n\nfunction isReactMap(child) {\n const componentClass = child && child.type;\n const componentProps = componentClass && componentClass.defaultProps;\n return componentProps && componentProps.mapStyle;\n}\n\nfunction needsDeckGLViewProps(child) {\n const componentClass = child && child.type;\n return componentClass && componentClass.deckGLViewProps;\n}\n","import {createElement} from 'react';\nimport {View} from '@deck.gl/core';\nimport {inheritsFrom} from './inherits-from';\nimport evaluateChildren from './evaluate-children';\n\n// Iterate over views and reposition children associated with views\n// TODO - Can we supply a similar function for the non-React case?\nexport default function positionChildrenUnderViews({children, viewports, deck, ContextProvider}) {\n const {viewManager} = deck || {};\n\n if (!viewManager || !viewManager.views.length) {\n return [];\n }\n\n const views = {};\n const defaultViewId = viewManager.views[0].id;\n\n // Sort children by view id\n for (const child of children) {\n // Unless child is a View, position / render as part of the default view\n let viewId = defaultViewId;\n let viewChildren = child;\n\n if (inheritsFrom(child.type, View)) {\n viewId = child.props.id || defaultViewId;\n viewChildren = child.props.children;\n }\n\n const viewport = viewManager.getViewport(viewId);\n const viewState = viewManager.getViewState(viewId);\n\n // Drop (auto-hide) elements with viewId that are not matched by any current view\n if (viewport) {\n const {x, y, width, height} = viewport;\n // Resolve potentially relative dimensions using the deck.gl container size\n viewChildren = evaluateChildren(viewChildren, {\n x,\n y,\n width,\n height,\n viewport,\n viewState\n });\n\n if (!views[viewId]) {\n views[viewId] = {\n viewport,\n children: []\n };\n }\n views[viewId].children.push(viewChildren);\n }\n }\n\n // Render views\n return Object.keys(views).map(viewId => {\n const {viewport, children: viewChildren} = views[viewId];\n const {x, y, width, height} = viewport;\n const style = {\n position: 'absolute',\n left: x,\n top: y,\n width,\n height\n };\n\n const key = `view-${viewId}`;\n // If children is passed as an array, React will throw the \"each element in a list needs\n // a key\" warning. Sending each child as separate arguments removes this requirement.\n const viewElement = createElement('div', {key, id: key, style}, ...viewChildren);\n\n if (ContextProvider) {\n const contextValue = {\n viewport,\n container: deck.canvas.offsetParent,\n eventManager: deck.eventManager,\n onViewStateChange: params => {\n params.viewId = viewId;\n deck._onViewStateChange(params);\n }\n };\n return createElement(ContextProvider, {value: contextValue}, viewElement);\n }\n\n return viewElement;\n });\n}\n","const CANVAS_ONLY_STYLES = {\n mixBlendMode: null\n};\n\nexport default function extractStyles({width, height, style}) {\n // This styling is enforced for correct positioning with children\n const containerStyle = {\n position: 'absolute',\n zIndex: 0,\n left: 0,\n top: 0,\n width,\n height\n };\n\n // Fill the container\n const canvasStyle = {\n left: 0,\n top: 0\n };\n\n if (style) {\n for (const key in style) {\n if (key in CANVAS_ONLY_STYLES) {\n // apply style to the canvas, but not deck's children, e.g. mix-blend-mode\n canvasStyle[key] = style[key];\n } else {\n // apply style to the container, e.g. position/flow settings\n containerStyle[key] = style[key];\n }\n }\n }\n\n return {containerStyle, canvasStyle};\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport React, {createElement} from 'react';\nimport PropTypes from 'prop-types';\nimport {Deck, _memoize as memoize} from '@deck.gl/core';\n\nimport extractJSXLayers from './utils/extract-jsx-layers';\nimport positionChildrenUnderViews from './utils/position-children-under-views';\nimport extractStyles from './utils/extract-styles';\n\nconst propTypes = Deck.getPropTypes(PropTypes);\n\nconst defaultProps = Deck.defaultProps;\n\nexport default class DeckGL extends React.Component {\n constructor(props) {\n super(props);\n\n this.viewports = null;\n this.children = null;\n\n // The redraw flag of deck\n this._needsRedraw = null;\n\n // Refs\n this._containerRef = React.createRef();\n this._canvasRef = React.createRef();\n\n // Bind public methods\n this.pickObject = this.pickObject.bind(this);\n this.pickMultipleObjects = this.pickMultipleObjects.bind(this);\n this.pickObjects = this.pickObjects.bind(this);\n\n // Memoized functions\n this._extractJSXLayers = memoize(extractJSXLayers);\n this._positionChildrenUnderViews = memoize(positionChildrenUnderViews);\n this._extractStyles = memoize(extractStyles);\n }\n\n componentDidMount() {\n // Allows a subclass of Deck to be used\n // TODO - update propTypes / defaultProps?\n const DeckClass = this.props.Deck || Deck;\n\n // DEVTOOLS can cause this to be called twice\n this.deck =\n this.deck ||\n new DeckClass(\n Object.assign({}, this.props, {\n parent: this._containerRef.current,\n canvas: this._canvasRef.current,\n style: null,\n width: '100%',\n height: '100%',\n // The Deck's animation loop is independent from React's render cycle, causing potential\n // synchronization issues. We provide this custom render function to make sure that React\n // and Deck update on the same schedule.\n _customRender: this._customRender.bind(this)\n })\n );\n this._updateFromProps(this.props);\n }\n\n // This method checks if React needs to call `render`.\n // Props changes may lead to 3 types of updates:\n // 1. Only the WebGL context - updated in Deck's render cycle (next animation frame)\n // 2. Only the DOM - updated in React's lifecycle (now)\n // 3. Both the WebGL context and the DOM - defer React rerender to next animation frame just\n // before Deck redraw to ensure perfect synchronization & avoid excessive redraw\n // This is because multiple changes may happen to Deck between two frames e.g. transition\n shouldComponentUpdate(nextProps) {\n // Update Deck's props. If Deck needs redraw, this will trigger a call to `_customRender` in\n // the next animation frame.\n this._updateFromProps(nextProps);\n\n // If the child components have changed, React needs to rerender (case 2 or 3)\n const childrenChanged = this.children !== this._parseJSX(nextProps).children;\n // If the views have changed, both React and WebGL context need update (case 3)\n const viewsChanged = this.deck.viewManager && this.deck.viewManager.needsRedraw();\n\n // Only call `render` right away in case 2\n return childrenChanged && !viewsChanged;\n }\n\n componentDidUpdate() {\n // render has just been called. The children are positioned based on the current view state.\n // Redraw Deck canvas immediately, if necessary, using the current view state, so that it\n // matches the child components.\n this._redrawDeck();\n }\n\n componentWillUnmount() {\n this.deck.finalize();\n }\n\n // Public API\n\n pickObject(opts) {\n return this.deck.pickObject(opts);\n }\n\n pickMultipleObjects(opts) {\n return this.deck.pickMultipleObjects(opts);\n }\n\n pickObjects(opts) {\n return this.deck.pickObjects(opts);\n }\n\n // Callbacks\n _redrawDeck() {\n if (this._needsRedraw) {\n // Only redraw it we have received a dirty flag\n this.deck._drawLayers(this._needsRedraw);\n this._needsRedraw = null;\n }\n }\n\n _customRender(redrawReason) {\n // Save the dirty flag for later\n this._needsRedraw = redrawReason;\n\n // Viewport/view state is passed to child components as props.\n // If they have changed, we need to trigger a React rerender to update children props.\n const viewports = this.deck.viewManager.getViewports();\n if (viewports !== this.viewports) {\n // Viewports have changed, update children props first.\n // This will delay the Deck canvas redraw till after React update (in componentDidUpdate)\n // so that the canvas does not get rendered before the child components update.\n this.forceUpdate();\n } else {\n this._redrawDeck();\n }\n }\n\n // Private Helpers\n\n _parseJSX(props) {\n return this._extractJSXLayers({\n layers: props.layers,\n views: props.views,\n children: props.children\n });\n }\n\n // 1. Extract any JSX layers from the react children\n // 2. Handle any backwards compatiblity props for React layer\n // Needs to be called both from initial mount, and when new props are received\n _updateFromProps(props) {\n // extract any deck.gl layers masquerading as react elements from props.children\n const {layers, views} = this._parseJSX(props);\n const deckProps = Object.assign({}, props, {\n // Override user styling props. We will set the canvas style in render()\n style: null,\n width: '100%',\n height: '100%',\n layers,\n views\n });\n\n this.deck.setProps(deckProps);\n }\n\n render() {\n const {ContextProvider, width, height, style} = this.props;\n // Save the viewports and children used for this render\n const {viewManager} = this.deck || {};\n this.viewports = viewManager && viewManager.getViewports();\n this.children = this._parseJSX(this.props).children;\n\n // Render the background elements (typically react-map-gl instances)\n // using the view descriptors\n const children = this._positionChildrenUnderViews({\n children: this.children,\n viewports: this.viewports,\n deck: this.deck,\n ContextProvider\n });\n\n const {containerStyle, canvasStyle} = this._extractStyles({width, height, style});\n\n const canvas = createElement('canvas', {\n key: 'canvas',\n ref: this._canvasRef,\n style: canvasStyle\n });\n\n // Render deck.gl as the last child\n return createElement(\n 'div',\n {id: 'deckgl-wrapper', ref: this._containerRef, style: containerStyle},\n [canvas, children]\n );\n }\n}\n\nDeckGL.propTypes = propTypes;\nDeckGL.defaultProps = defaultProps;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport Layer from './layer';\nimport debug from '../debug';\nimport {flatten} from '../utils/flatten';\n\nconst TRACE_RENDER_LAYERS = 'compositeLayer.renderLayers';\n\nexport default class CompositeLayer extends Layer {\n get isComposite() {\n return true;\n }\n\n getSubLayers() {\n return (this.internalState && this.internalState.subLayers) || [];\n }\n\n // initializeState is usually not needed for composite layers\n // Provide empty definition to disable check for missing definition\n initializeState() {}\n\n // Updates selected state members and marks the composite layer to need rerender\n setState(updateObject) {\n super.setState(updateObject);\n // Trigger a layer update\n // Although conceptually layer.draw and compositeLayer.renderLayers are equivalent,\n // they are executed during different lifecycles.\n // draw can be called without calling updateState (e.g. most viewport changes),\n // while renderLayers can only be called during a recursive layer update.\n this.setNeedsUpdate();\n }\n\n // called to augment the info object that is bubbled up from a sublayer\n // override Layer.getPickingInfo() because decoding / setting uniform do\n // not apply to a composite layer.\n // @return null to cancel event\n getPickingInfo({info}) {\n const {object} = info;\n const isDataWrapped =\n object && object.__source && object.__source.parent && object.__source.parent.id === this.id;\n\n if (!isDataWrapped) {\n return info;\n }\n\n return Object.assign(info, {\n // override object with picked data\n object: object.__source.object,\n index: object.__source.index\n });\n }\n\n // Implement to generate subLayers\n renderLayers() {\n return null;\n }\n\n // Returns true if sub layer needs to be rendered\n shouldRenderSubLayer(id, data) {\n const {_subLayerProps: overridingProps} = this.props;\n\n return (data && data.length) || (overridingProps && overridingProps[id]);\n }\n\n // Returns sub layer class for a specific sublayer\n getSubLayerClass(id, DefaultLayerClass) {\n const {_subLayerProps: overridingProps} = this.props;\n\n return (\n (overridingProps && overridingProps[id] && overridingProps[id].type) || DefaultLayerClass\n );\n }\n\n // When casting user data into another format to pass to sublayers,\n // add reference to the original object and object index\n getSubLayerRow(row, sourceObject, sourceObjectIndex) {\n row.__source = {\n parent: this,\n object: sourceObject,\n index: sourceObjectIndex\n };\n return row;\n }\n\n // Some composite layers cast user data into another format before passing to sublayers\n // We need to unwrap them before calling the accessor so that they see the original data\n // objects\n getSubLayerAccessor(accessor) {\n if (typeof accessor === 'function') {\n const objectInfo = {\n data: this.props.data,\n target: []\n };\n return (x, i) => {\n if (x.__source) {\n objectInfo.index = x.__source.index;\n return accessor(x.__source.object, objectInfo);\n }\n return accessor(x, i);\n };\n }\n return accessor;\n }\n\n // Returns sub layer props for a specific sublayer\n getSubLayerProps(sublayerProps = {}) {\n const {\n opacity,\n pickable,\n visible,\n parameters,\n getPolygonOffset,\n highlightedObjectIndex,\n autoHighlight,\n highlightColor,\n coordinateSystem,\n coordinateOrigin,\n wrapLongitude,\n positionFormat,\n modelMatrix,\n extensions,\n _subLayerProps: overridingProps\n } = this.props;\n const newProps = {\n opacity,\n pickable,\n visible,\n parameters,\n getPolygonOffset,\n highlightedObjectIndex,\n autoHighlight,\n highlightColor,\n coordinateSystem,\n coordinateOrigin,\n wrapLongitude,\n positionFormat,\n modelMatrix,\n extensions\n };\n\n const overridingSublayerProps = overridingProps && overridingProps[sublayerProps.id];\n const overridingSublayerTriggers =\n overridingSublayerProps && overridingSublayerProps.updateTriggers;\n const sublayerId = sublayerProps.id || 'sublayer';\n\n if (overridingSublayerProps) {\n const propTypes = this.constructor._propTypes;\n for (const key in overridingSublayerProps) {\n const propType = propTypes[key];\n // eslint-disable-next-line\n if (propType && propType.type === 'accessor') {\n overridingSublayerProps[key] = this.getSubLayerAccessor(overridingSublayerProps[key]);\n }\n }\n }\n\n Object.assign(\n newProps,\n sublayerProps,\n // experimental feature that allows users to override sublayer props via parent layer prop\n overridingSublayerProps,\n {\n id: `${this.props.id}-${sublayerId}`,\n updateTriggers: Object.assign(\n {\n all: this.props.updateTriggers.all\n },\n sublayerProps.updateTriggers,\n overridingSublayerTriggers\n )\n }\n );\n\n // Pass through extension props\n for (const extension of extensions) {\n const passThroughProps = extension.getSubLayerProps.call(this, extension);\n if (passThroughProps) {\n Object.assign(newProps, passThroughProps, {\n updateTriggers: Object.assign(newProps.updateTriggers, passThroughProps.updateTriggers)\n });\n }\n }\n\n return newProps;\n }\n\n _getAttributeManager() {\n return null;\n }\n\n // Called by layer manager to render subLayers\n _renderLayers() {\n let {subLayers} = this.internalState;\n const shouldUpdate = !subLayers || this.needsUpdate();\n if (shouldUpdate) {\n subLayers = this.renderLayers();\n // Flatten the returned array, removing any null, undefined or false\n // this allows layers to render sublayers conditionally\n // (see CompositeLayer.renderLayers docs)\n subLayers = flatten(subLayers, {filter: Boolean});\n this.internalState.subLayers = subLayers;\n }\n debug(TRACE_RENDER_LAYERS, this, shouldUpdate, subLayers);\n\n // populate reference to parent layer (this layer)\n // NOTE: needs to be done even when reusing layers as the parent may have changed\n for (const layer of subLayers) {\n layer.parent = this;\n }\n }\n}\n\nCompositeLayer.layerName = 'CompositeLayer';\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Layer, project32, picking} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry} from '@luma.gl/core';\n\nimport vs from './scatterplot-layer-vertex.glsl';\nimport fs from './scatterplot-layer-fragment.glsl';\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\n\nconst defaultProps = {\n radiusScale: {type: 'number', min: 0, value: 1},\n radiusMinPixels: {type: 'number', min: 0, value: 0}, // min point radius in pixels\n radiusMaxPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER}, // max point radius in pixels\n\n lineWidthUnits: 'meters',\n lineWidthScale: {type: 'number', min: 0, value: 1},\n lineWidthMinPixels: {type: 'number', min: 0, value: 0},\n lineWidthMaxPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER},\n\n stroked: false,\n filled: true,\n\n getPosition: {type: 'accessor', value: x => x.position},\n getRadius: {type: 'accessor', value: 1},\n getFillColor: {type: 'accessor', value: DEFAULT_COLOR},\n getLineColor: {type: 'accessor', value: DEFAULT_COLOR},\n getLineWidth: {type: 'accessor', value: 1},\n\n // deprecated\n strokeWidth: {deprecatedFor: 'getLineWidth'},\n outline: {deprecatedFor: 'stroked'},\n getColor: {deprecatedFor: ['getFillColor', 'getLineColor']}\n};\n\nexport default class ScatterplotLayer extends Layer {\n getShaders(id) {\n return super.getShaders({vs, fs, modules: [project32, picking]});\n }\n\n initializeState() {\n this.getAttributeManager().addInstanced({\n instancePositions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceRadius: {\n size: 1,\n transition: true,\n accessor: 'getRadius',\n defaultValue: 1\n },\n instanceFillColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getFillColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getLineColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineWidths: {\n size: 1,\n transition: true,\n accessor: 'getLineWidth',\n defaultValue: 1\n }\n });\n }\n\n updateState({props, oldProps, changeFlags}) {\n super.updateState({props, oldProps, changeFlags});\n if (changeFlags.extensionsChanged) {\n const {gl} = this.context;\n if (this.state.model) {\n this.state.model.delete();\n }\n this.setState({model: this._getModel(gl)});\n this.getAttributeManager().invalidateAll();\n }\n }\n\n draw({uniforms}) {\n const {viewport} = this.context;\n const {\n radiusScale,\n radiusMinPixels,\n radiusMaxPixels,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels\n } = this.props;\n\n const widthMultiplier = lineWidthUnits === 'pixels' ? viewport.metersPerPixel : 1;\n\n this.state.model\n .setUniforms(uniforms)\n .setUniforms({\n stroked: stroked ? 1 : 0,\n filled,\n radiusScale,\n radiusMinPixels,\n radiusMaxPixels,\n lineWidthScale: lineWidthScale * widthMultiplier,\n lineWidthMinPixels,\n lineWidthMaxPixels\n })\n .draw();\n }\n\n _getModel(gl) {\n // a square that minimally cover the unit circle\n const positions = [-1, -1, 0, -1, 1, 0, 1, 1, 0, 1, -1, 0];\n\n return new Model(\n gl,\n Object.assign(this.getShaders(), {\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_FAN,\n vertexCount: 4,\n attributes: {\n positions: {size: 3, value: new Float32Array(positions)}\n }\n }),\n isInstanced: true\n })\n );\n }\n}\n\nScatterplotLayer.layerName = 'ScatterplotLayer';\nScatterplotLayer.defaultProps = defaultProps;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME scatterplot-layer-vertex-shader\n\nattribute vec3 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceRadius;\nattribute float instanceLineWidths;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\nuniform float opacity;\nuniform float radiusScale;\nuniform float radiusMinPixels;\nuniform float radiusMaxPixels;\nuniform float lineWidthScale;\nuniform float lineWidthMinPixels;\nuniform float lineWidthMaxPixels;\nuniform float stroked;\nuniform bool filled;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n\n // Multiply out radius and clamp to limits\n outerRadiusPixels = clamp(\n project_size_to_pixel(radiusScale * instanceRadius),\n radiusMinPixels, radiusMaxPixels\n );\n \n // Multiply out line width and clamp to limits\n float lineWidthPixels = clamp(\n project_size_to_pixel(lineWidthScale * instanceLineWidths),\n lineWidthMinPixels, lineWidthMaxPixels\n );\n\n // outer radius needs to offset by half stroke width\n outerRadiusPixels += stroked * lineWidthPixels / 2.0;\n\n // position on the containing square in [-1, 1] space\n unitPosition = positions.xy;\n geometry.uv = unitPosition;\n geometry.pickingColor = instancePickingColors;\n\n innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\n \n vec3 offset = positions * project_pixel_size(outerRadiusPixels);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n // Apply opacity to instance color, or return instance picking color\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME scatterplot-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool filled;\nuniform float stroked;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\nvoid main(void) {\n geometry.uv = unitPosition;\n\n float distToCenter = length(unitPosition) * outerRadiusPixels;\n float inCircle = smoothedge(distToCenter, outerRadiusPixels);\n\n if (inCircle == 0.0) {\n discard;\n }\n\n if (stroked > 0.5) {\n float isLine = smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter);\n if (filled) {\n gl_FragColor = mix(vFillColor, vLineColor, isLine);\n } else {\n if (isLine == 0.0) {\n discard;\n }\n gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\n }\n } else if (filled) {\n gl_FragColor = vFillColor;\n } else {\n discard;\n }\n\n gl_FragColor.a *= inCircle;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {createIterable, getAccessorFromBuffer} from './iterable-utils';\nimport defaultTypedArrayManager from './typed-array-manager';\nimport assert from './assert';\n\nimport {Buffer} from '@luma.gl/core';\n\nexport default class Tesselator {\n constructor(opts = {}) {\n const {attributes = {}} = opts;\n\n this.typedArrayManager = defaultTypedArrayManager;\n this.indexStarts = null;\n this.vertexStarts = null;\n this.vertexCount = 0;\n this.instanceCount = 0;\n this.attributes = {};\n this._attributeDefs = attributes;\n this.opts = opts;\n\n this.updateGeometry(opts);\n\n Object.seal(this);\n }\n\n /* Public methods */\n updateGeometry(opts) {\n Object.assign(this.opts, opts);\n const {\n data,\n buffers = {},\n getGeometry,\n geometryBuffer,\n positionFormat,\n dataChanged,\n normalize = true\n } = this.opts;\n this.data = data;\n this.getGeometry = getGeometry;\n this.positionSize =\n (geometryBuffer && geometryBuffer.size) || (positionFormat === 'XY' ? 2 : 3);\n this.buffers = buffers;\n this.normalize = normalize;\n\n // Handle external logical value\n if (geometryBuffer) {\n assert(data.startIndices, 'binary data missing startIndices');\n this.getGeometry = this.getGeometryFromBuffer(geometryBuffer);\n\n if (!normalize) {\n // skip packing and set attribute value directly\n // TODO - avoid mutating user-provided object\n buffers.positions = geometryBuffer;\n }\n }\n this.geometryBuffer = buffers.positions;\n\n if (Array.isArray(dataChanged)) {\n // is partial update\n for (const dataRange of dataChanged) {\n this._rebuildGeometry(dataRange);\n }\n } else {\n this._rebuildGeometry();\n }\n }\n\n updatePartialGeometry({startRow, endRow}) {\n this._rebuildGeometry({startRow, endRow});\n }\n\n /* Subclass interface */\n\n // Update the positions of a single geometry\n updateGeometryAttributes(geometry, startIndex, size) {\n throw new Error('Not implemented');\n }\n\n // Returns the number of vertices in a geometry\n getGeometrySize(geometry) {\n throw new Error('Not implemented');\n }\n\n getGeometryFromBuffer(geometryBuffer) {\n const value = geometryBuffer.value || geometryBuffer;\n assert(ArrayBuffer.isView(value), 'cannot read geometries');\n\n return getAccessorFromBuffer(value, {\n size: this.positionSize,\n offset: geometryBuffer.offset,\n stride: geometryBuffer.stride,\n startIndices: this.data.startIndices\n });\n }\n\n /* Private utility methods */\n _allocate(instanceCount, copy) {\n // allocate attributes\n const {attributes, buffers, _attributeDefs, typedArrayManager} = this;\n for (const name in _attributeDefs) {\n if (name in buffers) {\n // Use external buffer\n typedArrayManager.release(attributes[name]);\n attributes[name] = null;\n } else {\n const def = _attributeDefs[name];\n // If dataRange is supplied, this is a partial update.\n // In case we need to reallocate the typed array, it will need the old values copied\n // before performing partial update.\n def.copy = copy;\n\n attributes[name] = typedArrayManager.allocate(attributes[name], instanceCount, def);\n }\n }\n }\n\n /**\n * Visit all objects\n * `data` is expected to be an iterable consistent with the base Layer expectation\n */\n _forEachGeometry(visitor, startRow, endRow) {\n const {data, getGeometry} = this;\n const {iterable, objectInfo} = createIterable(data, startRow, endRow);\n for (const object of iterable) {\n objectInfo.index++;\n const geometry = getGeometry(object, objectInfo);\n visitor(geometry, objectInfo.index);\n }\n }\n\n /* eslint-disable complexity,max-statements */\n _rebuildGeometry(dataRange) {\n if (!this.data || !this.getGeometry) {\n return;\n }\n\n let {indexStarts, vertexStarts, instanceCount} = this;\n const {data, geometryBuffer} = this;\n const {startRow = 0, endRow = Infinity} = dataRange || {};\n\n if (!dataRange) {\n // Full update - regenerate buffer layout from scratch\n indexStarts = [0];\n vertexStarts = [0];\n }\n if (this.normalize || !geometryBuffer) {\n this._forEachGeometry(\n (geometry, dataIndex) => {\n vertexStarts[dataIndex + 1] = vertexStarts[dataIndex] + this.getGeometrySize(geometry);\n },\n startRow,\n endRow\n );\n // count instances\n instanceCount = vertexStarts[vertexStarts.length - 1];\n } else if (geometryBuffer.buffer instanceof Buffer) {\n const byteStride = geometryBuffer.stride || this.positionSize * 4;\n // assume user provided data is already normalized\n vertexStarts = data.startIndices;\n instanceCount = vertexStarts[data.length] || geometryBuffer.buffer.byteLength / byteStride;\n } else {\n const bufferValue = geometryBuffer.value || geometryBuffer;\n const elementStride =\n geometryBuffer.stride / bufferValue.BYTES_PER_ELEMENT || this.positionSize;\n // assume user provided data is already normalized\n vertexStarts = data.startIndices;\n instanceCount = vertexStarts[data.length] || bufferValue.length / elementStride;\n }\n\n // allocate attributes\n this._allocate(instanceCount, Boolean(dataRange));\n\n this.indexStarts = indexStarts;\n this.vertexStarts = vertexStarts;\n this.instanceCount = instanceCount;\n\n const context = {};\n\n this._forEachGeometry(\n (geometry, dataIndex) => {\n context.vertexStart = vertexStarts[dataIndex];\n context.indexStart = indexStarts[dataIndex];\n const vertexEnd =\n dataIndex < vertexStarts.length - 1 ? vertexStarts[dataIndex + 1] : instanceCount;\n context.geometrySize = vertexEnd - vertexStarts[dataIndex];\n context.geometryIndex = dataIndex;\n this.updateGeometryAttributes(geometry, context);\n },\n startRow,\n endRow\n );\n\n this.vertexCount = indexStarts[indexStarts.length - 1];\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {Tesselator} from '@deck.gl/core';\n\nconst START_CAP = 1;\nconst END_CAP = 2;\nconst INVALID = 4;\n\n// This class is set up to allow querying one attribute at a time\n// the way the AttributeManager expects it\nexport default class PathTesselator extends Tesselator {\n constructor(opts) {\n super({\n ...opts,\n attributes: {\n positions: {size: 3, type: opts.fp64 ? Float64Array : Float32Array},\n segmentTypes: {size: 1, type: Uint8ClampedArray}\n }\n });\n }\n\n getGeometryFromBuffer(buffer) {\n if (this.normalize) {\n return super.getGeometryFromBuffer(buffer);\n }\n // we don't need to read the positions if no normalization\n return () => null;\n }\n\n /* Getters */\n get(attributeName) {\n return this.attributes[attributeName];\n }\n\n /* Implement base Tesselator interface */\n getGeometrySize(path) {\n if (!this.normalize) {\n const numPoints = path.length / this.positionSize;\n return this.opts.loop ? numPoints + 2 : numPoints;\n }\n\n const numPoints = this.getPathLength(path);\n if (numPoints < 2) {\n // invalid path\n return 0;\n }\n if (this.isClosed(path)) {\n // minimum 3 vertices\n return numPoints < 3 ? 0 : numPoints + 2;\n }\n return numPoints;\n }\n\n updateGeometryAttributes(path, context) {\n if (context.geometrySize === 0) {\n return;\n }\n this._updateSegmentTypes(path, context);\n this._updatePositions(path, context);\n }\n\n _updateSegmentTypes(path, context) {\n const {segmentTypes} = this.attributes;\n const isPathClosed = this.isClosed(path);\n const {vertexStart, geometrySize} = context;\n\n // positions -- A0 A1 B0 B1 B2 B3 B0 B1 B2 --\n // segmentTypes 3 4 4 0 0 0 0 4 4\n segmentTypes.fill(0, vertexStart, vertexStart + geometrySize);\n if (isPathClosed) {\n segmentTypes[vertexStart] = INVALID;\n segmentTypes[vertexStart + geometrySize - 2] = INVALID;\n } else {\n segmentTypes[vertexStart] += START_CAP;\n segmentTypes[vertexStart + geometrySize - 2] += END_CAP;\n }\n segmentTypes[vertexStart + geometrySize - 1] = INVALID;\n }\n\n _updatePositions(path, context) {\n const {positions} = this.attributes;\n if (!positions) {\n return;\n }\n const {vertexStart, geometrySize} = context;\n\n // positions -- A0 A1 B0 B1 B2 B3 B0 B1 B2 --\n // segmentTypes 3 4 4 0 0 0 0 4 4\n for (let i = vertexStart, ptIndex = 0; ptIndex < geometrySize; i++, ptIndex++) {\n const p = this.getPointOnPath(path, ptIndex);\n positions[i * 3] = p[0];\n positions[i * 3 + 1] = p[1];\n positions[i * 3 + 2] = p[2] || 0;\n }\n }\n\n /* Utilities */\n getPathLength(path) {\n if (Number.isFinite(path[0])) {\n // flat format\n return path.length / this.positionSize;\n }\n return path.length;\n }\n\n getPointOnPath(path, index) {\n if (Number.isFinite(path[0])) {\n // flat format\n const {positionSize} = this;\n if (index * positionSize >= path.length) {\n // loop\n index += 1 - path.length / positionSize;\n }\n // TODO - avoid creating new arrays when using binary\n return [\n path[index * positionSize],\n path[index * positionSize + 1],\n positionSize === 3 ? path[index * positionSize + 2] : 0\n ];\n }\n if (index >= path.length) {\n // loop\n index += 1 - path.length;\n }\n return path[index];\n }\n\n isClosed(path) {\n if (!this.normalize) {\n return this.opts.loop;\n }\n const numPoints = this.getPathLength(path);\n const firstPoint = this.getPointOnPath(path, 0);\n const lastPoint = this.getPointOnPath(path, numPoints - 1);\n return (\n firstPoint[0] === lastPoint[0] &&\n firstPoint[1] === lastPoint[1] &&\n firstPoint[2] === lastPoint[2]\n );\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Layer, project32, picking, log} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry} from '@luma.gl/core';\n\nimport PathTesselator from './path-tesselator';\n\nimport vs from './path-layer-vertex.glsl';\nimport fs from './path-layer-fragment.glsl';\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\n\nconst defaultProps = {\n widthUnits: 'meters',\n widthScale: {type: 'number', min: 0, value: 1}, // stroke width in meters\n widthMinPixels: {type: 'number', min: 0, value: 0}, // min stroke width in pixels\n widthMaxPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER}, // max stroke width in pixels\n rounded: false,\n miterLimit: {type: 'number', min: 0, value: 4},\n billboard: false,\n // `loop` or `open`\n _pathType: null,\n\n getPath: {type: 'accessor', value: object => object.path},\n getColor: {type: 'accessor', value: DEFAULT_COLOR},\n getWidth: {type: 'accessor', value: 1}\n};\n\nconst ATTRIBUTE_TRANSITION = {\n enter: (value, chunk) => {\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\n\nexport default class PathLayer extends Layer {\n getShaders() {\n return super.getShaders({vs, fs, modules: [project32, picking]}); // 'project' module added by default.\n }\n\n initializeState() {\n const noAlloc = true;\n const attributeManager = this.getAttributeManager();\n /* eslint-disable max-len */\n attributeManager.addInstanced({\n positions: {\n size: 3,\n // Start filling buffer from 1 vertex in\n vertexOffset: 1,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getPath',\n update: this.calculatePositions,\n noAlloc,\n shaderAttributes: {\n instanceLeftPositions: {\n vertexOffset: 0\n },\n instanceStartPositions: {\n vertexOffset: 1\n },\n instanceEndPositions: {\n vertexOffset: 2\n },\n instanceRightPositions: {\n vertexOffset: 3\n }\n }\n },\n instanceTypes: {\n size: 1,\n type: GL.UNSIGNED_BYTE,\n update: this.calculateSegmentTypes,\n noAlloc\n },\n instanceStrokeWidths: {\n size: 1,\n accessor: 'getWidth',\n transition: ATTRIBUTE_TRANSITION,\n defaultValue: 1\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n accessor: 'getColor',\n transition: ATTRIBUTE_TRANSITION,\n defaultValue: DEFAULT_COLOR\n },\n instancePickingColors: {\n size: 3,\n type: GL.UNSIGNED_BYTE,\n accessor: (object, {index, target: value}) => this.encodePickingColor(index, value)\n }\n });\n /* eslint-enable max-len */\n\n this.setState({\n pathTesselator: new PathTesselator({\n fp64: this.use64bitPositions()\n })\n });\n\n if (this.props.getDashArray && !this.props.extensions.length) {\n log.removed('getDashArray', 'PathStyleExtension')();\n }\n }\n\n updateState({oldProps, props, changeFlags}) {\n super.updateState({props, oldProps, changeFlags});\n\n const attributeManager = this.getAttributeManager();\n\n const geometryChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPath));\n\n if (geometryChanged) {\n const {pathTesselator} = this.state;\n const buffers = props.data.attributes || {};\n pathTesselator.updateGeometry({\n data: props.data,\n geometryBuffer: buffers.getPath,\n buffers,\n normalize: !props._pathType,\n loop: props._pathType === 'loop',\n getGeometry: props.getPath,\n positionFormat: props.positionFormat,\n dataChanged: changeFlags.dataChanged\n });\n this.setState({\n numInstances: pathTesselator.instanceCount,\n startIndices: pathTesselator.vertexStarts\n });\n if (!changeFlags.dataChanged) {\n // Base `layer.updateState` only invalidates all attributes on data change\n // Cover the rest of the scenarios here\n attributeManager.invalidateAll();\n }\n }\n\n if (changeFlags.extensionsChanged) {\n const {gl} = this.context;\n if (this.state.model) {\n this.state.model.delete();\n }\n this.setState({model: this._getModel(gl)});\n attributeManager.invalidateAll();\n }\n }\n\n draw({uniforms}) {\n const {viewport} = this.context;\n const {\n rounded,\n billboard,\n miterLimit,\n widthUnits,\n widthScale,\n widthMinPixels,\n widthMaxPixels\n } = this.props;\n\n const widthMultiplier = widthUnits === 'pixels' ? viewport.metersPerPixel : 1;\n\n this.state.model\n .setUniforms(\n Object.assign({}, uniforms, {\n jointType: Number(rounded),\n billboard,\n widthScale: widthScale * widthMultiplier,\n miterLimit,\n widthMinPixels,\n widthMaxPixels\n })\n )\n .draw();\n }\n\n _getModel(gl) {\n /*\n * _\n * \"-_ 1 3 5\n * _ \"o---------------------o-------------------_-o\n * - / \"\"--..__ '. _.-' /\n * _ \"@- - - - - \"\"--..__- - - - x - - - -_.@' /\n * \"-_ / \"\"--..__ '. _,-` : /\n * \"o----------------------------\"\"-o' : /\n * 0,2 4 / '. : /\n * / '.: /\n * / :'. /\n * / : ', /\n * / : o\n */\n\n const SEGMENT_INDICES = [\n // start corner\n 0,\n 2,\n 1,\n // body\n 1,\n 2,\n 4,\n 1,\n 4,\n 3,\n // end corner\n 3,\n 4,\n 5\n ];\n\n // [0] position on segment - 0: start, 1: end\n // [1] side of path - -1: left, 0: center, 1: right\n // [2] role - 0: offset point 1: joint point\n const SEGMENT_POSITIONS = [\n // bevel start corner\n 0,\n 0,\n 1,\n // start inner corner\n 0,\n -1,\n 0,\n // start outer corner\n 0,\n 1,\n 0,\n // end inner corner\n 1,\n -1,\n 0,\n // end outer corner\n 1,\n 1,\n 0,\n // bevel end corner\n 1,\n 0,\n 1\n ];\n\n return new Model(\n gl,\n Object.assign({}, this.getShaders(), {\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: {\n indices: new Uint16Array(SEGMENT_INDICES),\n positions: new Float32Array(SEGMENT_POSITIONS)\n }\n }),\n isInstanced: true\n })\n );\n }\n\n calculatePositions(attribute) {\n const {pathTesselator} = this.state;\n\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get('positions');\n }\n\n calculateSegmentTypes(attribute) {\n const {pathTesselator} = this.state;\n\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get('segmentTypes');\n }\n}\n\nPathLayer.layerName = 'PathLayer';\nPathLayer.defaultProps = defaultProps;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME path-layer-vertex-shader\n\nattribute vec3 positions;\n\nattribute float instanceTypes;\nattribute vec3 instanceStartPositions;\nattribute vec3 instanceEndPositions;\nattribute vec3 instanceLeftPositions;\nattribute vec3 instanceRightPositions;\nattribute vec3 instanceLeftPositions64Low;\nattribute vec3 instanceStartPositions64Low;\nattribute vec3 instanceEndPositions64Low;\nattribute vec3 instanceRightPositions64Low;\nattribute float instanceStrokeWidths;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\n\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform float jointType;\nuniform float miterLimit;\nuniform bool billboard;\n\nuniform float opacity;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\nvarying vec2 vPathPosition;\nvarying float vPathLength;\n\nconst float EPSILON = 0.001;\nconst vec3 ZERO_OFFSET = vec3(0.0);\n\nfloat flipIfTrue(bool flag) {\n return -(float(flag) * 2. - 1.);\n}\n\n// calculate line join positions\nvec3 lineJoin(\n vec3 prevPoint, vec3 currPoint, vec3 nextPoint,\n float relativePosition, bool isEnd, bool isJoint,\n vec2 width, vec2 widthPixels\n) {\n vec2 deltaA = (currPoint.xy - prevPoint.xy) / width;\n vec2 deltaB = (nextPoint.xy - currPoint.xy) / width;\n\n float lenA = length(deltaA);\n float lenB = length(deltaB);\n\n // when two points are closer than PIXEL_EPSILON in pixels,\n // assume they are the same point to avoid precision issue\n lenA = lenA > EPSILON ? lenA : 0.0;\n lenB = lenB > EPSILON ? lenB : 0.0;\n\n vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0);\n vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0);\n\n vec2 perpA = vec2(-dirA.y, dirA.x);\n vec2 perpB = vec2(-dirB.y, dirB.x);\n\n // tangent of the corner\n vec2 tangent = vec2(dirA + dirB);\n tangent = length(tangent) > 0. ? normalize(tangent) : perpA;\n // direction of the corner\n vec2 miterVec = vec2(-tangent.y, tangent.x);\n // width offset from current position\n vec2 perp = isEnd ? perpA : perpB;\n float L = isEnd ? lenA : lenB;\n\n // cap super sharp angles\n float sinHalfA = abs(dot(miterVec, perp));\n float cosHalfA = abs(dot(dirA, miterVec));\n\n bool turnsRight = dirA.x * dirB.y > dirA.y * dirB.x;\n\n float offsetScale = 1.0 / max(sinHalfA, EPSILON);\n\n float cornerPosition = isJoint ?\n 0.0 :\n flipIfTrue(turnsRight == (relativePosition > 0.0));\n\n // do not bevel if line segment is too short\n cornerPosition *=\n float(cornerPosition <= 0.0 || sinHalfA < min(lenA, lenB) * cosHalfA);\n\n // trim if inside corner extends further than the line segment\n if (cornerPosition < 0.0) {\n offsetScale = min(offsetScale, L / max(cosHalfA, EPSILON));\n }\n\n vMiterLength = cornerPosition >= 0.0 ?\n mix(offsetScale, 0.0, cornerPosition) :\n offsetScale * cornerPosition;\n vMiterLength -= sinHalfA * jointType;\n\n float offsetDirection = mix(\n positions.y,\n mix(\n flipIfTrue(turnsRight),\n positions.y * flipIfTrue(turnsRight == (positions.x == 1.)),\n cornerPosition\n ),\n step(0.0, cornerPosition)\n );\n\n vec2 offsetVec = mix(miterVec, -tangent, step(0.5, cornerPosition));\n offsetScale = mix(offsetScale, 1.0 / max(cosHalfA, 0.001), step(0.5, cornerPosition));\n\n // special treatment for start cap and end cap\n bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0));\n bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0));\n bool isCap = isStartCap || isEndCap;\n\n // 0: center, 1: side\n cornerPosition = isCap ? (1.0 - positions.z) : 0.;\n\n // start of path: use next - curr\n if (isStartCap) {\n offsetVec = mix(dirB, perpB, cornerPosition);\n }\n\n // end of path: use curr - prev\n if (isEndCap) {\n offsetVec = mix(dirA, perpA, cornerPosition);\n }\n\n // extend out a triangle to envelope the round cap\n if (isCap) {\n offsetScale = mix(4.0 * jointType, 1.0, cornerPosition);\n vMiterLength = 1.0 - cornerPosition;\n offsetDirection = mix(flipIfTrue(isStartCap), positions.y, cornerPosition);\n }\n\n vCornerOffset = offsetVec * offsetDirection * offsetScale;\n\n // Generate variables for dash calculation\n vPathLength = L;\n // vec2 offsetFromStartOfPath = isEnd ? vCornerOffset + deltaA : vCornerOffset;\n vec2 offsetFromStartOfPath = vCornerOffset;\n if (isEnd) {\n offsetFromStartOfPath += deltaA;\n }\n vec2 dir = isEnd ? dirA : dirB;\n vPathPosition = vec2(\n positions.y + positions.z * offsetDirection,\n dot(offsetFromStartOfPath, dir)\n );\n geometry.uv = vPathPosition;\n\n float isValid = step(instanceTypes, 3.5);\n vec3 offset = vec3(vCornerOffset * widthPixels * isValid, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n return currPoint + vec3(offset.xy / widthPixels * width, 0.0);\n}\n\n// calculate line join positions\n// extract params from attributes and uniforms\nvec3 lineJoin(vec3 prevPoint, vec3 currPoint, vec3 nextPoint) {\n\n // relative position to the corner:\n // -1: inside (smaller side of the angle)\n // 0: center\n // 1: outside (bigger side of the angle)\n\n float relativePosition = positions.y;\n bool isEnd = positions.x > EPSILON;\n bool isJoint = positions.z > EPSILON;\n\n vec2 widthPixels = vec2(clamp(project_size_to_pixel(instanceStrokeWidths * widthScale),\n widthMinPixels, widthMaxPixels) / 2.0);\n\n vec2 width = billboard ? project_pixel_size_to_clipspace(widthPixels) : project_pixel_size(widthPixels);\n\n return lineJoin(\n prevPoint, currPoint, nextPoint,\n relativePosition, isEnd, isJoint,\n width, widthPixels\n );\n}\n\n// In clipspace extrusion, if a line extends behind the camera, clip it to avoid visual artifacts\nvoid clipLine(inout vec4 position, vec4 refPosition) {\n if (position.w < EPSILON) {\n float r = (EPSILON - refPosition.w) / (position.w - refPosition.w);\n position = refPosition + (position - refPosition) * r;\n }\n}\n\nvoid main() {\n geometry.worldPosition = instanceStartPositions;\n geometry.worldPositionAlt = instanceEndPositions;\n geometry.pickingColor = instancePickingColors;\n\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\n\n float isEnd = positions.x;\n\n vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd);\n vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd);\n\n vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\n vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd);\n\n vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd);\n vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd);\n\n if (billboard) {\n // Extrude in clipspace\n vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET);\n vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position);\n vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET);\n\n clipLine(prevPositionScreen, currPositionScreen);\n clipLine(nextPositionScreen, currPositionScreen);\n clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd));\n\n vec3 pos = lineJoin(\n prevPositionScreen.xyz / prevPositionScreen.w,\n currPositionScreen.xyz / currPositionScreen.w,\n nextPositionScreen.xyz / nextPositionScreen.w\n );\n\n gl_Position = vec4(pos * currPositionScreen.w, currPositionScreen.w);\n } else {\n // Extrude in commonspace\n prevPosition = project_position(prevPosition, prevPosition64Low);\n currPosition = project_position(currPosition, currPosition64Low);\n nextPosition = project_position(nextPosition, nextPosition64Low);\n\n vec4 pos = vec4(\n lineJoin(prevPosition, currPosition, nextPosition),\n 1.0);\n geometry.position = pos;\n gl_Position = project_common_position_to_clipspace(pos);\n }\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME path-layer-fragment-shader\n\nprecision highp float;\n\nuniform float jointType;\nuniform float miterLimit;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\n/*\n * vPathPosition represents the relative coordinates of the current fragment on the path segment.\n * vPathPosition.x - position along the width of the path, between [-1, 1]. 0 is the center line.\n * vPathPosition.y - position along the length of the path, between [0, L / width].\n */\nvarying vec2 vPathPosition;\nvarying float vPathLength;\n\nvoid main(void) {\n geometry.uv = vPathPosition;\n\n // if joint is rounded, test distance from the corner\n if (jointType > 0.0 && vMiterLength > 0.0 && length(vCornerOffset) > 1.0) {\n // Enable to debug joints\n // gl_FragColor = vec4(0., 1., 0., 1.);\n // return;\n discard;\n }\n if (jointType == 0.0 && vMiterLength > miterLimit) {\n // Enable to debug joints\n // gl_FragColor = vec4(0., 0., 1., 1.);\n // return;\n discard;\n }\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable max-params */\nimport earcut from 'earcut';\n\n// For Web Mercator projection\nconst PI_4 = Math.PI / 4;\nconst DEGREES_TO_RADIANS_HALF = Math.PI / 360;\n\n// 4 data formats are supported:\n// Simple Polygon: an array of points\n// Complex Polygon: an array of array of points (array of rings)\n// with the first ring representing the outer hull and other rings representing holes\n// Simple Flat: an array of numbers (flattened \"simple polygon\")\n// Complex Flat: {position: array<number>, holeIndices: array<number>}\n// (flattened \"complex polygon\")\n\n/**\n * Ensure a polygon is valid format\n * @param {Array|Object} polygon\n */\nfunction validate(polygon) {\n polygon = (polygon && polygon.positions) || polygon;\n if (!Array.isArray(polygon) && !ArrayBuffer.isView(polygon)) {\n throw new Error('invalid polygon');\n }\n}\n\n/**\n * Check if a polygon is simple or complex\n * @param {Array} polygon - either a complex or simple polygon\n * @return {Boolean} - true if the polygon is a simple polygon (i.e. not an array of polygons)\n */\nfunction isSimple(polygon) {\n return polygon.length >= 1 && polygon[0].length >= 2 && Number.isFinite(polygon[0][0]);\n}\n\n/**\n * Check if a simple polygon is a closed ring\n * @param {Array} simplePolygon - array of points\n * @return {Boolean} - true if the simple polygon is a closed ring\n */\nfunction isNestedRingClosed(simplePolygon) {\n // check if first and last vertex are the same\n const p0 = simplePolygon[0];\n const p1 = simplePolygon[simplePolygon.length - 1];\n\n return p0[0] === p1[0] && p0[1] === p1[1] && p0[2] === p1[2];\n}\n\n/**\n * Check if a simple flat array is a closed ring\n * @param {Array} positions - array of numbers\n * @param {Number} size - size of a position, 2 (xy) or 3 (xyz)\n * @param {Number} startIndex - start index of the path in the positions array\n * @param {Number} endIndex - end index of the path in the positions array\n * @return {Boolean} - true if the simple flat array is a closed ring\n */\nfunction isFlatRingClosed(positions, size, startIndex, endIndex) {\n for (let i = 0; i < size; i++) {\n if (positions[startIndex + i] !== positions[endIndex - size + i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Copy a simple polygon coordinates into a flat array, closes the ring if needed.\n * @param {Float64Array} target - destination\n * @param {Number} targetStartIndex - index in the destination to start copying into\n * @param {Array} simplePolygon - array of points\n * @param {Number} size - size of a position, 2 (xy) or 3 (xyz)\n * @returns {Number} - the index of the write head in the destination\n */\nfunction copyNestedRing(target, targetStartIndex, simplePolygon, size) {\n let targetIndex = targetStartIndex;\n const len = simplePolygon.length;\n for (let i = 0; i < len; i++) {\n for (let j = 0; j < size; j++) {\n target[targetIndex++] = simplePolygon[i][j] || 0;\n }\n }\n\n if (!isNestedRingClosed(simplePolygon)) {\n for (let j = 0; j < size; j++) {\n target[targetIndex++] = simplePolygon[0][j] || 0;\n }\n }\n return targetIndex;\n}\n\n/**\n * Copy a simple flat array into another flat array, closes the ring if needed.\n * @param {Float64Array} target - destination\n * @param {Number} targetStartIndex - index in the destination to start copying into\n * @param {Array} positions - array of numbers\n * @param {Number} size - size of a position, 2 (xy) or 3 (xyz)\n * @param {Number} [srcStartIndex] - start index of the path in the positions array\n * @param {Number} [srcEndIndex] - end index of the path in the positions array\n * @returns {Number} - the index of the write head in the destination\n */\nfunction copyFlatRing(target, targetStartIndex, positions, size, srcStartIndex = 0, srcEndIndex) {\n srcEndIndex = srcEndIndex || positions.length;\n const srcLength = srcEndIndex - srcStartIndex;\n if (srcLength <= 0) {\n return targetStartIndex;\n }\n let targetIndex = targetStartIndex;\n\n for (let i = 0; i < srcLength; i++) {\n target[targetIndex++] = positions[srcStartIndex + i];\n }\n\n if (!isFlatRingClosed(positions, size, srcStartIndex, srcEndIndex)) {\n for (let i = 0; i < size; i++) {\n target[targetIndex++] = positions[srcStartIndex + i];\n }\n }\n return targetIndex;\n}\n\n/**\n * Counts the number of vertices in a simple polygon, closes the polygon if needed.\n * @param {Array} simplePolygon - array of points\n * @returns {Number} vertex count\n */\nfunction getNestedVertexCount(simplePolygon) {\n return (isNestedRingClosed(simplePolygon) ? 0 : 1) + simplePolygon.length;\n}\n\n/**\n * Counts the number of vertices in a simple flat array, closes the polygon if needed.\n * @param {Array} positions - array of numbers\n * @param {Number} size - size of a position, 2 (xy) or 3 (xyz)\n * @param {Number} [startIndex] - start index of the path in the positions array\n * @param {Number} [endIndex] - end index of the path in the positions array\n * @returns {Number} vertex count\n */\nfunction getFlatVertexCount(positions, size, startIndex = 0, endIndex) {\n endIndex = endIndex || positions.length;\n if (startIndex >= endIndex) {\n return 0;\n }\n return (\n (isFlatRingClosed(positions, size, startIndex, endIndex) ? 0 : 1) +\n (endIndex - startIndex) / size\n );\n}\n\n/**\n * Counts the number of vertices in any polygon representation.\n * @param {Array|Object} polygon\n * @param {Number} positionSize - size of a position, 2 (xy) or 3 (xyz)\n * @returns {Number} vertex count\n */\nexport function getVertexCount(polygon, positionSize, normalization = true) {\n if (!normalization) {\n polygon = polygon.positions || polygon;\n return polygon.length / positionSize;\n }\n\n validate(polygon);\n\n if (polygon.positions) {\n // complex flat\n const {positions, holeIndices} = polygon;\n\n if (holeIndices) {\n let vertexCount = 0;\n // split the positions array into `holeIndices.length + 1` rings\n // holeIndices[-1] falls back to 0\n // holeIndices[holeIndices.length] falls back to positions.length\n for (let i = 0; i <= holeIndices.length; i++) {\n vertexCount += getFlatVertexCount(\n polygon.positions,\n positionSize,\n holeIndices[i - 1],\n holeIndices[i]\n );\n }\n return vertexCount;\n }\n polygon = positions;\n }\n if (Number.isFinite(polygon[0])) {\n // simple flat\n return getFlatVertexCount(polygon, positionSize);\n }\n if (!isSimple(polygon)) {\n // complex polygon\n let vertexCount = 0;\n for (const simplePolygon of polygon) {\n vertexCount += getNestedVertexCount(simplePolygon);\n }\n return vertexCount;\n }\n // simple polygon\n return getNestedVertexCount(polygon);\n}\n\n/**\n * Normalize any polygon representation into the \"complex flat\" format\n * @param {Array|Object} polygon\n * @param {Number} positionSize - size of a position, 2 (xy) or 3 (xyz)\n * @param {Number} [vertexCount] - pre-computed vertex count in the polygon.\n * If provided, will skip counting.\n * @return {Object} - {positions: <Float64Array>, holeIndices: <Array|null>}\n */\n/* eslint-disable max-statements */\nexport function normalize(polygon, positionSize, vertexCount) {\n validate(polygon);\n\n vertexCount = vertexCount || getVertexCount(polygon, positionSize);\n\n const positions = new Float64Array(vertexCount * positionSize);\n const holeIndices = [];\n\n if (polygon.positions) {\n // complex flat\n const {positions: srcPositions, holeIndices: srcHoleIndices} = polygon;\n\n if (srcHoleIndices) {\n let targetIndex = 0;\n // split the positions array into `holeIndices.length + 1` rings\n // holeIndices[-1] falls back to 0\n // holeIndices[holeIndices.length] falls back to positions.length\n for (let i = 0; i <= srcHoleIndices.length; i++) {\n targetIndex = copyFlatRing(\n positions,\n targetIndex,\n srcPositions,\n positionSize,\n srcHoleIndices[i - 1],\n srcHoleIndices[i]\n );\n holeIndices.push(targetIndex);\n }\n // The last one is not a starting index of a hole, remove\n holeIndices.pop();\n\n return {positions, holeIndices};\n }\n polygon = srcPositions;\n }\n if (Number.isFinite(polygon[0])) {\n // simple flat\n copyFlatRing(positions, 0, polygon, positionSize);\n return positions;\n }\n if (!isSimple(polygon)) {\n // complex polygon\n let targetIndex = 0;\n\n for (const simplePolygon of polygon) {\n targetIndex = copyNestedRing(positions, targetIndex, simplePolygon, positionSize);\n holeIndices.push(targetIndex);\n }\n // The last one is not a starting index of a hole, remove\n holeIndices.pop();\n // last index points to the end of the array, remove it\n return {positions, holeIndices};\n }\n // simple polygon\n copyNestedRing(positions, 0, polygon, positionSize);\n return positions;\n}\n/* eslint-enable max-statements */\n\n/*\n * Get vertex indices for drawing polygon mesh\n * @param {Object} normalizedPolygon - {positions, holeIndices}\n * @param {Number} positionSize - size of a position, 2 (xy) or 3 (xyz)\n * @returns {Array} array of indices\n */\nexport function getSurfaceIndices(normalizedPolygon, positionSize, preproject) {\n let holeIndices = null;\n\n if (normalizedPolygon.holeIndices) {\n holeIndices = normalizedPolygon.holeIndices.map(positionIndex => positionIndex / positionSize);\n }\n let positions = normalizedPolygon.positions || normalizedPolygon;\n\n // TODO - handle other coordinate systems and projection modes\n if (preproject) {\n // When tesselating lnglat coordinates, project them to the Web Mercator plane for accuracy\n const n = positions.length;\n // Clone the array\n positions = positions.slice();\n for (let i = 0; i < n; i += positionSize) {\n // project points to a scaled version of the web-mercator plane\n // It doesn't matter if x and y are scaled/translated, but the relationship must be linear\n const y = positions[i + 1];\n positions[i + 1] = Math.log(Math.tan(PI_4 + y * DEGREES_TO_RADIANS_HALF));\n }\n }\n\n // Let earcut triangulate the polygon\n return earcut(positions, holeIndices, positionSize);\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Handles tesselation of polygons with holes\n// - 2D surfaces\n// - 2D outlines\n// - 3D surfaces (top and sides only)\n// - 3D wireframes (not yet)\nimport * as Polygon from './polygon';\nimport {Tesselator} from '@deck.gl/core';\n\n// This class is set up to allow querying one attribute at a time\n// the way the AttributeManager expects it\nexport default class PolygonTesselator extends Tesselator {\n constructor(opts) {\n const {fp64, IndexType = Uint32Array} = opts;\n super({\n ...opts,\n attributes: {\n positions: {size: 3, type: fp64 ? Float64Array : Float32Array},\n vertexValid: {type: Uint8ClampedArray, size: 1},\n indices: {type: IndexType, size: 1}\n }\n });\n }\n\n /* Getters */\n get(attributeName) {\n const {attributes} = this;\n if (attributeName === 'indices') {\n return attributes.indices && attributes.indices.subarray(0, this.vertexCount);\n }\n\n return attributes[attributeName];\n }\n\n /* Implement base Tesselator interface */\n updateGeometry(opts) {\n super.updateGeometry(opts);\n\n const externalIndices = this.buffers.indices;\n if (externalIndices) {\n this.vertexCount = (externalIndices.value || externalIndices).length;\n }\n }\n\n getGeometrySize(polygon) {\n return Polygon.getVertexCount(polygon, this.positionSize, this.normalize);\n }\n\n getGeometryFromBuffer(buffer) {\n if (this.normalize || !this.buffers.indices) {\n return super.getGeometryFromBuffer(buffer);\n }\n // we don't need to read the positions if no normalization/tesselation\n return () => null;\n }\n\n updateGeometryAttributes(polygon, context) {\n if (this.normalize) {\n polygon = Polygon.normalize(polygon, this.positionSize, context.geometrySize);\n }\n\n this._updateIndices(polygon, context);\n this._updatePositions(polygon, context);\n this._updateVertexValid(polygon, context);\n }\n\n // Flatten the indices array\n _updateIndices(polygon, {geometryIndex, vertexStart: offset, indexStart}) {\n const {attributes, indexStarts, typedArrayManager} = this;\n\n let target = attributes.indices;\n if (!target) {\n return;\n }\n let i = indexStart;\n\n // 1. get triangulated indices for the internal areas\n const indices = Polygon.getSurfaceIndices(polygon, this.positionSize, this.opts.preproject);\n\n // make sure the buffer is large enough\n target = typedArrayManager.allocate(target, indexStart + indices.length, {\n copy: true\n });\n\n // 2. offset each index by the number of indices in previous polygons\n for (let j = 0; j < indices.length; j++) {\n target[i++] = indices[j] + offset;\n }\n\n indexStarts[geometryIndex + 1] = indexStart + indices.length;\n attributes.indices = target;\n }\n\n // Flatten out all the vertices of all the sub subPolygons\n _updatePositions(polygon, {vertexStart, geometrySize}) {\n const {\n attributes: {positions},\n positionSize\n } = this;\n if (!positions) {\n return;\n }\n const polygonPositions = polygon.positions || polygon;\n\n for (let i = vertexStart, j = 0; j < geometrySize; i++, j++) {\n const x = polygonPositions[j * positionSize];\n const y = polygonPositions[j * positionSize + 1];\n const z = positionSize > 2 ? polygonPositions[j * positionSize + 2] : 0;\n\n positions[i * 3] = x;\n positions[i * 3 + 1] = y;\n positions[i * 3 + 2] = z;\n }\n }\n\n _updateVertexValid(polygon, {vertexStart, geometrySize}) {\n const {\n attributes: {vertexValid},\n positionSize\n } = this;\n const holeIndices = polygon && polygon.holeIndices;\n /* We are reusing the some buffer for `nextPositions` by offseting one vertex\n * to the left. As a result,\n * the last vertex of each ring overlaps with the first vertex of the next ring.\n * `vertexValid` is used to mark the end of each ring so we don't draw these\n * segments:\n positions A0 A1 A2 A3 A4 B0 B1 B2 C0 ...\n nextPositions A1 A2 A3 A4 B0 B1 B2 C0 C1 ...\n vertexValid 1 1 1 1 0 1 1 0 1 ...\n */\n vertexValid.fill(1, vertexStart, vertexStart + geometrySize);\n if (holeIndices) {\n for (let j = 0; j < holeIndices.length; j++) {\n vertexValid[vertexStart + holeIndices[j] / positionSize - 1] = 0;\n }\n }\n vertexValid[vertexStart + geometrySize - 1] = 0;\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n\nattribute vec2 vertexPositions;\nattribute float vertexValid;\n\nuniform bool extruded;\nuniform bool isWireframe;\nuniform float elevationScale;\nuniform float opacity;\n\nvarying vec4 vColor;\nvarying float isValid;\n\nstruct PolygonProps {\n vec4 fillColors;\n vec4 lineColors;\n vec3 positions;\n vec3 nextPositions;\n vec3 pickingColors;\n vec3 positions64Low;\n vec3 nextPositions64Low;\n float elevations;\n};\n\nvec3 project_offset_normal(vec3 vector) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\n // normals generated by the polygon tesselator are in lnglat offsets instead of meters\n return normalize(vector * project_uCommonUnitsPerWorldUnit);\n }\n return project_normal(vector);\n}\n\nvoid calculatePosition(PolygonProps props) {\n vec3 pos;\n vec3 pos64Low;\n vec3 normal;\n vec4 colors = isWireframe ? props.lineColors : props.fillColors;\n\n geometry.worldPosition = props.positions;\n geometry.worldPositionAlt = props.nextPositions;\n geometry.pickingColor = props.pickingColors;\n\n#ifdef IS_SIDE_VERTEX\n pos = mix(props.positions, props.nextPositions, vertexPositions.x);\n pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x);\n isValid = vertexValid;\n#else\n pos = props.positions;\n pos64Low = props.positions64Low;\n isValid = 1.0;\n#endif\n\n if (extruded) {\n pos.z += props.elevations * vertexPositions.y * elevationScale;\n \n#ifdef IS_SIDE_VERTEX\n normal = vec3(props.positions.y - props.nextPositions.y, props.nextPositions.x - props.positions.x, 0.0);\n normal = project_offset_normal(normal);\n#else\n normal = vec3(0.0, 0.0, 1.0);\n#endif\n geometry.normal = normal;\n }\n\n gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n if (extruded) {\n vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal);\n vColor = vec4(lightColor, colors.a * opacity);\n } else {\n vColor = vec4(colors.rgb, colors.a * opacity);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport main from './solid-polygon-layer-vertex-main.glsl';\n\nexport default `\\\n#define SHADER_NAME solid-polygon-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec3 positions64Low;\nattribute float elevations;\nattribute vec4 fillColors;\nattribute vec4 lineColors;\nattribute vec3 pickingColors;\n\n${main}\n\nvoid main(void) {\n PolygonProps props;\n\n props.positions = positions;\n props.positions64Low = positions64Low;\n props.elevations = elevations;\n props.fillColors = fillColors;\n props.lineColors = lineColors;\n props.pickingColors = pickingColors;\n\n calculatePosition(props);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport main from './solid-polygon-layer-vertex-main.glsl';\n\nexport default `\\\n#define SHADER_NAME solid-polygon-layer-vertex-shader-side\n#define IS_SIDE_VERTEX\n\n\nattribute vec3 instancePositions;\nattribute vec3 nextPositions;\nattribute vec3 instancePositions64Low;\nattribute vec3 nextPositions64Low;\nattribute float instanceElevations;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\n${main}\n\nvoid main(void) {\n PolygonProps props;\n\n props.positions = instancePositions;\n props.positions64Low = instancePositions64Low;\n props.elevations = instanceElevations;\n props.fillColors = instanceFillColors;\n props.lineColors = instanceLineColors;\n props.pickingColors = instancePickingColors;\n props.nextPositions = nextPositions;\n props.nextPositions64Low = nextPositions64Low;\n\n calculatePosition(props);\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Layer, project32, gouraudLighting, picking, COORDINATE_SYSTEM} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry, hasFeatures, FEATURES} from '@luma.gl/core';\n\n// Polygon geometry generation is managed by the polygon tesselator\nimport PolygonTesselator from './polygon-tesselator';\n\nimport vsTop from './solid-polygon-layer-vertex-top.glsl';\nimport vsSide from './solid-polygon-layer-vertex-side.glsl';\nimport fs from './solid-polygon-layer-fragment.glsl';\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\n\nconst defaultProps = {\n filled: true,\n // Whether to extrude\n extruded: false,\n // Whether to draw a GL.LINES wireframe of the polygon\n wireframe: false,\n _normalize: true,\n\n // elevation multiplier\n elevationScale: {type: 'number', min: 0, value: 1},\n\n // Accessor for polygon geometry\n getPolygon: {type: 'accessor', value: f => f.polygon},\n // Accessor for extrusion height\n getElevation: {type: 'accessor', value: 1000},\n // Accessor for colors\n getFillColor: {type: 'accessor', value: DEFAULT_COLOR},\n getLineColor: {type: 'accessor', value: DEFAULT_COLOR},\n\n // Optional settings for 'lighting' shader module\n material: true\n};\n\nconst ATTRIBUTE_TRANSITION = {\n enter: (value, chunk) => {\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\n\nexport default class SolidPolygonLayer extends Layer {\n getShaders(vs) {\n return super.getShaders({\n vs,\n fs,\n defines: {},\n modules: [project32, gouraudLighting, picking]\n });\n }\n\n initializeState() {\n const {gl, viewport} = this.context;\n let {coordinateSystem} = this.props;\n if (viewport.isGeospatial && coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = COORDINATE_SYSTEM.LNGLAT;\n }\n\n this.setState({\n numInstances: 0,\n polygonTesselator: new PolygonTesselator({\n preproject: coordinateSystem === COORDINATE_SYSTEM.LNGLAT,\n fp64: this.use64bitPositions(),\n IndexType: !gl || hasFeatures(gl, FEATURES.ELEMENT_INDEX_UINT32) ? Uint32Array : Uint16Array\n })\n });\n\n const attributeManager = this.getAttributeManager();\n const noAlloc = true;\n\n attributeManager.remove(['instancePickingColors']);\n\n /* eslint-disable max-len */\n attributeManager.add({\n indices: {size: 1, isIndexed: true, update: this.calculateIndices, noAlloc},\n positions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getPolygon',\n update: this.calculatePositions,\n noAlloc,\n shaderAttributes: {\n positions: {\n vertexOffset: 0,\n divisor: 0\n },\n instancePositions: {\n vertexOffset: 0,\n divisor: 1\n },\n nextPositions: {\n vertexOffset: 1,\n divisor: 1\n }\n }\n },\n vertexValid: {\n size: 1,\n divisor: 1,\n type: GL.UNSIGNED_BYTE,\n update: this.calculateVertexValid,\n noAlloc\n },\n elevations: {\n size: 1,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getElevation',\n shaderAttributes: {\n elevations: {\n divisor: 0\n },\n instanceElevations: {\n divisor: 1\n }\n }\n },\n fillColors: {\n alias: 'colors',\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getFillColor',\n defaultValue: DEFAULT_COLOR,\n shaderAttributes: {\n fillColors: {\n divisor: 0\n },\n instanceFillColors: {\n divisor: 1\n }\n }\n },\n lineColors: {\n alias: 'colors',\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getLineColor',\n defaultValue: DEFAULT_COLOR,\n shaderAttributes: {\n lineColors: {\n divisor: 0\n },\n instanceLineColors: {\n divisor: 1\n }\n }\n },\n pickingColors: {\n size: 3,\n type: GL.UNSIGNED_BYTE,\n accessor: (object, {index, target: value}) => this.encodePickingColor(index, value),\n shaderAttributes: {\n pickingColors: {\n divisor: 0\n },\n instancePickingColors: {\n divisor: 1\n }\n }\n }\n });\n /* eslint-enable max-len */\n }\n\n draw({uniforms}) {\n const {extruded, filled, wireframe, elevationScale} = this.props;\n const {topModel, sideModel, polygonTesselator} = this.state;\n\n const renderUniforms = Object.assign({}, uniforms, {\n extruded: Boolean(extruded),\n elevationScale\n });\n\n // Note: the order is important\n if (sideModel) {\n sideModel.setInstanceCount(polygonTesselator.instanceCount - 1);\n sideModel.setUniforms(renderUniforms);\n if (wireframe) {\n sideModel.setDrawMode(GL.LINE_STRIP);\n sideModel.setUniforms({isWireframe: true}).draw();\n }\n if (filled) {\n sideModel.setDrawMode(GL.TRIANGLE_FAN);\n sideModel.setUniforms({isWireframe: false}).draw();\n }\n }\n\n if (topModel) {\n topModel.setVertexCount(polygonTesselator.vertexCount);\n topModel.setUniforms(renderUniforms).draw();\n }\n }\n\n updateState(updateParams) {\n super.updateState(updateParams);\n\n this.updateGeometry(updateParams);\n\n const {props, oldProps, changeFlags} = updateParams;\n const attributeManager = this.getAttributeManager();\n\n const regenerateModels =\n changeFlags.extensionsChanged ||\n props.filled !== oldProps.filled ||\n props.extruded !== oldProps.extruded;\n\n if (regenerateModels) {\n if (this.state.models) {\n this.state.models.forEach(model => model.delete());\n }\n\n this.setState(this._getModels(this.context.gl));\n attributeManager.invalidateAll();\n }\n }\n\n updateGeometry({props, oldProps, changeFlags}) {\n const geometryConfigChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon));\n\n // When the geometry config or the data is changed,\n // tessellator needs to be invoked\n if (geometryConfigChanged) {\n const {polygonTesselator} = this.state;\n const buffers = props.data.attributes || {};\n polygonTesselator.updateGeometry({\n data: props.data,\n normalize: props._normalize,\n geometryBuffer: buffers.getPolygon,\n buffers,\n getGeometry: props.getPolygon,\n positionFormat: props.positionFormat,\n fp64: this.use64bitPositions(),\n dataChanged: changeFlags.dataChanged\n });\n\n this.setState({\n numInstances: polygonTesselator.instanceCount,\n startIndices: polygonTesselator.vertexStarts\n });\n\n if (!changeFlags.dataChanged) {\n // Base `layer.updateState` only invalidates all attributes on data change\n // Cover the rest of the scenarios here\n this.getAttributeManager().invalidateAll();\n }\n }\n }\n\n _getModels(gl) {\n const {id, filled, extruded} = this.props;\n\n let topModel;\n let sideModel;\n\n if (filled) {\n const shaders = this.getShaders(vsTop);\n shaders.defines.NON_INSTANCED_MODEL = 1;\n\n topModel = new Model(\n gl,\n Object.assign({}, shaders, {\n id: `${id}-top`,\n drawMode: GL.TRIANGLES,\n attributes: {\n vertexPositions: new Float32Array([0, 1])\n },\n uniforms: {\n isWireframe: false,\n isSideVertex: false\n },\n vertexCount: 0,\n isIndexed: true\n })\n );\n }\n if (extruded) {\n sideModel = new Model(\n gl,\n Object.assign({}, this.getShaders(vsSide), {\n id: `${id}-side`,\n geometry: new Geometry({\n drawMode: GL.LINES,\n vertexCount: 4,\n attributes: {\n // top right - top left - bootom left - bottom right\n vertexPositions: {\n size: 2,\n value: new Float32Array([1, 1, 0, 1, 0, 0, 1, 0])\n }\n }\n }),\n instanceCount: 0,\n isInstanced: 1\n })\n );\n\n sideModel.userData.excludeAttributes = {indices: true};\n }\n\n return {\n models: [sideModel, topModel].filter(Boolean),\n topModel,\n sideModel\n };\n }\n\n calculateIndices(attribute) {\n const {polygonTesselator} = this.state;\n attribute.startIndices = polygonTesselator.indexStarts;\n attribute.value = polygonTesselator.get('indices');\n }\n\n calculatePositions(attribute) {\n const {polygonTesselator} = this.state;\n attribute.startIndices = polygonTesselator.vertexStarts;\n attribute.value = polygonTesselator.get('positions');\n }\n\n calculateVertexValid(attribute) {\n attribute.value = this.state.polygonTesselator.get('vertexValid');\n }\n}\n\nSolidPolygonLayer.layerName = 'SolidPolygonLayer';\nSolidPolygonLayer.defaultProps = defaultProps;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME solid-polygon-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\nvarying float isValid;\n\nvoid main(void) {\n if (isValid < 0.5) {\n discard;\n }\n\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","// Assume data array is sorted by <accessor>\n// Replaces the specified range with a new subarray\n// Mutates the data array\n// Returns {startRow, endRow} of the inserted items\nexport function replaceInRange({data, getIndex, dataRange, replace}) {\n const {startRow = 0, endRow = Infinity} = dataRange;\n const count = data.length;\n let replaceStart = count;\n let replaceEnd = count;\n for (let i = 0; i < count; i++) {\n const row = getIndex(data[i]);\n if (replaceStart > i && row >= startRow) {\n replaceStart = i;\n }\n if (row >= endRow) {\n replaceEnd = i;\n break;\n }\n }\n let index = replaceStart;\n const dataLengthChanged = replaceEnd - replaceStart !== replace.length;\n // Save the items after replaceEnd before we overwrite data\n const endChunk = dataLengthChanged && data.slice(replaceEnd);\n // Insert new items\n for (let i = 0; i < replace.length; i++) {\n data[index++] = replace[i];\n }\n if (dataLengthChanged) {\n // Append items after replaceEnd\n for (let i = 0; i < endChunk.length; i++) {\n data[index++] = endChunk[i];\n }\n // Trim additional items\n data.length = index;\n }\n\n return {\n startRow: replaceStart,\n endRow: replaceStart + replace.length\n };\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {log} from '@deck.gl/core';\n\n/**\n * \"Normalizes\" complete or partial GeoJSON data into iterable list of features\n * Can accept GeoJSON geometry or \"Feature\", \"FeatureCollection\" in addition\n * to plain arrays and iterables.\n * Works by extracting the feature array or wrapping single objects in an array,\n * so that subsequent code can simply iterate over features.\n *\n * @param {object} geojson - geojson data\n * @param {Object|Array} data - geojson object (FeatureCollection, Feature or\n * Geometry) or array of features\n * @return {Array|\"iteratable\"} - iterable list of features\n */\nexport function getGeojsonFeatures(geojson) {\n // If array, assume this is a list of features\n if (Array.isArray(geojson)) {\n return geojson;\n }\n\n log.assert(geojson.type, 'GeoJSON does not have type');\n\n switch (geojson.type) {\n case 'Feature':\n // Wrap the feature in a 'Features' array\n return [geojson];\n case 'FeatureCollection':\n // Just return the 'Features' array from the collection\n log.assert(Array.isArray(geojson.features), 'GeoJSON does not have features array');\n return geojson.features;\n default:\n // Assume it's a geometry, we'll check type in separateGeojsonFeatures\n // Wrap the geometry object in a 'Feature' object and wrap in an array\n return [{geometry: geojson}];\n }\n}\n\n// Linearize\nexport function separateGeojsonFeatures(features, wrapFeature, dataRange = {}) {\n const separated = {\n pointFeatures: [],\n lineFeatures: [],\n polygonFeatures: [],\n polygonOutlineFeatures: []\n };\n const {startRow = 0, endRow = features.length} = dataRange;\n\n for (let featureIndex = startRow; featureIndex < endRow; featureIndex++) {\n const feature = features[featureIndex];\n\n log.assert(feature && feature.geometry, 'GeoJSON does not have geometry');\n\n const {geometry} = feature;\n\n if (geometry.type === 'GeometryCollection') {\n log.assert(Array.isArray(geometry.geometries), 'GeoJSON does not have geometries array');\n const {geometries} = geometry;\n for (let i = 0; i < geometries.length; i++) {\n const subGeometry = geometries[i];\n separateGeometry(subGeometry, separated, wrapFeature, feature, featureIndex);\n }\n } else {\n separateGeometry(geometry, separated, wrapFeature, feature, featureIndex);\n }\n }\n\n return separated;\n}\n\nfunction separateGeometry(geometry, separated, wrapFeature, sourceFeature, sourceFeatureIndex) {\n const {type, coordinates} = geometry;\n const {pointFeatures, lineFeatures, polygonFeatures, polygonOutlineFeatures} = separated;\n\n if (!validateGeometry(type, coordinates)) {\n // Avoid hard failure if some features are malformed\n log.warn(`${type} coordinates are malformed`)();\n return;\n }\n\n // Split each feature, but keep track of the source feature and index (for Multi* geometries)\n switch (type) {\n case 'Point':\n pointFeatures.push(\n wrapFeature(\n {\n geometry\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n break;\n case 'MultiPoint':\n coordinates.forEach(point => {\n pointFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'Point', coordinates: point}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n break;\n case 'LineString':\n lineFeatures.push(\n wrapFeature(\n {\n geometry\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n break;\n case 'MultiLineString':\n // Break multilinestrings into multiple lines\n coordinates.forEach(path => {\n lineFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'LineString', coordinates: path}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n break;\n case 'Polygon':\n polygonFeatures.push(\n wrapFeature(\n {\n geometry\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n // Break polygon into multiple lines\n coordinates.forEach(path => {\n polygonOutlineFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'LineString', coordinates: path}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n break;\n case 'MultiPolygon':\n // Break multipolygons into multiple polygons\n coordinates.forEach(polygon => {\n polygonFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'Polygon', coordinates: polygon}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n // Break polygon into multiple lines\n polygon.forEach(path => {\n polygonOutlineFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'LineString', coordinates: path}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n });\n break;\n default:\n }\n}\n\n/**\n * Simple GeoJSON validation util. For perf reasons we do not validate against the full spec,\n * only the following:\n - geometry.type is supported\n - geometry.coordinate has correct nesting level\n */\nconst COORDINATE_NEST_LEVEL = {\n Point: 1,\n MultiPoint: 2,\n LineString: 2,\n MultiLineString: 3,\n Polygon: 3,\n MultiPolygon: 4\n};\n\nexport function validateGeometry(type, coordinates) {\n let nestLevel = COORDINATE_NEST_LEVEL[type];\n\n log.assert(nestLevel, `Unknown GeoJSON type ${type}`);\n\n while (coordinates && --nestLevel > 0) {\n coordinates = coordinates[0];\n }\n\n return coordinates && Number.isFinite(coordinates[0]);\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {CompositeLayer, log} from '@deck.gl/core';\nimport ScatterplotLayer from '../scatterplot-layer/scatterplot-layer';\nimport PathLayer from '../path-layer/path-layer';\n// Use primitive layer to avoid \"Composite Composite\" layers for now\nimport SolidPolygonLayer from '../solid-polygon-layer/solid-polygon-layer';\nimport {replaceInRange} from '../utils';\n\nimport {getGeojsonFeatures, separateGeojsonFeatures} from './geojson';\n\nconst defaultLineColor = [0, 0, 0, 255];\nconst defaultFillColor = [0, 0, 0, 255];\n\nconst defaultProps = {\n stroked: true,\n filled: true,\n extruded: false,\n wireframe: false,\n\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n lineJointRounded: false,\n lineMiterLimit: 4,\n\n elevationScale: 1,\n\n pointRadiusScale: 1,\n pointRadiusMinPixels: 0, // min point radius in pixels\n pointRadiusMaxPixels: Number.MAX_SAFE_INTEGER, // max point radius in pixels\n\n // Line and polygon outline color\n getLineColor: {type: 'accessor', value: defaultLineColor},\n // Point and polygon fill color\n getFillColor: {type: 'accessor', value: defaultFillColor},\n // Point radius\n getRadius: {type: 'accessor', value: 1},\n // Line and polygon outline accessors\n getLineWidth: {type: 'accessor', value: 1},\n // Polygon extrusion accessor\n getElevation: {type: 'accessor', value: 1000},\n // Optional material for 'lighting' shader module\n material: true\n};\n\nfunction getCoordinates(f) {\n return f.geometry.coordinates;\n}\n\nexport default class GeoJsonLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n features: {}\n };\n\n if (this.props.getLineDashArray) {\n log.removed('getLineDashArray', 'PathStyleExtension')();\n }\n }\n\n updateState({props, changeFlags}) {\n if (!changeFlags.dataChanged) {\n return;\n }\n const features = getGeojsonFeatures(props.data);\n const wrapFeature = this.getSubLayerRow.bind(this);\n\n if (Array.isArray(changeFlags.dataChanged)) {\n const oldFeatures = this.state.features;\n const newFeatures = {};\n const featuresDiff = {};\n for (const key in oldFeatures) {\n newFeatures[key] = oldFeatures[key].slice();\n featuresDiff[key] = [];\n }\n\n for (const dataRange of changeFlags.dataChanged) {\n const partialFeatures = separateGeojsonFeatures(features, wrapFeature, dataRange);\n for (const key in oldFeatures) {\n featuresDiff[key].push(\n replaceInRange({\n data: newFeatures[key],\n getIndex: f => f.__source.index,\n dataRange,\n replace: partialFeatures[key]\n })\n );\n }\n }\n this.setState({features: newFeatures, featuresDiff});\n } else {\n this.setState({\n features: separateGeojsonFeatures(features, wrapFeature),\n featuresDiff: {}\n });\n }\n }\n\n /* eslint-disable complexity */\n renderLayers() {\n const {features, featuresDiff} = this.state;\n const {pointFeatures, lineFeatures, polygonFeatures, polygonOutlineFeatures} = features;\n\n // Layer composition props\n const {stroked, filled, extruded, wireframe, material, transitions} = this.props;\n\n // Rendering props underlying layer\n const {\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n pointRadiusScale,\n pointRadiusMinPixels,\n pointRadiusMaxPixels,\n elevationScale,\n lineDashJustified\n } = this.props;\n\n // Accessor props for underlying layers\n const {\n getLineColor,\n getFillColor,\n getRadius,\n getLineWidth,\n getLineDashArray,\n getElevation,\n updateTriggers\n } = this.props;\n\n const PolygonFillLayer = this.getSubLayerClass('polygons-fill', SolidPolygonLayer);\n const PolygonStrokeLayer = this.getSubLayerClass('polygons-stroke', PathLayer);\n const LineStringsLayer = this.getSubLayerClass('line-strings', PathLayer);\n const PointsLayer = this.getSubLayerClass('points', ScatterplotLayer);\n\n // Filled Polygon Layer\n const polygonFillLayer =\n this.shouldRenderSubLayer('polygons-fill', polygonFeatures) &&\n new PolygonFillLayer(\n {\n _dataDiff: featuresDiff.polygonFeatures && (() => featuresDiff.polygonFeatures),\n\n extruded,\n elevationScale,\n filled,\n wireframe,\n material,\n getElevation: this.getSubLayerAccessor(getElevation),\n getFillColor: this.getSubLayerAccessor(getFillColor),\n getLineColor: this.getSubLayerAccessor(getLineColor),\n\n transitions: transitions && {\n getPolygon: transitions.geometry,\n getElevation: transitions.getElevation,\n getFillColor: transitions.getFillColor,\n getLineColor: transitions.getLineColor\n }\n },\n this.getSubLayerProps({\n id: 'polygons-fill',\n updateTriggers: {\n getElevation: updateTriggers.getElevation,\n getFillColor: updateTriggers.getFillColor,\n getLineColor: updateTriggers.getLineColor\n }\n }),\n {\n data: polygonFeatures,\n getPolygon: getCoordinates\n }\n );\n\n const polygonLineLayer =\n !extruded &&\n stroked &&\n this.shouldRenderSubLayer('polygons-stroke', polygonOutlineFeatures) &&\n new PolygonStrokeLayer(\n {\n _dataDiff:\n featuresDiff.polygonOutlineFeatures && (() => featuresDiff.polygonOutlineFeatures),\n\n widthUnits: lineWidthUnits,\n widthScale: lineWidthScale,\n widthMinPixels: lineWidthMinPixels,\n widthMaxPixels: lineWidthMaxPixels,\n rounded: lineJointRounded,\n miterLimit: lineMiterLimit,\n dashJustified: lineDashJustified,\n\n getColor: this.getSubLayerAccessor(getLineColor),\n getWidth: this.getSubLayerAccessor(getLineWidth),\n getDashArray: this.getSubLayerAccessor(getLineDashArray),\n\n transitions: transitions && {\n getPath: transitions.geometry,\n getColor: transitions.getLineColor,\n getWidth: transitions.getLineWidth\n }\n },\n this.getSubLayerProps({\n id: 'polygons-stroke',\n updateTriggers: {\n getColor: updateTriggers.getLineColor,\n getWidth: updateTriggers.getLineWidth,\n getDashArray: updateTriggers.getLineDashArray\n }\n }),\n {\n data: polygonOutlineFeatures,\n getPath: getCoordinates\n }\n );\n\n const pathLayer =\n this.shouldRenderSubLayer('linestrings', lineFeatures) &&\n new LineStringsLayer(\n {\n _dataDiff: featuresDiff.lineFeatures && (() => featuresDiff.lineFeatures),\n\n widthUnits: lineWidthUnits,\n widthScale: lineWidthScale,\n widthMinPixels: lineWidthMinPixels,\n widthMaxPixels: lineWidthMaxPixels,\n rounded: lineJointRounded,\n miterLimit: lineMiterLimit,\n dashJustified: lineDashJustified,\n\n getColor: this.getSubLayerAccessor(getLineColor),\n getWidth: this.getSubLayerAccessor(getLineWidth),\n getDashArray: this.getSubLayerAccessor(getLineDashArray),\n\n transitions: transitions && {\n getPath: transitions.geometry,\n getColor: transitions.getLineColor,\n getWidth: transitions.getLineWidth\n }\n },\n this.getSubLayerProps({\n id: 'line-strings',\n updateTriggers: {\n getColor: updateTriggers.getLineColor,\n getWidth: updateTriggers.getLineWidth,\n getDashArray: updateTriggers.getLineDashArray\n }\n }),\n {\n data: lineFeatures,\n getPath: getCoordinates\n }\n );\n\n const pointLayer =\n this.shouldRenderSubLayer('points', pointFeatures) &&\n new PointsLayer(\n {\n _dataDiff: featuresDiff.pointFeatures && (() => featuresDiff.pointFeatures),\n\n stroked,\n filled,\n radiusScale: pointRadiusScale,\n radiusMinPixels: pointRadiusMinPixels,\n radiusMaxPixels: pointRadiusMaxPixels,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n\n getFillColor: this.getSubLayerAccessor(getFillColor),\n getLineColor: this.getSubLayerAccessor(getLineColor),\n getRadius: this.getSubLayerAccessor(getRadius),\n getLineWidth: this.getSubLayerAccessor(getLineWidth),\n\n transitions: transitions && {\n getPosition: transitions.geometry,\n getFillColor: transitions.getFillColor,\n getLineColor: transitions.getLineColor,\n getRadius: transitions.getRadius,\n getLineWidth: transitions.getLineWidth\n }\n },\n this.getSubLayerProps({\n id: 'points',\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getLineColor: updateTriggers.getLineColor,\n getRadius: updateTriggers.getRadius,\n getLineWidth: updateTriggers.getLineWidth\n }\n }),\n {\n data: pointFeatures,\n getPosition: getCoordinates\n }\n );\n\n return [\n // If not extruded: flat fill layer is drawn below outlines\n !extruded && polygonFillLayer,\n polygonLineLayer,\n pathLayer,\n pointLayer,\n // If extruded: draw fill layer last for correct blending behavior\n extruded && polygonFillLayer\n ];\n }\n /* eslint-enable complexity */\n}\n\nGeoJsonLayer.layerName = 'GeoJsonLayer';\nGeoJsonLayer.defaultProps = defaultProps;\n","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport merge from './merge';\n\nfunction omit(input, fields) {\n var output = {};\n Object.keys(input).forEach(function (prop) {\n if (fields.indexOf(prop) === -1) {\n output[prop] = input[prop];\n }\n });\n return output;\n}\n\nfunction css(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var output = styleFunction(props);\n\n if (props.css) {\n return _extends({}, merge(output, styleFunction(_extends({\n theme: props.theme\n }, props.css))), {}, omit(props.css, [styleFunction.filterProps]));\n }\n\n return output;\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n css: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['css'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default css;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport merge from './merge';\n\nfunction compose() {\n for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) {\n styles[_key] = arguments[_key];\n }\n\n var fn = function fn(props) {\n return styles.reduce(function (acc, style) {\n var output = style(props);\n\n if (output) {\n return merge(acc, output);\n }\n\n return acc;\n }, {});\n }; // Alternative approach that doesn't yield any performance gain.\n // const handlers = styles.reduce((acc, style) => {\n // style.filterProps.forEach(prop => {\n // acc[prop] = style;\n // });\n // return acc;\n // }, {});\n // const fn = props => {\n // return Object.keys(props).reduce((acc, prop) => {\n // if (handlers[prop]) {\n // return merge(acc, handlers[prop](props));\n // }\n // return acc;\n // }, {});\n // };\n\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce(function (acc, style) {\n return _extends(acc, style.propTypes);\n }, {}) : {};\n fn.filterProps = styles.reduce(function (acc, style) {\n return acc.concat(style.filterProps);\n }, []);\n return fn;\n}\n\nexport default compose;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\n\nfunction getPath(obj, path) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n return path.split('.').reduce(function (acc, item) {\n return acc && acc[item] ? acc[item] : null;\n }, obj);\n}\n\nfunction style(options) {\n var prop = options.prop,\n _options$cssProperty = options.cssProperty,\n cssProperty = _options$cssProperty === void 0 ? options.prop : _options$cssProperty,\n themeKey = options.themeKey,\n transform = options.transform;\n\n var fn = function fn(props) {\n if (props[prop] == null) {\n return null;\n }\n\n var propValue = props[prop];\n var theme = props.theme;\n var themeMapping = getPath(theme, themeKey) || {};\n\n var styleFromPropValue = function styleFromPropValue(propValueFinal) {\n var value;\n\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || propValueFinal;\n } else {\n value = getPath(themeMapping, propValueFinal) || propValueFinal;\n\n if (transform) {\n value = transform(value);\n }\n }\n\n if (cssProperty === false) {\n return value;\n }\n\n return _defineProperty({}, cssProperty, value);\n };\n\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? _defineProperty({}, prop, responsivePropType) : {};\n fn.filterProps = [prop];\n return fn;\n}\n\nexport default style;","import style from './style';\nimport compose from './compose';\n\nfunction getBorder(value) {\n if (typeof value !== 'number') {\n return value;\n }\n\n return \"\".concat(value, \"px solid\");\n}\n\nexport var border = style({\n prop: 'border',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderTop = style({\n prop: 'borderTop',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderRight = style({\n prop: 'borderRight',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderBottom = style({\n prop: 'borderBottom',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderLeft = style({\n prop: 'borderLeft',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderColor = style({\n prop: 'borderColor',\n themeKey: 'palette'\n});\nexport var borderRadius = style({\n prop: 'borderRadius',\n themeKey: 'shape'\n});\nvar borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderRadius);\nexport default borders;","import style from './style';\nimport compose from './compose';\nexport var displayPrint = style({\n prop: 'displayPrint',\n cssProperty: false,\n transform: function transform(value) {\n return {\n '@media print': {\n display: value\n }\n };\n }\n});\nexport var displayRaw = style({\n prop: 'display'\n});\nexport var overflow = style({\n prop: 'overflow'\n});\nexport var textOverflow = style({\n prop: 'textOverflow'\n});\nexport var visibility = style({\n prop: 'visibility'\n});\nexport var whiteSpace = style({\n prop: 'whiteSpace'\n});\nexport default compose(displayPrint, displayRaw, overflow, textOverflow, visibility, whiteSpace);","import style from './style';\nimport compose from './compose';\nexport var flexBasis = style({\n prop: 'flexBasis'\n});\nexport var flexDirection = style({\n prop: 'flexDirection'\n});\nexport var flexWrap = style({\n prop: 'flexWrap'\n});\nexport var justifyContent = style({\n prop: 'justifyContent'\n});\nexport var alignItems = style({\n prop: 'alignItems'\n});\nexport var alignContent = style({\n prop: 'alignContent'\n});\nexport var order = style({\n prop: 'order'\n});\nexport var flex = style({\n prop: 'flex'\n});\nexport var flexGrow = style({\n prop: 'flexGrow'\n});\nexport var flexShrink = style({\n prop: 'flexShrink'\n});\nexport var alignSelf = style({\n prop: 'alignSelf'\n});\nexport var justifyItems = style({\n prop: 'justifyItems'\n});\nexport var justifySelf = style({\n prop: 'justifySelf'\n});\nvar flexbox = compose(flexBasis, flexDirection, flexWrap, justifyContent, alignItems, alignContent, order, flex, flexGrow, flexShrink, alignSelf, justifyItems, justifySelf);\nexport default flexbox;","import style from './style';\nimport compose from './compose';\nexport var gridGap = style({\n prop: 'gridGap'\n});\nexport var gridColumnGap = style({\n prop: 'gridColumnGap'\n});\nexport var gridRowGap = style({\n prop: 'gridRowGap'\n});\nexport var gridColumn = style({\n prop: 'gridColumn'\n});\nexport var gridRow = style({\n prop: 'gridRow'\n});\nexport var gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport var gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport var gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport var gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport var gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport var gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport var gridArea = style({\n prop: 'gridArea'\n});\nvar grid = compose(gridGap, gridColumnGap, gridRowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport var position = style({\n prop: 'position'\n});\nexport var zIndex = style({\n prop: 'zIndex',\n themeKey: 'zIndex'\n});\nexport var top = style({\n prop: 'top'\n});\nexport var right = style({\n prop: 'right'\n});\nexport var bottom = style({\n prop: 'bottom'\n});\nexport var left = style({\n prop: 'left'\n});\nexport default compose(position, zIndex, top, right, bottom, left);","import style from './style';\nimport compose from './compose';\nexport var color = style({\n prop: 'color',\n themeKey: 'palette'\n});\nexport var bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette'\n});\nvar palette = compose(color, bgcolor);\nexport default palette;","import style from './style';\nvar boxShadow = style({\n prop: 'boxShadow',\n themeKey: 'shadows'\n});\nexport default boxShadow;","import style from './style';\nimport compose from './compose';\n\nfunction transform(value) {\n return value <= 1 ? \"\".concat(value * 100, \"%\") : value;\n}\n\nexport var width = style({\n prop: 'width',\n transform: transform\n});\nexport var maxWidth = style({\n prop: 'maxWidth',\n transform: transform\n});\nexport var minWidth = style({\n prop: 'minWidth',\n transform: transform\n});\nexport var height = style({\n prop: 'height',\n transform: transform\n});\nexport var maxHeight = style({\n prop: 'maxHeight',\n transform: transform\n});\nexport var minHeight = style({\n prop: 'minHeight',\n transform: transform\n});\nexport var sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: transform\n});\nexport var sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: transform\n});\nexport var boxSizing = style({\n prop: 'boxSizing'\n});\nvar sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import style from './style';\nimport compose from './compose';\nexport var fontFamily = style({\n prop: 'fontFamily',\n themeKey: 'typography'\n});\nexport var fontSize = style({\n prop: 'fontSize',\n themeKey: 'typography'\n});\nexport var fontStyle = style({\n prop: 'fontStyle',\n themeKey: 'typography'\n});\nexport var fontWeight = style({\n prop: 'fontWeight',\n themeKey: 'typography'\n});\nexport var letterSpacing = style({\n prop: 'letterSpacing'\n});\nexport var lineHeight = style({\n prop: 'lineHeight'\n});\nexport var textAlign = style({\n prop: 'textAlign'\n});\nvar typography = compose(fontFamily, fontSize, fontStyle, fontWeight, letterSpacing, lineHeight, textAlign);\nexport default typography;","import { borders, compose, display, flexbox, grid, palette, positions, shadows, sizing, spacing, typography, css } from '@material-ui/system';\nimport styled from '../styles/styled';\nexport var styleFunction = css(compose(borders, display, flexbox, grid, positions, palette, shadows, sizing, spacing, typography));\n/**\n * @ignore - do not document.\n */\n\nvar Box = styled('div')(styleFunction, {\n name: 'MuiBox'\n});\nexport default Box;","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport setUTCDay from '../../../_lib/setUTCDay/index.js';\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js';\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js';\nimport setUTCWeek from '../../../_lib/setUTCWeek/index.js';\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js';\nimport startOfUTCWeek from '../../../_lib/startOfUTCWeek/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport getUTCWeek from '../getUTCWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport getUTCISOWeek from '../getUTCISOWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport assign from '../_lib/assign/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport parsers from './_lib/parsers/index.js';\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > âš ï¸ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `backupDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `backupDate` which works as a context of parsing.\n *\n * `backupDate` must be passed for correct work of the function.\n * If you're not sure which `backupDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `backupDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `backupDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * toDate('2016-01-01')\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} backupDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions) {\n if (arguments.length < 3) {\n throw new TypeError('3 arguments required, but only ' + arguments.length + ' present');\n }\n\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBackupDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale // If timezone isn't specified, it will be set to the system timezone\n\n };\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).reverse();\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyBackupDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport Framebuffer from './framebuffer';\nimport Renderbuffer from './renderbuffer';\nimport Texture from './texture';\nimport {assert} from '../utils';\n\nconst UNIFORM_SETTERS = {\n // WEBGL1\n\n /* eslint-disable max-len */\n [GL.FLOAT]: getArraySetter.bind(null, 'uniform1fv', toFloatArray, 1, setVectorUniform),\n [GL.FLOAT_VEC2]: getArraySetter.bind(null, 'uniform2fv', toFloatArray, 2, setVectorUniform),\n [GL.FLOAT_VEC3]: getArraySetter.bind(null, 'uniform3fv', toFloatArray, 3, setVectorUniform),\n [GL.FLOAT_VEC4]: getArraySetter.bind(null, 'uniform4fv', toFloatArray, 4, setVectorUniform),\n\n [GL.INT]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [GL.INT_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [GL.INT_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [GL.INT_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n\n [GL.BOOL]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [GL.BOOL_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [GL.BOOL_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [GL.BOOL_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n\n // uniformMatrix(false): don't transpose the matrix\n [GL.FLOAT_MAT2]: getArraySetter.bind(null, 'uniformMatrix2fv', toFloatArray, 4, setMatrixUniform),\n [GL.FLOAT_MAT3]: getArraySetter.bind(null, 'uniformMatrix3fv', toFloatArray, 9, setMatrixUniform),\n [GL.FLOAT_MAT4]: getArraySetter.bind(\n null,\n 'uniformMatrix4fv',\n toFloatArray,\n 16,\n setMatrixUniform\n ),\n\n [GL.SAMPLER_2D]: getSamplerSetter,\n [GL.SAMPLER_CUBE]: getSamplerSetter,\n\n // WEBGL2 - unsigned integers, irregular matrices, additional texture samplers\n\n [GL.UNSIGNED_INT]: getArraySetter.bind(null, 'uniform1uiv', toUIntArray, 1, setVectorUniform),\n [GL.UNSIGNED_INT_VEC2]: getArraySetter.bind(\n null,\n 'uniform2uiv',\n toUIntArray,\n 2,\n setVectorUniform\n ),\n [GL.UNSIGNED_INT_VEC3]: getArraySetter.bind(\n null,\n 'uniform3uiv',\n toUIntArray,\n 3,\n setVectorUniform\n ),\n [GL.UNSIGNED_INT_VEC4]: getArraySetter.bind(\n null,\n 'uniform4uiv',\n toUIntArray,\n 4,\n setVectorUniform\n ),\n\n // uniformMatrix(false): don't transpose the matrix\n [GL.FLOAT_MAT2x3]: getArraySetter.bind(\n null,\n 'uniformMatrix2x3fv',\n toFloatArray,\n 6,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT2x4]: getArraySetter.bind(\n null,\n 'uniformMatrix2x4fv',\n toFloatArray,\n 8,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT3x2]: getArraySetter.bind(\n null,\n 'uniformMatrix3x2fv',\n toFloatArray,\n 6,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT3x4]: getArraySetter.bind(\n null,\n 'uniformMatrix3x4fv',\n toFloatArray,\n 12,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT4x2]: getArraySetter.bind(\n null,\n 'uniformMatrix4x2fv',\n toFloatArray,\n 8,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT4x3]: getArraySetter.bind(\n null,\n 'uniformMatrix4x3fv',\n toFloatArray,\n 12,\n setMatrixUniform\n ),\n\n [GL.SAMPLER_3D]: getSamplerSetter,\n [GL.SAMPLER_2D_SHADOW]: getSamplerSetter,\n [GL.SAMPLER_2D_ARRAY]: getSamplerSetter,\n [GL.SAMPLER_2D_ARRAY_SHADOW]: getSamplerSetter,\n [GL.SAMPLER_CUBE_SHADOW]: getSamplerSetter,\n [GL.INT_SAMPLER_2D]: getSamplerSetter,\n [GL.INT_SAMPLER_3D]: getSamplerSetter,\n [GL.INT_SAMPLER_CUBE]: getSamplerSetter,\n [GL.INT_SAMPLER_2D_ARRAY]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_2D]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_3D]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_CUBE]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: getSamplerSetter\n /* eslint-enable max-len */\n};\n\n// Pre-allocated typed arrays for temporary conversion\nconst FLOAT_ARRAY = {};\nconst INT_ARRAY = {};\nconst UINT_ARRAY = {};\n\nconst array1 = [0];\n\n// Functions to ensure the type of uniform values\n// This is done because uniform*v functions\n// are extremely slow when consuming JS arrays directly.\nfunction toTypedArray(value, uniformLength, Type, cache) {\n // convert boolean uniforms to Number\n if (uniformLength === 1 && typeof value === 'boolean') {\n value = value ? 1 : 0;\n }\n if (Number.isFinite(value)) {\n array1[0] = value;\n value = array1;\n }\n const length = value.length;\n if (length % uniformLength) {\n log.warn(`Uniform size should be multiples of ${uniformLength}`, value)();\n }\n\n if (value instanceof Type) {\n return value;\n }\n let result = cache[length];\n if (!result) {\n result = new Type(length);\n cache[length] = result;\n }\n for (let i = 0; i < length; i++) {\n result[i] = value[i];\n }\n return result;\n}\n\nfunction toFloatArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);\n}\n\nfunction toIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);\n}\n\nfunction toUIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);\n}\n\nexport function parseUniformName(name) {\n // Shortcut to avoid redundant or bad matches\n if (name[name.length - 1] !== ']') {\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n // if array name then clean the array brackets\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = name.match(UNIFORM_NAME_REGEXP);\n if (!matches || matches.length < 2) {\n throw new Error(`Failed to parse GLSL uniform name ${name}`);\n }\n\n return {\n name: matches[1],\n length: matches[2] || 1,\n isArray: Boolean(matches[2])\n };\n}\n\n// Returns a Magic Uniform Setter\n/* eslint-disable complexity */\nexport function getUniformSetter(gl, location, info) {\n const setter = UNIFORM_SETTERS[info.type];\n if (!setter) {\n throw new Error(`Unknown GLSL uniform type ${info.type}`);\n }\n\n // NOTE(Tarek): This construction is the ensure\n // separate caches for all setters.\n return setter().bind(null, gl, location);\n}\n\n// Basic checks of uniform values (with or without knowledge of program)\n// To facilitate early detection of e.g. undefined values in JavaScript\nexport function checkUniformValues(uniforms, source, uniformMap) {\n for (const uniformName in uniforms) {\n const value = uniforms[uniformName];\n const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);\n if (shouldCheck && !checkUniformValue(value)) {\n // Add space to source\n source = source ? `${source} ` : '';\n // Value could be unprintable so write the object on console\n console.error(`${source} Bad uniform ${uniformName}`, value); // eslint-disable-line\n /* eslint-enable no-console */\n throw new Error(`${source} Bad uniform ${uniformName}`);\n }\n }\n return true;\n}\n\n// TODO use type information during validation\nfunction checkUniformValue(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return checkUniformArray(value);\n }\n\n // Check if single value is a number\n if (isFinite(value)) {\n return true;\n } else if (value === true || value === false) {\n return true;\n } else if (value instanceof Texture) {\n return true;\n } else if (value instanceof Renderbuffer) {\n return true;\n } else if (value instanceof Framebuffer) {\n return Boolean(value.texture);\n }\n return false;\n}\n\nfunction checkUniformArray(value) {\n // Check that every element in array is a number, and at least 1 element\n if (value.length === 0) {\n return false;\n }\n\n const checkLength = Math.min(value.length, 16);\n\n for (let i = 0; i < checkLength; ++i) {\n if (!Number.isFinite(value[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Creates a copy of the uniform\n */\nexport function copyUniform(uniforms, key, value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n if (uniforms[key]) {\n const dest = uniforms[key];\n for (let i = 0, len = value.length; i < len; ++i) {\n dest[i] = value[i];\n }\n } else {\n uniforms[key] = value.slice();\n }\n } else {\n uniforms[key] = value;\n }\n}\n// NOTE(Tarek): Setters maintain a cache\n// of the previously set value, and\n// avoid resetting it if it's the same.\nfunction getSamplerSetter() {\n let cache = null;\n return (gl, location, value) => {\n const update = cache !== value;\n if (update) {\n gl.uniform1i(location, value);\n cache = value;\n }\n\n return update;\n };\n}\n\nfunction getArraySetter(functionName, toArray, size, uniformSetter) {\n let cache = null;\n let cacheLength = null;\n return (gl, location, value) => {\n const arrayValue = toArray(value, size);\n const length = arrayValue.length;\n let update = false;\n if (cache === null) {\n cache = new Float32Array(length);\n cacheLength = length;\n update = true;\n } else {\n assert(cacheLength === length, 'Uniform length cannot change.');\n for (let i = 0; i < length; ++i) {\n if (arrayValue[i] !== cache[i]) {\n update = true;\n break;\n }\n }\n }\n if (update) {\n uniformSetter(gl, functionName, location, arrayValue);\n cache.set(arrayValue);\n }\n\n return update;\n };\n}\n\nfunction setVectorUniform(gl, functionName, location, value) {\n gl[functionName](location, value);\n}\n\nfunction setMatrixUniform(gl, functionName, location, value) {\n gl[functionName](location, false, value);\n}\n","// Supports GLSLIFY style naming of shaders\n// #define SHADER_NAME ...\nexport default function getShaderName(shader, defaultName = 'unnamed') {\n const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n const match = shader.match(SHADER_NAME_REGEXP);\n return match ? match[1] : defaultName;\n}\n","// TODO - formatGLSLCompilerError should not depend on this\nimport getShaderName from './get-shader-name';\nimport getShaderTypeName from './get-shader-type-name';\n\n// Formats GLSL compiler error log into single string\nexport default function formatGLSLCompilerError(errLog, src, shaderType) {\n const {shaderName, errors, warnings} = parseGLSLCompilerError(errLog, src, shaderType);\n return `GLSL compilation error in ${shaderName}\\n\\n${errors}\\n${warnings}`;\n}\n\n/**\n * Parse a GLSL compiler error log into a string showing the source code around each error.\n * Based on https://github.com/wwwtyro/gl-format-compiler-error (public domain)\n */\n/* eslint-disable no-continue, max-statements */\nexport function parseGLSLCompilerError(errLog, src, shaderType, shaderName) {\n const errorStrings = errLog.split(/\\r?\\n/);\n const errors = {};\n const warnings = {};\n\n // Patch the shader name\n const name = shaderName || getShaderName(src) || '(unnamed)';\n const shaderDescription = `${getShaderTypeName(shaderType)} shader ${name}`;\n\n // Parse the error - note: browser and driver dependent\n for (let i = 0; i < errorStrings.length; i++) {\n const errorString = errorStrings[i];\n if (errorString.length <= 1) {\n continue;\n }\n const segments = errorString.split(':');\n const type = segments[0];\n const line = parseInt(segments[2], 10);\n if (isNaN(line)) {\n throw new Error(`GLSL compilation error in ${shaderDescription}: ${errLog}`);\n }\n if (type !== 'WARNING') {\n errors[line] = errorString;\n } else {\n warnings[line] = errorString;\n }\n }\n\n // Format the error inline with the code\n const lines = addLineNumbers(src);\n\n return {\n shaderName: shaderDescription,\n errors: formatErrors(errors, lines),\n warnings: formatErrors(warnings, lines)\n };\n}\n\n// helper function, outputs annotated errors or warnings\nfunction formatErrors(errors, lines) {\n let message = '';\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!errors[i + 3] && !errors[i + 2] && !errors[i + 1]) {\n continue;\n }\n message += `${line}\\n`;\n if (errors[i + 1]) {\n const error = errors[i + 1];\n const segments = error.split(':', 3);\n const type = segments[0];\n const column = parseInt(segments[1], 10) || 0;\n const err = error.substring(segments.join(':').length + 1).trim();\n message += padLeft(`^^^ ${type}: ${err}\\n\\n`, column);\n }\n }\n return message;\n}\n\n/**\n * Prepends line numbers to each line of a string.\n * The line numbers will be left-padded with spaces to ensure an\n * aligned layout when rendered using monospace fonts.\n * @param {String} string - multi-line string to add line numbers to\n * @param {Number} start=1 - number of spaces to add\n * @param {String} delim =': ' - injected between line number and original line\n * @return {String[]} strings - array of string, one per line, with line numbers added\n */\nfunction addLineNumbers(string, start = 1, delim = ': ') {\n const lines = string.split(/\\r?\\n/);\n const maxDigits = String(lines.length + start - 1).length;\n return lines.map((line, i) => {\n const lineNumber = i + start;\n const digits = String(lineNumber).length;\n const prefix = padLeft(lineNumber, maxDigits - digits);\n return prefix + delim + line;\n });\n}\n\n/**\n * Pads a string with a number of spaces (space characters) to the left\n * @param {String} string - string to pad\n * @param {Number} digits - number of spaces to add\n * @return {String} string - The padded string\n */\nfunction padLeft(string, digits) {\n let result = '';\n for (let i = 0; i < digits; ++i) {\n result += ' ';\n }\n return `${result}${string}`;\n}\n","const GL_FRAGMENT_SHADER = 0x8b30;\nconst GL_VERTEX_SHADER = 0x8b31;\n\nexport default function getShaderTypeName(type) {\n switch (type) {\n case GL_FRAGMENT_SHADER:\n return 'fragment';\n case GL_VERTEX_SHADER:\n return 'vertex';\n default:\n return 'unknown type';\n }\n}\n","import GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport {parseGLSLCompilerError, getShaderName} from '../glsl-utils';\nimport {assertWebGLContext} from '../webgl-utils';\nimport {uid, assert} from '../utils';\nimport Resource from './resource';\n\nconst ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';\n\n// For now this is an internal class\nexport class Shader extends Resource {\n static getTypeName(shaderType) {\n switch (shaderType) {\n case GL.VERTEX_SHADER:\n return 'vertex-shader';\n case GL.FRAGMENT_SHADER:\n return 'fragment-shader';\n default:\n assert(false);\n return 'unknown';\n }\n }\n\n /* eslint-disable max-statements */\n constructor(gl, props) {\n assertWebGLContext(gl);\n\n // Validate arguments\n assert(typeof props.source === 'string', ERR_SOURCE);\n\n // Deduce an id, from shader source, or supplied id, or shader type\n const id =\n getShaderName(props.source, null) ||\n props.id ||\n uid(`unnamed ${Shader.getTypeName(props.shaderType)}`);\n\n super(gl, {id});\n\n this.shaderType = props.shaderType;\n this.source = props.source;\n\n this.initialize(props);\n }\n\n initialize({source}) {\n const shaderName = getShaderName(source, null);\n if (shaderName) {\n this.id = uid(shaderName);\n }\n this._compile(source);\n }\n\n // Accessors\n\n getParameter(pname) {\n return this.gl.getShaderParameter(this.handle, pname);\n }\n\n toString() {\n return `${Shader.getTypeName(this.shaderType)}:${this.id}`;\n }\n\n getName() {\n return getShaderName(this.source) || 'unnamed-shader';\n }\n\n getSource() {\n return this.gl.getShaderSource(this.handle);\n }\n\n // Debug method - Returns translated source if available\n getTranslatedSource() {\n const extension = this.gl.getExtension('WEBGL.debug_shaders');\n return extension\n ? extension.getTranslatedShaderSource(this.handle)\n : 'No translated source available. WEBGL.debug_shaders not implemented';\n }\n\n // PRIVATE METHODS\n _compile(source = this.source) {\n if (!source.startsWith('#version ')) {\n source = `#version 100\\n${source}`;\n }\n this.source = source;\n this.gl.shaderSource(this.handle, this.source);\n this.gl.compileShader(this.handle);\n\n // TODO - For performance reasons, avoid checking shader compilation errors on production?\n // TODO - Load log even when no error reported, to catch warnings?\n // https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings\n const compileStatus = this.getParameter(GL.COMPILE_STATUS);\n if (!compileStatus) {\n const infoLog = this.gl.getShaderInfoLog(this.handle);\n const {shaderName, errors, warnings} = parseGLSLCompilerError(\n infoLog,\n this.source,\n this.shaderType,\n this.id\n );\n log.error(`GLSL compilation errors in ${shaderName}\\n${errors}`)();\n log.warn(`GLSL compilation warnings in ${shaderName}\\n${warnings}`)();\n throw new Error(`GLSL compilation errors in ${shaderName}`);\n }\n }\n\n _deleteHandle() {\n this.gl.deleteShader(this.handle);\n }\n\n _getOptsFromHandle() {\n return {\n type: this.getParameter(GL.SHADER_TYPE),\n source: this.getSource()\n };\n }\n}\n\nexport class VertexShader extends Shader {\n constructor(gl, props) {\n // Signature: new VertexShader(gl, source)\n if (typeof props === 'string') {\n props = {source: props};\n }\n super(gl, Object.assign({}, props, {shaderType: GL.VERTEX_SHADER}));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.VERTEX_SHADER);\n }\n}\n\nexport class FragmentShader extends Shader {\n constructor(gl, props) {\n // Signature: new FragmentShader(gl, source)\n if (typeof props === 'string') {\n props = {source: props};\n }\n\n super(gl, Object.assign({}, props, {shaderType: GL.FRAGMENT_SHADER}));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.FRAGMENT_SHADER);\n }\n}\n","// Contains metadata describing attribute configurations for a program's shaders\n// Much of this is automatically extracted from shaders after program linking\nimport Accessor from './accessor';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';\n\nexport default class ProgramConfiguration {\n constructor(program) {\n this.id = program.id;\n this.attributeInfos = [];\n this.attributeInfosByName = {};\n\n // Locations may not be contiguous the case of matrix attributes\n // so keep a separate location->attribute map.\n this.attributeInfosByLocation = [];\n this.varyingInfos = [];\n this.varyingInfosByName = {};\n Object.seal(this);\n this._readAttributesFromProgram(program);\n this._readVaryingsFromProgram(program);\n }\n\n getAttributeInfo(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return this.attributeInfosByLocation[location];\n }\n return this.attributeInfosByName[locationOrName] || null;\n }\n\n // Resolves an attribute name or index to an index\n getAttributeLocation(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.location : -1;\n }\n\n getAttributeAccessor(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.accessor : null;\n }\n\n getVaryingInfo(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return this.varyingInfos[location];\n }\n return this.varyingInfosByName[locationOrName] || null;\n }\n\n getVaryingIndex(locationOrName) {\n const varying = this.getVaryingInfo();\n return varying ? varying.location : -1;\n }\n\n getVaryingAccessor(locationOrName) {\n const varying = this.getVaryingInfo();\n return varying ? varying.accessor : null;\n }\n\n // PRIVATE METHODS\n\n // linkProgram needs to have been called, although linking does not need to have been successful\n _readAttributesFromProgram(program) {\n const {gl} = program;\n const count = gl.getProgramParameter(program.handle, gl.ACTIVE_ATTRIBUTES);\n\n for (let index = 0; index < count; index++) {\n const {name, type, size} = gl.getActiveAttrib(program.handle, index);\n const location = gl.getAttribLocation(program.handle, name);\n // Add only user provided attributes, for built-in attributes like\n // `gl_InstanceID` locaiton will be < 0\n if (location >= 0) {\n this._addAttribute(location, name, type, size);\n }\n }\n\n this.attributeInfos.sort((a, b) => a.location - b.location);\n }\n\n // linkProgram needs to have been called, although linking does not need to have been successful\n _readVaryingsFromProgram(program) {\n const {gl} = program;\n if (!isWebGL2(gl)) {\n return;\n }\n\n const count = gl.getProgramParameter(program.handle, gl.TRANSFORM_FEEDBACK_VARYINGS);\n for (let location = 0; location < count; location++) {\n const {name, type, size} = gl.getTransformFeedbackVarying(program.handle, location);\n this._addVarying(location, name, type, size);\n }\n\n this.varyingInfos.sort((a, b) => a.location - b.location);\n }\n\n _addAttribute(location, name, compositeType, size) {\n const {type, components} = decomposeCompositeGLType(compositeType);\n const accessor = {type, size: size * components};\n this._inferProperties(location, name, accessor);\n\n const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values\n this.attributeInfos.push(attributeInfo);\n this.attributeInfosByLocation[location] = attributeInfo; // For quick location based lookup\n this.attributeInfosByName[attributeInfo.name] = attributeInfo; // For quick name based lookup\n }\n\n // Extract additional attribute metadata from shader names (based on attribute naming conventions)\n _inferProperties(location, name, accessor) {\n if (/instance/i.test(name)) {\n // Any attribute containing the word \"instance\" will be assumed to be instanced\n accessor.divisor = 1;\n }\n }\n\n _addVarying(location, name, compositeType, size) {\n const {type, components} = decomposeCompositeGLType(compositeType);\n const accessor = new Accessor({type, size: size * components});\n\n const varying = {location, name, accessor}; // Base values\n this.varyingInfos.push(varying);\n this.varyingInfosByName[varying.name] = varying; // For quick name based lookup\n }\n}\n","import GL from '@luma.gl/constants';\n\nimport Resource from './resource';\nimport Texture from './texture';\nimport Framebuffer from './framebuffer';\nimport {parseUniformName, getUniformSetter} from './uniforms';\nimport {VertexShader, FragmentShader} from './shader';\nimport ProgramConfiguration from './program-configuration';\nimport {copyUniform, checkUniformValues} from './uniforms';\n\nimport {isWebGL2, withParameters, log} from '@luma.gl/gltools';\nimport {assertWebGL2Context, getKey} from '../webgl-utils';\nimport {getPrimitiveDrawMode} from '../webgl-utils/attribute-utils';\nimport {uid, assert} from '../utils';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\nconst GL_SEPARATE_ATTRIBS = 0x8c8d;\n\nconst V6_DEPRECATED_METHODS = [\n 'setVertexArray',\n 'setAttributes',\n 'setBuffers',\n 'unsetBuffers',\n\n 'use',\n 'getUniformCount',\n 'getUniformInfo',\n 'getUniformLocation',\n 'getUniformValue',\n\n 'getVarying',\n 'getFragDataLocation',\n 'getAttachedShaders',\n 'getAttributeCount',\n 'getAttributeLocation',\n 'getAttributeInfo'\n];\n\nexport default class Program extends Resource {\n constructor(gl, props = {}) {\n super(gl, props);\n\n this.stubRemovedMethods('Program', 'v6.0', V6_DEPRECATED_METHODS);\n\n // Experimental flag to avoid deleting Program object while it is cached\n this._isCached = false;\n\n this.initialize(props);\n\n Object.seal(this);\n\n this._setId(props.id);\n }\n\n initialize(props = {}) {\n const {hash, vs, fs, varyings, bufferMode = GL_SEPARATE_ATTRIBS, debug = false} = props;\n\n this.hash = hash || ''; // Used by ProgramManager\n this.debug = debug;\n\n // Create shaders if needed\n this.vs =\n typeof vs === 'string' ? new VertexShader(this.gl, {id: `${props.id}-vs`, source: vs}) : vs;\n this.fs =\n typeof fs === 'string' ? new FragmentShader(this.gl, {id: `${props.id}-fs`, source: fs}) : fs;\n assert(this.vs instanceof VertexShader);\n assert(this.fs instanceof FragmentShader);\n\n // uniforms\n this.uniforms = {};\n\n this._textureUniforms = {};\n this._texturesRenderable = true;\n\n // Setup varyings if supplied\n if (varyings && varyings.length > 0) {\n assertWebGL2Context(this.gl);\n this.varyings = varyings;\n this.gl.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n this._readUniformLocationsFromLinkedProgram();\n this.configuration = new ProgramConfiguration(this);\n\n return this.setProps(props);\n }\n\n delete(options = {}) {\n if (this._isCached) {\n // This object is cached, do not delete\n return this;\n }\n return super.delete(options);\n }\n\n setProps(props) {\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n return this;\n }\n\n // A good thing about the WebGL API is that there are so many ways to draw things ;)\n // This function unifies those ways into a single call using common parameters with sane defaults\n draw({\n logPriority, // Probe log priority, enables Model to do more integrated logging\n\n drawMode = GL.TRIANGLES,\n vertexCount,\n offset = 0,\n start,\n end,\n isIndexed = false,\n indexType = GL.UNSIGNED_SHORT,\n instanceCount = 0,\n isInstanced = instanceCount > 0,\n\n vertexArray = null,\n transformFeedback,\n framebuffer,\n parameters = {},\n\n // Deprecated\n uniforms,\n samplers\n }) {\n if (uniforms || samplers) {\n // DEPRECATED: v7.0 (deprecated earlier but warning not properly implemented)\n log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();\n this.setUniforms(uniforms || {});\n }\n\n if (this.debug && logPriority !== undefined) {\n const fb = framebuffer ? framebuffer.id : 'default';\n const message =\n `mode=${getKey(this.gl, drawMode)} verts=${vertexCount} ` +\n `instances=${instanceCount} indexType=${getKey(this.gl, indexType)} ` +\n `isInstanced=${isInstanced} isIndexed=${isIndexed} ` +\n `Framebuffer=${fb}`;\n log.log(logPriority, message)();\n }\n\n // TODO - move vertex array binding and transform feedback binding to withParameters?\n assert(vertexArray);\n\n this.gl.useProgram(this.handle);\n\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n if (!this._areTexturesRenderable()) {\n return false;\n }\n\n vertexArray.bindForDraw(vertexCount, instanceCount, () => {\n if (framebuffer !== undefined) {\n parameters = Object.assign({}, parameters, {framebuffer});\n }\n\n if (transformFeedback) {\n const primitiveMode = getPrimitiveDrawMode(drawMode);\n transformFeedback.begin(primitiveMode);\n }\n\n this._bindTextures();\n\n withParameters(this.gl, parameters, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n this.gl.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);\n } else if (isIndexed && isWebGL2(this.gl) && !isNaN(start) && !isNaN(end)) {\n this.gl.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.gl.drawElements(drawMode, vertexCount, indexType, offset);\n } else if (isInstanced) {\n this.gl.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);\n } else {\n this.gl.drawArrays(drawMode, offset, vertexCount);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n\n return true;\n }\n\n setUniforms(uniforms = {}) {\n if (this.debug) {\n checkUniformValues(uniforms, this.id, this._uniformSetters);\n }\n\n this.gl.useProgram(this.handle);\n\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n const uniformSetter = this._uniformSetters[uniformName];\n\n if (uniformSetter) {\n let value = uniform;\n let textureUpdate = false;\n\n if (value instanceof Framebuffer) {\n value = value.texture;\n }\n if (value instanceof Texture) {\n textureUpdate = this.uniforms[uniformName] !== uniform;\n\n if (textureUpdate) {\n // eslint-disable-next-line max-depth\n if (uniformSetter.textureIndex === undefined) {\n uniformSetter.textureIndex = this._textureIndexCounter++;\n }\n\n // Bind texture to index\n const texture = value;\n const {textureIndex} = uniformSetter;\n\n texture.bind(textureIndex);\n value = textureIndex;\n\n if (!texture.loaded) {\n this._texturesRenderable = false;\n }\n\n this._textureUniforms[uniformName] = texture;\n } else {\n value = uniformSetter.textureIndex;\n }\n } else if (this._textureUniforms[uniformName]) {\n delete this._textureUniforms[uniformName];\n }\n\n // NOTE(Tarek): uniformSetter returns whether\n // value had to be updated or not.\n if (uniformSetter(value) || textureUpdate) {\n copyUniform(this.uniforms, uniformName, uniform);\n }\n }\n }\n\n return this;\n }\n\n // PRIVATE METHODS\n\n // Checks if all texture-values uniforms are renderable (i.e. loaded)\n // Note: This is currently done before every draw call\n _areTexturesRenderable() {\n if (this._texturesRenderable) {\n return true;\n }\n\n this._texturesRenderable = true;\n\n for (const uniformName in this._textureUniforms) {\n const texture = this._textureUniforms[uniformName];\n this._texturesRenderable = this._texturesRenderable && texture.loaded;\n }\n\n return this._texturesRenderable;\n }\n\n // Binds textures\n // Note: This is currently done before every draw call\n _bindTextures() {\n for (const uniformName in this._textureUniforms) {\n const textureIndex = this._uniformSetters[uniformName].textureIndex;\n this._textureUniforms[uniformName].bind(textureIndex);\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createProgram();\n }\n\n _deleteHandle() {\n this.gl.deleteProgram(this.handle);\n }\n\n // Extract opts needed to initialize a `Program` from an independently created WebGLProgram handle\n _getOptionsFromHandle(handle) {\n const shaderHandles = this.gl.getAttachedShaders(handle);\n const opts = {};\n for (const shaderHandle of shaderHandles) {\n const type = this.gl.getShaderParameter(this.handle, GL.SHADER_TYPE);\n switch (type) {\n case GL.VERTEX_SHADER:\n opts.vs = new VertexShader({handle: shaderHandle});\n break;\n case GL.FRAGMENT_SHADER:\n opts.fs = new FragmentShader({handle: shaderHandle});\n break;\n default:\n }\n }\n return opts;\n }\n\n _getParameter(pname) {\n return this.gl.getProgramParameter(this.handle, pname);\n }\n\n // If program is not named, name it after shader names\n // TODO - this.id will already have been initialized\n _setId(id) {\n if (!id) {\n const programName = this._getName();\n this.id = uid(programName);\n }\n }\n\n // Generate a default name for the program based on names of the shaders\n _getName() {\n let programName = this.vs.getName() || this.fs.getName();\n programName = programName.replace(/shader/i, '');\n programName = programName ? `${programName}-program` : 'program';\n return programName;\n }\n\n _compileAndLink() {\n const {gl} = this;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n\n // Avoid checking program linking error in production\n if (gl.debug || log.level > 0) {\n gl.validateProgram(this.handle);\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // query uniform locations and build name to setter map.\n // TODO - This overlaps with ProgramConfiguration?\n _readUniformLocationsFromLinkedProgram() {\n const {gl} = this;\n this._uniformSetters = {};\n this._uniformCount = this._getParameter(GL.ACTIVE_UNIFORMS);\n for (let i = 0; i < this._uniformCount; i++) {\n const info = this.gl.getActiveUniform(this.handle, i);\n const {name, isArray} = parseUniformName(info.name);\n let location = gl.getUniformLocation(this.handle, name);\n this._uniformSetters[name] = getUniformSetter(gl, location, info, isArray);\n if (info.size > 1) {\n for (let l = 0; l < info.size; l++) {\n location = gl.getUniformLocation(this.handle, `${name}[${l}]`);\n this._uniformSetters[`${name}[${l}]`] = getUniformSetter(gl, location, info, isArray);\n }\n }\n }\n this._textureIndexCounter = 0;\n }\n\n // TO BE REMOVED in v7?\n\n // Rretrieves information about active uniforms identifed by their indices (`uniformIndices`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniforms\n getActiveUniforms(uniformIndices, pname) {\n return this.gl.getActiveUniforms(this.handle, uniformIndices, pname);\n }\n\n // Retrieves the index of a uniform block\n getUniformBlockIndex(blockName) {\n return this.gl.getUniformBlockIndex(this.handle, blockName);\n }\n\n // Retrieves information about an active uniform block (`blockIndex`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockParameter\n getActiveUniformBlockParameter(blockIndex, pname) {\n return this.gl.getActiveUniformBlockParameter(this.handle, blockIndex, pname);\n }\n\n // Binds a uniform block (`blockIndex`) to a specific binding point (`blockBinding`)\n uniformBlockBinding(blockIndex, blockBinding) {\n this.gl.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n }\n}\n","import toDate from '../toDate/index.js';\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from '../../addLeadingZeros/index.js';\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import lightFormatters from '../lightFormatters/index.js';\nimport getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js';\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js';\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js';\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js';\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport addLeadingZeros from '../../addLeadingZeros/index.js';\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n /*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\n};\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import toDate from '../../toDate/index.js';\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from '../isValid/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport formatters from '../_lib/format/formatters/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js'; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > âš ï¸ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","export default `\\\n#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\n\nstruct AmbientLight {\n vec3 color;\n};\n\nstruct PointLight {\n vec3 color;\n vec3 position;\n\n // Constant-Linear-Exponential\n vec3 attenuation;\n};\n\nstruct DirectionalLight {\n vec3 color;\n vec3 direction;\n};\n\nuniform AmbientLight lighting_uAmbientLight;\nuniform PointLight lighting_uPointLight[MAX_LIGHTS];\nuniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS];\nuniform int lighting_uPointLightCount;\nuniform int lighting_uDirectionalLightCount;\n\nuniform bool lighting_uEnabled;\n\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\n return pointLight.attenuation.x\n + pointLight.attenuation.y * distance\n + pointLight.attenuation.z * distance * distance;\n}\n\n#endif\n`;\n","import lightingShader from './lights.glsl';\n\nexport default {\n name: 'lights',\n vs: lightingShader,\n fs: lightingShader,\n getUniforms,\n defines: {\n MAX_LIGHTS: 3\n }\n};\n\nconst INITIAL_MODULE_OPTIONS = {};\n\n// Take color 0-255 and intensity as input and output 0.0-1.0 range\nfunction convertColor({color = [0, 0, 0], intensity = 1.0} = {}) {\n return color.map(component => (component * intensity) / 255.0);\n}\n\nfunction getLightSourceUniforms({ambientLight, pointLights = [], directionalLights = []}) {\n const lightSourceUniforms = {};\n\n if (ambientLight) {\n lightSourceUniforms['lighting_uAmbientLight.color'] = convertColor(ambientLight);\n } else {\n lightSourceUniforms['lighting_uAmbientLight.color'] = [0, 0, 0];\n }\n\n pointLights.forEach((pointLight, index) => {\n lightSourceUniforms[`lighting_uPointLight[${index}].color`] = convertColor(pointLight);\n lightSourceUniforms[`lighting_uPointLight[${index}].position`] = pointLight.position;\n lightSourceUniforms[`lighting_uPointLight[${index}].attenuation`] = pointLight.attenuation || [\n 1,\n 0,\n 0\n ];\n });\n lightSourceUniforms.lighting_uPointLightCount = pointLights.length;\n\n directionalLights.forEach((directionalLight, index) => {\n lightSourceUniforms[`lighting_uDirectionalLight[${index}].color`] = convertColor(\n directionalLight\n );\n lightSourceUniforms[`lighting_uDirectionalLight[${index}].direction`] =\n directionalLight.direction;\n });\n lightSourceUniforms.lighting_uDirectionalLightCount = directionalLights.length;\n\n return lightSourceUniforms;\n}\n\n// eslint-disable-next-line complexity\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n // Specify lights separately\n if ('lightSources' in opts) {\n const {ambientLight, pointLights, directionalLights} = opts.lightSources || {};\n const hasLights =\n ambientLight ||\n (pointLights && pointLights.length > 0) ||\n (directionalLights && directionalLights.length > 0);\n\n if (!hasLights) {\n return {lighting_uEnabled: false};\n }\n\n return Object.assign(\n {},\n getLightSourceUniforms({ambientLight, pointLights, directionalLights}),\n {\n lighting_uEnabled: true\n }\n );\n }\n\n // Support for array of lights. Type of light is detected by type field\n if ('lights' in opts) {\n const lightSources = {pointLights: [], directionalLights: []};\n for (const light of opts.lights || []) {\n switch (light.type) {\n case 'ambient':\n // Note: Only uses last ambient light\n // TODO - add ambient light sources on CPU?\n lightSources.ambientLight = light;\n break;\n case 'directional':\n lightSources.directionalLights.push(light);\n break;\n case 'point':\n lightSources.pointLights.push(light);\n break;\n default:\n // eslint-disable-next-line\n // console.warn(light.type);\n }\n }\n\n // Call the `opts.lightSources`` version\n return getUniforms({lightSources});\n }\n\n return {};\n}\n","export default `\\\n\nuniform float lighting_uAmbient;\nuniform float lighting_uDiffuse;\nuniform float lighting_uShininess;\nuniform vec3 lighting_uSpecularColor;\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\n vec3 halfway_direction = normalize(light_direction + view_direction);\n float lambertian = dot(light_direction, normal_worldspace);\n float specular = 0.0;\n if (lambertian > 0.0) {\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\n specular = pow(specular_angle, lighting_uShininess);\n }\n lambertian = max(lambertian, 0.0);\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\n}\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = surfaceColor;\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = vec3(0, 0, 0);\n vec3 surfaceColor = vec3(0, 0, 0);\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n`;\n","import lights from '../lights/lights';\nimport lightingShader from './phong-lighting.glsl';\n\nconst gouraudLighting = {\n name: 'gouraud-lighting',\n dependencies: [lights],\n vs: lightingShader,\n defines: {\n LIGHTING_VERTEX: 1\n },\n getUniforms\n};\n\nconst phongLighting = {\n name: 'phong-lighting',\n dependencies: [lights],\n fs: lightingShader,\n defines: {\n LIGHTING_FRAGMENT: 1\n },\n getUniforms\n};\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getMaterialUniforms(material) {\n const {ambient = 0.35, diffuse = 0.6, shininess = 32, specularColor = [30, 30, 30]} = material;\n\n return {\n lighting_uAmbient: ambient,\n lighting_uDiffuse: diffuse,\n lighting_uShininess: shininess,\n lighting_uSpecularColor: specularColor.map(x => x / 255)\n };\n}\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n if (!('material' in opts)) {\n return {};\n }\n\n const {material} = opts;\n\n if (!material) {\n return {lighting_uEnabled: false};\n }\n\n return getMaterialUniforms(material);\n}\n\nexport {gouraudLighting, phongLighting};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ListContext from './ListContext';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative'\n },\n\n /* Styles applied to the root element if `disablePadding={false}`. */\n padding: {\n paddingTop: 8,\n paddingBottom: 8\n },\n\n /* Styles applied to the root element if dense. */\n dense: {},\n\n /* Styles applied to the root element if a `subheader` is provided. */\n subheader: {\n paddingTop: 0\n }\n};\nvar List = React.forwardRef(function List(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'ul' : _props$component,\n _props$dense = props.dense,\n dense = _props$dense === void 0 ? false : _props$dense,\n _props$disablePadding = props.disablePadding,\n disablePadding = _props$disablePadding === void 0 ? false : _props$disablePadding,\n subheader = props.subheader,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"]);\n\n var context = React.useMemo(function () {\n return {\n dense: dense\n };\n }, [dense]);\n return React.createElement(ListContext.Provider, {\n value: context\n }, React.createElement(Component, _extends({\n className: clsx(classes.root, className, dense && classes.dense, !disablePadding && classes.padding, subheader && classes.subheader),\n ref: ref\n }, other), subheader, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input will be used for\n * the list and list items.\n * The prop is available to descendant components as the `dense` context.\n */\n dense: PropTypes.bool,\n\n /**\n * If `true`, vertical padding will be removed from the list.\n */\n disablePadding: PropTypes.bool,\n\n /**\n * The content of the subheader, normally `ListSubheader`.\n */\n subheader: PropTypes.node\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiList'\n})(List);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\n\nfunction nextItem(list, item, disableListWrap) {\n if (list === item) {\n return list.firstChild;\n }\n\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n\n return disableListWrap ? null : list.firstChild;\n}\n\nfunction previousItem(list, item, disableListWrap) {\n if (list === item) {\n return disableListWrap ? list.firstChild : list.lastChild;\n }\n\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n\n return disableListWrap ? null : list.lastChild;\n}\n\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n if (textCriteria === undefined) {\n return true;\n }\n\n var text = nextFocus.innerText;\n\n if (text === undefined) {\n // jsdom doesn't support innerText\n text = nextFocus.textContent;\n }\n\n text = text.trim().toLowerCase();\n\n if (text.length === 0) {\n return false;\n }\n\n if (textCriteria.repeating) {\n return text[0] === textCriteria.keys[0];\n }\n\n return text.indexOf(textCriteria.keys.join('')) === 0;\n}\n\nfunction moveFocus(list, currentFocus, disableListWrap, traversalFunction, textCriteria) {\n var wrappedOnce = false;\n var nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return false;\n }\n\n wrappedOnce = true;\n } // Move to the next element.\n\n\n if (!nextFocus.hasAttribute('tabindex') || nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true' || !textCriteriaMatches(nextFocus, textCriteria)) {\n nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n } else {\n nextFocus.focus();\n return true;\n }\n }\n\n return false;\n}\n\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * A permanently displayed menu following https://www.w3.org/TR/wai-aria-practices/#menubutton\n * It's exposed to help customization of the [`Menu`](/api/menu/) component. If you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\n\nvar MenuList = React.forwardRef(function MenuList(props, ref) {\n var actions = props.actions,\n _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,\n _props$autoFocusItem = props.autoFocusItem,\n autoFocusItem = _props$autoFocusItem === void 0 ? false : _props$autoFocusItem,\n children = props.children,\n className = props.className,\n onKeyDown = props.onKeyDown,\n _props$disableListWra = props.disableListWrap,\n disableListWrap = _props$disableListWra === void 0 ? false : _props$disableListWra,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'selectedMenu' : _props$variant,\n other = _objectWithoutProperties(props, [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"onKeyDown\", \"disableListWrap\", \"variant\"]);\n\n var listRef = React.useRef(null);\n var textCriteriaRef = React.useRef({\n keys: [],\n repeating: true,\n previousKeyMatched: true,\n lastTime: null\n });\n useEnhancedEffect(function () {\n if (autoFocus) {\n listRef.current.focus();\n }\n }, [autoFocus]);\n React.useImperativeHandle(actions, function () {\n return {\n adjustStyleForScrollbar: function adjustStyleForScrollbar(containerElement, theme) {\n // Let's ignore that piece of logic if users are already overriding the width\n // of the menu.\n var noExplicitWidth = !listRef.current.style.width;\n\n if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n var scrollbarSize = \"\".concat(getScrollbarSize(true), \"px\");\n listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n listRef.current.style.width = \"calc(100% + \".concat(scrollbarSize, \")\");\n }\n\n return listRef.current;\n }\n };\n }, []);\n\n var handleKeyDown = function handleKeyDown(event) {\n var list = listRef.current;\n var key = event.key;\n /**\n * @type {Element} - will always be defined since we are in a keydown handler\n * attached to an element. A keydown event is either dispatched to the activeElement\n * or document.body or document.documentElement. Only the first case will\n * trigger this specific handler.\n */\n\n var currentFocus = ownerDocument(list).activeElement;\n\n if (key === 'ArrowDown') {\n // Prevent scroll of the page\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, nextItem);\n } else if (key === 'ArrowUp') {\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, previousItem);\n } else if (key === 'Home') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, nextItem);\n } else if (key === 'End') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, previousItem);\n } else if (key.length === 1) {\n var criteria = textCriteriaRef.current;\n var lowerKey = key.toLowerCase();\n var currTime = performance.now();\n\n if (criteria.keys.length > 0) {\n // Reset\n if (currTime - criteria.lastTime > 500) {\n criteria.keys = [];\n criteria.repeating = true;\n criteria.previousKeyMatched = true;\n } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n criteria.repeating = false;\n }\n }\n\n criteria.lastTime = currTime;\n criteria.keys.push(lowerKey);\n var keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n\n if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, nextItem, criteria))) {\n event.preventDefault();\n } else {\n criteria.previousKeyMatched = false;\n }\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n listRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(handleOwnRef, ref);\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n\n var activeItemIndex = -1; // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n\n React.Children.forEach(children, function (child, index) {\n if (!React.isValidElement(child)) {\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: the Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n });\n var items = React.Children.map(children, function (child, index) {\n if (index === activeItemIndex) {\n var newChildProps = {};\n\n if (autoFocusItem) {\n newChildProps.autoFocus = true;\n }\n\n if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n newChildProps.tabIndex = 0;\n }\n\n if (newChildProps !== null) {\n return React.cloneElement(child, newChildProps);\n }\n }\n\n return child;\n });\n return React.createElement(List, _extends({\n role: \"menu\",\n ref: handleRef,\n className: className,\n onKeyDown: handleKeyDown,\n tabIndex: autoFocus ? 0 : -1\n }, other), items);\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes = {\n /**\n * @ignore\n */\n actions: PropTypes.shape({\n current: PropTypes.object\n }),\n\n /**\n * If `true`, will focus the `[role=\"menu\"]` container and move into tab order\n */\n autoFocus: PropTypes.bool,\n\n /**\n * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n * if `variant=\"selectedMenu\"`\n */\n autoFocusItem: PropTypes.bool,\n\n /**\n * MenuList contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the menu items will not wrap focus.\n */\n disableListWrap: PropTypes.bool,\n\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n * and the vertical alignment relative to the anchor element.\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/3ffe3a5d82f6f561b82ff78d82b32a7d14aed558/js/src/modal.js#L512-L519\nexport default function getScrollbarSize() {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.width = '99px';\n scrollDiv.style.height = '99px';\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarSize;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport ButtonBase from '../ButtonBase';\nimport isMuiElement from '../utils/isMuiElement';\nimport useForkRef from '../utils/useForkRef';\nimport ListContext from '../List/ListContext';\nimport * as ReactDOM from 'react-dom';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the (normally root) `component` element. May be wrapped by a `container`. */\n root: {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n width: '100%',\n boxSizing: 'border-box',\n textAlign: 'left',\n paddingTop: 8,\n paddingBottom: 8,\n '&$focusVisible': {\n backgroundColor: theme.palette.action.selected\n },\n '&$selected, &$selected:hover': {\n backgroundColor: theme.palette.action.selected\n },\n '&$disabled': {\n opacity: 0.5\n }\n },\n\n /* Styles applied to the `container` element if `children` includes `ListItemSecondaryAction`. */\n container: {\n position: 'relative'\n },\n\n /* Pseudo-class applied to the `component`'s `focusVisibleClassName` prop if `button={true}`. */\n focusVisible: {},\n\n /* Styles applied to the `component` element if dense. */\n dense: {\n paddingTop: 4,\n paddingBottom: 4\n },\n\n /* Styles applied to the `component` element if `alignItems=\"flex-start\"`. */\n alignItemsFlexStart: {\n alignItems: 'flex-start'\n },\n\n /* Pseudo-class applied to the inner `component` element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the inner `component` element if `divider={true}`. */\n divider: {\n borderBottom: \"1px solid \".concat(theme.palette.divider),\n backgroundClip: 'padding-box'\n },\n\n /* Styles applied to the inner `component` element if `disableGutters={false}`. */\n gutters: {\n paddingLeft: 16,\n paddingRight: 16\n },\n\n /* Styles applied to the inner `component` element if `button={true}`. */\n button: {\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: theme.palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the `component` element if `children` includes `ListItemSecondaryAction`. */\n secondaryAction: {\n // Add some space to avoid collision as `ListItemSecondaryAction`\n // is absolutely positioned.\n paddingRight: 48\n },\n\n /* Pseudo-class applied to the root element if `selected={true}`. */\n selected: {}\n };\n};\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\n\nvar ListItem = React.forwardRef(function ListItem(props, ref) {\n var _props$alignItems = props.alignItems,\n alignItems = _props$alignItems === void 0 ? 'center' : _props$alignItems,\n _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,\n _props$button = props.button,\n button = _props$button === void 0 ? false : _props$button,\n childrenProp = props.children,\n classes = props.classes,\n className = props.className,\n componentProp = props.component,\n _props$ContainerCompo = props.ContainerComponent,\n ContainerComponent = _props$ContainerCompo === void 0 ? 'li' : _props$ContainerCompo,\n _props$ContainerProps = props.ContainerProps;\n _props$ContainerProps = _props$ContainerProps === void 0 ? {} : _props$ContainerProps;\n\n var ContainerClassName = _props$ContainerProps.className,\n ContainerProps = _objectWithoutProperties(_props$ContainerProps, [\"className\"]),\n _props$dense = props.dense,\n dense = _props$dense === void 0 ? false : _props$dense,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n _props$divider = props.divider,\n divider = _props$divider === void 0 ? false : _props$divider,\n focusVisibleClassName = props.focusVisibleClassName,\n _props$selected = props.selected,\n selected = _props$selected === void 0 ? false : _props$selected,\n other = _objectWithoutProperties(props, [\"alignItems\", \"autoFocus\", \"button\", \"children\", \"classes\", \"className\", \"component\", \"ContainerComponent\", \"ContainerProps\", \"dense\", \"disabled\", \"disableGutters\", \"divider\", \"focusVisibleClassName\", \"selected\"]);\n\n var context = React.useContext(ListContext);\n var childContext = {\n dense: dense || context.dense || false,\n alignItems: alignItems\n };\n var listItemRef = React.useRef(null);\n useEnhancedEffect(function () {\n if (autoFocus) {\n if (listItemRef.current) {\n listItemRef.current.focus();\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Material-UI: unable to set focus to a ListItem whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n var children = React.Children.toArray(childrenProp);\n var hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n listItemRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(handleOwnRef, ref);\n\n var componentProps = _extends({\n className: clsx(classes.root, className, childContext.dense && classes.dense, !disableGutters && classes.gutters, divider && classes.divider, disabled && classes.disabled, button && classes.button, alignItems !== \"center\" && classes.alignItemsFlexStart, hasSecondaryAction && classes.secondaryAction, selected && classes.selected),\n disabled: disabled\n }, other);\n\n var Component = componentProp || 'li';\n\n if (button) {\n componentProps.component = componentProp || 'div';\n componentProps.focusVisibleClassName = clsx(classes.focusVisible, focusVisibleClassName);\n Component = ButtonBase;\n }\n\n if (hasSecondaryAction) {\n // Use div by default.\n Component = !componentProps.component && !componentProp ? 'div' : Component; // Avoid nesting of li > li.\n\n if (ContainerComponent === 'li') {\n if (Component === 'li') {\n Component = 'div';\n } else if (componentProps.component === 'li') {\n componentProps.component = 'div';\n }\n }\n\n return React.createElement(ListContext.Provider, {\n value: childContext\n }, React.createElement(ContainerComponent, _extends({\n className: clsx(classes.container, ContainerClassName),\n ref: handleRef\n }, ContainerProps), React.createElement(Component, componentProps, children), children.pop()));\n }\n\n return React.createElement(ListContext.Provider, {\n value: childContext\n }, React.createElement(Component, _extends({\n ref: handleRef\n }, componentProps), children));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes = {\n /**\n * Defines the `align-items` style property.\n */\n alignItems: PropTypes.oneOf(['flex-start', 'center']),\n\n /**\n * If `true`, the list item will be focused during the first mount.\n * Focus will also be triggered if the value changes from false to true.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * If `true`, the list item will be a button (using `ButtonBase`). Props intended\n * for `ButtonBase` can then be applied to `ListItem`.\n */\n button: PropTypes.bool,\n\n /**\n * The content of the component. If a `ListItemSecondaryAction` is used it must\n * be the last child.\n */\n children: chainPropTypes(PropTypes.node, function (props) {\n var children = React.Children.toArray(props.children); // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n\n var secondaryActionIndex = -1;\n\n for (var i = children.length - 1; i >= 0; i -= 1) {\n var child = children[i];\n\n if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n secondaryActionIndex = i;\n break;\n }\n } // is ListItemSecondaryAction the last child of ListItem\n\n\n if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n return new Error('Material-UI: you used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n }\n\n return null;\n }),\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n * By default, it's a `li` when `button` is `false` and a `div` when `button` is `true`.\n */\n component: PropTypes.elementType,\n\n /**\n * The container component used when a `ListItemSecondaryAction` is the last child.\n */\n ContainerComponent: PropTypes.elementType,\n\n /**\n * Props applied to the container component if used.\n */\n ContainerProps: PropTypes.object,\n\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input will be used.\n */\n dense: PropTypes.bool,\n\n /**\n * If `true`, the list item will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the left and right padding is removed.\n */\n disableGutters: PropTypes.bool,\n\n /**\n * If `true`, a 1px light border is added to the bottom of the list item.\n */\n divider: PropTypes.bool,\n\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * Use to apply selected styling.\n */\n selected: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiListItem'\n})(ListItem);","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ListItem from '../ListItem';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.body1, _defineProperty({\n minHeight: 48,\n paddingTop: 6,\n paddingBottom: 6,\n boxSizing: 'border-box',\n width: 'auto',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n }, theme.breakpoints.up('sm'), {\n minHeight: 'auto'\n })),\n // TODO v5: remove\n\n /* Styles applied to the root element if `disableGutters={false}`. */\n gutters: {},\n\n /* Styles applied to the root element if `selected={true}`. */\n selected: {},\n\n /* Styles applied to the root element if dense. */\n dense: _extends({}, theme.typography.body2, {\n minHeight: 'auto'\n })\n };\n};\nvar MenuItem = React.forwardRef(function MenuItem(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n component = _props$component === void 0 ? 'li' : _props$component,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n _props$role = props.role,\n role = _props$role === void 0 ? 'menuitem' : _props$role,\n selected = props.selected,\n tabIndexProp = props.tabIndex,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"disableGutters\", \"role\", \"selected\", \"tabIndex\"]);\n\n var tabIndex;\n\n if (!props.disabled) {\n tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\n }\n\n return React.createElement(ListItem, _extends({\n button: true,\n role: role,\n tabIndex: tabIndex,\n component: component,\n selected: selected,\n disableGutters: disableGutters,\n classes: {\n dense: classes.dense\n },\n className: clsx(classes.root, className, selected && classes.selected, !disableGutters && classes.gutters),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuItem.propTypes = {\n /**\n * Menu item contents.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input will be used.\n */\n dense: PropTypes.bool,\n\n /**\n * @ignore\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the left and right padding is removed.\n */\n disableGutters: PropTypes.bool,\n\n /**\n * @ignore\n */\n role: PropTypes.string,\n\n /**\n * @ignore\n */\n selected: PropTypes.bool,\n\n /**\n * @ignore\n */\n tabIndex: PropTypes.number\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiMenuItem'\n})(MenuItem);","import * as React from 'react';\nimport createSvgIcon from './createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon(React.createElement(\"path\", {\n d: \"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n}), 'Person');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../../SvgIcon';\nexport default function createSvgIcon(path, displayName) {\n var Component = React.memo(React.forwardRef(function (props, ref) {\n return React.createElement(SvgIcon, _extends({}, props, {\n ref: ref\n }), path);\n }));\n\n if (process.env.NODE_ENV !== 'production') {\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = SvgIcon.muiName;\n return Component;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Person from '../internal/svg-icons/Person';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n width: 40,\n height: 40,\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(20),\n lineHeight: 1,\n borderRadius: '50%',\n overflow: 'hidden',\n userSelect: 'none'\n },\n\n /* Styles applied to the root element if not `src` or `srcSet`. */\n colorDefault: {\n color: theme.palette.background.default,\n backgroundColor: theme.palette.type === 'light' ? theme.palette.grey[400] : theme.palette.grey[600]\n },\n\n /* Styles applied to the root element if `variant=\"circle\"`. */\n circle: {},\n\n /* Styles applied to the root element if `variant=\"rounded\"`. */\n rounded: {\n borderRadius: theme.shape.borderRadius\n },\n\n /* Styles applied to the root element if `variant=\"square\"`. */\n square: {\n borderRadius: 0\n },\n\n /* Styles applied to the img element if either `src` or `srcSet` is defined. */\n img: {\n width: '100%',\n height: '100%',\n textAlign: 'center',\n // Handle non-square image. The property isn't supported by IE 11.\n objectFit: 'cover',\n // Hide alt text.\n color: 'transparent',\n // Hide the image broken icon, only works on Chrome.\n textIndent: 10000\n },\n\n /* Styles applied to the fallback icon */\n fallback: {\n width: '75%',\n height: '75%'\n }\n };\n};\n\nfunction useLoaded(_ref) {\n var src = _ref.src,\n srcSet = _ref.srcSet;\n\n var _React$useState = React.useState(false),\n loaded = _React$useState[0],\n setLoaded = _React$useState[1];\n\n React.useEffect(function () {\n if (!src && !srcSet) {\n return undefined;\n }\n\n setLoaded(false);\n var active = true;\n var image = new Image();\n image.src = src;\n image.srcSet = srcSet;\n\n image.onload = function () {\n if (!active) {\n return;\n }\n\n setLoaded('loaded');\n };\n\n image.onerror = function () {\n if (!active) {\n return;\n }\n\n setLoaded('error');\n };\n\n return function () {\n active = false;\n };\n }, [src, srcSet]);\n return loaded;\n}\n\nvar Avatar = React.forwardRef(function Avatar(props, ref) {\n var alt = props.alt,\n childrenProp = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n imgProps = props.imgProps,\n sizes = props.sizes,\n src = props.src,\n srcSet = props.srcSet,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'circle' : _props$variant,\n other = _objectWithoutProperties(props, [\"alt\", \"children\", \"classes\", \"className\", \"component\", \"imgProps\", \"sizes\", \"src\", \"srcSet\", \"variant\"]);\n\n var children = null; // Use a hook instead of onError on the img element to support server-side rendering.\n\n var loaded = useLoaded({\n src: src,\n srcSet: srcSet\n });\n var hasImg = src || srcSet;\n var hasImgNotFailing = hasImg && loaded !== 'error';\n\n if (hasImgNotFailing) {\n children = React.createElement(\"img\", _extends({\n alt: alt,\n src: src,\n srcSet: srcSet,\n sizes: sizes,\n className: classes.img\n }, imgProps));\n } else if (childrenProp != null) {\n children = childrenProp;\n } else if (hasImg && alt) {\n children = alt[0];\n } else {\n children = React.createElement(Person, {\n className: classes.fallback\n });\n }\n\n return React.createElement(Component, _extends({\n className: clsx(classes.root, classes.system, classes[variant], className, !hasImgNotFailing && classes.colorDefault),\n ref: ref\n }, other), children);\n});\nprocess.env.NODE_ENV !== \"production\" ? Avatar.propTypes = {\n /**\n * Used in combination with `src` or `srcSet` to\n * provide an alt attribute for the rendered `img` element.\n */\n alt: PropTypes.string,\n\n /**\n * Used to render icon or text elements inside the Avatar if `src` is not set.\n * This can be an element, or just a string.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * Attributes applied to the `img` element if the component is used to display an image.\n * It can be used to listen for the loading error event.\n */\n imgProps: PropTypes.object,\n\n /**\n * The `sizes` attribute for the `img` element.\n */\n sizes: PropTypes.string,\n\n /**\n * The `src` attribute for the `img` element.\n */\n src: PropTypes.string,\n\n /**\n * The `srcSet` attribute for the `img` element.\n * Use this attribute for responsive image display.\n */\n srcSet: PropTypes.string,\n\n /**\n * The shape of the avatar.\n */\n variant: PropTypes.oneOf(['circle', 'rounded', 'square'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiAvatar'\n})(Avatar);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport Collapse from '../Collapse';\nimport Paper from '../Paper';\nimport withStyles from '../styles/withStyles';\nimport ExpansionPanelContext from './ExpansionPanelContext';\nimport useControlled from '../utils/useControlled';\nexport var styles = function styles(theme) {\n var transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n transition: theme.transitions.create(['margin'], transition),\n '&:before': {\n position: 'absolute',\n left: 0,\n top: -1,\n right: 0,\n height: 1,\n content: '\"\"',\n opacity: 1,\n backgroundColor: theme.palette.divider,\n transition: theme.transitions.create(['opacity', 'background-color'], transition)\n },\n '&:first-child': {\n '&:before': {\n display: 'none'\n }\n },\n '&$expanded': {\n margin: '16px 0',\n '&:first-child': {\n marginTop: 0\n },\n '&:last-child': {\n marginBottom: 0\n },\n '&:before': {\n opacity: 0\n }\n },\n '&$expanded + &': {\n '&:before': {\n display: 'none'\n }\n },\n '&$disabled': {\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n\n /* Styles applied to the root element if `square={false}`. */\n rounded: {\n borderRadius: 0,\n '&:first-child': {\n borderTopLeftRadius: theme.shape.borderRadius,\n borderTopRightRadius: theme.shape.borderRadius\n },\n '&:last-child': {\n borderBottomLeftRadius: theme.shape.borderRadius,\n borderBottomRightRadius: theme.shape.borderRadius,\n // Fix a rendering issue on Edge\n '@supports (-ms-ime-align: auto)': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }\n }\n },\n\n /* Styles applied to the root element if `expanded={true}`. */\n expanded: {},\n\n /* Styles applied to the root element if `disabled={true}`. */\n disabled: {}\n };\n};\nvar ExpansionPanel = React.forwardRef(function ExpansionPanel(props, ref) {\n var childrenProp = props.children,\n classes = props.classes,\n className = props.className,\n _props$defaultExpande = props.defaultExpanded,\n defaultExpanded = _props$defaultExpande === void 0 ? false : _props$defaultExpande,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n expandedProp = props.expanded,\n onChange = props.onChange,\n _props$square = props.square,\n square = _props$square === void 0 ? false : _props$square,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Collapse : _props$TransitionComp,\n TransitionProps = props.TransitionProps,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"defaultExpanded\", \"disabled\", \"expanded\", \"onChange\", \"square\", \"TransitionComponent\", \"TransitionProps\"]);\n\n var _useControlled = useControlled({\n controlled: expandedProp,\n default: defaultExpanded,\n name: 'ExpansionPanel'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n expanded = _useControlled2[0],\n setExpandedState = _useControlled2[1];\n\n var handleChange = React.useCallback(function (event) {\n setExpandedState(!expanded);\n\n if (onChange) {\n onChange(event, !expanded);\n }\n }, [expanded, onChange, setExpandedState]);\n\n var _React$Children$toArr = React.Children.toArray(childrenProp),\n _React$Children$toArr2 = _toArray(_React$Children$toArr),\n summary = _React$Children$toArr2[0],\n children = _React$Children$toArr2.slice(1);\n\n var contextValue = React.useMemo(function () {\n return {\n expanded: expanded,\n disabled: disabled,\n toggle: handleChange\n };\n }, [expanded, disabled, handleChange]);\n return React.createElement(Paper, _extends({\n className: clsx(classes.root, className, expanded && classes.expanded, disabled && classes.disabled, !square && classes.rounded),\n ref: ref,\n square: square\n }, other), React.createElement(ExpansionPanelContext.Provider, {\n value: contextValue\n }, summary), React.createElement(TransitionComponent, _extends({\n in: expanded,\n timeout: \"auto\"\n }, TransitionProps), React.createElement(\"div\", {\n \"aria-labelledby\": summary.props.id,\n id: summary.props['aria-controls'],\n role: \"region\"\n }, children)));\n});\nprocess.env.NODE_ENV !== \"production\" ? ExpansionPanel.propTypes = {\n /**\n * The content of the expansion panel.\n */\n children: chainPropTypes(PropTypes.node.isRequired, function (props) {\n var summary = React.Children.toArray(props.children)[0];\n\n if (isFragment(summary)) {\n return new Error(\"Material-UI: the ExpansionPanel doesn't accept a Fragment as a child. \" + 'Consider providing an array instead.');\n }\n\n if (!React.isValidElement(summary)) {\n return new Error('Material-UI: expected the first child of ExpansionPanel to be a valid element.');\n }\n\n return null;\n }),\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, expands the panel by default.\n */\n defaultExpanded: PropTypes.bool,\n\n /**\n * If `true`, the panel will be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, expands the panel, otherwise collapse it.\n * Setting this prop enables control over the panel.\n */\n expanded: PropTypes.bool,\n\n /**\n * Callback fired when the expand/collapse state is changed.\n *\n * @param {object} event The event source of the callback.\n * @param {boolean} expanded The `expanded` state of the panel.\n */\n onChange: PropTypes.func,\n\n /**\n * @ignore\n */\n square: PropTypes.bool,\n\n /**\n * The component used for the collapse effect.\n * [Follow this guide](/components/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * Props applied to the [`Transition`](http://reactcommunity.org/react-transition-group/transition#Transition-props) element.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiExpansionPanel'\n})(ExpansionPanel);","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();\n}","/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled(_ref) {\n var controlled = _ref.controlled,\n defaultProp = _ref.default,\n name = _ref.name;\n\n var _React$useRef = React.useRef(controlled !== undefined),\n isControlled = _React$useRef.current;\n\n var _React$useState = React.useState(defaultProp),\n valueState = _React$useState[0],\n setValue = _React$useState[1];\n\n var value = isControlled ? controlled : valueState;\n\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(function () {\n if (isControlled !== (controlled !== undefined)) {\n console.error([\"Material-UI: A component is changing \".concat(isControlled ? 'a ' : 'an un', \"controlled \").concat(name, \" to be \").concat(isControlled ? 'un' : '', \"controlled.\"), 'Elements should not switch from uncontrolled to controlled (or vice versa).', \"Decide between using a controlled or uncontrolled \".concat(name, \" \") + 'element for the lifetime of the component.', 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [controlled]);\n\n var _React$useRef2 = React.useRef(defaultProp),\n defaultValue = _React$useRef2.current;\n\n React.useEffect(function () {\n if (defaultValue !== defaultProp) {\n console.error([\"Material-UI: A component is changing the default value of an uncontrolled \".concat(name, \" after being initialized. \") + \"To suppress this warning opt to use a controlled \".concat(name, \".\")].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n\n var setValueIfUncontrolled = React.useCallback(function (newValue) {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","// Copyright (c) 2015 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* global HTMLVideoElement */\nimport GL from '@luma.gl/constants';\nimport {Layer, project32, picking} from '@deck.gl/core';\nimport {Model, Geometry, Texture2D} from '@luma.gl/core';\n\nimport vs from './bitmap-layer-vertex';\nimport fs from './bitmap-layer-fragment';\n\nconst DEFAULT_TEXTURE_PARAMETERS = {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR_MIPMAP_LINEAR,\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\n\nconst defaultProps = {\n image: {type: 'object', value: null, async: true},\n bounds: {type: 'array', value: [1, 0, 0, 1], compare: true},\n\n desaturate: {type: 'number', min: 0, max: 1, value: 0},\n // More context: because of the blending mode we're using for ground imagery,\n // alpha is not effective when blending the bitmap layers with the base map.\n // Instead we need to manually dim/blend rgb values with a background color.\n transparentColor: {type: 'color', value: [0, 0, 0, 0]},\n tintColor: {type: 'color', value: [255, 255, 255]}\n};\n\n/*\n * @class\n * @param {object} props\n * @param {number} props.transparentColor - color to interpret transparency to\n * @param {number} props.tintColor - color bias\n */\nexport default class BitmapLayer extends Layer {\n getShaders() {\n return super.getShaders({vs, fs, modules: [project32, picking]});\n }\n\n initializeState() {\n const attributeManager = this.getAttributeManager();\n\n attributeManager.add({\n positions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n update: this.calculatePositions,\n noAlloc: true\n }\n });\n\n this.setState({\n numInstances: 1,\n positions: new Float64Array(12)\n });\n }\n\n updateState({props, oldProps, changeFlags}) {\n // setup model first\n if (changeFlags.extensionsChanged) {\n const {gl} = this.context;\n if (this.state.model) {\n this.state.model.delete();\n }\n this.setState({model: this._getModel(gl)});\n this.getAttributeManager().invalidateAll();\n }\n\n if (props.image !== oldProps.image) {\n this.loadTexture(props.image);\n }\n\n const attributeManager = this.getAttributeManager();\n\n if (props.bounds !== oldProps.bounds) {\n attributeManager.invalidate('positions');\n }\n }\n\n finalizeState() {\n super.finalizeState();\n\n if (this.state.bitmapTexture) {\n this.state.bitmapTexture.delete();\n }\n }\n\n calculatePositions(attributes) {\n const {positions} = this.state;\n const {bounds} = this.props;\n // bounds as [minX, minY, maxX, maxY]\n if (Number.isFinite(bounds[0])) {\n /*\n (minX0, maxY3) ---- (maxX2, maxY3)\n | |\n | |\n | |\n (minX0, minY1) ---- (maxX2, minY1)\n */\n positions[0] = bounds[0];\n positions[1] = bounds[1];\n positions[2] = 0;\n\n positions[3] = bounds[0];\n positions[4] = bounds[3];\n positions[5] = 0;\n\n positions[6] = bounds[2];\n positions[7] = bounds[3];\n positions[8] = 0;\n\n positions[9] = bounds[2];\n positions[10] = bounds[1];\n positions[11] = 0;\n } else {\n // [[minX, minY], [minX, maxY], [maxX, maxY], [maxX, minY]]\n for (let i = 0; i < bounds.length; i++) {\n positions[i * 3 + 0] = bounds[i][0];\n positions[i * 3 + 1] = bounds[i][1];\n positions[i * 3 + 2] = bounds[i][2] || 0;\n }\n }\n\n attributes.value = positions;\n }\n\n _getModel(gl) {\n if (!gl) {\n return null;\n }\n\n /*\n 0,0 --- 1,0\n | |\n 0,1 --- 1,1\n */\n return new Model(\n gl,\n Object.assign({}, this.getShaders(), {\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_FAN,\n vertexCount: 4,\n attributes: {\n texCoords: new Float32Array([0, 1, 0, 0, 1, 0, 1, 1])\n }\n }),\n isInstanced: false\n })\n );\n }\n\n draw(opts) {\n const {uniforms} = opts;\n const {bitmapTexture, model} = this.state;\n const {image, desaturate, transparentColor, tintColor} = this.props;\n\n // Update video frame\n if (\n bitmapTexture &&\n image instanceof HTMLVideoElement &&\n image.readyState > HTMLVideoElement.HAVE_METADATA\n ) {\n const sizeChanged =\n bitmapTexture.width !== image.videoWidth || bitmapTexture.height !== image.videoHeight;\n if (sizeChanged) {\n // note clears image and mipmaps when resizing\n bitmapTexture.resize({width: image.videoWidth, height: image.videoHeight, mipmaps: true});\n bitmapTexture.setSubImageData({\n data: image,\n paramters: DEFAULT_TEXTURE_PARAMETERS\n });\n } else {\n bitmapTexture.setSubImageData({\n data: image\n });\n }\n\n bitmapTexture.generateMipmap();\n }\n\n // // TODO fix zFighting\n // Render the image\n if (bitmapTexture && model) {\n model\n .setUniforms(\n Object.assign({}, uniforms, {\n bitmapTexture,\n desaturate,\n transparentColor: transparentColor.map(x => x / 255),\n tintColor: tintColor.slice(0, 3).map(x => x / 255)\n })\n )\n .draw();\n }\n }\n\n loadTexture(image) {\n const {gl} = this.context;\n\n if (this.state.bitmapTexture) {\n this.state.bitmapTexture.delete();\n }\n\n if (image instanceof Texture2D) {\n this.setState({bitmapTexture: image});\n } else if (image instanceof HTMLVideoElement) {\n // Initialize an empty texture while we wait for the video to load\n this.setState({\n bitmapTexture: new Texture2D(gl, {\n width: 1,\n height: 1,\n parameters: DEFAULT_TEXTURE_PARAMETERS,\n mipmaps: false\n })\n });\n } else if (image) {\n // Browser object: Image, ImageData, HTMLCanvasElement, ImageBitmap\n this.setState({\n bitmapTexture: new Texture2D(gl, {\n data: image,\n parameters: DEFAULT_TEXTURE_PARAMETERS\n })\n });\n }\n }\n}\n\nBitmapLayer.layerName = 'BitmapLayer';\nBitmapLayer.defaultProps = defaultProps;\n","export default `\n#define SHADER_NAME bitmap-layer-vertex-shader\n\nattribute vec2 texCoords;\nattribute vec3 positions;\nattribute vec3 positions64Low;\nattribute vec3 instancePickingColors;\n\nvarying vec2 vTexCoord;\n\nvoid main(void) {\n geometry.worldPosition = positions;\n geometry.uv = texCoords;\n geometry.pickingColor = instancePickingColors;\n\n gl_Position = project_position_to_clipspace(positions, positions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n vTexCoord = texCoords;\n\n vec4 color = vec4(0.0);\n DECKGL_FILTER_COLOR(color, geometry);\n}\n`;\n","export default `\n#define SHADER_NAME bitmap-layer-fragment-shader\n\n#ifdef GL_ES\nprecision highp float;\n#endif\n\nuniform sampler2D bitmapTexture;\n\nvarying vec2 vTexCoord;\n\nuniform float desaturate;\nuniform vec4 transparentColor;\nuniform vec3 tintColor;\nuniform float opacity;\n\n// apply desaturation\nvec3 color_desaturate(vec3 color) {\n float luminance = (color.r + color.g + color.b) * 0.333333333;\n return mix(color, vec3(luminance), desaturate);\n}\n\n// apply tint\nvec3 color_tint(vec3 color) {\n return color * tintColor;\n}\n\n// blend with background color\nvec4 apply_opacity(vec3 color, float alpha) {\n return mix(transparentColor, vec4(color, 1.0), alpha);\n}\n\nvoid main(void) {\n vec4 bitmapColor = texture2D(bitmapTexture, vTexCoord);\n\n gl_FragColor = apply_opacity(color_tint(color_desaturate(bitmapColor.rgb)), bitmapColor.a * opacity);\n\n geometry.uv = vTexCoord;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport setRef from '../utils/setRef';\nimport useForkRef from '../utils/useForkRef';\n\nfunction getContainer(container) {\n container = typeof container === 'function' ? container() : container; // #StrictMode ready\n\n return ReactDOM.findDOMNode(container);\n}\n\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n */\n\nvar Portal = React.forwardRef(function Portal(props, ref) {\n var children = props.children,\n container = props.container,\n _props$disablePortal = props.disablePortal,\n disablePortal = _props$disablePortal === void 0 ? false : _props$disablePortal,\n onRendered = props.onRendered;\n\n var _React$useState = React.useState(null),\n mountNode = _React$useState[0],\n setMountNode = _React$useState[1];\n\n var handleRef = useForkRef(React.isValidElement(children) ? children.ref : null, ref);\n useEnhancedEffect(function () {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(function () {\n if (mountNode && !disablePortal) {\n setRef(ref, mountNode);\n return function () {\n setRef(ref, null);\n };\n }\n\n return undefined;\n }, [ref, mountNode, disablePortal]);\n useEnhancedEffect(function () {\n if (onRendered && (mountNode || disablePortal)) {\n onRendered();\n }\n }, [onRendered, mountNode, disablePortal]);\n\n if (disablePortal) {\n if (React.isValidElement(children)) {\n return React.cloneElement(children, {\n ref: handleRef\n });\n }\n\n return children;\n }\n\n return mountNode ? ReactDOM.createPortal(children, mountNode) : mountNode;\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n\n /**\n * A node, component instance, or function that returns either.\n * The `container` will have the portal children appended to it.\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes.oneOfType([PropTypes.func, PropTypes.instanceOf(React.Component), PropTypes.instanceOf(typeof Element === 'undefined' ? Object : Element)]),\n\n /**\n * Disable the portal behavior.\n * The children stay within it's parent DOM hierarchy.\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Callback fired once the children has been mounted into the `container`.\n *\n * This prop will be deprecated and removed in v5, the ref can be used instead.\n */\n onRendered: PropTypes.func\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\n\nexport default Portal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport PopperJS from 'popper.js';\nimport { chainPropTypes, refType } from '@material-ui/utils';\nimport { useTheme } from '@material-ui/styles';\nimport Portal from '../Portal';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport setRef from '../utils/setRef';\nimport useForkRef from '../utils/useForkRef';\nimport ownerWindow from '../utils/ownerWindow';\n\nfunction flipPlacement(placement, theme) {\n var direction = theme && theme.direction || 'ltr';\n\n if (direction === 'ltr') {\n return placement;\n }\n\n switch (placement) {\n case 'bottom-end':\n return 'bottom-start';\n\n case 'bottom-start':\n return 'bottom-end';\n\n case 'top-end':\n return 'top-start';\n\n case 'top-start':\n return 'top-end';\n\n default:\n return placement;\n }\n}\n\nfunction getAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\n\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar defaultPopperOptions = {};\n/**\n * Poppers rely on the 3rd party library [Popper.js](https://github.com/FezVrasta/popper.js) for positioning.\n */\n\nvar Popper = React.forwardRef(function Popper(props, ref) {\n var anchorEl = props.anchorEl,\n children = props.children,\n container = props.container,\n _props$disablePortal = props.disablePortal,\n disablePortal = _props$disablePortal === void 0 ? false : _props$disablePortal,\n _props$keepMounted = props.keepMounted,\n keepMounted = _props$keepMounted === void 0 ? false : _props$keepMounted,\n modifiers = props.modifiers,\n open = props.open,\n _props$placement = props.placement,\n initialPlacement = _props$placement === void 0 ? 'bottom' : _props$placement,\n _props$popperOptions = props.popperOptions,\n popperOptions = _props$popperOptions === void 0 ? defaultPopperOptions : _props$popperOptions,\n popperRefProp = props.popperRef,\n _props$transition = props.transition,\n transition = _props$transition === void 0 ? false : _props$transition,\n other = _objectWithoutProperties(props, [\"anchorEl\", \"children\", \"container\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"transition\"]);\n\n var tooltipRef = React.useRef(null);\n var ownRef = useForkRef(tooltipRef, ref);\n var popperRef = React.useRef(null);\n var handlePopperRef = useForkRef(popperRef, popperRefProp);\n var handlePopperRefRef = React.useRef(handlePopperRef);\n useEnhancedEffect(function () {\n handlePopperRefRef.current = handlePopperRef;\n }, [handlePopperRef]);\n React.useImperativeHandle(popperRefProp, function () {\n return popperRef.current;\n }, []);\n\n var _React$useState = React.useState(true),\n exited = _React$useState[0],\n setExited = _React$useState[1];\n\n var theme = useTheme();\n var rtlPlacement = flipPlacement(initialPlacement, theme);\n /**\n * placement initialized from prop but can change during lifetime if modifiers.flip.\n * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n */\n\n var _React$useState2 = React.useState(rtlPlacement),\n placement = _React$useState2[0],\n setPlacement = _React$useState2[1];\n\n React.useEffect(function () {\n if (popperRef.current) {\n popperRef.current.update();\n }\n });\n var handleOpen = React.useCallback(function () {\n if (!tooltipRef.current || !anchorEl || !open) {\n return;\n }\n\n if (popperRef.current) {\n popperRef.current.destroy();\n handlePopperRefRef.current(null);\n }\n\n var handlePopperUpdate = function handlePopperUpdate(data) {\n setPlacement(data.placement);\n };\n\n var resolvedAnchorEl = getAnchorEl(anchorEl);\n\n if (process.env.NODE_ENV !== 'production') {\n var containerWindow = ownerWindow(resolvedAnchorEl);\n\n if (resolvedAnchorEl instanceof containerWindow.Element) {\n var box = resolvedAnchorEl.getBoundingClientRect();\n\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['Material-UI: the `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n }\n\n var popper = new PopperJS(getAnchorEl(anchorEl), tooltipRef.current, _extends({\n placement: rtlPlacement\n }, popperOptions, {\n modifiers: _extends({}, disablePortal ? {} : {\n // It's using scrollParent by default, we can use the viewport when using a portal.\n preventOverflow: {\n boundariesElement: 'window'\n }\n }, {}, modifiers, {}, popperOptions.modifiers),\n // We could have been using a custom modifier like react-popper is doing.\n // But it seems this is the best public API for this use case.\n onCreate: createChainedFunction(handlePopperUpdate, popperOptions.onCreate),\n onUpdate: createChainedFunction(handlePopperUpdate, popperOptions.onUpdate)\n }));\n handlePopperRefRef.current(popper);\n }, [anchorEl, disablePortal, modifiers, open, rtlPlacement, popperOptions]);\n var handleRef = React.useCallback(function (node) {\n setRef(ownRef, node);\n handleOpen();\n }, [ownRef, handleOpen]);\n\n var handleEnter = function handleEnter() {\n setExited(false);\n };\n\n var handleClose = function handleClose() {\n if (!popperRef.current) {\n return;\n }\n\n popperRef.current.destroy();\n handlePopperRefRef.current(null);\n };\n\n var handleExited = function handleExited() {\n setExited(true);\n handleClose();\n };\n\n React.useEffect(function () {\n // Let's update the popper position.\n handleOpen();\n }, [handleOpen]);\n React.useEffect(function () {\n return function () {\n handleClose();\n };\n }, []);\n React.useEffect(function () {\n if (!open && !transition) {\n // Otherwise handleExited will call this.\n handleClose();\n }\n }, [open, transition]);\n\n if (!keepMounted && !open && (!transition || exited)) {\n return null;\n }\n\n var childProps = {\n placement: placement\n };\n\n if (transition) {\n childProps.TransitionProps = {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited\n };\n }\n\n return React.createElement(Portal, {\n disablePortal: disablePortal,\n container: container\n }, React.createElement(\"div\", _extends({\n ref: handleRef,\n role: \"tooltip\"\n }, other, {\n style: _extends({\n // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n position: 'fixed',\n // Fix Popper.js display issue\n top: 0,\n left: 0\n }, other.style)\n }), typeof children === 'function' ? children(childProps) : children));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes = {\n /**\n * This is the reference element, or a function that returns the reference element,\n * that may be used to set the position of the popover.\n * The return value will passed as the reference object of the Popper\n * instance.\n *\n * The reference element should be an HTML Element instance or a referenceObject:\n * https://popper.js.org/popper-documentation.html#referenceObject.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([PropTypes.object, PropTypes.func]), function (props) {\n if (props.open) {\n var resolvedAnchorEl = getAnchorEl(props.anchorEl);\n var containerWindow = ownerWindow(resolvedAnchorEl);\n\n if (resolvedAnchorEl instanceof containerWindow.Element) {\n var box = resolvedAnchorEl.getBoundingClientRect();\n\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['Material-UI: the `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.clientWidth !== 'number' || typeof resolvedAnchorEl.clientHeight !== 'number' || typeof resolvedAnchorEl.getBoundingClientRect !== 'function') {\n return new Error(['Material-UI: the `anchorEl` prop provided to the component is invalid.', 'It should be an HTML Element instance or a referenceObject:', 'https://popper.js.org/popper-documentation.html#referenceObject.'].join('\\n'));\n }\n }\n\n return null;\n }),\n\n /**\n * Popper render function or node.\n */\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\n\n /**\n * A node, component instance, or function that returns either.\n * The `container` will passed to the Modal component.\n * By default, it uses the body of the anchorEl's top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n\n /**\n * Disable the portal behavior.\n * The children stay within it's parent DOM hierarchy.\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n */\n keepMounted: PropTypes.bool,\n\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://github.com/FezVrasta/popper.js/blob/master/docs/_includes/popper-documentation.md#modifiers--object).\n */\n modifiers: PropTypes.object,\n\n /**\n * If `true`, the popper is visible.\n */\n open: PropTypes.bool.isRequired,\n\n /**\n * Popper placement.\n */\n placement: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n\n /**\n * Options provided to the [`popper.js`](https://github.com/FezVrasta/popper.js) instance.\n */\n popperOptions: PropTypes.object,\n\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n\n /**\n * Help supporting a react-transition-group/Transition component.\n */\n transition: PropTypes.bool\n} : void 0;\nexport default Popper;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport merge from './merge';\nimport memoize from './memoize';\nvar properties = {\n m: 'margin',\n p: 'padding'\n};\nvar directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nvar aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n}; // memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\n\nvar getCssProperties = memoize(function (prop) {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n\n var _prop$split = prop.split(''),\n _prop$split2 = _slicedToArray(_prop$split, 2),\n a = _prop$split2[0],\n b = _prop$split2[1];\n\n var property = properties[a];\n var direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(function (dir) {\n return property + dir;\n }) : [property + direction];\n});\nvar spacingKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY'];\nexport function createUnarySpacing(theme) {\n var themeSpacing = theme.spacing || 8;\n\n if (typeof themeSpacing === 'number') {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(\"@material-ui/system: expected spacing argument to be a number, got \".concat(abs, \".\"));\n }\n }\n\n return themeSpacing * abs;\n };\n }\n\n if (Array.isArray(themeSpacing)) {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (abs > themeSpacing.length - 1) {\n console.error([\"@material-ui/system: the value provided (\".concat(abs, \") overflows.\"), \"The supported values are: \".concat(JSON.stringify(themeSpacing), \".\"), \"\".concat(abs, \" > \").concat(themeSpacing.length - 1, \", you need to add the missing values.\")].join('\\n'));\n }\n }\n\n return themeSpacing[abs];\n };\n }\n\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"@material-ui/system: the `theme.spacing` value (\".concat(themeSpacing, \") is invalid.\"), 'It should be a number, an array or a function.'].join('\\n'));\n }\n\n return function () {\n return undefined;\n };\n}\n\nfunction getValue(transformer, propValue) {\n if (typeof propValue === 'string') {\n return propValue;\n }\n\n var abs = Math.abs(propValue);\n var transformed = transformer(abs);\n\n if (propValue >= 0) {\n return transformed;\n }\n\n if (typeof transformed === 'number') {\n return -transformed;\n }\n\n return \"-\".concat(transformed);\n}\n\nfunction getStyleFromPropValue(cssProperties, transformer) {\n return function (propValue) {\n return cssProperties.reduce(function (acc, cssProperty) {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n };\n}\n\nfunction spacing(props) {\n var theme = props.theme;\n var transformer = createUnarySpacing(theme);\n return Object.keys(props).map(function (prop) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (spacingKeys.indexOf(prop) === -1) {\n return null;\n }\n\n var cssProperties = getCssProperties(prop);\n var styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n var propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n }).reduce(merge, {});\n}\n\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce(function (obj, key) {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n\n return cache[arg];\n };\n}"],"sourceRoot":""}