{
  "version": 3,
  "sources": ["../../../../node_modules/d3-array/src/ascending.js", "../../../../node_modules/d3-array/src/descending.js", "../../../../node_modules/d3-array/src/bisector.js", "../../../../node_modules/d3-array/src/number.js", "../../../../node_modules/d3-array/src/bisect.js", "../../../../node_modules/d3-array/src/count.js", "../../../../node_modules/d3-array/src/cross.js", "../../../../node_modules/d3-array/src/cumsum.js", "../../../../node_modules/d3-array/src/variance.js", "../../../../node_modules/d3-array/src/deviation.js", "../../../../node_modules/d3-array/src/extent.js", "../../../../node_modules/d3-array/src/fsum.js", "../../../../node_modules/internmap/src/index.js", "../../../../node_modules/d3-array/src/identity.js", "../../../../node_modules/d3-array/src/group.js", "../../../../node_modules/d3-array/src/permute.js", "../../../../node_modules/d3-array/src/sort.js", "../../../../node_modules/d3-array/src/groupSort.js", "../../../../node_modules/d3-array/src/ticks.js", "../../../../node_modules/d3-array/src/threshold/sturges.js", "../../../../node_modules/d3-array/src/max.js", "../../../../node_modules/d3-array/src/maxIndex.js", "../../../../node_modules/d3-array/src/min.js", "../../../../node_modules/d3-array/src/minIndex.js", "../../../../node_modules/d3-array/src/quickselect.js", "../../../../node_modules/d3-array/src/greatest.js", "../../../../node_modules/d3-array/src/quantile.js", "../../../../node_modules/d3-array/src/threshold/freedmanDiaconis.js", "../../../../node_modules/d3-array/src/threshold/scott.js", "../../../../node_modules/d3-array/src/mean.js", "../../../../node_modules/d3-array/src/median.js", "../../../../node_modules/d3-array/src/merge.js", "../../../../node_modules/d3-array/src/mode.js", "../../../../node_modules/d3-array/src/pairs.js", "../../../../node_modules/d3-array/src/range.js", "../../../../node_modules/d3-array/src/sum.js", "../../../../node_modules/d3-array/src/reverse.js", "../../../../node_modules/d3-array/src/union.js", "../../../../node_modules/d3-axis/src/identity.js", "../../../../node_modules/d3-axis/src/axis.js", "../../../../node_modules/d3-dispatch/src/dispatch.js", "../../../../node_modules/d3-selection/src/namespaces.js", "../../../../node_modules/d3-selection/src/namespace.js", "../../../../node_modules/d3-selection/src/creator.js", "../../../../node_modules/d3-selection/src/selector.js", "../../../../node_modules/d3-selection/src/selection/select.js", "../../../../node_modules/d3-selection/src/array.js", "../../../../node_modules/d3-selection/src/selectorAll.js", "../../../../node_modules/d3-selection/src/selection/selectAll.js", "../../../../node_modules/d3-selection/src/matcher.js", "../../../../node_modules/d3-selection/src/selection/selectChild.js", "../../../../node_modules/d3-selection/src/selection/selectChildren.js", "../../../../node_modules/d3-selection/src/selection/filter.js", "../../../../node_modules/d3-selection/src/selection/sparse.js", "../../../../node_modules/d3-selection/src/selection/enter.js", "../../../../node_modules/d3-selection/src/constant.js", "../../../../node_modules/d3-selection/src/selection/data.js", "../../../../node_modules/d3-selection/src/selection/exit.js", "../../../../node_modules/d3-selection/src/selection/join.js", "../../../../node_modules/d3-selection/src/selection/merge.js", "../../../../node_modules/d3-selection/src/selection/order.js", "../../../../node_modules/d3-selection/src/selection/sort.js", "../../../../node_modules/d3-selection/src/selection/call.js", "../../../../node_modules/d3-selection/src/selection/nodes.js", "../../../../node_modules/d3-selection/src/selection/node.js", "../../../../node_modules/d3-selection/src/selection/size.js", "../../../../node_modules/d3-selection/src/selection/empty.js", "../../../../node_modules/d3-selection/src/selection/each.js", "../../../../node_modules/d3-selection/src/selection/attr.js", "../../../../node_modules/d3-selection/src/window.js", "../../../../node_modules/d3-selection/src/selection/style.js", "../../../../node_modules/d3-selection/src/selection/property.js", "../../../../node_modules/d3-selection/src/selection/classed.js", "../../../../node_modules/d3-selection/src/selection/text.js", "../../../../node_modules/d3-selection/src/selection/html.js", "../../../../node_modules/d3-selection/src/selection/raise.js", "../../../../node_modules/d3-selection/src/selection/lower.js", "../../../../node_modules/d3-selection/src/selection/append.js", "../../../../node_modules/d3-selection/src/selection/insert.js", "../../../../node_modules/d3-selection/src/selection/remove.js", "../../../../node_modules/d3-selection/src/selection/clone.js", "../../../../node_modules/d3-selection/src/selection/datum.js", "../../../../node_modules/d3-selection/src/selection/on.js", "../../../../node_modules/d3-selection/src/selection/dispatch.js", "../../../../node_modules/d3-selection/src/selection/iterator.js", "../../../../node_modules/d3-selection/src/selection/index.js", "../../../../node_modules/d3-selection/src/select.js", "../../../../node_modules/d3-selection/src/sourceEvent.js", "../../../../node_modules/d3-selection/src/pointer.js", "../../../../node_modules/d3-color/src/define.js", "../../../../node_modules/d3-color/src/color.js", "../../../../node_modules/d3-color/src/math.js", "../../../../node_modules/d3-color/src/lab.js", "../../../../node_modules/d3-color/src/cubehelix.js", "../../../../node_modules/d3-interpolate/src/basis.js", "../../../../node_modules/d3-interpolate/src/basisClosed.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/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-interpolate/src/transform/decompose.js", "../../../../node_modules/d3-interpolate/src/transform/parse.js", "../../../../node_modules/d3-interpolate/src/transform/index.js", "../../../../node_modules/d3-interpolate/src/hsl.js", "../../../../node_modules/d3-interpolate/src/lab.js", "../../../../node_modules/d3-interpolate/src/hcl.js", "../../../../node_modules/d3-interpolate/src/cubehelix.js", "../../../../node_modules/d3-interpolate/src/piecewise.js", "../../../../node_modules/d3-interpolate/src/quantize.js", "../../../../node_modules/d3-timer/src/timer.js", "../../../../node_modules/d3-timer/src/timeout.js", "../../../../node_modules/d3-transition/src/transition/schedule.js", "../../../../node_modules/d3-transition/src/interrupt.js", "../../../../node_modules/d3-transition/src/selection/interrupt.js", "../../../../node_modules/d3-transition/src/transition/tween.js", "../../../../node_modules/d3-transition/src/transition/interpolate.js", "../../../../node_modules/d3-transition/src/transition/attr.js", "../../../../node_modules/d3-transition/src/transition/attrTween.js", "../../../../node_modules/d3-transition/src/transition/delay.js", "../../../../node_modules/d3-transition/src/transition/duration.js", "../../../../node_modules/d3-transition/src/transition/ease.js", "../../../../node_modules/d3-transition/src/transition/easeVarying.js", "../../../../node_modules/d3-transition/src/transition/filter.js", "../../../../node_modules/d3-transition/src/transition/merge.js", "../../../../node_modules/d3-transition/src/transition/on.js", "../../../../node_modules/d3-transition/src/transition/remove.js", "../../../../node_modules/d3-transition/src/transition/select.js", "../../../../node_modules/d3-transition/src/transition/selectAll.js", "../../../../node_modules/d3-transition/src/transition/selection.js", "../../../../node_modules/d3-transition/src/transition/style.js", "../../../../node_modules/d3-transition/src/transition/styleTween.js", "../../../../node_modules/d3-transition/src/transition/text.js", "../../../../node_modules/d3-transition/src/transition/textTween.js", "../../../../node_modules/d3-transition/src/transition/transition.js", "../../../../node_modules/d3-transition/src/transition/end.js", "../../../../node_modules/d3-transition/src/transition/index.js", "../../../../node_modules/d3-ease/src/cubic.js", "../../../../node_modules/d3-transition/src/selection/transition.js", "../../../../node_modules/d3-transition/src/selection/index.js", "../../../../node_modules/d3-brush/src/brush.js", "../../../../node_modules/d3-path/src/path.js", "../../../../node_modules/d3-format/src/formatDecimal.js", "../../../../node_modules/d3-format/src/exponent.js", "../../../../node_modules/d3-format/src/formatGroup.js", "../../../../node_modules/d3-format/src/formatNumerals.js", "../../../../node_modules/d3-format/src/formatSpecifier.js", "../../../../node_modules/d3-format/src/formatTrim.js", "../../../../node_modules/d3-format/src/formatPrefixAuto.js", "../../../../node_modules/d3-format/src/formatRounded.js", "../../../../node_modules/d3-format/src/formatTypes.js", "../../../../node_modules/d3-format/src/identity.js", "../../../../node_modules/d3-format/src/locale.js", "../../../../node_modules/d3-format/src/defaultLocale.js", "../../../../node_modules/d3-format/src/precisionFixed.js", "../../../../node_modules/d3-format/src/precisionPrefix.js", "../../../../node_modules/d3-format/src/precisionRound.js", "../../../../node_modules/d3-geo/src/math.js", "../../../../node_modules/d3-geo/src/noop.js", "../../../../node_modules/d3-geo/src/stream.js", "../../../../node_modules/d3-geo/src/cartesian.js", "../../../../node_modules/d3-geo/src/compose.js", "../../../../node_modules/d3-geo/src/rotation.js", "../../../../node_modules/d3-geo/src/circle.js", "../../../../node_modules/d3-geo/src/clip/buffer.js", "../../../../node_modules/d3-geo/src/pointEqual.js", "../../../../node_modules/d3-geo/src/clip/rejoin.js", "../../../../node_modules/d3-geo/src/polygonContains.js", "../../../../node_modules/d3-geo/src/clip/index.js", "../../../../node_modules/d3-geo/src/clip/antimeridian.js", "../../../../node_modules/d3-geo/src/clip/circle.js", "../../../../node_modules/d3-geo/src/clip/line.js", "../../../../node_modules/d3-geo/src/clip/rectangle.js", "../../../../node_modules/d3-geo/src/identity.js", "../../../../node_modules/d3-geo/src/path/area.js", "../../../../node_modules/d3-geo/src/path/bounds.js", "../../../../node_modules/d3-geo/src/path/centroid.js", "../../../../node_modules/d3-geo/src/path/context.js", "../../../../node_modules/d3-geo/src/path/measure.js", "../../../../node_modules/d3-geo/src/path/string.js", "../../../../node_modules/d3-geo/src/path/index.js", "../../../../node_modules/d3-geo/src/transform.js", "../../../../node_modules/d3-geo/src/projection/fit.js", "../../../../node_modules/d3-geo/src/projection/resample.js", "../../../../node_modules/d3-geo/src/projection/index.js", "../../../../node_modules/d3-geo/src/projection/conic.js", "../../../../node_modules/d3-geo/src/projection/cylindricalEqualArea.js", "../../../../node_modules/d3-geo/src/projection/conicEqualArea.js", "../../../../node_modules/d3-geo/src/projection/albers.js", "../../../../node_modules/d3-geo/src/projection/albersUsa.js", "../../../../node_modules/d3-geo/src/projection/azimuthal.js", "../../../../node_modules/d3-geo/src/projection/azimuthalEqualArea.js", "../../../../node_modules/d3-geo/src/projection/azimuthalEquidistant.js", "../../../../node_modules/d3-geo/src/projection/mercator.js", "../../../../node_modules/d3-geo/src/projection/conicConformal.js", "../../../../node_modules/d3-geo/src/projection/equirectangular.js", "../../../../node_modules/d3-geo/src/projection/conicEquidistant.js", "../../../../node_modules/d3-geo/src/projection/equalEarth.js", "../../../../node_modules/d3-geo/src/projection/gnomonic.js", "../../../../node_modules/d3-geo/src/projection/orthographic.js", "../../../../node_modules/d3-geo/src/projection/stereographic.js", "../../../../node_modules/d3-geo/src/projection/transverseMercator.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/src/constant.js", "../../../../node_modules/d3-scale/src/number.js", "../../../../node_modules/d3-scale/src/continuous.js", "../../../../node_modules/d3-scale/src/tickFormat.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/quantile.js", "../../../../node_modules/d3-scale/src/threshold.js", "../../../../node_modules/d3-time/src/interval.js", "../../../../node_modules/d3-time/src/millisecond.js", "../../../../node_modules/d3-time/src/second.js", "../../../../node_modules/d3-time/src/minute.js", "../../../../node_modules/d3-time/src/hour.js", "../../../../node_modules/d3-time/src/day.js", "../../../../node_modules/d3-time/src/week.js", "../../../../node_modules/d3-time/src/month.js", "../../../../node_modules/d3-time/src/year.js", "../../../../node_modules/d3-time/src/ticks.js", "../../../../node_modules/d3-time-format/src/locale.js", "../../../../node_modules/d3-time-format/src/defaultLocale.js", "../../../../node_modules/d3-scale/src/time.js", "../../../../node_modules/d3-scale/src/utcTime.js", "../../../../node_modules/d3-scale/src/sequential.js", "../../../../node_modules/d3-scale/src/diverging.js", "../../../../node_modules/d3-scale-chromatic/src/colors.js", "../../../../node_modules/d3-scale-chromatic/src/categorical/category10.js", "../../../../node_modules/d3-scale-chromatic/src/categorical/Accent.js", "../../../../node_modules/d3-scale-chromatic/src/categorical/Dark2.js", "../../../../node_modules/d3-scale-chromatic/src/categorical/Paired.js", "../../../../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js", "../../../../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js", "../../../../node_modules/d3-scale-chromatic/src/categorical/Set1.js", "../../../../node_modules/d3-scale-chromatic/src/categorical/Set2.js", "../../../../node_modules/d3-scale-chromatic/src/categorical/Set3.js", "../../../../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js", "../../../../node_modules/d3-scale-chromatic/src/ramp.js", "../../../../node_modules/d3-scale-chromatic/src/diverging/BrBG.js", "../../../../node_modules/d3-scale-chromatic/src/diverging/PRGn.js", "../../../../node_modules/d3-scale-chromatic/src/diverging/PiYG.js", "../../../../node_modules/d3-scale-chromatic/src/diverging/PuOr.js", "../../../../node_modules/d3-scale-chromatic/src/diverging/RdBu.js", "../../../../node_modules/d3-scale-chromatic/src/diverging/RdGy.js", "../../../../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js", "../../../../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js", "../../../../node_modules/d3-scale-chromatic/src/diverging/Spectral.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js", "../../../../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js", "../../../../node_modules/d3-shape/src/math.js", "../../../../node_modules/d3-shape/src/symbol/asterisk.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/diamond2.js", "../../../../node_modules/d3-shape/src/symbol/plus.js", "../../../../node_modules/d3-shape/src/symbol/square.js", "../../../../node_modules/d3-shape/src/symbol/square2.js", "../../../../node_modules/d3-shape/src/symbol/star.js", "../../../../node_modules/d3-shape/src/symbol/triangle.js", "../../../../node_modules/d3-shape/src/symbol/triangle2.js", "../../../../node_modules/d3-shape/src/symbol/wye.js", "../../../../node_modules/d3-shape/src/symbol/times.js", "../../../../node_modules/d3-shape/src/symbol.js", "../../../../node_modules/d3-zoom/src/transform.js", "../../../../node_modules/@observablehq/plot/src/defined.js", "../../../../node_modules/isoformat/src/format.js", "../../../../node_modules/isoformat/src/parse.js", "../../../../node_modules/@observablehq/plot/src/time.js", "../../../../node_modules/@observablehq/plot/src/options.js", "../../../../node_modules/@observablehq/plot/src/scales/index.js", "../../../../node_modules/@observablehq/plot/src/symbol.js", "../../../../node_modules/@observablehq/plot/src/transforms/basic.js", "../../../../node_modules/@observablehq/plot/src/transforms/group.js", "../../../../node_modules/@observablehq/plot/src/channel.js", "../../../../node_modules/@observablehq/plot/src/context.js", "../../../../node_modules/@observablehq/plot/src/warnings.js", "../../../../node_modules/@observablehq/plot/src/projection.js", "../../../../node_modules/@observablehq/plot/src/scales/schemes.js", "../../../../node_modules/@observablehq/plot/src/scales/quantitative.js", "../../../../node_modules/@observablehq/plot/src/scales/diverging.js", "../../../../node_modules/@observablehq/plot/src/scales/temporal.js", "../../../../node_modules/@observablehq/plot/src/scales/ordinal.js", "../../../../node_modules/@observablehq/plot/src/scales.js", "../../../../node_modules/@observablehq/plot/src/memoize.js", "../../../../node_modules/@observablehq/plot/src/format.js", "../../../../node_modules/@observablehq/plot/src/style.js", "../../../../node_modules/@observablehq/plot/src/dimensions.js", "../../../../node_modules/@observablehq/plot/src/facet.js", "../../../../node_modules/@observablehq/plot/src/mark.js", "../../../../node_modules/@observablehq/plot/src/interactions/pointer.js", "../../../../node_modules/@observablehq/plot/src/axes.js", "../../../../node_modules/@observablehq/plot/src/legends/ramp.js", "../../../../node_modules/@observablehq/plot/src/math.js", "../../../../node_modules/@observablehq/plot/src/marker.js", "../../../../node_modules/@observablehq/plot/src/transforms/inset.js", "../../../../node_modules/@observablehq/plot/src/transforms/interval.js", "../../../../node_modules/@observablehq/plot/src/marks/rule.js", "../../../../node_modules/@observablehq/plot/src/template.js", "../../../../node_modules/@observablehq/plot/src/marks/text.js", "../../../../node_modules/@observablehq/plot/src/marks/vector.js", "../../../../node_modules/@observablehq/plot/src/marks/axis.js", "../../../../node_modules/@observablehq/plot/src/legends/swatches.js", "../../../../node_modules/@observablehq/plot/src/legends.js", "../../../../node_modules/@observablehq/plot/src/marks/frame.js", "../../../../node_modules/@observablehq/plot/src/marks/tip.js", "../../../../node_modules/@observablehq/plot/src/plot.js", "../../../../node_modules/@observablehq/plot/src/transforms/bin.js", "../../../../node_modules/@observablehq/plot/src/transforms/identity.js", "../../../../node_modules/@observablehq/plot/src/transforms/stack.js", "../../../../node_modules/@observablehq/plot/src/marks/bar.js", "../charts.ts"],
  "sourcesContent": ["export default function ascending(a, b) {\n  return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b < a ? -1\n    : b > a ? 1\n    : b >= a ? 0\n    : NaN;\n}\n", "import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can\u2019t do this\n  // for a comparator (except for specific, known comparators) because we can\u2019t\n  // tell if the comparator is symmetric, and an asymmetric comparator can\u2019t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) => ascending(f(d), x);\n    delta = (d, x) => f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\n  }\n\n  function left(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function right(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) <= 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function center(a, x, lo = 0, hi = a.length) {\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction zero() {\n  return 0;\n}\n", "export default function number(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n", "import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n", "export default function count(values, valueof) {\n  let count = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        ++count;\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        ++count;\n      }\n    }\n  }\n  return count;\n}\n", "function length(array) {\n  return array.length | 0;\n}\n\nfunction empty(length) {\n  return !(length > 0);\n}\n\nfunction arrayify(values) {\n  return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n  return values => reduce(...values);\n}\n\nexport default function cross(...values) {\n  const reduce = typeof values[values.length - 1] === \"function\" && reducer(values.pop());\n  values = values.map(arrayify);\n  const lengths = values.map(length);\n  const j = values.length - 1;\n  const index = new Array(j + 1).fill(0);\n  const product = [];\n  if (j < 0 || lengths.some(empty)) return product;\n  while (true) {\n    product.push(index.map((j, i) => values[i][j]));\n    let i = j;\n    while (++index[i] === lengths[i]) {\n      if (i === 0) return reduce ? product.map(reduce) : product;\n      index[i--] = 0;\n    }\n  }\n}\n", "export default function cumsum(values, valueof) {\n  var sum = 0, index = 0;\n  return Float64Array.from(values, valueof === undefined\n    ? v => (sum += +v || 0)\n    : v => (sum += +valueof(v, index++, values) || 0));\n}", "export default function variance(values, valueof) {\n  let count = 0;\n  let delta;\n  let mean = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\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        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n  if (count > 1) return sum / (count - 1);\n}\n", "import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n  const v = variance(values, valueof);\n  return v ? Math.sqrt(v) : v;\n}\n", "export default function extent(values, valueof) {\n  let min;\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  }\n  return [min, max];\n}\n", "// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n  constructor() {\n    this._partials = new Float64Array(32);\n    this._n = 0;\n  }\n  add(x) {\n    const p = this._partials;\n    let i = 0;\n    for (let j = 0; j < this._n && j < 32; j++) {\n      const y = p[j],\n        hi = x + y,\n        lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n      if (lo) p[i++] = lo;\n      x = hi;\n    }\n    p[i] = x;\n    this._n = i + 1;\n    return this;\n  }\n  valueOf() {\n    const p = this._partials;\n    let n = this._n, x, y, lo, hi = 0;\n    if (n > 0) {\n      hi = p[--n];\n      while (n > 0) {\n        x = hi;\n        y = p[--n];\n        hi = x + y;\n        lo = y - (hi - x);\n        if (lo) break;\n      }\n      if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n        y = lo * 2;\n        x = hi + y;\n        if (y == x - hi) hi = x;\n      }\n    }\n    return hi;\n  }\n}\n\nexport function fsum(values, valueof) {\n  const adder = new Adder();\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        adder.add(value);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        adder.add(value);\n      }\n    }\n  }\n  return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n  const adder = new Adder();\n  let index = -1;\n  return Float64Array.from(values, valueof === undefined\n      ? v => adder.add(+v || 0)\n      : v => adder.add(+valueof(v, ++index, values) || 0)\n  );\n}\n", "export class InternMap extends Map {\n  constructor(entries, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (entries != null) for (const [key, value] of entries) this.set(key, value);\n  }\n  get(key) {\n    return super.get(intern_get(this, key));\n  }\n  has(key) {\n    return super.has(intern_get(this, key));\n  }\n  set(key, value) {\n    return super.set(intern_set(this, key), value);\n  }\n  delete(key) {\n    return super.delete(intern_delete(this, key));\n  }\n}\n\nexport class InternSet extends Set {\n  constructor(values, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (values != null) for (const value of values) this.add(value);\n  }\n  has(value) {\n    return super.has(intern_get(this, value));\n  }\n  add(value) {\n    return super.add(intern_set(this, value));\n  }\n  delete(value) {\n    return super.delete(intern_delete(this, value));\n  }\n}\n\nfunction intern_get({_intern, _key}, value) {\n  const key = _key(value);\n  return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) return _intern.get(key);\n  _intern.set(key, value);\n  return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) {\n    value = _intern.get(key);\n    _intern.delete(key);\n  }\n  return value;\n}\n\nfunction keyof(value) {\n  return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n", "export default function identity(x) {\n  return x;\n}\n", "import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n  return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n  return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n  for (let i = 1, n = keys.length; i < n; ++i) {\n    groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n  }\n  return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n  return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n  return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n  return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n  return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n  return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n  return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n  if (values.length !== 1) throw new Error(\"duplicate key\");\n  return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n  return (function regroup(values, i) {\n    if (i >= keys.length) return reduce(values);\n    const groups = new InternMap();\n    const keyof = keys[i++];\n    let index = -1;\n    for (const value of values) {\n      const key = keyof(value, ++index, values);\n      const group = groups.get(key);\n      if (group) group.push(value);\n      else groups.set(key, [value]);\n    }\n    for (const [key, values] of groups) {\n      groups.set(key, regroup(values, i));\n    }\n    return map(groups);\n  })(values, 0);\n}\n", "export default function permute(source, keys) {\n  return Array.from(keys, key => source[key]);\n}\n", "import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  values = Array.from(values);\n  let [f] = F;\n  if ((f && f.length !== 2) || F.length > 1) {\n    const index = Uint32Array.from(values, (d, i) => i);\n    if (F.length > 1) {\n      F = F.map(f => values.map(f));\n      index.sort((i, j) => {\n        for (const f of F) {\n          const c = ascendingDefined(f[i], f[j]);\n          if (c) return c;\n        }\n      });\n    } else {\n      f = values.map(f);\n      index.sort((i, j) => ascendingDefined(f[i], f[j]));\n    }\n    return permute(values, index);\n  }\n  return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n  if (compare === ascending) return ascendingDefined;\n  if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n  return (a, b) => {\n    const x = compare(a, b);\n    if (x || x === 0) return x;\n    return (compare(b, b) === 0) - (compare(a, a) === 0);\n  };\n}\n\nexport function ascendingDefined(a, b) {\n  return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n", "import ascending from \"./ascending.js\";\nimport group, {rollup} from \"./group.js\";\nimport sort from \"./sort.js\";\n\nexport default function groupSort(values, reduce, key) {\n  return (reduce.length !== 2\n    ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk)))\n    : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk))))\n    .map(([key]) => key);\n}\n", "const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power < 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc < start) ++i1;\n    if (i2 / inc > stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc < start) ++i1;\n    if (i2 * inc > stop) --i2;\n  }\n  if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count > 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 >= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n", "import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n  return Math.max(1, Math.ceil(Math.log(count(values)) / Math.LN2) + 1);\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 maxIndex(values, valueof) {\n  let max;\n  let maxIndex = -1;\n  let index = -1;\n  if (valueof === undefined) {\n    for (const value of values) {\n      ++index;\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value, maxIndex = index;\n      }\n    }\n  } else {\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value, maxIndex = index;\n      }\n    }\n  }\n  return maxIndex;\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", "export default function minIndex(values, valueof) {\n  let min;\n  let minIndex = -1;\n  let index = -1;\n  if (valueof === undefined) {\n    for (const value of values) {\n      ++index;\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value, minIndex = index;\n      }\n    }\n  } else {\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value, minIndex = index;\n      }\n    }\n  }\n  return minIndex;\n}\n", "import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n  k = Math.floor(k);\n  left = Math.floor(Math.max(0, left));\n  right = Math.floor(Math.min(array.length - 1, right));\n\n  if (!(left <= k && k <= right)) return array;\n\n  compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n  while (right > left) {\n    if (right - left > 600) {\n      const n = right - left + 1;\n      const m = k - left + 1;\n      const z = Math.log(n);\n      const s = 0.5 * Math.exp(2 * z / 3);\n      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n      quickselect(array, k, newLeft, newRight, compare);\n    }\n\n    const t = array[k];\n    let i = left;\n    let j = right;\n\n    swap(array, left, k);\n    if (compare(array[right], t) > 0) swap(array, left, right);\n\n    while (i < j) {\n      swap(array, i, j), ++i, --j;\n      while (compare(array[i], t) < 0) ++i;\n      while (compare(array[j], t) > 0) --j;\n    }\n\n    if (compare(array[left], t) === 0) swap(array, left, j);\n    else ++j, swap(array, j, right);\n\n    if (j <= k) left = j + 1;\n    if (k <= j) right = j - 1;\n  }\n\n  return array;\n}\n\nfunction swap(array, i, j) {\n  const t = array[i];\n  array[i] = array[j];\n  array[j] = t;\n}\n", "import ascending from \"./ascending.js\";\n\nexport default function greatest(values, compare = ascending) {\n  let max;\n  let defined = false;\n  if (compare.length === 1) {\n    let maxValue;\n    for (const element of values) {\n      const value = compare(element);\n      if (defined\n          ? ascending(value, maxValue) > 0\n          : ascending(value, value) === 0) {\n        max = element;\n        maxValue = value;\n        defined = true;\n      }\n    }\n  } else {\n    for (const value of values) {\n      if (defined\n          ? compare(value, max) > 0\n          : compare(value, value) === 0) {\n        max = value;\n        defined = true;\n      }\n    }\n  }\n  return max;\n}\n", "import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n  values = Float64Array.from(numbers(values, valueof));\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return min(values);\n  if (p >= 1) return max(values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n      value1 = min(values.subarray(i0 + 1));\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof) {\n  values = Float64Array.from(numbers(values, valueof));\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return minIndex(values);\n  if (p >= 1) return maxIndex(values);\n  var n,\n      i = Math.floor((n - 1) * p),\n      order = (i, j) => ascendingDefined(values[i], values[j]),\n      index = quickselect(Uint32Array.from(values, (_, i) => i), i, 0, n - 1, order);\n  return greatest(index.subarray(0, i + 1), i => values[i]);\n}\n", "import count from \"../count.js\";\nimport quantile from \"../quantile.js\";\n\nexport default function thresholdFreedmanDiaconis(values, min, max) {\n  const c = count(values), d = quantile(values, 0.75) - quantile(values, 0.25);\n  return c && d ? Math.ceil((max - min) / (2 * d * Math.pow(c, -1 / 3))) : 1;\n}\n", "import count from \"../count.js\";\nimport deviation from \"../deviation.js\";\n\nexport default function thresholdScott(values, min, max) {\n  const c = count(values), d = deviation(values);\n  return c && d ? Math.ceil((max - min) * Math.cbrt(c) / (3.49 * d)) : 1;\n}\n", "export default function mean(values, valueof) {\n  let count = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        ++count, sum += 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        ++count, sum += value;\n      }\n    }\n  }\n  if (count) return sum / count;\n}\n", "import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n  return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n  return quantileIndex(values, 0.5, valueof);\n}\n", "function* flatten(arrays) {\n  for (const array of arrays) {\n    yield* array;\n  }\n}\n\nexport default function merge(arrays) {\n  return Array.from(flatten(arrays));\n}\n", "import {InternMap} from \"internmap\";\n\nexport default function mode(values, valueof) {\n  const counts = new InternMap();\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && value >= value) {\n        counts.set(value, (counts.get(value) || 0) + 1);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && value >= value) {\n        counts.set(value, (counts.get(value) || 0) + 1);\n      }\n    }\n  }\n  let modeValue;\n  let modeCount = 0;\n  for (const [value, count] of counts) {\n    if (count > modeCount) {\n      modeCount = count;\n      modeValue = value;\n    }\n  }\n  return modeValue;\n}\n", "export default function pairs(values, pairof = pair) {\n  const pairs = [];\n  let previous;\n  let first = false;\n  for (const value of values) {\n    if (first) pairs.push(pairof(previous, value));\n    previous = value;\n    first = true;\n  }\n  return pairs;\n}\n\nexport function pair(a, b) {\n  return [a, b];\n}\n", "export default function range(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n", "export default function sum(values, valueof) {\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        sum += value;\n      }\n    }\n  }\n  return sum;\n}\n", "export default function reverse(values) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  return Array.from(values).reverse();\n}\n", "import {InternSet} from \"internmap\";\n\nexport default function union(...others) {\n  const set = new InternSet();\n  for (const other of others) {\n    for (const o of other) {\n      set.add(o);\n    }\n  }\n  return set;\n}\n", "export default function(x) {\n  return x;\n}\n", "import identity from \"./identity.js\";\n\nvar top = 1,\n    right = 2,\n    bottom = 3,\n    left = 4,\n    epsilon = 1e-6;\n\nfunction translateX(x) {\n  return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n  return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n  return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n  offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n  if (scale.round()) offset = Math.round(offset);\n  return d => +scale(d) + offset;\n}\n\nfunction entering() {\n  return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n  var tickArguments = [],\n      tickValues = null,\n      tickFormat = null,\n      tickSizeInner = 6,\n      tickSizeOuter = 6,\n      tickPadding = 3,\n      offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n      k = orient === top || orient === left ? -1 : 1,\n      x = orient === left || orient === right ? \"x\" : \"y\",\n      transform = orient === top || orient === bottom ? translateX : translateY;\n\n  function axis(context) {\n    var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n        format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n        spacing = Math.max(tickSizeInner, 0) + tickPadding,\n        range = scale.range(),\n        range0 = +range[0] + offset,\n        range1 = +range[range.length - 1] + offset,\n        position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n        selection = context.selection ? context.selection() : context,\n        path = selection.selectAll(\".domain\").data([null]),\n        tick = selection.selectAll(\".tick\").data(values, scale).order(),\n        tickExit = tick.exit(),\n        tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n        line = tick.select(\"line\"),\n        text = tick.select(\"text\");\n\n    path = path.merge(path.enter().insert(\"path\", \".tick\")\n        .attr(\"class\", \"domain\")\n        .attr(\"stroke\", \"currentColor\"));\n\n    tick = tick.merge(tickEnter);\n\n    line = line.merge(tickEnter.append(\"line\")\n        .attr(\"stroke\", \"currentColor\")\n        .attr(x + \"2\", k * tickSizeInner));\n\n    text = text.merge(tickEnter.append(\"text\")\n        .attr(\"fill\", \"currentColor\")\n        .attr(x, k * spacing)\n        .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n    if (context !== selection) {\n      path = path.transition(context);\n      tick = tick.transition(context);\n      line = line.transition(context);\n      text = text.transition(context);\n\n      tickExit = tickExit.transition(context)\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n      tickEnter\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n    }\n\n    tickExit.remove();\n\n    path\n        .attr(\"d\", orient === left || orient === right\n            ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n            : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n    tick\n        .attr(\"opacity\", 1)\n        .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n    line\n        .attr(x + \"2\", k * tickSizeInner);\n\n    text\n        .attr(x, k * spacing)\n        .text(format);\n\n    selection.filter(entering)\n        .attr(\"fill\", \"none\")\n        .attr(\"font-size\", 10)\n        .attr(\"font-family\", \"sans-serif\")\n        .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n    selection\n        .each(function() { this.__axis = position; });\n  }\n\n  axis.scale = function(_) {\n    return arguments.length ? (scale = _, axis) : scale;\n  };\n\n  axis.ticks = function() {\n    return tickArguments = Array.from(arguments), axis;\n  };\n\n  axis.tickArguments = function(_) {\n    return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n  };\n\n  axis.tickValues = function(_) {\n    return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n  };\n\n  axis.tickFormat = function(_) {\n    return arguments.length ? (tickFormat = _, axis) : tickFormat;\n  };\n\n  axis.tickSize = function(_) {\n    return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeInner = function(_) {\n    return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeOuter = function(_) {\n    return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n  };\n\n  axis.tickPadding = function(_) {\n    return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n  };\n\n  axis.offset = function(_) {\n    return arguments.length ? (offset = +_, axis) : offset;\n  };\n\n  return axis;\n}\n\nexport function axisTop(scale) {\n  return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n  return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n  return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n  return axis(left, scale);\n}\n", "var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n", "export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n", "import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n", "import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n", "function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n", "import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n", "// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don\u2019t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n", "function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n", "import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    return array(select.apply(this, arguments));\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n", "export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n", "import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n", "export default function(update) {\n  return new Array(update.length);\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n", "export default function(x) {\n  return function() {\n    return x;\n  };\n}\n", "import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don\u2019t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn\u2019t worried about \u201Clive\u201D collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don\u2019t; we\u2019d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n  return typeof data === \"object\" && \"length\" in data\n    ? data // Array, TypedArray, NodeList, array-like\n    : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n", "export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  if (typeof onenter === \"function\") {\n    enter = onenter(enter);\n    if (enter) enter = enter.selection();\n  } else {\n    enter = enter.append(onenter + \"\");\n  }\n  if (onupdate != null) {\n    update = onupdate(update);\n    if (update) update = update.selection();\n  }\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(context) {\n  var selection = context.selection ? context.selection() : context;\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n", "export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n", "export default function() {\n  return Array.from(this);\n}\n", "export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n", "export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n", "export default function() {\n  return !this.node();\n}\n", "export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n", "import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n", "export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n", "import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n", "function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n", "function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n", "function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n", "function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n", "function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n", "function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n", "import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n", "import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n", "function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n", "function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n", "export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n", "function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n", "import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n", "export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n", "import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n", "import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n", "export default function(event) {\n  let sourceEvent;\n  while (sourceEvent = event.sourceEvent) event = sourceEvent;\n  return event;\n}\n", "import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n  event = sourceEvent(event);\n  if (node === undefined) node = event.currentTarget;\n  if (node) {\n    var svg = node.ownerSVGElement || node;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      point.x = event.clientX, point.y = event.clientY;\n      point = point.matrixTransform(node.getScreenCTM().inverse());\n      return [point.x, point.y];\n    }\n    if (node.getBoundingClientRect) {\n      var rect = node.getBoundingClientRect();\n      return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n    }\n  }\n  return [event.pageX, event.pageY];\n}\n", "export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n", "import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n", "export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) return hcl2lab(o);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g && g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n  brighter(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new Rgb(\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * degrees;\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n  var h = o.h * radians;\n  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n  brighter(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb() {\n    return hcl2lab(this).rgb();\n  }\n}));\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n    B = +1.78277,\n    C = -0.29227,\n    D = -0.90649,\n    E = +1.97294,\n    ED = E * D,\n    EB = E * B,\n    BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new Rgb(\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\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", "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 x => () => x;\n", "import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n", "import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n", "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", "var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n", "import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n", "import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n", "import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n        s = color(start.s, end.s),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n", "import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n  var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n      a = color(start.a, end.a),\n      b = color(start.b, end.b),\n      opacity = color(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n", "import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n        c = color(start.c, end.c),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n", "import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n          s = color(start.s, end.s),\n          l = color(start.l, end.l),\n          opacity = color(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n", "import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = value;\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n", "export default function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n}\n", "var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we\u2019ve set an alarm, if we haven\u2019t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n", "import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n", "import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n", "import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n", "import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n", "import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n", "import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n", "import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n", "import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n", "import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n", "import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n", "import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n", "import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n", "function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n", "import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n", "import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n", "import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n", "function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n", "import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n", "function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n", "import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n", "import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we\u2019re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n", "import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n", "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 {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n", "import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name \u201C__brush\u201D rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection, event) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start(event).brush(event).end(event);\n          });\n    }\n  };\n\n  brush.clear = function(group, event) {\n    brush.move(group, null, event);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        points = Array.from(event.touches || [event], t => {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length > 1) move(event);\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting && !lockX && !lockY && points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end(event, mode.name);\n    }\n\n    function keydowned(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move(event);\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n", "const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n  this._ += strings[0];\n  for (let i = 1, n = strings.length; i < n; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  let d = Math.floor(digits);\n  if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  const k = 10 ** d;\n  return function(strings) {\n    this._ += strings[0];\n    for (let i = 1, n = strings.length; i < n; ++i) {\n      this._ += Math.round(arguments[i] * k) / k + strings[i];\n    }\n  };\n}\n\nexport class Path {\n  constructor(digits) {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n    this._append = digits == null ? append : appendRound(digits);\n  }\n  moveTo(x, y) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._append`Z`;\n    }\n  }\n  lineTo(x, y) {\n    this._append`L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  quadraticCurveTo(x1, y1, x, y) {\n    this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  bezierCurveTo(x1, y1, x2, y2, x, y) {\n    this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arcTo(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._append`M${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._append`L${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      let x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n      }\n\n      this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n    }\n  }\n  arc(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._append`M${x0},${y0}`;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._append`L${x0},${y0}`;\n    }\n\n    // Is this arc empty? We\u2019re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n    }\n  }\n  rect(x, y, w, h) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n  }\n  toString() {\n    return this._;\n  }\n}\n\nexport function path() {\n  return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n  return new Path(+digits);\n}\n", "export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n", "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", "// [[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", "// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n", "import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n", "export default function(x) {\n  return x;\n}\n", "import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"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 ? \"\u2212\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n        // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n", "export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\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\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n", "export default function noop() {}\n", "function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n", "import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n", "export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n", "import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n  if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n  return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    lambda += deltaLambda;\n    if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n    return [lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n", "import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0\u00B0, 0\u00B0], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n", "import noop from \"../noop.js\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y, m) {\n      line.push([x, y, m]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n", "import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n", "import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    if (pointEqual(p0, p1)) {\n      if (!p0[2] && !p1[2]) {\n        stream.lineStart();\n        for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n        stream.lineEnd();\n        return;\n      }\n      // handle degenerate cases by moving the point\n      p1[0] += 2 * epsilon;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n", "import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n  return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n  var lambda = longitude(point),\n      phi = point[1],\n      sinPhi = sin(phi),\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  var sum = new Adder();\n\n  if (sinPhi === 1) phi = halfPi + epsilon;\n  else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = longitude(point0),\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = longitude(point1),\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point\u2019s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n", "import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n", "import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) < epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) > epsilon) {\n    var lambda = from[0] < to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n", "import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n  var cr = cos(radius),\n      delta = 6 * radians,\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n            point1[2] = 1;\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1], 2);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1], 3);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 \u2A2F n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) < epsilon,\n        meridian = polar || delta < epsilon;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n", "export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n", "import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon\u2019s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n", "export default x => x;\n", "import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n    areaRingSum = new Adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum = new Adder();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum = new Adder();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n", "import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n", "import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n", "import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n", "import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum = new Adder();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n", "// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n  constructor(digits) {\n    this._append = digits == null ? append : appendRound(digits);\n    this._radius = 4.5;\n    this._ = \"\";\n  }\n  pointRadius(_) {\n    this._radius = +_;\n    return this;\n  }\n  polygonStart() {\n    this._line = 0;\n  }\n  polygonEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line === 0) this._ += \"Z\";\n    this._point = NaN;\n  }\n  point(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._append`M${x},${y}`;\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._append`L${x},${y}`;\n        break;\n      }\n      default: {\n        this._append`M${x},${y}`;\n        if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n          const r = this._radius;\n          const s = this._;\n          this._ = \"\"; // stash the old string so we can cache the circle path fragment\n          this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n          cacheRadius = r;\n          cacheAppend = this._append;\n          cacheCircle = this._;\n          this._ = s;\n        }\n        this._ += cacheCircle;\n        break;\n      }\n    }\n  }\n  result() {\n    const result = this._;\n    this._ = \"\";\n    return result.length ? result : null;\n  }\n}\n\nfunction append(strings) {\n  let i = 1;\n  this._ += strings[0];\n  for (const j = strings.length; i < j; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  const d = Math.floor(digits);\n  if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  if (d !== cacheDigits) {\n    const k = 10 ** d;\n    cacheDigits = d;\n    cacheAppend = function append(strings) {\n      let i = 1;\n      this._ += strings[0];\n      for (const j = strings.length; i < j; ++i) {\n        this._ += Math.round(arguments[i] * k) / k + strings[i];\n      }\n    };\n  }\n  return cacheAppend;\n}\n", "import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n  let digits = 3,\n      pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      stream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    stream(object, projectionStream(pathArea));\n    return pathArea.result();\n  };\n\n  path.measure = function(object) {\n    stream(object, projectionStream(pathMeasure));\n    return pathMeasure.result();\n  };\n\n  path.bounds = function(object) {\n    stream(object, projectionStream(pathBounds));\n    return pathBounds.result();\n  };\n\n  path.centroid = function(object) {\n    stream(object, projectionStream(pathCentroid));\n    return pathCentroid.result();\n  };\n\n  path.projection = function(_) {\n    if (!arguments.length) return projection;\n    projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n    return path;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  path.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) digits = null;\n    else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    if (context === null) contextStream = new PathString(digits);\n    return path;\n  };\n\n  return path.projection(projection).digits(digits).context(context);\n}\n", "export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n", "import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  geoStream(object, projection.stream(boundsStream));\n  fitBounds(boundsStream.result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n", "import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n", "import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return transformer({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k * sx, (dy - y) / k * sy];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n  if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n  var cosAlpha = cos(alpha),\n      sinAlpha = sin(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n  };\n  return transform;\n}\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate angle\n      sx = 1, // reflectX\n      sy = 1, // reflectX\n      theta = null, preclip = clipAntimeridian, // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * radians, point[1] * radians);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point && [point[0] * degrees, point[1] * degrees];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n  };\n\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n  };\n\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n        transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n    rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = compose(project, transform);\n    projectRotateTransform = compose(rotate, projectTransform);\n    projectResample = resample(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n", "import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n  };\n\n  return p;\n}\n", "import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n", "import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin(y)) / n;\n    return [r * sin(x *= n), r0 - r * cos(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y,\n        l = atan2(x, abs(r0y)) * sign(r0y);\n    if (r0y * n < 0)\n      l -= pi * sign(x) * sign(r0y);\n    return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n", "import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n", "import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960\u00D7500. The projection also works quite well at 960\u00D7600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return fitWidth(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return fitHeight(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n", "import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n        if (k === Infinity) return [2, 0];\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n", "import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n", "import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n", "import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n", "import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n  return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n    else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n    var r = f / pow(tany(y), n);\n    return [r * sin(n * x), f - r * cos(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n      l = atan2(x, abs(fy)) * sign(fy);\n    if (fy * n < 0)\n      l -= pi * sign(x) * sign(fy);\n    return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n", "import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n", "import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) < epsilon) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin(nx), g - gy * cos(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y,\n        l = atan2(x, abs(gy)) * sign(gy);\n    if (gy * n < 0)\n      l -= pi * sign(x) * sign(gy);\n    return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n", "import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = sqrt(3) / 2,\n    iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n  var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if (abs(delta) < epsilon2) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n    asin(sin(l) / M)\n  ];\n};\n\nexport default function() {\n  return projection(equalEarthRaw)\n      .scale(177.158);\n}\n", "import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n", "import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n", "import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n", "import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\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 {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new InternMap(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    let i = index.get(d);\n    if (i === undefined) {\n      if (unknown !== implicit) return unknown;\n      index.set(d, i = domain.push(d) - 1);\n    }\n    return range[i % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new InternMap();\n    for (const value of _) {\n      if (index.has(value)) continue;\n      index.set(value, domain.push(value) - 1);\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n", "import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n  var scale = ordinal().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      r0 = 0,\n      r1 = 1,\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = r1 < r0,\n        start = reverse ? r1 : r0,\n        stop = reverse ? r0 : r1;\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = sequence(n).map(function(i) { return start + step * i; });\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n  };\n\n  scale.rangeRound = function(_) {\n    return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n  };\n\n  scale.paddingInner = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n  };\n\n  scale.paddingOuter = function(_) {\n    return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n  };\n\n  scale.align = function(_) {\n    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n  };\n\n  scale.copy = function() {\n    return band(domain(), [r0, r1])\n        .round(round)\n        .paddingInner(paddingInner)\n        .paddingOuter(paddingOuter)\n        .align(align);\n  };\n\n  return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n  var copy = scale.copy;\n\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  delete scale.paddingOuter;\n\n  scale.copy = function() {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nexport function point() {\n  return pointish(band.apply(null, arguments).paddingInner(1));\n}\n", "export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n", "export default function number(x) {\n  return +x;\n}\n", "import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n", "import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n", "import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n", "import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n  return linearish(scale);\n}\n", "export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n", "import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n  return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n  const scale = transform(transformLog, transformExp);\n  const domain = scale.domain;\n  let base = 10;\n  let logs;\n  let pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = count => {\n    const d = domain();\n    let u = d[0];\n    let v = d[d.length - 1];\n    const r = v < u;\n\n    if (r) ([u, v] = [v, u]);\n\n    let i = logs(u);\n    let j = logs(v);\n    let k;\n    let t;\n    const n = count == null ? 10 : +count;\n    let z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1; k < base; ++k) {\n          t = i < 0 ? k / pows(-i) : k * pows(i);\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1; k >= 1; --k) {\n          t = i > 0 ? k / pows(-i) : k * pows(i);\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = ticks(u, v, n);\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = (count, specifier) => {\n    if (count == null) count = 10;\n    if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n    if (typeof specifier !== \"function\") {\n      if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n      specifier = format(specifier);\n    }\n    if (count === Infinity) return specifier;\n    const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return d => {\n      let i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = () => {\n    return domain(nice(domain(), {\n      floor: x => pows(Math.floor(logs(x))),\n      ceil: x => pows(Math.ceil(logs(x)))\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  const scale = loggish(transformer()).domain([1, 10]);\n  scale.copy = () => copy(scale, log()).base(scale.base());\n  initRange.apply(scale, arguments);\n  return scale;\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nexport function symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return linearish(scale);\n}\n\nexport default function symlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, symlog()).constant(scale.constant());\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n", "import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = (date) => {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = (date) => {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = (date) => {\n    const d0 = interval(date), d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = (date, step) => {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = (start, stop, step) => {\n    const range = [];\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    let previous;\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = (test) => {\n    return timeInterval((date) => {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, (date, step) => {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = (start, end) => {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = (step) => {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? (d) => field(d) % step === 0\n              : (d) => interval.count(0, d) % step === 0);\n    };\n  }\n\n  return interval;\n}\n", "import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n  // noop\n}, (date, step) => {\n  date.setTime(+date + step);\n}, (start, end) => {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return timeInterval((date) => {\n    date.setTime(Math.floor(date / k) * k);\n  }, (date, step) => {\n    date.setTime(+date + step * k);\n  }, (start, end) => {\n    return (end - start) / k;\n  });\n};\n\nexport const milliseconds = millisecond.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n  date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n  return (end - start) / durationSecond;\n}, (date) => {\n  return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n  date.setUTCSeconds(0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n  date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n  return timeInterval((date) => {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setDate(date.getDate() + step * 7);\n  }, (start, end) => {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n  return timeInterval((date) => {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, (start, end) => {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n  return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n  return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n  return end.getFullYear() - start.getFullYear();\n}, (date) => {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport const utcYears = utcYear.range;\n", "import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n", "import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n", "import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n", "import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n  return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n", "import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n", "import {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(specifier) {\n  var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n  while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n  return colors;\n}\n", "import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n", "import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n", "import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n", "import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n", "import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n", "import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n", "import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n", "import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n", "import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n", "import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n", "import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"d8b365f5f5f55ab4ac\",\n  \"a6611adfc27d80cdc1018571\",\n  \"a6611adfc27df5f5f580cdc1018571\",\n  \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n  \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n  \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n  \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n  \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n  \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"af8dc3f7f7f77fbf7b\",\n  \"7b3294c2a5cfa6dba0008837\",\n  \"7b3294c2a5cff7f7f7a6dba0008837\",\n  \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n  \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n  \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n  \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n  \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n  \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e9a3c9f7f7f7a1d76a\",\n  \"d01c8bf1b6dab8e1864dac26\",\n  \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n  \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n  \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n  \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n  \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n  \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n  \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"998ec3f7f7f7f1a340\",\n  \"5e3c99b2abd2fdb863e66101\",\n  \"5e3c99b2abd2f7f7f7fdb863e66101\",\n  \"542788998ec3d8daebfee0b6f1a340b35806\",\n  \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n  \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n  \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n  \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n  \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62f7f7f767a9cf\",\n  \"ca0020f4a58292c5de0571b0\",\n  \"ca0020f4a582f7f7f792c5de0571b0\",\n  \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n  \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n  \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n  \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n  \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n  \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62ffffff999999\",\n  \"ca0020f4a582bababa404040\",\n  \"ca0020f4a582ffffffbababa404040\",\n  \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n  \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n  \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n  \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n  \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n  \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91bfdb\",\n  \"d7191cfdae61abd9e92c7bb6\",\n  \"d7191cfdae61ffffbfabd9e92c7bb6\",\n  \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n  \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n  \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n  \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n  \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n  \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91cf60\",\n  \"d7191cfdae61a6d96a1a9641\",\n  \"d7191cfdae61ffffbfa6d96a1a9641\",\n  \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n  \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n  \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n  \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n  \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n  \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf99d594\",\n  \"d7191cfdae61abdda42b83ba\",\n  \"d7191cfdae61ffffbfabdda42b83ba\",\n  \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n  \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n  \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n  \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n  \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n  \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5f999d8c92ca25f\",\n  \"edf8fbb2e2e266c2a4238b45\",\n  \"edf8fbb2e2e266c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e0ecf49ebcda8856a7\",\n  \"edf8fbb3cde38c96c688419d\",\n  \"edf8fbb3cde38c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e0f3dba8ddb543a2ca\",\n  \"f0f9e8bae4bc7bccc42b8cbe\",\n  \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee8c8fdbb84e34a33\",\n  \"fef0d9fdcc8afc8d59d7301f\",\n  \"fef0d9fdcc8afc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ece2f0a6bddb1c9099\",\n  \"f6eff7bdc9e167a9cf02818a\",\n  \"f6eff7bdc9e167a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ece7f2a6bddb2b8cbe\",\n  \"f1eef6bdc9e174a9cf0570b0\",\n  \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e7e1efc994c7dd1c77\",\n  \"f1eef6d7b5d8df65b0ce1256\",\n  \"f1eef6d7b5d8df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fde0ddfa9fb5c51b8a\",\n  \"feebe2fbb4b9f768a1ae017e\",\n  \"feebe2fbb4b9f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"edf8b17fcdbb2c7fb8\",\n  \"ffffcca1dab441b6c4225ea8\",\n  \"ffffcca1dab441b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"f7fcb9addd8e31a354\",\n  \"ffffccc2e69978c679238443\",\n  \"ffffccc2e69978c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fff7bcfec44fd95f0e\",\n  \"ffffd4fed98efe9929cc4c02\",\n  \"ffffd4fed98efe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ffeda0feb24cf03b20\",\n  \"ffffb2fecc5cfd8d3ce31a1c\",\n  \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"deebf79ecae13182bd\",\n  \"eff3ffbdd7e76baed62171b5\",\n  \"eff3ffbdd7e76baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5e0a1d99b31a354\",\n  \"edf8e9bae4b374c476238b45\",\n  \"edf8e9bae4b374c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"f0f0f0bdbdbd636363\",\n  \"f7f7f7cccccc969696525252\",\n  \"f7f7f7cccccc969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"efedf5bcbddc756bb1\",\n  \"f2f0f7cbc9e29e9ac86a51a3\",\n  \"f2f0f7cbc9e29e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee0d2fc9272de2d26\",\n  \"fee5d9fcae91fb6a4acb181d\",\n  \"fee5d9fcae91fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee6cefdae6be6550d\",\n  \"feeddefdbe85fd8d3cd94701\",\n  \"feeddefdbe85fd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n", "export default function(t) {\n  t = Math.max(0, Math.min(1, t));\n  return \"rgb(\"\n      + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n      + \")\";\n}\n", "import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n", "import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n  if (t < 0 || t > 1) t -= Math.floor(t);\n  var ts = Math.abs(t - 0.5);\n  c.h = 360 * t - 100;\n  c.s = 1.5 - 1.5 * ts;\n  c.l = 0.8 - 0.9 * ts;\n  return c + \"\";\n}\n", "import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n    pi_1_3 = Math.PI / 3,\n    pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n  var x;\n  t = (0.5 - t) * Math.PI;\n  c.r = 255 * (x = Math.sin(t)) * x;\n  c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n  c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n  return c + \"\";\n}\n", "export default function(t) {\n  t = Math.max(0, Math.min(1, t));\n  return \"rgb(\"\n      + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n      + \")\";\n}\n", "import colors from \"../colors.js\";\n\nfunction ramp(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n", "export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n", "import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n    const t = r / 2;\n    const u = t * sqrt3;\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n    context.moveTo(-u, -t);\n    context.lineTo(u, t);\n    context.moveTo(-u, t);\n    context.lineTo(u, -t);\n  }\n};\n", "import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n  draw(context, size) {\n    const y = sqrt(size / tan30_2);\n    const x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size) * 0.62625;\n    context.moveTo(0, -r);\n    context.lineTo(r, 0);\n    context.lineTo(0, r);\n    context.lineTo(-r, 0);\n    context.closePath();\n  }\n};\n", "import {min, sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size - min(size / 7, 2)) * 0.87559;\n    context.moveTo(-r, 0);\n    context.lineTo(r, 0);\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const w = sqrt(size);\n    const x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size) * 0.4431;\n    context.moveTo(r, r);\n    context.lineTo(r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, r);\n    context.closePath();\n  }\n};\n", "import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size * ka);\n    const x = kx * r;\n    const y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (let i = 1; i < 5; ++i) {\n      const a = tau * i / 5;\n      const c = cos(a);\n      const s = sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const y = -sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const s = sqrt(size) * 0.6824;\n    const t = s  / 2;\n    const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n    context.moveTo(0, -s);\n    context.lineTo(u, t);\n    context.lineTo(-u, t);\n    context.closePath();\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / a);\n    const x0 = r / 2, y0 = r * k;\n    const x1 = x0, y1 = r * k + r;\n    const x2 = -x1, y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n};\n", "import {min, sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size - min(size / 6, 1.7)) * 0.6189;\n    context.moveTo(-r, -r);\n    context.lineTo(r, r);\n    context.moveTo(-r, r);\n    context.lineTo(r, -r);\n  }\n};\n", "import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n  circle,\n  plus,\n  times,\n  triangle2,\n  asterisk,\n  square2,\n  diamond2\n];\n\nexport default function Symbol(type, size) {\n  let context = null,\n      path = withPath(symbol);\n\n  type = typeof type === \"function\" ? type : constant(type || circle);\n  size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n  function symbol() {\n    let buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n", "export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n", "import {ascending, descending} from \"d3\";\n\nexport function defined(x) {\n  return x != null && !Number.isNaN(x);\n}\n\nexport function ascendingDefined(a, b) {\n  return +defined(b) - +defined(a) || ascending(a, b);\n}\n\nexport function descendingDefined(a, b) {\n  return +defined(b) - +defined(a) || descending(a, b);\n}\n\nexport function nonempty(x) {\n  return x != null && `${x}` !== \"\";\n}\n\nexport function finite(x) {\n  return isFinite(x) ? x : NaN;\n}\n\nexport function positive(x) {\n  return x > 0 && isFinite(x) ? x : NaN;\n}\n\nexport function negative(x) {\n  return x < 0 && isFinite(x) ? x : NaN;\n}\n", "export default function format(date, fallback) {\n  if (!(date instanceof Date)) date = new Date(+date);\n  if (isNaN(date)) return typeof fallback === \"function\" ? fallback(date) : fallback;\n  const hours = date.getUTCHours();\n  const minutes = date.getUTCMinutes();\n  const seconds = date.getUTCSeconds();\n  const milliseconds = date.getUTCMilliseconds();\n  return `${formatYear(date.getUTCFullYear(), 4)}-${pad(date.getUTCMonth() + 1, 2)}-${pad(date.getUTCDate(), 2)}${\n    hours || minutes || seconds || milliseconds ? `T${pad(hours, 2)}:${pad(minutes, 2)}${\n      seconds || milliseconds ? `:${pad(seconds, 2)}${\n        milliseconds ? `.${pad(milliseconds, 3)}` : ``\n      }` : ``\n    }Z` : ``\n  }`;\n}\n\nfunction formatYear(year) {\n  return year < 0 ? `-${pad(-year, 6)}`\n    : year > 9999 ? `+${pad(year, 6)}`\n    : pad(year, 4);\n}\n\nfunction pad(value, width) {\n  return `${value}`.padStart(width, \"0\");\n}\n", "const re = /^(?:[-+]\\d{2})?\\d{4}(?:-\\d{2}(?:-\\d{2})?)?(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{3})?)?(?:Z|[-+]\\d{2}:?\\d{2})?)?$/;\n\nexport default function parse(string, fallback) {\n  if (!re.test(string += \"\")) return typeof fallback === \"function\" ? fallback(string) : fallback;\n  return new Date(string);\n}\n", "import {bisector, extent, median, pairs, timeFormat, utcFormat} from \"d3\";\nimport {utcSecond, utcMinute, utcHour, unixDay, utcWeek, utcMonth, utcYear} from \"d3\";\nimport {utcMonday, utcTuesday, utcWednesday, utcThursday, utcFriday, utcSaturday, utcSunday} from \"d3\";\nimport {timeSecond, timeMinute, timeHour, timeDay, timeWeek, timeMonth, timeYear} from \"d3\";\nimport {timeMonday, timeTuesday, timeWednesday, timeThursday, timeFriday, timeSaturday, timeSunday} from \"d3\";\nimport {orderof} from \"./options.js\";\n\nconst durationSecond = 1000;\nconst durationMinute = durationSecond * 60;\nconst durationHour = durationMinute * 60;\nconst durationDay = durationHour * 24;\nconst durationWeek = durationDay * 7;\nconst durationMonth = durationDay * 30;\nconst durationYear = durationDay * 365;\n\n// See https://github.com/d3/d3-time/blob/9e8dc940f38f78d7588aad68a54a25b1f0c2d97b/src/ticks.js#L14-L33\nconst formats = [\n  [\"millisecond\", 0.5 * durationSecond],\n  [\"second\", durationSecond],\n  [\"second\", 30 * durationSecond],\n  [\"minute\", durationMinute],\n  [\"minute\", 30 * durationMinute],\n  [\"hour\", durationHour],\n  [\"hour\", 12 * durationHour],\n  [\"day\", durationDay],\n  [\"day\", 2 * durationDay],\n  [\"week\", durationWeek],\n  [\"month\", durationMonth],\n  [\"month\", 3 * durationMonth],\n  [\"year\", durationYear]\n];\n\nconst timeIntervals = new Map([\n  [\"second\", timeSecond],\n  [\"minute\", timeMinute],\n  [\"hour\", timeHour],\n  [\"day\", timeDay], // TODO local time equivalent of unixDay?\n  [\"week\", timeWeek],\n  [\"month\", timeMonth],\n  [\"year\", timeYear],\n  [\"monday\", timeMonday],\n  [\"tuesday\", timeTuesday],\n  [\"wednesday\", timeWednesday],\n  [\"thursday\", timeThursday],\n  [\"friday\", timeFriday],\n  [\"saturday\", timeSaturday],\n  [\"sunday\", timeSunday]\n]);\n\nconst utcIntervals = new Map([\n  [\"second\", utcSecond],\n  [\"minute\", utcMinute],\n  [\"hour\", utcHour],\n  [\"day\", unixDay],\n  [\"week\", utcWeek],\n  [\"month\", utcMonth],\n  [\"year\", utcYear],\n  [\"monday\", utcMonday],\n  [\"tuesday\", utcTuesday],\n  [\"wednesday\", utcWednesday],\n  [\"thursday\", utcThursday],\n  [\"friday\", utcFriday],\n  [\"saturday\", utcSaturday],\n  [\"sunday\", utcSunday]\n]);\n\nfunction parseInterval(input, intervals) {\n  let name = `${input}`.toLowerCase();\n  if (name.endsWith(\"s\")) name = name.slice(0, -1); // drop plural\n  let period = 1;\n  const match = /^(?:(\\d+)\\s+)/.exec(name);\n  if (match) {\n    name = name.slice(match[0].length);\n    period = +match[1];\n  }\n  switch (name) {\n    case \"quarter\":\n      name = \"month\";\n      period *= 3;\n      break;\n    case \"half\":\n      name = \"month\";\n      period *= 6;\n      break;\n  }\n  let interval = intervals.get(name);\n  if (!interval) throw new Error(`unknown interval: ${input}`);\n  if (!(period > 1)) return interval;\n  if (!interval.every) throw new Error(`non-periodic interval: ${name}`);\n  return interval.every(period);\n}\n\nexport function maybeTimeInterval(interval) {\n  return parseInterval(interval, timeIntervals);\n}\n\nexport function maybeUtcInterval(interval) {\n  return parseInterval(interval, utcIntervals);\n}\n\nexport function isUtcYear(i) {\n  if (!i) return false;\n  const date = i.floor(new Date(Date.UTC(2000, 11, 31)));\n  return utcYear(date) >= date; // coercing equality\n}\n\nexport function isTimeYear(i) {\n  if (!i) return false;\n  const date = i.floor(new Date(2000, 11, 31));\n  return timeYear(date) >= date; // coercing equality\n}\n\nexport function formatTimeTicks(scale, data, ticks, anchor) {\n  const format = scale.type === \"time\" ? timeFormat : utcFormat;\n  const template =\n    anchor === \"left\" || anchor === \"right\"\n      ? (f1, f2) => `\\n${f1}\\n${f2}` // extra newline to keep f1 centered\n      : anchor === \"top\"\n      ? (f1, f2) => `${f2}\\n${f1}`\n      : (f1, f2) => `${f1}\\n${f2}`;\n  switch (getTimeTicksInterval(scale, data, ticks)) {\n    case \"millisecond\":\n      return formatConditional(format(\".%L\"), format(\":%M:%S\"), template);\n    case \"second\":\n      return formatConditional(format(\":%S\"), format(\"%-I:%M\"), template);\n    case \"minute\":\n      return formatConditional(format(\"%-I:%M\"), format(\"%p\"), template);\n    case \"hour\":\n      return formatConditional(format(\"%-I %p\"), format(\"%b %-d\"), template);\n    case \"day\":\n      return formatConditional(format(\"%-d\"), format(\"%b\"), template);\n    case \"week\":\n      return formatConditional(format(\"%-d\"), format(\"%b\"), template);\n    case \"month\":\n      return formatConditional(format(\"%b\"), format(\"%Y\"), template);\n    case \"year\":\n      return format(\"%Y\");\n  }\n  throw new Error(\"unable to format time ticks\");\n}\n\n// Compute the median difference between adjacent ticks, ignoring repeated\n// ticks; this implies an effective time interval, assuming that ticks are\n// regularly spaced; choose the largest format less than this interval so that\n// the ticks show the field that is changing. If the ticks are not available,\n// fallback to an approximation based on the desired number of ticks.\nfunction getTimeTicksInterval(scale, data, ticks) {\n  const medianStep = median(pairs(data, (a, b) => Math.abs(b - a) || NaN));\n  if (medianStep > 0) return formats[bisector(([, step]) => step).right(formats, medianStep, 1, formats.length) - 1][0];\n  const [start, stop] = extent(scale.domain());\n  const count = typeof ticks === \"number\" ? ticks : 10;\n  const step = Math.abs(stop - start) / count;\n  return formats[bisector(([, step]) => Math.log(step)).center(formats, Math.log(step))][0];\n}\n\nfunction formatConditional(format1, format2, template) {\n  return (x, i, X) => {\n    const f1 = format1(x, i); // always shown\n    const f2 = format2(x, i); // only shown if different\n    const j = i - orderof(X); // detect reversed domains\n    return i !== j && X[j] !== undefined && f2 === format2(X[j], j) ? f1 : template(f1, f2);\n  };\n}\n", "import {color, descending, quantile, range as rangei} from \"d3\";\nimport {parse as isoParse} from \"isoformat\";\nimport {defined} from \"./defined.js\";\nimport {maybeTimeInterval, maybeUtcInterval} from \"./time.js\";\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray\nexport const TypedArray = Object.getPrototypeOf(Uint8Array);\nconst objectToString = Object.prototype.toString;\n\nexport function valueof(data, value, type) {\n  const valueType = typeof value;\n  return valueType === \"string\"\n    ? maybeTypedMap(data, field(value), type)\n    : valueType === \"function\"\n    ? maybeTypedMap(data, value, type)\n    : valueType === \"number\" || value instanceof Date || valueType === \"boolean\"\n    ? map(data, constant(value), type)\n    : typeof value?.transform === \"function\"\n    ? maybeTypedArrayify(value.transform(data), type)\n    : maybeTypedArrayify(value, type);\n}\n\nfunction maybeTypedMap(data, f, type) {\n  return map(data, type?.prototype instanceof TypedArray ? floater(f) : f, type);\n}\n\nfunction maybeTypedArrayify(data, type) {\n  return type === undefined\n    ? arrayify(data) // preserve undefined type\n    : data instanceof type\n    ? data\n    : type.prototype instanceof TypedArray && !(data instanceof TypedArray)\n    ? type.from(data, coerceNumber)\n    : type.from(data);\n}\n\nfunction floater(f) {\n  return (d, i) => coerceNumber(f(d, i));\n}\n\nexport const singleton = [null]; // for data-less decoration marks, e.g. frame\nexport const field = (name) => (d) => d[name];\nexport const indexOf = {transform: range};\nexport const identity = {transform: (d) => d};\nexport const zero = () => 0;\nexport const one = () => 1;\nexport const yes = () => true;\nexport const string = (x) => (x == null ? x : `${x}`);\nexport const number = (x) => (x == null ? x : +x);\nexport const boolean = (x) => (x == null ? x : !!x);\nexport const first = (x) => (x ? x[0] : undefined);\nexport const second = (x) => (x ? x[1] : undefined);\nexport const third = (x) => (x ? x[2] : undefined);\nexport const constant = (x) => () => x;\n\n// Converts a string like \u201Cp25\u201D into a function that takes an index I and an\n// accessor function f, returning the corresponding percentile value.\nexport function percentile(reduce) {\n  const p = +`${reduce}`.slice(1) / 100;\n  return (I, f) => quantile(I, p, f);\n}\n\n// If the values are specified as a typed array, no coercion is required.\nexport function coerceNumbers(values) {\n  return values instanceof TypedArray ? values : map(values, coerceNumber, Float64Array);\n}\n\n// Unlike Mark\u2019s number, here we want to convert null and undefined to NaN since\n// the result will be stored in a Float64Array and we don\u2019t want null to be\n// coerced to zero. We use Number instead of unary + to allow BigInt coercion.\nfunction coerceNumber(x) {\n  return x == null ? NaN : Number(x);\n}\n\nexport function coerceDates(values) {\n  return map(values, coerceDate);\n}\n\n// When coercing strings to dates, we only want to allow the ISO 8601 format\n// since the built-in string parsing of the Date constructor varies across\n// browsers. (In the future, this could be made more liberal if desired, though\n// it is still generally preferable to do date parsing yourself explicitly,\n// rather than rely on Plot.) Any non-string values are coerced to number first\n// and treated as milliseconds since UNIX epoch.\nexport function coerceDate(x) {\n  return x instanceof Date && !isNaN(x)\n    ? x\n    : typeof x === \"string\"\n    ? isoParse(x)\n    : x == null || isNaN((x = +x))\n    ? undefined\n    : new Date(x);\n}\n\n// Some channels may allow a string constant to be specified; to differentiate\n// string constants (e.g., \"red\") from named fields (e.g., \"date\"), this\n// function tests whether the given value is a CSS color string and returns a\n// tuple [channel, constant] where one of the two is undefined, and the other is\n// the given value. If you wish to reference a named field that is also a valid\n// CSS color, use an accessor (d => d.red) instead.\nexport function maybeColorChannel(value, defaultValue) {\n  if (value === undefined) value = defaultValue;\n  return value === null ? [undefined, \"none\"] : isColor(value) ? [undefined, value] : [value, undefined];\n}\n\n// Similar to maybeColorChannel, this tests whether the given value is a number\n// indicating a constant, and otherwise assumes that it\u2019s a channel value.\nexport function maybeNumberChannel(value, defaultValue) {\n  if (value === undefined) value = defaultValue;\n  return value === null || typeof value === \"number\" ? [undefined, value] : [value, undefined];\n}\n\n// Validates the specified optional string against the allowed list of keywords.\nexport function maybeKeyword(input, name, allowed) {\n  if (input != null) return keyword(input, name, allowed);\n}\n\n// Validates the specified required string against the allowed list of keywords.\nexport function keyword(input, name, allowed) {\n  const i = `${input}`.toLowerCase();\n  if (!allowed.includes(i)) throw new Error(`invalid ${name}: ${input}`);\n  return i;\n}\n\n// Promotes the specified data to an array as needed.\nexport function arrayify(data) {\n  return data == null || data instanceof Array || data instanceof TypedArray ? data : Array.from(data);\n}\n\n// An optimization of type.from(values, f): if the given values are already an\n// instanceof the desired array type, the faster values.map method is used.\nexport function map(values, f, type = Array) {\n  return values == null ? values : values instanceof type ? values.map(f) : type.from(values, f);\n}\n\n// An optimization of type.from(values): if the given values are already an\n// instanceof the desired array type, the faster values.slice method is used.\nexport function slice(values, type = Array) {\n  return values instanceof type ? values.slice() : type.from(values);\n}\n\n// Returns true if any of x, x1, or x2 is not (strictly) undefined.\nexport function hasX({x, x1, x2}) {\n  return x !== undefined || x1 !== undefined || x2 !== undefined;\n}\n\n// Returns true if any of y, y1, or y2 is not (strictly) undefined.\nexport function hasY({y, y1, y2}) {\n  return y !== undefined || y1 !== undefined || y2 !== undefined;\n}\n\n// Returns true if has x or y, or if interval is not (strictly) undefined.\nexport function hasXY(options) {\n  return hasX(options) || hasY(options) || options.interval !== undefined;\n}\n\n// Disambiguates an options object (e.g., {y: \"x2\"}) from a primitive value.\nexport function isObject(option) {\n  return option?.toString === objectToString;\n}\n\n// Disambiguates a scale options object (e.g., {color: {type: \"linear\"}}) from\n// some other option (e.g., {color: \"red\"}). When creating standalone legends,\n// this is used to test whether a scale is defined; this should be consistent\n// with inferScaleType when there are no channels associated with the scale, and\n// if this returns true, then normalizeScale must return non-null.\nexport function isScaleOptions(option) {\n  return isObject(option) && (option.type !== undefined || option.domain !== undefined);\n}\n\n// Disambiguates an options object (e.g., {y: \"x2\"}) from a channel value\n// definition expressed as a channel transform (e.g., {transform: \u2026}).\nexport function isOptions(option) {\n  return isObject(option) && typeof option.transform !== \"function\";\n}\n\n// Disambiguates a sort transform (e.g., {sort: \"date\"}) from a channel domain\n// sort definition (e.g., {sort: {y: \"x\"}}).\nexport function isDomainSort(sort) {\n  return isOptions(sort) && sort.value === undefined && sort.channel === undefined;\n}\n\n// For marks specified either as [0, x] or [x1, x2], such as areas and bars.\nexport function maybeZero(x, x1, x2, x3 = identity) {\n  if (x1 === undefined && x2 === undefined) {\n    // {x} or {}\n    (x1 = 0), (x2 = x === undefined ? x3 : x);\n  } else if (x1 === undefined) {\n    // {x, x2} or {x2}\n    x1 = x === undefined ? 0 : x;\n  } else if (x2 === undefined) {\n    // {x, x1} or {x1}\n    x2 = x === undefined ? 0 : x;\n  }\n  return [x1, x2];\n}\n\n// For marks that have x and y channels (e.g., cell, dot, line, text).\nexport function maybeTuple(x, y) {\n  return x === undefined && y === undefined ? [first, second] : [x, y];\n}\n\n// A helper for extracting the z channel, if it is variable. Used by transforms\n// that require series, such as moving average and normalize.\nexport function maybeZ({z, fill, stroke} = {}) {\n  if (z === undefined) [z] = maybeColorChannel(fill);\n  if (z === undefined) [z] = maybeColorChannel(stroke);\n  return z;\n}\n\n// Returns a Uint32Array with elements [0, 1, 2, \u2026 data.length - 1].\nexport function range(data) {\n  const n = data.length;\n  const r = new Uint32Array(n);\n  for (let i = 0; i < n; ++i) r[i] = i;\n  return r;\n}\n\n// Returns a filtered range of data given the test function.\nexport function where(data, test) {\n  return range(data).filter((i) => test(data[i], i, data));\n}\n\n// Returns an array [values[index[0]], values[index[1]], \u2026].\nexport function take(values, index) {\n  return map(index, (i) => values[i]);\n}\n\n// If f does not take exactly one argument, wraps it in a function that uses take.\nexport function taker(f) {\n  return f.length === 1 ? (index, values) => f(take(values, index)) : f;\n}\n\n// Uses subarray if available, and otherwise slice.\nexport function subarray(I, i, j) {\n  return I.subarray ? I.subarray(i, j) : I.slice(i, j);\n}\n\n// Based on InternMap (d3.group).\nexport function keyof(value) {\n  return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n\nexport function maybeInput(key, options) {\n  if (options[key] !== undefined) return options[key];\n  switch (key) {\n    case \"x1\":\n    case \"x2\":\n      key = \"x\";\n      break;\n    case \"y1\":\n    case \"y2\":\n      key = \"y\";\n      break;\n  }\n  return options[key];\n}\n\nexport function column(source) {\n  // Defines a column whose values are lazily populated by calling the returned\n  // setter. If the given source is labeled, the label is propagated to the\n  // returned column definition.\n  let value;\n  return [\n    {\n      transform: () => value,\n      label: labelof(source)\n    },\n    (v) => (value = v)\n  ];\n}\n\n// Like column, but allows the source to be null.\nexport function maybeColumn(source) {\n  return source == null ? [source] : column(source);\n}\n\nexport function labelof(value, defaultValue) {\n  return typeof value === \"string\" ? value : value && value.label !== undefined ? value.label : defaultValue;\n}\n\n// Assuming that both x1 and x2 and lazy columns (per above), this derives a new\n// a column that\u2019s the average of the two, and which inherits the column label\n// (if any). Both input columns are assumed to be quantitative. If either column\n// is temporal, the returned column is also temporal.\nexport function mid(x1, x2) {\n  return {\n    transform(data) {\n      const X1 = x1.transform(data);\n      const X2 = x2.transform(data);\n      return isTemporal(X1) || isTemporal(X2)\n        ? map(X1, (_, i) => new Date((+X1[i] + +X2[i]) / 2))\n        : map(X1, (_, i) => (+X1[i] + +X2[i]) / 2, Float64Array);\n    },\n    label: x1.label\n  };\n}\n\n// If the scale options declare an interval, applies it to the values V.\nexport function maybeApplyInterval(V, scale) {\n  const t = maybeIntervalTransform(scale?.interval, scale?.type);\n  return t ? map(V, t) : V;\n}\n\n// Returns the equivalent scale transform for the specified interval option.\nexport function maybeIntervalTransform(interval, type) {\n  const i = maybeInterval(interval, type);\n  return i && ((v) => (defined(v) ? i.floor(v) : v));\n}\n\n// If interval is not nullish, converts interval shorthand such as a number (for\n// multiples) or a time interval name (such as \u201Cday\u201D) to a {floor, offset,\n// range} object similar to a D3 time interval.\nexport function maybeInterval(interval, type) {\n  if (interval == null) return;\n  if (typeof interval === \"number\") {\n    if (0 < interval && interval < 1 && Number.isInteger(1 / interval)) interval = -1 / interval;\n    const n = Math.abs(interval);\n    return interval < 0\n      ? {\n          floor: (d) => Math.floor(d * n) / n,\n          offset: (d) => (d * n + 1) / n, // note: no optional step for simplicity\n          range: (lo, hi) => rangei(Math.ceil(lo * n), hi * n).map((x) => x / n)\n        }\n      : {\n          floor: (d) => Math.floor(d / n) * n,\n          offset: (d) => d + n, // note: no optional step for simplicity\n          range: (lo, hi) => rangei(Math.ceil(lo / n), hi / n).map((x) => x * n)\n        };\n  }\n  if (typeof interval === \"string\") return (type === \"time\" ? maybeTimeInterval : maybeUtcInterval)(interval);\n  if (typeof interval.floor !== \"function\") throw new Error(\"invalid interval; missing floor method\");\n  if (typeof interval.offset !== \"function\") throw new Error(\"invalid interval; missing offset method\");\n  return interval;\n}\n\n// Like maybeInterval, but requires a range method too.\nexport function maybeRangeInterval(interval, type) {\n  interval = maybeInterval(interval, type);\n  if (interval && typeof interval.range !== \"function\") throw new Error(\"invalid interval: missing range method\");\n  return interval;\n}\n\n// Like maybeRangeInterval, but requires a ceil method too.\nexport function maybeNiceInterval(interval, type) {\n  interval = maybeRangeInterval(interval, type);\n  if (interval && typeof interval.ceil !== \"function\") throw new Error(\"invalid interval: missing ceil method\");\n  return interval;\n}\n\n// This distinguishes between per-dimension options and a standalone value.\nexport function maybeValue(value) {\n  return value === undefined || isOptions(value) ? value : {value};\n}\n\n// Coerces the given channel values (if any) to numbers. This is useful when\n// values will be interpolated into other code, such as an SVG transform, and\n// where we don\u2019t wish to allow unexpected behavior for weird input.\nexport function numberChannel(source) {\n  return source == null\n    ? null\n    : {\n        transform: (data) => valueof(data, source, Float64Array),\n        label: labelof(source)\n      };\n}\n\nexport function isTuples(data) {\n  if (!isIterable(data)) return false;\n  for (const d of data) {\n    if (d == null) continue;\n    return typeof d === \"object\" && \"0\" in d && \"1\" in d;\n  }\n}\n\nexport function isIterable(value) {\n  return value && typeof value[Symbol.iterator] === \"function\";\n}\n\nexport function isTextual(values) {\n  for (const value of values) {\n    if (value == null) continue;\n    return typeof value !== \"object\" || value instanceof Date;\n  }\n}\n\nexport function isOrdinal(values) {\n  for (const value of values) {\n    if (value == null) continue;\n    const type = typeof value;\n    return type === \"string\" || type === \"boolean\";\n  }\n}\n\nexport function isTemporal(values) {\n  for (const value of values) {\n    if (value == null) continue;\n    return value instanceof Date;\n  }\n}\n\n// Are these strings that might represent dates? This is stricter than ISO 8601\n// because we want to ignore false positives on numbers; for example, the string\n// \"1192\" is more likely to represent a number than a date even though it is\n// valid ISO 8601 representing 1192-01-01.\nexport function isTemporalString(values) {\n  for (const value of values) {\n    if (value == null) continue;\n    return typeof value === \"string\" && isNaN(value) && isoParse(value);\n  }\n}\n\n// Are these strings that might represent numbers? This is stricter than\n// coercion because we want to ignore false positives on e.g. empty strings.\nexport function isNumericString(values) {\n  for (const value of values) {\n    if (value == null) continue;\n    if (typeof value !== \"string\") return false;\n    if (!value.trim()) continue;\n    return !isNaN(value);\n  }\n}\n\nexport function isNumeric(values) {\n  for (const value of values) {\n    if (value == null) continue;\n    return typeof value === \"number\";\n  }\n}\n\n// Returns true if every non-null value in the specified iterable of values\n// passes the specified predicate, and there is at least one non-null value;\n// returns false if at least one non-null value does not pass the specified\n// predicate; otherwise returns undefined (as if all values are null).\nexport function isEvery(values, is) {\n  let every;\n  for (const value of values) {\n    if (value == null) continue;\n    if (!is(value)) return false;\n    every = true;\n  }\n  return every;\n}\n\n// Mostly relies on d3-color, with a few extra color keywords. Currently this\n// strictly requires that the value be a string; we might want to apply string\n// coercion here, though note that d3-color instances would need to support\n// valueOf to work correctly with InternMap.\n// https://www.w3.org/TR/SVG11/painting.html#SpecifyingPaint\nexport function isColor(value) {\n  if (typeof value !== \"string\") return false;\n  value = value.toLowerCase().trim();\n  return (\n    value === \"none\" ||\n    value === \"currentcolor\" ||\n    (value.startsWith(\"url(\") && value.endsWith(\")\")) || // <funciri>, e.g. pattern or gradient\n    (value.startsWith(\"var(\") && value.endsWith(\")\")) || // CSS variable\n    color(value) !== null\n  );\n}\n\nexport function isOpacity(value) {\n  return typeof value === \"number\" && ((0 <= value && value <= 1) || isNaN(value));\n}\n\nexport function isNoneish(value) {\n  return value == null || isNone(value);\n}\n\nexport function isNone(value) {\n  return /^\\s*none\\s*$/i.test(value);\n}\n\nexport function isRound(value) {\n  return /^\\s*round\\s*$/i.test(value);\n}\n\nexport function maybeAnchor(value, name) {\n  return maybeKeyword(value, name, [\n    \"middle\",\n    \"top-left\",\n    \"top\",\n    \"top-right\",\n    \"right\",\n    \"bottom-right\",\n    \"bottom\",\n    \"bottom-left\",\n    \"left\"\n  ]);\n}\n\nexport function maybeFrameAnchor(value = \"middle\") {\n  return maybeAnchor(value, \"frameAnchor\");\n}\n\n// Like a sort comparator, returns a positive value if the given array of values\n// is in ascending order, a negative value if the values are in descending\n// order. Assumes monotonicity; only tests the first and last values.\nexport function orderof(values) {\n  if (values == null) return;\n  const first = values[0];\n  const last = values[values.length - 1];\n  return descending(first, last);\n}\n\n// Unlike {...defaults, ...options}, this ensures that any undefined (but\n// present) properties in options inherit the given default value.\nexport function inherit(options = {}, ...rest) {\n  let o = options;\n  for (const defaults of rest) {\n    for (const key in defaults) {\n      if (o[key] === undefined) {\n        const value = defaults[key];\n        if (o === options) o = {...o, [key]: value};\n        else o[key] = value;\n      }\n    }\n  }\n  return o;\n}\n\n// Given an iterable of named things (objects with a name property), returns a\n// corresponding object with properties associated with the given name.\nexport function named(things) {\n  console.warn(\"named iterables are deprecated; please use an object instead\");\n  const names = new Set();\n  return Object.fromEntries(\n    Array.from(things, (thing) => {\n      const {name} = thing;\n      if (name == null) throw new Error(\"missing name\");\n      const key = `${name}`;\n      if (key === \"__proto__\") throw new Error(`illegal name: ${key}`);\n      if (names.has(key)) throw new Error(`duplicate name: ${key}`);\n      names.add(key);\n      return [name, thing];\n    })\n  );\n}\n\nexport function maybeNamed(things) {\n  return isIterable(things) ? named(things) : things;\n}\n", "// Positional scales have associated axes, and for ordinal data, a point or band\n// scale is used instead of an ordinal scale.\nexport const position = Symbol(\"position\");\n\n// Color scales default to the turbo interpolator for quantitative data, and to\n// the Tableau10 scheme for ordinal data. Color scales may also have an\n// associated legend.\nexport const color = Symbol(\"color\");\n\n// Radius scales default to the sqrt type, have a default range of [0, 3], and a\n// default domain from 0 to the median first quartile of associated channels.\nexport const radius = Symbol(\"radius\");\n\n// Length scales default to the linear type, have a default range of [0, 12],\n// and a default domain from 0 to the median median of associated channels.\nexport const length = Symbol(\"length\");\n\n// Opacity scales have a default range of [0, 1], and a default domain from 0 to\n// the maximum value of associated channels.\nexport const opacity = Symbol(\"opacity\");\n\n// Symbol scales have a default range of categorical symbols.\nexport const symbol = Symbol(\"symbol\");\n\n// There isn\u2019t really a projection scale; this represents x and y for geometry.\nexport const projection = Symbol(\"projection\");\n\n// TODO Rather than hard-coding the list of known scale names, collect the names\n// and categories for each plot specification, so that custom marks can register\n// custom scales.\nexport const registry = new Map([\n  [\"x\", position],\n  [\"y\", position],\n  [\"fx\", position],\n  [\"fy\", position],\n  [\"r\", radius],\n  [\"color\", color],\n  [\"opacity\", opacity],\n  [\"symbol\", symbol],\n  [\"length\", length],\n  [\"projection\", projection]\n]);\n", "import {symbolAsterisk, symbolDiamond2, symbolPlus, symbolSquare2, symbolTriangle2, symbolTimes} from \"d3\";\nimport {symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye} from \"d3\";\n\nexport const sqrt3 = Math.sqrt(3);\nexport const sqrt4_3 = 2 / sqrt3;\n\nconst symbolHexagon = {\n  draw(context, size) {\n    const rx = Math.sqrt(size / Math.PI),\n      ry = rx * sqrt4_3,\n      hy = ry / 2;\n    context.moveTo(0, ry);\n    context.lineTo(rx, hy);\n    context.lineTo(rx, -hy);\n    context.lineTo(0, -ry);\n    context.lineTo(-rx, -hy);\n    context.lineTo(-rx, hy);\n    context.closePath();\n  }\n};\n\nconst symbols = new Map([\n  [\"asterisk\", symbolAsterisk],\n  [\"circle\", symbolCircle],\n  [\"cross\", symbolCross],\n  [\"diamond\", symbolDiamond],\n  [\"diamond2\", symbolDiamond2],\n  [\"hexagon\", symbolHexagon],\n  [\"plus\", symbolPlus],\n  [\"square\", symbolSquare],\n  [\"square2\", symbolSquare2],\n  [\"star\", symbolStar],\n  [\"times\", symbolTimes],\n  [\"triangle\", symbolTriangle],\n  [\"triangle2\", symbolTriangle2],\n  [\"wye\", symbolWye]\n]);\n\nfunction isSymbolObject(value) {\n  return value && typeof value.draw === \"function\";\n}\n\nexport function isSymbol(value) {\n  if (isSymbolObject(value)) return true;\n  if (typeof value !== \"string\") return false;\n  return symbols.has(value.toLowerCase());\n}\n\nexport function maybeSymbol(symbol) {\n  if (symbol == null || isSymbolObject(symbol)) return symbol;\n  const value = symbols.get(`${symbol}`.toLowerCase());\n  if (value) return value;\n  throw new Error(`invalid symbol: ${symbol}`);\n}\n\nexport function maybeSymbolChannel(symbol) {\n  if (symbol == null || isSymbolObject(symbol)) return [undefined, symbol];\n  if (typeof symbol === \"string\") {\n    const value = symbols.get(`${symbol}`.toLowerCase());\n    if (value) return [undefined, value];\n  }\n  return [symbol, undefined];\n}\n", "import {randomLcg} from \"d3\";\nimport {ascendingDefined, descendingDefined} from \"../defined.js\";\nimport {arrayify, isDomainSort, isOptions, maybeValue, valueof} from \"../options.js\";\n\nexport function basic({filter: f1, sort: s1, reverse: r1, transform: t1, initializer: i1, ...options} = {}, transform) {\n  // If both t1 and t2 are defined, returns a composite transform that first\n  // applies t1 and then applies t2.\n  if (t1 === undefined) {\n    // explicit transform overrides filter, sort, and reverse\n    if (f1 != null) t1 = filterTransform(f1);\n    if (s1 != null && !isDomainSort(s1)) t1 = composeTransform(t1, sortTransform(s1));\n    if (r1) t1 = composeTransform(t1, reverseTransform);\n  }\n  if (transform != null && i1 != null) throw new Error(\"transforms cannot be applied after initializers\");\n  return {\n    ...options,\n    ...((s1 === null || isDomainSort(s1)) && {sort: s1}),\n    transform: composeTransform(t1, transform)\n  };\n}\n\nexport function initializer({filter: f1, sort: s1, reverse: r1, initializer: i1, ...options} = {}, initializer) {\n  // If both i1 and i2 are defined, returns a composite initializer that first\n  // applies i1 and then applies i2.\n  if (i1 === undefined) {\n    // explicit initializer overrides filter, sort, and reverse\n    if (f1 != null) i1 = filterTransform(f1);\n    if (s1 != null && !isDomainSort(s1)) i1 = composeInitializer(i1, sortTransform(s1));\n    if (r1) i1 = composeInitializer(i1, reverseTransform);\n  }\n  return {\n    ...options,\n    ...((s1 === null || isDomainSort(s1)) && {sort: s1}),\n    initializer: composeInitializer(i1, initializer)\n  };\n}\n\nfunction composeTransform(t1, t2) {\n  if (t1 == null) return t2 === null ? undefined : t2;\n  if (t2 == null) return t1 === null ? undefined : t1;\n  return function (data, facets, plotOptions) {\n    ({data, facets} = t1.call(this, data, facets, plotOptions));\n    return t2.call(this, arrayify(data), facets, plotOptions);\n  };\n}\n\nfunction composeInitializer(i1, i2) {\n  if (i1 == null) return i2 === null ? undefined : i2;\n  if (i2 == null) return i1 === null ? undefined : i1;\n  return function (data, facets, channels, ...args) {\n    let c1, d1, f1, c2, d2, f2;\n    ({data: d1 = data, facets: f1 = facets, channels: c1} = i1.call(this, data, facets, channels, ...args));\n    ({data: d2 = d1, facets: f2 = f1, channels: c2} = i2.call(this, d1, f1, {...channels, ...c1}, ...args));\n    return {data: d2, facets: f2, channels: {...c1, ...c2}};\n  };\n}\n\nfunction apply(options, t) {\n  return (options.initializer != null ? initializer : basic)(options, t);\n}\n\nexport function filter(test, options) {\n  return apply(options, filterTransform(test));\n}\n\nfunction filterTransform(value) {\n  return (data, facets) => {\n    const V = valueof(data, value);\n    return {data, facets: facets.map((I) => I.filter((i) => V[i]))};\n  };\n}\n\nexport function reverse({sort, ...options} = {}) {\n  return {\n    ...apply(options, reverseTransform),\n    sort: isDomainSort(sort) ? sort : null\n  };\n}\n\nfunction reverseTransform(data, facets) {\n  return {data, facets: facets.map((I) => I.slice().reverse())};\n}\n\nexport function shuffle({seed, sort, ...options} = {}) {\n  return {\n    ...apply(options, sortValue(seed == null ? Math.random : randomLcg(seed))),\n    sort: isDomainSort(sort) ? sort : null\n  };\n}\n\nexport function sort(order, {sort, ...options} = {}) {\n  return {\n    ...(isOptions(order) && order.channel !== undefined ? initializer : apply)(options, sortTransform(order)),\n    sort: isDomainSort(sort) ? sort : null\n  };\n}\n\nfunction sortTransform(value) {\n  return (typeof value === \"function\" && value.length !== 1 ? sortData : sortValue)(value);\n}\n\nfunction sortData(compare) {\n  return (data, facets) => {\n    const compareData = (i, j) => compare(data[i], data[j]);\n    return {data, facets: facets.map((I) => I.slice().sort(compareData))};\n  };\n}\n\nfunction sortValue(value) {\n  let channel, order;\n  ({channel, value, order} = {...maybeValue(value)});\n  const negate = channel?.startsWith(\"-\");\n  if (negate) channel = channel.slice(1);\n  if (order === undefined) order = negate ? descendingDefined : ascendingDefined;\n  if (typeof order !== \"function\") {\n    switch (`${order}`.toLowerCase()) {\n      case \"ascending\":\n        order = ascendingDefined;\n        break;\n      case \"descending\":\n        order = descendingDefined;\n        break;\n      default:\n        throw new Error(`invalid order: ${order}`);\n    }\n  }\n  return (data, facets, channels) => {\n    let V;\n    if (channel === undefined) {\n      V = valueof(data, value);\n    } else {\n      if (channels === undefined) throw new Error(\"channel sort requires an initializer\");\n      V = channels[channel];\n      if (!V) return {}; // ignore missing channel\n      V = V.value;\n    }\n    const compareValue = (i, j) => order(V[i], V[j]);\n    return {data, facets: facets.map((I) => I.slice().sort(compareValue))};\n  };\n}\n", "import {\n  InternSet,\n  deviation,\n  group as grouper,\n  max,\n  maxIndex,\n  mean,\n  median,\n  min,\n  minIndex,\n  mode,\n  rollup,\n  sort,\n  sum,\n  variance\n} from \"d3\";\nimport {ascendingDefined} from \"../defined.js\";\nimport {\n  column,\n  first,\n  identity,\n  isObject,\n  isTemporal,\n  labelof,\n  maybeApplyInterval,\n  maybeColorChannel,\n  maybeColumn,\n  maybeInput,\n  maybeTuple,\n  percentile,\n  range,\n  second,\n  take,\n  valueof\n} from \"../options.js\";\nimport {basic} from \"./basic.js\";\n\n// Group on {z, fill, stroke}.\nexport function groupZ(outputs, options) {\n  return groupn(null, null, outputs, options);\n}\n\n// Group on {z, fill, stroke}, then on x.\nexport function groupX(outputs = {y: \"count\"}, options = {}) {\n  const {x = identity} = options;\n  if (x == null) throw new Error(\"missing channel: x\");\n  return groupn(x, null, outputs, options);\n}\n\n// Group on {z, fill, stroke}, then on y.\nexport function groupY(outputs = {x: \"count\"}, options = {}) {\n  const {y = identity} = options;\n  if (y == null) throw new Error(\"missing channel: y\");\n  return groupn(null, y, outputs, options);\n}\n\n// Group on {z, fill, stroke}, then on x and y.\nexport function group(outputs = {fill: \"count\"}, options = {}) {\n  let {x, y} = options;\n  [x, y] = maybeTuple(x, y);\n  if (x == null) throw new Error(\"missing channel: x\");\n  if (y == null) throw new Error(\"missing channel: y\");\n  return groupn(x, y, outputs, options);\n}\n\nfunction groupn(\n  x, // optionally group on x\n  y, // optionally group on y\n  {\n    data: reduceData = reduceIdentity,\n    filter,\n    sort,\n    reverse,\n    ...outputs // output channel definitions\n  } = {},\n  inputs = {} // input channels and options\n) {\n  // Compute the outputs.\n  outputs = maybeOutputs(outputs, inputs);\n  reduceData = maybeReduce(reduceData, identity);\n  sort = sort == null ? undefined : maybeOutput(\"sort\", sort, inputs);\n  filter = filter == null ? undefined : maybeEvaluator(\"filter\", filter, inputs);\n\n  // Produce x and y output channels as appropriate.\n  const [GX, setGX] = maybeColumn(x);\n  const [GY, setGY] = maybeColumn(y);\n\n  // Greedily materialize the z, fill, and stroke channels (if channels and not\n  // constants) so that we can reference them for subdividing groups without\n  // computing them more than once.\n  const {\n    z,\n    fill,\n    stroke,\n    x1,\n    x2, // consumed if x is an output\n    y1,\n    y2, // consumed if y is an output\n    ...options\n  } = inputs;\n  const [GZ, setGZ] = maybeColumn(z);\n  const [vfill] = maybeColorChannel(fill);\n  const [vstroke] = maybeColorChannel(stroke);\n  const [GF, setGF] = maybeColumn(vfill);\n  const [GS, setGS] = maybeColumn(vstroke);\n\n  return {\n    ...(\"z\" in inputs && {z: GZ || z}),\n    ...(\"fill\" in inputs && {fill: GF || fill}),\n    ...(\"stroke\" in inputs && {stroke: GS || stroke}),\n    ...basic(options, (data, facets, plotOptions) => {\n      const X = maybeApplyInterval(valueof(data, x), plotOptions?.x);\n      const Y = maybeApplyInterval(valueof(data, y), plotOptions?.y);\n      const Z = valueof(data, z);\n      const F = valueof(data, vfill);\n      const S = valueof(data, vstroke);\n      const G = maybeSubgroup(outputs, {z: Z, fill: F, stroke: S});\n      const groupFacets = [];\n      const groupData = [];\n      const GX = X && setGX([]);\n      const GY = Y && setGY([]);\n      const GZ = Z && setGZ([]);\n      const GF = F && setGF([]);\n      const GS = S && setGS([]);\n      let i = 0;\n      for (const o of outputs) o.initialize(data);\n      if (sort) sort.initialize(data);\n      if (filter) filter.initialize(data);\n      for (const facet of facets) {\n        const groupFacet = [];\n        for (const o of outputs) o.scope(\"facet\", facet);\n        if (sort) sort.scope(\"facet\", facet);\n        if (filter) filter.scope(\"facet\", facet);\n        for (const [f, I] of maybeGroup(facet, G)) {\n          for (const [y, gg] of maybeGroup(I, Y)) {\n            for (const [x, g] of maybeGroup(gg, X)) {\n              if (filter && !filter.reduce(g)) continue;\n              groupFacet.push(i++);\n              groupData.push(reduceData.reduceIndex(g, data));\n              if (X) GX.push(x);\n              if (Y) GY.push(y);\n              if (Z) GZ.push(G === Z ? f : Z[g[0]]);\n              if (F) GF.push(G === F ? f : F[g[0]]);\n              if (S) GS.push(G === S ? f : S[g[0]]);\n              for (const o of outputs) o.reduce(g);\n              if (sort) sort.reduce(g);\n            }\n          }\n        }\n        groupFacets.push(groupFacet);\n      }\n      maybeSort(groupFacets, sort, reverse);\n      return {data: groupData, facets: groupFacets};\n    }),\n    ...(!hasOutput(outputs, \"x\") && (GX ? {x: GX} : {x1, x2})),\n    ...(!hasOutput(outputs, \"y\") && (GY ? {y: GY} : {y1, y2})),\n    ...Object.fromEntries(outputs.map(({name, output}) => [name, output]))\n  };\n}\n\nexport function hasOutput(outputs, ...names) {\n  for (const {name} of outputs) {\n    if (names.includes(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function maybeOutputs(outputs, inputs, asOutput = maybeOutput) {\n  const entries = Object.entries(outputs);\n  // Propagate standard mark channels by default.\n  if (inputs.title != null && outputs.title === undefined) entries.push([\"title\", reduceTitle]);\n  if (inputs.href != null && outputs.href === undefined) entries.push([\"href\", reduceFirst]);\n  return entries\n    .filter(([, reduce]) => reduce !== undefined)\n    .map(([name, reduce]) => (reduce === null ? nullOutput(name) : asOutput(name, reduce, inputs)));\n}\n\nexport function maybeOutput(name, reduce, inputs, asEvaluator = maybeEvaluator) {\n  let scale; // optional per-channel scale override\n  if (isObject(reduce) && \"reduce\" in reduce) (scale = reduce.scale), (reduce = reduce.reduce); // N.B. array.reduce\n  const evaluator = asEvaluator(name, reduce, inputs);\n  const [output, setOutput] = column(evaluator.label);\n  let O;\n  return {\n    name,\n    output: scale === undefined ? output : {value: output, scale},\n    initialize(data) {\n      evaluator.initialize(data);\n      O = setOutput([]);\n    },\n    scope(scope, I) {\n      evaluator.scope(scope, I);\n    },\n    reduce(I, extent) {\n      O.push(evaluator.reduce(I, extent));\n    }\n  };\n}\n\nfunction nullOutput(name) {\n  return {name, initialize() {}, scope() {}, reduce() {}};\n}\n\nexport function maybeEvaluator(name, reduce, inputs, asReduce = maybeReduce) {\n  const input = maybeInput(name, inputs);\n  const reducer = asReduce(reduce, input);\n  let V, context;\n  return {\n    label: labelof(reducer === reduceCount ? null : input, reducer.label),\n    initialize(data) {\n      V = input === undefined ? data : valueof(data, input);\n      if (reducer.scope === \"data\") {\n        context = reducer.reduceIndex(range(data), V);\n      }\n    },\n    scope(scope, I) {\n      if (reducer.scope === scope) {\n        context = reducer.reduceIndex(I, V);\n      }\n    },\n    reduce(I, extent) {\n      return reducer.scope == null ? reducer.reduceIndex(I, V, extent) : reducer.reduceIndex(I, V, context, extent);\n    }\n  };\n}\n\nexport function maybeGroup(I, X) {\n  return X\n    ? sort(\n        grouper(I, (i) => X[i]),\n        first\n      )\n    : [[, I]];\n}\n\nexport function maybeReduce(reduce, value, fallback = invalidReduce) {\n  if (reduce == null) return fallback(reduce);\n  if (typeof reduce.reduceIndex === \"function\") return reduce;\n  if (typeof reduce.reduce === \"function\" && isObject(reduce)) return reduceReduce(reduce); // N.B. array.reduce\n  if (typeof reduce === \"function\") return reduceFunction(reduce);\n  if (/^p\\d{2}$/i.test(reduce)) return reduceAccessor(percentile(reduce));\n  switch (`${reduce}`.toLowerCase()) {\n    case \"first\":\n      return reduceFirst;\n    case \"last\":\n      return reduceLast;\n    case \"identity\":\n      return reduceIdentity;\n    case \"count\":\n      return reduceCount;\n    case \"distinct\":\n      return reduceDistinct;\n    case \"sum\":\n      return value == null ? reduceCount : reduceSum;\n    case \"proportion\":\n      return reduceProportion(value, \"data\");\n    case \"proportion-facet\":\n      return reduceProportion(value, \"facet\");\n    case \"deviation\":\n      return reduceAccessor(deviation);\n    case \"min\":\n      return reduceAccessor(min);\n    case \"min-index\":\n      return reduceAccessor(minIndex);\n    case \"max\":\n      return reduceAccessor(max);\n    case \"max-index\":\n      return reduceAccessor(maxIndex);\n    case \"mean\":\n      return reduceMaybeTemporalAccessor(mean);\n    case \"median\":\n      return reduceMaybeTemporalAccessor(median);\n    case \"variance\":\n      return reduceAccessor(variance);\n    case \"mode\":\n      return reduceAccessor(mode);\n  }\n  return fallback(reduce);\n}\n\nfunction invalidReduce(reduce) {\n  throw new Error(`invalid reduce: ${reduce}`);\n}\n\nexport function maybeSubgroup(outputs, inputs) {\n  for (const name in inputs) {\n    const value = inputs[name];\n    if (value !== undefined && !outputs.some((o) => o.name === name)) {\n      return value;\n    }\n  }\n}\n\nexport function maybeSort(facets, sort, reverse) {\n  if (sort) {\n    const S = sort.output.transform();\n    const compare = (i, j) => ascendingDefined(S[i], S[j]);\n    facets.forEach((f) => f.sort(compare));\n  }\n  if (reverse) {\n    facets.forEach((f) => f.reverse());\n  }\n}\n\nfunction reduceReduce(reduce) {\n  console.warn(\"deprecated reduce interface; implement reduceIndex instead.\");\n  return {...reduce, reduceIndex: reduce.reduce.bind(reduce)};\n}\n\nfunction reduceFunction(f) {\n  return {\n    reduceIndex(I, X, extent) {\n      return f(take(X, I), extent);\n    }\n  };\n}\n\nfunction reduceAccessor(f) {\n  return {\n    reduceIndex(I, X) {\n      return f(I, (i) => X[i]);\n    }\n  };\n}\n\nfunction reduceMaybeTemporalAccessor(f) {\n  return {\n    reduceIndex(I, X) {\n      const x = f(I, (i) => X[i]);\n      return isTemporal(X) ? new Date(x) : x;\n    }\n  };\n}\n\nexport const reduceIdentity = {\n  reduceIndex(I, X) {\n    return take(X, I);\n  }\n};\n\nexport const reduceFirst = {\n  reduceIndex(I, X) {\n    return X[I[0]];\n  }\n};\n\nconst reduceTitle = {\n  reduceIndex(I, X) {\n    const n = 5;\n    const groups = sort(\n      rollup(\n        I,\n        (V) => V.length,\n        (i) => X[i]\n      ),\n      second\n    );\n    const top = groups.slice(-n).reverse();\n    if (top.length < groups.length) {\n      const bottom = groups.slice(0, 1 - n);\n      top[n - 1] = [`\u2026 ${bottom.length.toLocaleString(\"en-US\")} more`, sum(bottom, second)];\n    }\n    return top.map(([key, value]) => `${key} (${value.toLocaleString(\"en-US\")})`).join(\"\\n\");\n  }\n};\n\nconst reduceLast = {\n  reduceIndex(I, X) {\n    return X[I[I.length - 1]];\n  }\n};\n\nexport const reduceCount = {\n  label: \"Frequency\",\n  reduceIndex(I) {\n    return I.length;\n  }\n};\n\nconst reduceDistinct = {\n  label: \"Distinct\",\n  reduceIndex(I, X) {\n    const s = new InternSet();\n    for (const i of I) s.add(X[i]);\n    return s.size;\n  }\n};\n\nconst reduceSum = reduceAccessor(sum);\n\nfunction reduceProportion(value, scope) {\n  return value == null\n    ? {scope, label: \"Frequency\", reduceIndex: (I, V, basis = 1) => I.length / basis}\n    : {scope, reduceIndex: (I, V, basis = 1) => sum(I, (i) => V[i]) / basis};\n}\n", "import {InternSet, rollups} from \"d3\";\nimport {ascendingDefined, descendingDefined} from \"./defined.js\";\nimport {first, isColor, isEvery, isIterable, isOpacity, labelof, map, maybeValue, range, valueof} from \"./options.js\";\nimport {registry} from \"./scales/index.js\";\nimport {isSymbol, maybeSymbol} from \"./symbol.js\";\nimport {maybeReduce} from \"./transforms/group.js\";\n\nexport function createChannel(data, {scale, type, value, filter, hint}, name) {\n  if (hint === undefined && typeof value?.transform === \"function\") hint = value.hint;\n  return inferChannelScale(name, {\n    scale,\n    type,\n    value: valueof(data, value),\n    label: labelof(value),\n    filter,\n    hint\n  });\n}\n\nexport function createChannels(channels, data) {\n  return Object.fromEntries(\n    Object.entries(channels).map(([name, channel]) => [name, createChannel(data, channel, name)])\n  );\n}\n\n// TODO Use Float64Array for scales with numeric ranges, e.g. position?\nexport function valueObject(channels, scales) {\n  const values = Object.fromEntries(\n    Object.entries(channels).map(([name, {scale: scaleName, value}]) => {\n      const scale = scaleName == null ? null : scales[scaleName];\n      return [name, scale == null ? value : map(value, scale)];\n    })\n  );\n  values.channels = channels; // expose channel state for advanced usage\n  return values;\n}\n\n// If the channel uses the \"auto\" scale (or equivalently true), infer the scale\n// from the channel name and the provided values. For color and symbol channels,\n// no scale is applied if the values are literal; however for symbols, we must\n// promote symbol names (e.g., \"plus\") to symbol implementations (symbolPlus).\n// Note: mutates channel!\nexport function inferChannelScale(name, channel) {\n  const {scale, value} = channel;\n  if (scale === true || scale === \"auto\") {\n    switch (name) {\n      case \"fill\":\n      case \"stroke\":\n      case \"color\":\n        channel.scale = scale !== true && isEvery(value, isColor) ? null : \"color\";\n        break;\n      case \"fillOpacity\":\n      case \"strokeOpacity\":\n      case \"opacity\":\n        channel.scale = scale !== true && isEvery(value, isOpacity) ? null : \"opacity\";\n        break;\n      case \"symbol\":\n        if (scale !== true && isEvery(value, isSymbol)) {\n          channel.scale = null;\n          channel.value = map(value, maybeSymbol);\n        } else {\n          channel.scale = \"symbol\";\n        }\n        break;\n      default:\n        channel.scale = registry.has(name) ? name : null;\n        break;\n    }\n  } else if (scale === false) {\n    channel.scale = null;\n  } else if (scale != null && !registry.has(scale)) {\n    throw new Error(`unknown scale: ${scale}`);\n  }\n  return channel;\n}\n\n// Note: mutates channel.domain! This is set to a function so that it is lazily\n// computed; i.e., if the scale\u2019s domain is set explicitly, that takes priority\n// over the sort option, and we don\u2019t need to do additional work.\nexport function channelDomain(data, facets, channels, facetChannels, options) {\n  const {order: defaultOrder, reverse: defaultReverse, reduce: defaultReduce = true, limit: defaultLimit} = options;\n  for (const x in options) {\n    if (!registry.has(x)) continue; // ignore unknown scale keys (including generic options)\n    let {value: y, order = defaultOrder, reverse = defaultReverse, reduce = defaultReduce, limit = defaultLimit} = maybeValue(options[x]); // prettier-ignore\n    const negate = y?.startsWith(\"-\");\n    if (negate) y = y.slice(1);\n    order = order === undefined ? negate !== (y === \"width\" || y === \"height\") ? descendingGroup : ascendingGroup : maybeOrder(order); // prettier-ignore\n    if (reduce == null || reduce === false) continue; // disabled reducer\n    const X = x === \"fx\" || x === \"fy\" ? reindexFacetChannel(facets, facetChannels[x]) : findScaleChannel(channels, x);\n    if (!X) throw new Error(`missing channel for scale: ${x}`);\n    const XV = X.value;\n    const [lo = 0, hi = Infinity] = isIterable(limit) ? limit : limit < 0 ? [limit] : [0, limit];\n    if (y == null) {\n      X.domain = () => {\n        let domain = Array.from(new InternSet(XV)); // remove any duplicates\n        if (reverse) domain = domain.reverse();\n        if (lo !== 0 || hi !== Infinity) domain = domain.slice(lo, hi);\n        return domain;\n      };\n    } else {\n      const YV =\n        y === \"data\"\n          ? data\n          : y === \"height\"\n          ? difference(channels, \"y1\", \"y2\")\n          : y === \"width\"\n          ? difference(channels, \"x1\", \"x2\")\n          : values(channels, y, y === \"y\" ? \"y2\" : y === \"x\" ? \"x2\" : undefined);\n      const reducer = maybeReduce(reduce === true ? \"max\" : reduce, YV);\n      X.domain = () => {\n        let domain = rollups(\n          range(XV),\n          (I) => reducer.reduceIndex(I, YV),\n          (i) => XV[i]\n        );\n        if (order) domain.sort(order);\n        if (reverse) domain.reverse();\n        if (lo !== 0 || hi !== Infinity) domain = domain.slice(lo, hi);\n        return domain.map(first);\n      };\n    }\n  }\n}\n\nfunction findScaleChannel(channels, scale) {\n  for (const name in channels) {\n    const channel = channels[name];\n    if (channel.scale === scale) return channel;\n  }\n}\n\n// Facet channels are not affected by transforms; so, to compute the domain of a\n// facet scale, we must first re-index the facet channel according to the\n// transformed mark index. Note: mutates channel, but that should be safe here?\nfunction reindexFacetChannel(facets, channel) {\n  const originalFacets = facets.original;\n  if (originalFacets === facets) return channel; // not transformed\n  const V1 = channel.value;\n  const V2 = (channel.value = []); // mutates channel!\n  for (let i = 0; i < originalFacets.length; ++i) {\n    const vi = V1[originalFacets[i][0]];\n    for (const j of facets[i]) V2[j] = vi;\n  }\n  return channel;\n}\n\nfunction difference(channels, k1, k2) {\n  const X1 = values(channels, k1);\n  const X2 = values(channels, k2);\n  return map(X2, (x2, i) => Math.abs(x2 - X1[i]), Float64Array);\n}\n\nfunction values(channels, name, alias) {\n  let channel = channels[name];\n  if (!channel && alias !== undefined) channel = channels[alias];\n  if (channel) return channel.value;\n  throw new Error(`missing channel: ${name}`);\n}\n\nfunction maybeOrder(order) {\n  if (order == null || typeof order === \"function\") return order;\n  switch (`${order}`.toLowerCase()) {\n    case \"ascending\":\n      return ascendingGroup;\n    case \"descending\":\n      return descendingGroup;\n  }\n  throw new Error(`invalid order: ${order}`);\n}\n\nfunction ascendingGroup([ak, av], [bk, bv]) {\n  return ascendingDefined(av, bv) || ascendingDefined(ak, bk);\n}\n\nfunction descendingGroup([ak, av], [bk, bv]) {\n  return descendingDefined(av, bv) || ascendingDefined(ak, bk);\n}\n\nexport function getSource(channels, key) {\n  let channel = channels[key];\n  if (!channel) return;\n  while (channel.source) channel = channel.source;\n  return channel.source === null ? null : channel;\n}\n", "import {creator, select} from \"d3\";\n\nexport function createContext(options = {}) {\n  const {document = typeof window !== \"undefined\" ? window.document : undefined} = options;\n  return {document};\n}\n\nexport function create(name, {document}) {\n  return select(creator(name).call(document.documentElement));\n}\n", "let warnings = 0;\n\nexport function consumeWarnings() {\n  const w = warnings;\n  warnings = 0;\n  return w;\n}\n\nexport function warn(message) {\n  console.warn(message);\n  ++warnings;\n}\n", "import {\n  geoAlbers,\n  geoAlbersUsa,\n  geoAzimuthalEqualArea,\n  geoAzimuthalEquidistant,\n  geoClipRectangle,\n  geoConicConformal,\n  geoConicEqualArea,\n  geoConicEquidistant,\n  geoEqualEarth,\n  geoEquirectangular,\n  geoGnomonic,\n  geoMercator,\n  geoOrthographic,\n  geoPath,\n  geoStereographic,\n  geoStream,\n  geoTransform,\n  geoTransverseMercator\n} from \"d3\";\nimport {valueObject} from \"./channel.js\";\nimport {coerceNumbers, constant, isObject} from \"./options.js\";\nimport {warn} from \"./warnings.js\";\n\nconst pi = Math.PI;\nconst tau = 2 * pi;\nconst defaultAspectRatio = 0.618;\n\nexport function createProjection(\n  {\n    projection,\n    inset: globalInset = 0,\n    insetTop = globalInset,\n    insetRight = globalInset,\n    insetBottom = globalInset,\n    insetLeft = globalInset\n  } = {},\n  dimensions\n) {\n  if (projection == null) return;\n  if (typeof projection.stream === \"function\") return projection; // d3 projection\n  let options;\n  let domain;\n  let clip = \"frame\";\n\n  // If the projection was specified as an object with additional options,\n  // extract those. The order of precedence for insetTop (and other insets) is:\n  // projection.insetTop, projection.inset, (global) insetTop, (global) inset.\n  // Any other options on this object will be passed through to the initializer.\n  if (isObject(projection)) {\n    let inset;\n    ({\n      type: projection,\n      domain,\n      inset,\n      insetTop = inset !== undefined ? inset : insetTop,\n      insetRight = inset !== undefined ? inset : insetRight,\n      insetBottom = inset !== undefined ? inset : insetBottom,\n      insetLeft = inset !== undefined ? inset : insetLeft,\n      clip = clip,\n      ...options\n    } = projection);\n    if (projection == null) return;\n  }\n\n  // For named projections, retrieve the corresponding projection initializer.\n  if (typeof projection !== \"function\") ({type: projection} = namedProjection(projection));\n\n  // Compute the frame dimensions and invoke the projection initializer.\n  const {width, height, marginLeft, marginRight, marginTop, marginBottom} = dimensions;\n  const dx = width - marginLeft - marginRight - insetLeft - insetRight;\n  const dy = height - marginTop - marginBottom - insetTop - insetBottom;\n  projection = projection?.({width: dx, height: dy, clip, ...options});\n\n  // The projection initializer might decide to not use a projection.\n  if (projection == null) return;\n  clip = maybePostClip(clip, marginLeft, marginTop, width - marginRight, height - marginBottom);\n\n  // Translate the origin to the top-left corner, respecting margins and insets.\n  let tx = marginLeft + insetLeft;\n  let ty = marginTop + insetTop;\n  let transform;\n\n  // If a domain is specified, fit the projection to the frame.\n  if (domain != null) {\n    const [[x0, y0], [x1, y1]] = geoPath(projection).bounds(domain);\n    const k = Math.min(dx / (x1 - x0), dy / (y1 - y0));\n    if (k > 0) {\n      tx -= (k * (x0 + x1) - dx) / 2;\n      ty -= (k * (y0 + y1) - dy) / 2;\n      transform = geoTransform({\n        point(x, y) {\n          this.stream.point(x * k + tx, y * k + ty);\n        }\n      });\n    } else {\n      warn(`Warning: the projection could not be fit to the specified domain; using the default scale.`);\n    }\n  }\n\n  transform ??=\n    tx === 0 && ty === 0\n      ? identity()\n      : geoTransform({\n          point(x, y) {\n            this.stream.point(x + tx, y + ty);\n          }\n        });\n\n  return {stream: (s) => projection.stream(transform.stream(clip(s)))};\n}\n\nfunction namedProjection(projection) {\n  switch (`${projection}`.toLowerCase()) {\n    case \"albers-usa\":\n      return scaleProjection(geoAlbersUsa, 0.7463, 0.4673);\n    case \"albers\":\n      return conicProjection(geoAlbers, 0.7463, 0.4673);\n    case \"azimuthal-equal-area\":\n      return scaleProjection(geoAzimuthalEqualArea, 4, 4);\n    case \"azimuthal-equidistant\":\n      return scaleProjection(geoAzimuthalEquidistant, tau, tau);\n    case \"conic-conformal\":\n      return conicProjection(geoConicConformal, tau, tau);\n    case \"conic-equal-area\":\n      return conicProjection(geoConicEqualArea, 6.1702, 2.9781);\n    case \"conic-equidistant\":\n      return conicProjection(geoConicEquidistant, 7.312, 3.6282);\n    case \"equal-earth\":\n      return scaleProjection(geoEqualEarth, 5.4133, 2.6347);\n    case \"equirectangular\":\n      return scaleProjection(geoEquirectangular, tau, pi);\n    case \"gnomonic\":\n      return scaleProjection(geoGnomonic, 3.4641, 3.4641);\n    case \"identity\":\n      return {type: identity};\n    case \"reflect-y\":\n      return {type: reflectY};\n    case \"mercator\":\n      return scaleProjection(geoMercator, tau, tau);\n    case \"orthographic\":\n      return scaleProjection(geoOrthographic, 2, 2);\n    case \"stereographic\":\n      return scaleProjection(geoStereographic, 2, 2);\n    case \"transverse-mercator\":\n      return scaleProjection(geoTransverseMercator, tau, tau);\n    default:\n      throw new Error(`unknown projection type: ${projection}`);\n  }\n}\n\nfunction maybePostClip(clip, x1, y1, x2, y2) {\n  if (clip === false || clip == null || typeof clip === \"number\") return (s) => s;\n  if (clip === true) clip = \"frame\";\n  switch (`${clip}`.toLowerCase()) {\n    case \"frame\":\n      return geoClipRectangle(x1, y1, x2, y2);\n    default:\n      throw new Error(`unknown projection clip type: ${clip}`);\n  }\n}\n\nfunction scaleProjection(createProjection, kx, ky) {\n  return {\n    type: ({width, height, rotate, precision = 0.15, clip}) => {\n      const projection = createProjection();\n      if (precision != null) projection.precision?.(precision);\n      if (rotate != null) projection.rotate?.(rotate);\n      if (typeof clip === \"number\") projection.clipAngle?.(clip);\n      projection.scale(Math.min(width / kx, height / ky));\n      projection.translate([width / 2, height / 2]);\n      return projection;\n    },\n    aspectRatio: ky / kx\n  };\n}\n\nfunction conicProjection(createProjection, kx, ky) {\n  const {type, aspectRatio} = scaleProjection(createProjection, kx, ky);\n  return {\n    type: (options) => {\n      const {parallels, domain, width, height} = options;\n      const projection = type(options);\n      if (parallels != null) {\n        projection.parallels(parallels);\n        if (domain === undefined) {\n          projection.fitSize([width, height], {type: \"Sphere\"});\n        }\n      }\n      return projection;\n    },\n    aspectRatio\n  };\n}\n\nconst identity = constant({stream: (stream) => stream});\n\nconst reflectY = constant(\n  geoTransform({\n    point(x, y) {\n      this.stream.point(x, -y);\n    }\n  })\n);\n\n// Applies a point-wise projection to the given paired x and y channels.\n// Note: mutates values!\nexport function project(cx, cy, values, projection) {\n  const x = values[cx];\n  const y = values[cy];\n  const n = x.length;\n  const X = (values[cx] = new Float64Array(n).fill(NaN));\n  const Y = (values[cy] = new Float64Array(n).fill(NaN));\n  let i;\n  const stream = projection.stream({\n    point(x, y) {\n      X[i] = x;\n      Y[i] = y;\n    }\n  });\n  for (i = 0; i < n; ++i) {\n    stream.point(x[i], y[i]);\n  }\n}\n\n// Returns true if a projection was specified. This should match the logic of\n// createProjection above, and is called before we construct the projection.\n// (Though note that we ignore the edge case where the projection initializer\n// may return null.)\nexport function hasProjection({projection} = {}) {\n  if (projection == null) return false;\n  if (typeof projection.stream === \"function\") return true;\n  if (isObject(projection)) projection = projection.type;\n  return projection != null;\n}\n\n// When a named projection is specified, we can use its natural aspect ratio to\n// determine a good value for the projection\u2019s height based on the desired\n// width. When we don\u2019t have a way to know, the golden ratio is our best guess.\n// Due to a circular dependency (we need to know the height before we can\n// construct the projection), we have to test the raw projection option rather\n// than the materialized projection; therefore we must be extremely careful that\n// the logic of this function exactly matches createProjection above!\nexport function projectionAspectRatio(projection) {\n  if (typeof projection?.stream === \"function\") return defaultAspectRatio;\n  if (isObject(projection)) projection = projection.type;\n  if (projection == null) return;\n  if (typeof projection !== \"function\") {\n    const {aspectRatio} = namedProjection(projection);\n    if (aspectRatio) return aspectRatio;\n  }\n  return defaultAspectRatio;\n}\n\n// Extract the (possibly) scaled values for the x and y channels, and apply the\n// projection if any.\nexport function applyPosition(channels, scales, {projection}) {\n  const {x, y} = channels;\n  let position = {};\n  if (x) position.x = x;\n  if (y) position.y = y;\n  position = valueObject(position, scales);\n  if (projection && x?.scale === \"x\" && y?.scale === \"y\") project(\"x\", \"y\", position, projection);\n  if (x) position.x = coerceNumbers(position.x);\n  if (y) position.y = coerceNumbers(position.y);\n  return position;\n}\n\nexport function getGeometryChannels(channel) {\n  const X = [];\n  const Y = [];\n  const x = {scale: \"x\", value: X};\n  const y = {scale: \"y\", value: Y};\n  const sink = {\n    point(x, y) {\n      X.push(x);\n      Y.push(y);\n    },\n    lineStart() {},\n    lineEnd() {},\n    polygonStart() {},\n    polygonEnd() {},\n    sphere() {}\n  };\n  for (const object of channel.value) geoStream(object, sink);\n  return [x, y];\n}\n", "import {\n  interpolateBlues,\n  interpolateBrBG,\n  interpolateBuGn,\n  interpolateBuPu,\n  interpolateGnBu,\n  interpolateGreens,\n  interpolateGreys,\n  interpolateOranges,\n  interpolateOrRd,\n  interpolatePiYG,\n  interpolatePRGn,\n  interpolatePuBu,\n  interpolatePuBuGn,\n  interpolatePuOr,\n  interpolatePuRd,\n  interpolatePurples,\n  interpolateRdBu,\n  interpolateRdGy,\n  interpolateRdPu,\n  interpolateRdYlBu,\n  interpolateRdYlGn,\n  interpolateReds,\n  interpolateSpectral,\n  interpolateYlGn,\n  interpolateYlGnBu,\n  interpolateYlOrBr,\n  interpolateYlOrRd,\n  interpolateTurbo,\n  interpolateViridis,\n  interpolateMagma,\n  interpolateInferno,\n  interpolatePlasma,\n  interpolateCividis,\n  interpolateCubehelixDefault,\n  interpolateWarm,\n  interpolateCool,\n  interpolateRainbow,\n  interpolateSinebow,\n  quantize,\n  schemeAccent,\n  schemeBlues,\n  schemeBrBG,\n  schemeBuGn,\n  schemeBuPu,\n  schemeCategory10,\n  schemeDark2,\n  schemeGnBu,\n  schemeGreens,\n  schemeGreys,\n  schemeOranges,\n  schemeOrRd,\n  schemePaired,\n  schemePastel1,\n  schemePastel2,\n  schemePiYG,\n  schemePRGn,\n  schemePuBu,\n  schemePuBuGn,\n  schemePuOr,\n  schemePuRd,\n  schemePurples,\n  schemeRdBu,\n  schemeRdGy,\n  schemeRdPu,\n  schemeRdYlBu,\n  schemeRdYlGn,\n  schemeReds,\n  schemeSet1,\n  schemeSet2,\n  schemeSet3,\n  schemeSpectral,\n  schemeTableau10,\n  schemeYlGn,\n  schemeYlGnBu,\n  schemeYlOrBr,\n  schemeYlOrRd\n} from \"d3\";\n\nconst categoricalSchemes = new Map([\n  [\"accent\", schemeAccent],\n  [\"category10\", schemeCategory10],\n  [\"dark2\", schemeDark2],\n  [\"paired\", schemePaired],\n  [\"pastel1\", schemePastel1],\n  [\"pastel2\", schemePastel2],\n  [\"set1\", schemeSet1],\n  [\"set2\", schemeSet2],\n  [\"set3\", schemeSet3],\n  [\"tableau10\", schemeTableau10]\n]);\n\nexport function isCategoricalScheme(scheme) {\n  return scheme != null && categoricalSchemes.has(`${scheme}`.toLowerCase());\n}\n\nconst ordinalSchemes = new Map([\n  ...categoricalSchemes,\n\n  // diverging\n  [\"brbg\", scheme11(schemeBrBG, interpolateBrBG)],\n  [\"prgn\", scheme11(schemePRGn, interpolatePRGn)],\n  [\"piyg\", scheme11(schemePiYG, interpolatePiYG)],\n  [\"puor\", scheme11(schemePuOr, interpolatePuOr)],\n  [\"rdbu\", scheme11(schemeRdBu, interpolateRdBu)],\n  [\"rdgy\", scheme11(schemeRdGy, interpolateRdGy)],\n  [\"rdylbu\", scheme11(schemeRdYlBu, interpolateRdYlBu)],\n  [\"rdylgn\", scheme11(schemeRdYlGn, interpolateRdYlGn)],\n  [\"spectral\", scheme11(schemeSpectral, interpolateSpectral)],\n\n  // reversed diverging (for temperature data)\n  [\"burd\", scheme11r(schemeRdBu, interpolateRdBu)],\n  [\"buylrd\", scheme11r(schemeRdYlBu, interpolateRdYlBu)],\n\n  // sequential (single-hue)\n  [\"blues\", scheme9(schemeBlues, interpolateBlues)],\n  [\"greens\", scheme9(schemeGreens, interpolateGreens)],\n  [\"greys\", scheme9(schemeGreys, interpolateGreys)],\n  [\"oranges\", scheme9(schemeOranges, interpolateOranges)],\n  [\"purples\", scheme9(schemePurples, interpolatePurples)],\n  [\"reds\", scheme9(schemeReds, interpolateReds)],\n\n  // sequential (multi-hue)\n  [\"turbo\", schemei(interpolateTurbo)],\n  [\"viridis\", schemei(interpolateViridis)],\n  [\"magma\", schemei(interpolateMagma)],\n  [\"inferno\", schemei(interpolateInferno)],\n  [\"plasma\", schemei(interpolatePlasma)],\n  [\"cividis\", schemei(interpolateCividis)],\n  [\"cubehelix\", schemei(interpolateCubehelixDefault)],\n  [\"warm\", schemei(interpolateWarm)],\n  [\"cool\", schemei(interpolateCool)],\n  [\"bugn\", scheme9(schemeBuGn, interpolateBuGn)],\n  [\"bupu\", scheme9(schemeBuPu, interpolateBuPu)],\n  [\"gnbu\", scheme9(schemeGnBu, interpolateGnBu)],\n  [\"orrd\", scheme9(schemeOrRd, interpolateOrRd)],\n  [\"pubu\", scheme9(schemePuBu, interpolatePuBu)],\n  [\"pubugn\", scheme9(schemePuBuGn, interpolatePuBuGn)],\n  [\"purd\", scheme9(schemePuRd, interpolatePuRd)],\n  [\"rdpu\", scheme9(schemeRdPu, interpolateRdPu)],\n  [\"ylgn\", scheme9(schemeYlGn, interpolateYlGn)],\n  [\"ylgnbu\", scheme9(schemeYlGnBu, interpolateYlGnBu)],\n  [\"ylorbr\", scheme9(schemeYlOrBr, interpolateYlOrBr)],\n  [\"ylorrd\", scheme9(schemeYlOrRd, interpolateYlOrRd)],\n\n  // cyclical\n  [\"rainbow\", schemeicyclical(interpolateRainbow)],\n  [\"sinebow\", schemeicyclical(interpolateSinebow)]\n]);\n\nfunction scheme9(scheme, interpolate) {\n  return ({length: n}) => {\n    if (n === 1) return [scheme[3][1]]; // favor midpoint\n    if (n === 2) return [scheme[3][1], scheme[3][2]]; // favor darker\n    n = Math.max(3, Math.floor(n));\n    return n > 9 ? quantize(interpolate, n) : scheme[n];\n  };\n}\n\nfunction scheme11(scheme, interpolate) {\n  return ({length: n}) => {\n    if (n === 2) return [scheme[3][0], scheme[3][2]]; // favor diverging extrema\n    n = Math.max(3, Math.floor(n));\n    return n > 11 ? quantize(interpolate, n) : scheme[n];\n  };\n}\n\nfunction scheme11r(scheme, interpolate) {\n  return ({length: n}) => {\n    if (n === 2) return [scheme[3][2], scheme[3][0]]; // favor diverging extrema\n    n = Math.max(3, Math.floor(n));\n    return n > 11 ? quantize((t) => interpolate(1 - t), n) : scheme[n].slice().reverse();\n  };\n}\n\nfunction schemei(interpolate) {\n  return ({length: n}) => quantize(interpolate, Math.max(2, Math.floor(n)));\n}\n\nfunction schemeicyclical(interpolate) {\n  return ({length: n}) => quantize(interpolate, Math.floor(n) + 1).slice(0, -1);\n}\n\nexport function ordinalScheme(scheme) {\n  const s = `${scheme}`.toLowerCase();\n  if (!ordinalSchemes.has(s)) throw new Error(`unknown ordinal scheme: ${s}`);\n  return ordinalSchemes.get(s);\n}\n\nexport function ordinalRange(scheme, length) {\n  const s = ordinalScheme(scheme);\n  const r = typeof s === \"function\" ? s({length}) : s;\n  return r.length !== length ? r.slice(0, length) : r;\n}\n\n// If the specified domain contains only booleans (ignoring null and undefined),\n// returns a corresponding range where false is mapped to the low color and true\n// is mapped to the high color of the specified scheme.\nexport function maybeBooleanRange(domain, scheme = \"greys\") {\n  const range = new Set();\n  const [f, t] = ordinalRange(scheme, 2);\n  for (const value of domain) {\n    if (value == null) continue;\n    if (value === true) range.add(t);\n    else if (value === false) range.add(f);\n    else return;\n  }\n  return [...range];\n}\n\nconst quantitativeSchemes = new Map([\n  // diverging\n  [\"brbg\", interpolateBrBG],\n  [\"prgn\", interpolatePRGn],\n  [\"piyg\", interpolatePiYG],\n  [\"puor\", interpolatePuOr],\n  [\"rdbu\", interpolateRdBu],\n  [\"rdgy\", interpolateRdGy],\n  [\"rdylbu\", interpolateRdYlBu],\n  [\"rdylgn\", interpolateRdYlGn],\n  [\"spectral\", interpolateSpectral],\n\n  // reversed diverging (for temperature data)\n  [\"burd\", (t) => interpolateRdBu(1 - t)],\n  [\"buylrd\", (t) => interpolateRdYlBu(1 - t)],\n\n  // sequential (single-hue)\n  [\"blues\", interpolateBlues],\n  [\"greens\", interpolateGreens],\n  [\"greys\", interpolateGreys],\n  [\"purples\", interpolatePurples],\n  [\"reds\", interpolateReds],\n  [\"oranges\", interpolateOranges],\n\n  // sequential (multi-hue)\n  [\"turbo\", interpolateTurbo],\n  [\"viridis\", interpolateViridis],\n  [\"magma\", interpolateMagma],\n  [\"inferno\", interpolateInferno],\n  [\"plasma\", interpolatePlasma],\n  [\"cividis\", interpolateCividis],\n  [\"cubehelix\", interpolateCubehelixDefault],\n  [\"warm\", interpolateWarm],\n  [\"cool\", interpolateCool],\n  [\"bugn\", interpolateBuGn],\n  [\"bupu\", interpolateBuPu],\n  [\"gnbu\", interpolateGnBu],\n  [\"orrd\", interpolateOrRd],\n  [\"pubugn\", interpolatePuBuGn],\n  [\"pubu\", interpolatePuBu],\n  [\"purd\", interpolatePuRd],\n  [\"rdpu\", interpolateRdPu],\n  [\"ylgnbu\", interpolateYlGnBu],\n  [\"ylgn\", interpolateYlGn],\n  [\"ylorbr\", interpolateYlOrBr],\n  [\"ylorrd\", interpolateYlOrRd],\n\n  // cyclical\n  [\"rainbow\", interpolateRainbow],\n  [\"sinebow\", interpolateSinebow]\n]);\n\nexport function quantitativeScheme(scheme) {\n  const s = `${scheme}`.toLowerCase();\n  if (!quantitativeSchemes.has(s)) throw new Error(`unknown quantitative scheme: ${s}`);\n  return quantitativeSchemes.get(s);\n}\n\nconst divergingSchemes = new Set([\n  \"brbg\",\n  \"prgn\",\n  \"piyg\",\n  \"puor\",\n  \"rdbu\",\n  \"rdgy\",\n  \"rdylbu\",\n  \"rdylgn\",\n  \"spectral\",\n  \"burd\",\n  \"buylrd\"\n]);\n\nexport function isDivergingScheme(scheme) {\n  return scheme != null && divergingSchemes.has(`${scheme}`.toLowerCase());\n}\n", "import {\n  descending,\n  extent,\n  interpolateHcl,\n  interpolateHsl,\n  interpolateLab,\n  interpolateNumber,\n  interpolateRgb,\n  interpolateRound,\n  max,\n  median,\n  min,\n  piecewise,\n  quantile,\n  quantize,\n  reverse as reverseof,\n  scaleIdentity,\n  scaleLinear,\n  scaleLog,\n  scalePow,\n  scaleQuantile,\n  scaleSymlog,\n  scaleThreshold,\n  ticks\n} from \"d3\";\nimport {finite, negative, positive} from \"../defined.js\";\nimport {arrayify, constant, maybeNiceInterval, maybeRangeInterval, orderof, slice} from \"../options.js\";\nimport {color, length, opacity, radius, registry} from \"./index.js\";\nimport {ordinalRange, quantitativeScheme} from \"./schemes.js\";\n\nexport const flip = (i) => (t) => i(1 - t);\nconst unit = [0, 1];\n\nconst interpolators = new Map([\n  // numbers\n  [\"number\", interpolateNumber],\n\n  // color spaces\n  [\"rgb\", interpolateRgb],\n  [\"hsl\", interpolateHsl],\n  [\"hcl\", interpolateHcl],\n  [\"lab\", interpolateLab]\n]);\n\nexport function maybeInterpolator(interpolate) {\n  const i = `${interpolate}`.toLowerCase();\n  if (!interpolators.has(i)) throw new Error(`unknown interpolator: ${i}`);\n  return interpolators.get(i);\n}\n\nexport function createScaleQ(\n  key,\n  scale,\n  channels,\n  {\n    type,\n    nice,\n    clamp,\n    zero,\n    domain = inferAutoDomain(key, channels),\n    unknown,\n    round,\n    scheme,\n    interval,\n    range = registry.get(key) === radius\n      ? inferRadialRange(channels, domain)\n      : registry.get(key) === length\n      ? inferLengthRange(channels, domain)\n      : registry.get(key) === opacity\n      ? unit\n      : undefined,\n    interpolate = registry.get(key) === color\n      ? scheme == null && range !== undefined\n        ? interpolateRgb\n        : quantitativeScheme(scheme !== undefined ? scheme : type === \"cyclical\" ? \"rainbow\" : \"turbo\")\n      : round\n      ? interpolateRound\n      : interpolateNumber,\n    reverse\n  }\n) {\n  interval = maybeRangeInterval(interval, type);\n  if (type === \"cyclical\" || type === \"sequential\") type = \"linear\"; // shorthand for color schemes\n  if (typeof interpolate !== \"function\") interpolate = maybeInterpolator(interpolate); // named interpolator\n  reverse = !!reverse;\n\n  // If an explicit range is specified, and it has a different length than the\n  // domain, then redistribute the range using a piecewise interpolator.\n  if (range !== undefined) {\n    const n = (domain = arrayify(domain)).length;\n    const m = (range = arrayify(range)).length;\n    if (n !== m) {\n      if (interpolate.length === 1) throw new Error(\"invalid piecewise interpolator\"); // e.g., turbo\n      interpolate = piecewise(interpolate, range);\n      range = undefined;\n    }\n  }\n\n  // Disambiguate between a two-argument interpolator that is used in\n  // conjunction with the range, and a one-argument \u201Cfixed\u201D interpolator on the\n  // [0, 1] interval as with the RdBu color scheme.\n  if (interpolate.length === 1) {\n    if (reverse) {\n      interpolate = flip(interpolate);\n      reverse = false;\n    }\n    if (range === undefined) {\n      range = Float64Array.from(domain, (_, i) => i / (domain.length - 1));\n      if (range.length === 2) range = unit; // optimize common case of [0, 1]\n    }\n    scale.interpolate((range === unit ? constant : interpolatePiecewise)(interpolate));\n  } else {\n    scale.interpolate(interpolate);\n  }\n\n  // If a zero option is specified, we assume that the domain is numeric, and we\n  // want to ensure that the domain crosses zero. However, note that the domain\n  // may be reversed (descending) so we shouldn\u2019t assume that the first value is\n  // smaller than the last; and also it\u2019s possible that the domain has more than\n  // two values for a \u201Cpoly\u201D scale. And lastly be careful not to mutate input!\n  if (zero) {\n    const [min, max] = extent(domain);\n    if (min > 0 || max < 0) {\n      domain = slice(domain);\n      if (orderof(domain) !== Math.sign(min)) domain[domain.length - 1] = 0; // [2, 1] or [-2, -1]\n      else domain[0] = 0; // [1, 2] or [-1, -2]\n    }\n  }\n\n  if (reverse) domain = reverseof(domain);\n  scale.domain(domain).unknown(unknown);\n  if (nice) scale.nice(maybeNice(nice, type)), (domain = scale.domain());\n  if (range !== undefined) scale.range(range);\n  if (clamp) scale.clamp(clamp);\n  return {type, domain, range, scale, interpolate, interval};\n}\n\nfunction maybeNice(nice, type) {\n  return nice === true ? undefined : typeof nice === \"number\" ? nice : maybeNiceInterval(nice, type);\n}\n\nexport function createScaleLinear(key, channels, options) {\n  return createScaleQ(key, scaleLinear(), channels, options);\n}\n\nexport function createScaleSqrt(key, channels, options) {\n  return createScalePow(key, channels, {...options, exponent: 0.5});\n}\n\nexport function createScalePow(key, channels, {exponent = 1, ...options}) {\n  return createScaleQ(key, scalePow().exponent(exponent), channels, {...options, type: \"pow\"});\n}\n\nexport function createScaleLog(key, channels, {base = 10, domain = inferLogDomain(channels), ...options}) {\n  return createScaleQ(key, scaleLog().base(base), channels, {...options, domain});\n}\n\nexport function createScaleSymlog(key, channels, {constant = 1, ...options}) {\n  return createScaleQ(key, scaleSymlog().constant(constant), channels, options);\n}\n\nexport function createScaleQuantile(\n  key,\n  channels,\n  {\n    range,\n    quantiles = range === undefined ? 5 : (range = [...range]).length, // deprecated; use n instead\n    n = quantiles,\n    scheme = \"rdylbu\",\n    domain = inferQuantileDomain(channels),\n    unknown,\n    interpolate,\n    reverse\n  }\n) {\n  if (range === undefined) {\n    range =\n      interpolate !== undefined\n        ? quantize(interpolate, n)\n        : registry.get(key) === color\n        ? ordinalRange(scheme, n)\n        : undefined;\n  }\n  if (domain.length > 0) {\n    domain = scaleQuantile(domain, range === undefined ? {length: n} : range).quantiles();\n  }\n  return createScaleThreshold(key, channels, {domain, range, reverse, unknown});\n}\n\nexport function createScaleQuantize(\n  key,\n  channels,\n  {\n    range,\n    n = range === undefined ? 5 : (range = [...range]).length,\n    scheme = \"rdylbu\",\n    domain = inferAutoDomain(key, channels),\n    unknown,\n    interpolate,\n    reverse\n  }\n) {\n  const [min, max] = extent(domain);\n  let thresholds;\n  if (range === undefined) {\n    thresholds = ticks(min, max, n); // approximate number of nice, round thresholds\n    if (thresholds[0] <= min) thresholds.splice(0, 1); // drop exact lower bound\n    if (thresholds[thresholds.length - 1] >= max) thresholds.pop(); // drop exact upper bound\n    n = thresholds.length + 1;\n    range =\n      interpolate !== undefined\n        ? quantize(interpolate, n)\n        : registry.get(key) === color\n        ? ordinalRange(scheme, n)\n        : undefined;\n  } else {\n    thresholds = quantize(interpolateNumber(min, max), n + 1).slice(1, -1); // exactly n - 1 thresholds to match range\n    if (min instanceof Date) thresholds = thresholds.map((x) => new Date(x)); // preserve date types\n  }\n  if (orderof(arrayify(domain)) < 0) thresholds.reverse(); // preserve descending domain\n  return createScaleThreshold(key, channels, {domain: thresholds, range, reverse, unknown});\n}\n\nexport function createScaleThreshold(\n  key,\n  channels,\n  {\n    domain = [0], // explicit thresholds in ascending order\n    unknown,\n    scheme = \"rdylbu\",\n    interpolate,\n    range = interpolate !== undefined\n      ? quantize(interpolate, domain.length + 1)\n      : registry.get(key) === color\n      ? ordinalRange(scheme, domain.length + 1)\n      : undefined,\n    reverse\n  }\n) {\n  domain = arrayify(domain);\n  const sign = orderof(domain); // preserve descending domain\n  if (!isNaN(sign) && !isOrdered(domain, sign)) throw new Error(`the ${key} scale has a non-monotonic domain`);\n  if (reverse) range = reverseof(range); // domain ascending, so reverse range\n  return {\n    type: \"threshold\",\n    scale: scaleThreshold(sign < 0 ? reverseof(domain) : domain, range === undefined ? [] : range).unknown(unknown),\n    domain,\n    range\n  };\n}\n\nfunction isOrdered(domain, sign) {\n  for (let i = 1, n = domain.length, d = domain[0]; i < n; ++i) {\n    const s = descending(d, (d = domain[i]));\n    if (s !== 0 && s !== sign) return false;\n  }\n  return true;\n}\n\nexport function createScaleIdentity() {\n  return {type: \"identity\", scale: scaleIdentity()};\n}\n\nexport function inferDomain(channels, f = finite) {\n  return channels.length\n    ? [\n        min(channels, ({value}) => (value === undefined ? value : min(value, f))),\n        max(channels, ({value}) => (value === undefined ? value : max(value, f)))\n      ]\n    : [0, 1];\n}\n\nfunction inferAutoDomain(key, channels) {\n  const type = registry.get(key);\n  return (type === radius || type === opacity || type === length ? inferZeroDomain : inferDomain)(channels);\n}\n\nfunction inferZeroDomain(channels) {\n  return [0, channels.length ? max(channels, ({value}) => (value === undefined ? value : max(value, finite))) : 1];\n}\n\n// We don\u2019t want the upper bound of the radial domain to be zero, as this would\n// be degenerate, so we ignore nonpositive values. We also don\u2019t want the\n// maximum default radius to exceed 30px.\nfunction inferRadialRange(channels, domain) {\n  const hint = channels.find(({radius}) => radius !== undefined);\n  if (hint !== undefined) return [0, hint.radius]; // a natural maximum radius, e.g. hexbins\n  const h25 = quantile(channels, 0.5, ({value}) => (value === undefined ? NaN : quantile(value, 0.25, positive)));\n  const range = domain.map((d) => 3 * Math.sqrt(d / h25));\n  const k = 30 / max(range);\n  return k < 1 ? range.map((r) => r * k) : range;\n}\n\n// We want a length scale\u2019s domain to go from zero to a positive value, and to\n// treat negative lengths if any as inverted vectors of equivalent magnitude. We\n// also don\u2019t want the maximum default length to exceed 60px.\nfunction inferLengthRange(channels, domain) {\n  const h50 = median(channels, ({value}) => (value === undefined ? NaN : median(value, Math.abs)));\n  const range = domain.map((d) => (12 * d) / h50);\n  const k = 60 / max(range);\n  return k < 1 ? range.map((r) => r * k) : range;\n}\n\nfunction inferLogDomain(channels) {\n  for (const {value} of channels) {\n    if (value !== undefined) {\n      for (let v of value) {\n        if (v > 0) return inferDomain(channels, positive);\n        if (v < 0) return inferDomain(channels, negative);\n      }\n    }\n  }\n  return [1, 10];\n}\n\nfunction inferQuantileDomain(channels) {\n  const domain = [];\n  for (const {value} of channels) {\n    if (value === undefined) continue;\n    for (const v of value) domain.push(v);\n  }\n  return domain;\n}\n\nexport function interpolatePiecewise(interpolate) {\n  return (i, j) => (t) => interpolate(i + t * (j - i));\n}\n", "import {\n  descending,\n  interpolateNumber,\n  interpolateRgb,\n  piecewise,\n  scaleDiverging,\n  scaleDivergingLog,\n  scaleDivergingPow,\n  scaleDivergingSymlog\n} from \"d3\";\nimport {negative, positive} from \"../defined.js\";\nimport {arrayify} from \"../options.js\";\nimport {warn} from \"../warnings.js\";\nimport {color, registry} from \"./index.js\";\nimport {flip, inferDomain, interpolatePiecewise, maybeInterpolator} from \"./quantitative.js\";\nimport {quantitativeScheme} from \"./schemes.js\";\n\nfunction createScaleD(\n  key,\n  scale,\n  transform,\n  channels,\n  {\n    type,\n    nice,\n    clamp,\n    domain = inferDomain(channels),\n    unknown,\n    pivot = 0,\n    scheme,\n    range,\n    symmetric = true,\n    interpolate = registry.get(key) === color\n      ? scheme == null && range !== undefined\n        ? interpolateRgb\n        : quantitativeScheme(scheme !== undefined ? scheme : \"rdbu\")\n      : interpolateNumber,\n    reverse\n  }\n) {\n  pivot = +pivot;\n  domain = arrayify(domain);\n  let [min, max] = domain;\n  if (domain.length > 2) warn(`Warning: the diverging ${key} scale domain contains extra elements.`);\n\n  if (descending(min, max) < 0) ([min, max] = [max, min]), (reverse = !reverse);\n  min = Math.min(min, pivot);\n  max = Math.max(max, pivot);\n\n  // Sometimes interpolate is a named interpolator, such as \"lab\" for Lab color\n  // space. Other times interpolate is a function that takes two arguments and\n  // is used in conjunction with the range. And other times the interpolate\n  // function is a \u201Cfixed\u201D interpolator on the [0, 1] interval, as when a\n  // color scheme such as interpolateRdBu is used.\n  if (typeof interpolate !== \"function\") {\n    interpolate = maybeInterpolator(interpolate);\n  }\n\n  // If an explicit range is specified, promote it to a piecewise interpolator.\n  if (range !== undefined) {\n    interpolate =\n      interpolate.length === 1 ? interpolatePiecewise(interpolate)(...range) : piecewise(interpolate, range);\n  }\n\n  // Reverse before normalization.\n  if (reverse) interpolate = flip(interpolate);\n\n  // Normalize the interpolator for symmetric difference around the pivot.\n  if (symmetric) {\n    const mid = transform.apply(pivot);\n    const mindelta = mid - transform.apply(min);\n    const maxdelta = transform.apply(max) - mid;\n    if (mindelta < maxdelta) min = transform.invert(mid - maxdelta);\n    else if (mindelta > maxdelta) max = transform.invert(mid + mindelta);\n  }\n\n  scale.domain([min, pivot, max]).unknown(unknown).interpolator(interpolate);\n  if (clamp) scale.clamp(clamp);\n  if (nice) scale.nice(nice);\n  return {type, domain: [min, max], pivot, interpolate, scale};\n}\n\nexport function createScaleDiverging(key, channels, options) {\n  return createScaleD(key, scaleDiverging(), transformIdentity, channels, options);\n}\n\nexport function createScaleDivergingSqrt(key, channels, options) {\n  return createScaleDivergingPow(key, channels, {...options, exponent: 0.5});\n}\n\nexport function createScaleDivergingPow(key, channels, {exponent = 1, ...options}) {\n  return createScaleD(key, scaleDivergingPow().exponent((exponent = +exponent)), transformPow(exponent), channels, {\n    ...options,\n    type: \"diverging-pow\"\n  });\n}\n\nexport function createScaleDivergingLog(\n  key,\n  channels,\n  {base = 10, pivot = 1, domain = inferDomain(channels, pivot < 0 ? negative : positive), ...options}\n) {\n  return createScaleD(key, scaleDivergingLog().base((base = +base)), transformLog, channels, {\n    domain,\n    pivot,\n    ...options\n  });\n}\n\nexport function createScaleDivergingSymlog(key, channels, {constant = 1, ...options}) {\n  return createScaleD(\n    key,\n    scaleDivergingSymlog().constant((constant = +constant)),\n    transformSymlog(constant),\n    channels,\n    options\n  );\n}\n\nconst transformIdentity = {\n  apply(x) {\n    return x;\n  },\n  invert(x) {\n    return x;\n  }\n};\n\nconst transformLog = {\n  apply: Math.log,\n  invert: Math.exp\n};\n\nconst transformSqrt = {\n  apply(x) {\n    return Math.sign(x) * Math.sqrt(Math.abs(x));\n  },\n  invert(x) {\n    return Math.sign(x) * (x * x);\n  }\n};\n\nfunction transformPow(exponent) {\n  return exponent === 0.5\n    ? transformSqrt\n    : {\n        apply(x) {\n          return Math.sign(x) * Math.pow(Math.abs(x), exponent);\n        },\n        invert(x) {\n          return Math.sign(x) * Math.pow(Math.abs(x), 1 / exponent);\n        }\n      };\n}\n\nfunction transformSymlog(constant) {\n  return {\n    apply(x) {\n      return Math.sign(x) * Math.log1p(Math.abs(x / constant));\n    },\n    invert(x) {\n      return Math.sign(x) * Math.expm1(Math.abs(x)) * constant;\n    }\n  };\n}\n", "import {scaleTime, scaleUtc} from \"d3\";\nimport {createScaleQ} from \"./quantitative.js\";\n\nfunction createScaleT(key, scale, channels, options) {\n  return createScaleQ(key, scale, channels, options);\n}\n\nexport function createScaleTime(key, channels, options) {\n  return createScaleT(key, scaleTime(), channels, options);\n}\n\nexport function createScaleUtc(key, channels, options) {\n  return createScaleT(key, scaleUtc(), channels, options);\n}\n", "import {InternSet, extent, quantize, reverse as reverseof, sort, symbolsFill, symbolsStroke} from \"d3\";\nimport {scaleBand, scaleOrdinal, scalePoint, scaleImplicit} from \"d3\";\nimport {ascendingDefined} from \"../defined.js\";\nimport {isNoneish, map, maybeRangeInterval} from \"../options.js\";\nimport {maybeSymbol} from \"../symbol.js\";\nimport {registry, color, position, symbol} from \"./index.js\";\nimport {maybeBooleanRange, ordinalScheme, quantitativeScheme} from \"./schemes.js\";\n\n// This denotes an implicitly ordinal color scale: the scale type was not set,\n// but the associated values are strings or booleans. If the associated defined\n// values are entirely boolean, the range will default to greys. You can opt out\n// of this by setting the type explicitly.\nexport const ordinalImplicit = Symbol(\"ordinal\");\n\nfunction createScaleO(key, scale, channels, {type, interval, domain, range, reverse, hint}) {\n  interval = maybeRangeInterval(interval, type);\n  if (domain === undefined) domain = inferDomain(channels, interval, key);\n  if (type === \"categorical\" || type === ordinalImplicit) type = \"ordinal\"; // shorthand for color schemes\n  if (reverse) domain = reverseof(domain);\n  scale.domain(domain);\n  if (range !== undefined) {\n    // If the range is specified as a function, pass it the domain.\n    if (typeof range === \"function\") range = range(domain);\n    scale.range(range);\n  }\n  return {type, domain, range, scale, hint, interval};\n}\n\nexport function createScaleOrdinal(key, channels, {type, interval, domain, range, scheme, unknown, ...options}) {\n  interval = maybeRangeInterval(interval, type);\n  if (domain === undefined) domain = inferDomain(channels, interval, key);\n  let hint;\n  if (registry.get(key) === symbol) {\n    hint = inferSymbolHint(channels);\n    range = range === undefined ? inferSymbolRange(hint) : map(range, maybeSymbol);\n  } else if (registry.get(key) === color) {\n    if (range === undefined && (type === \"ordinal\" || type === ordinalImplicit)) {\n      range = maybeBooleanRange(domain, scheme);\n      if (range !== undefined) scheme = undefined; // Don\u2019t re-apply scheme.\n    }\n    if (scheme === undefined && range === undefined) {\n      scheme = type === \"ordinal\" ? \"turbo\" : \"tableau10\";\n    }\n    if (scheme !== undefined) {\n      if (range !== undefined) {\n        const interpolate = quantitativeScheme(scheme);\n        const t0 = range[0],\n          d = range[1] - range[0];\n        range = ({length: n}) => quantize((t) => interpolate(t0 + d * t), n);\n      } else {\n        range = ordinalScheme(scheme);\n      }\n    }\n  }\n  if (unknown === scaleImplicit) {\n    throw new Error(`implicit unknown on ${key} scale is not supported`);\n  }\n  return createScaleO(key, scaleOrdinal().unknown(unknown), channels, {...options, type, domain, range, hint});\n}\n\nexport function createScalePoint(key, channels, {align = 0.5, padding = 0.5, ...options}) {\n  return maybeRound(scalePoint().align(align).padding(padding), channels, options, key);\n}\n\nexport function createScaleBand(\n  key,\n  channels,\n  {\n    align = 0.5,\n    padding = 0.1,\n    paddingInner = padding,\n    paddingOuter = key === \"fx\" || key === \"fy\" ? 0 : padding,\n    ...options\n  }\n) {\n  return maybeRound(\n    scaleBand().align(align).paddingInner(paddingInner).paddingOuter(paddingOuter),\n    channels,\n    options,\n    key\n  );\n}\n\nfunction maybeRound(scale, channels, options, key) {\n  let {round} = options;\n  if (round !== undefined) scale.round((round = !!round));\n  scale = createScaleO(key, scale, channels, options);\n  scale.round = round; // preserve for autoScaleRound\n  return scale;\n}\n\nfunction inferDomain(channels, interval, key) {\n  const values = new InternSet();\n  for (const {value, domain} of channels) {\n    if (domain !== undefined) return domain(); // see channelDomain\n    if (value === undefined) continue;\n    for (const v of value) values.add(v);\n  }\n  if (interval !== undefined) {\n    const [min, max] = extent(values).map(interval.floor, interval);\n    return interval.range(min, interval.offset(max));\n  }\n  if (values.size > 10e3 && registry.get(key) === position) {\n    throw new Error(`implicit ordinal domain of ${key} scale has more than 10,000 values`);\n  }\n  return sort(values, ascendingDefined);\n}\n\n// If all channels provide a consistent hint, propagate it to the scale.\nfunction inferHint(channels, key) {\n  let value;\n  for (const {hint} of channels) {\n    const candidate = hint?.[key];\n    if (candidate === undefined) continue; // no hint here\n    if (value === undefined) value = candidate;\n    // first hint\n    else if (value !== candidate) return; // inconsistent hint\n  }\n  return value;\n}\n\nfunction inferSymbolHint(channels) {\n  return {\n    fill: inferHint(channels, \"fill\"),\n    stroke: inferHint(channels, \"stroke\")\n  };\n}\n\nfunction inferSymbolRange(hint) {\n  return isNoneish(hint.fill) ? symbolsStroke : symbolsFill;\n}\n", "import {\n  isOrdinal,\n  isTemporal,\n  isTemporalString,\n  isNumericString,\n  isScaleOptions,\n  map,\n  slice,\n  coerceNumbers,\n  coerceDates\n} from \"./options.js\";\nimport {registry, color, position, radius, opacity, symbol, length} from \"./scales/index.js\";\nimport {\n  createScaleLinear,\n  createScaleSqrt,\n  createScalePow,\n  createScaleLog,\n  createScaleSymlog,\n  createScaleQuantile,\n  createScaleQuantize,\n  createScaleThreshold,\n  createScaleIdentity\n} from \"./scales/quantitative.js\";\nimport {\n  createScaleDiverging,\n  createScaleDivergingSqrt,\n  createScaleDivergingPow,\n  createScaleDivergingLog,\n  createScaleDivergingSymlog\n} from \"./scales/diverging.js\";\nimport {isCategoricalScheme, isDivergingScheme} from \"./scales/schemes.js\";\nimport {createScaleTime, createScaleUtc} from \"./scales/temporal.js\";\nimport {createScaleOrdinal, createScalePoint, createScaleBand, ordinalImplicit} from \"./scales/ordinal.js\";\nimport {maybeSymbol} from \"./symbol.js\";\nimport {warn} from \"./warnings.js\";\n\nexport function createScales(\n  channelsByScale,\n  {\n    label: globalLabel,\n    inset: globalInset = 0,\n    insetTop: globalInsetTop = globalInset,\n    insetRight: globalInsetRight = globalInset,\n    insetBottom: globalInsetBottom = globalInset,\n    insetLeft: globalInsetLeft = globalInset,\n    round,\n    nice,\n    clamp,\n    zero,\n    align,\n    padding,\n    projection,\n    facet: {label: facetLabel = globalLabel} = {},\n    ...options\n  } = {}\n) {\n  const scales = {};\n  for (const [key, channels] of channelsByScale) {\n    const scaleOptions = options[key];\n    const scale = createScale(key, channels, {\n      round: registry.get(key) === position ? round : undefined, // only for position\n      nice,\n      clamp,\n      zero,\n      align,\n      padding,\n      projection,\n      ...scaleOptions\n    });\n    if (scale) {\n      // populate generic scale options (percent, transform, insets)\n      let {\n        label = key === \"fx\" || key === \"fy\" ? facetLabel : globalLabel,\n        percent,\n        transform,\n        inset,\n        insetTop = inset !== undefined ? inset : key === \"y\" ? globalInsetTop : 0, // not fy\n        insetRight = inset !== undefined ? inset : key === \"x\" ? globalInsetRight : 0, // not fx\n        insetBottom = inset !== undefined ? inset : key === \"y\" ? globalInsetBottom : 0, // not fy\n        insetLeft = inset !== undefined ? inset : key === \"x\" ? globalInsetLeft : 0 // not fx\n      } = scaleOptions || {};\n      if (transform == null) transform = undefined;\n      else if (typeof transform !== \"function\") throw new Error(\"invalid scale transform; not a function\");\n      scale.percent = !!percent;\n      scale.label = label === undefined ? inferScaleLabel(channels, scale) : label;\n      scale.transform = transform;\n      if (key === \"x\" || key === \"fx\") {\n        scale.insetLeft = +insetLeft;\n        scale.insetRight = +insetRight;\n      } else if (key === \"y\" || key === \"fy\") {\n        scale.insetTop = +insetTop;\n        scale.insetBottom = +insetBottom;\n      }\n      scales[key] = scale;\n    }\n  }\n  return scales;\n}\n\nexport function createScaleFunctions(scales) {\n  return Object.fromEntries(\n    Object.entries(scales)\n      .filter(([, {scale}]) => scale) // drop identity scales\n      .map(([name, {scale, type, interval, label}]) => {\n        scale.type = type; // for axis\n        if (interval != null) scale.interval = interval; // for axis\n        if (label != null) scale.label = label; // for axis\n        return [name, scale];\n      })\n  );\n}\n\n// Mutates scale.range!\nexport function autoScaleRange(scales, dimensions) {\n  const {x, y, fx, fy} = scales;\n  const superdimensions = fx || fy ? outerDimensions(dimensions) : dimensions;\n  if (fx) autoScaleRangeX(fx, superdimensions);\n  if (fy) autoScaleRangeY(fy, superdimensions);\n  const subdimensions = fx || fy ? innerDimensions(scales, dimensions) : dimensions;\n  if (x) autoScaleRangeX(x, subdimensions);\n  if (y) autoScaleRangeY(y, subdimensions);\n}\n\n// Channels can have labels; if all the channels for a given scale are\n// consistently labeled (i.e., have the same value if not undefined), and the\n// corresponding scale doesn\u2019t already have an explicit label, then the\n// channels\u2019 label is promoted to the scale. This inferred label should have an\n// orientation-appropriate arrow added when used as an axis, but we don\u2019t want\n// to add the arrow when the label is set explicitly as an option; so, the\n// inferred label is distinguished as an object with an \u201Cinferred\u201D property.\nfunction inferScaleLabel(channels = [], scale) {\n  let label;\n  for (const {label: l} of channels) {\n    if (l === undefined) continue;\n    if (label === undefined) label = l;\n    else if (label !== l) return;\n  }\n  if (label === undefined) return;\n  if (!isOrdinalScale(scale) && scale.percent) label = `${label} (%)`;\n  return {inferred: true, toString: () => label};\n}\n\n// Returns the dimensions of the outer frame; this is subdivided into facets\n// with the margins of each facet collapsing into the outer margins.\nexport function outerDimensions(dimensions) {\n  const {\n    marginTop,\n    marginRight,\n    marginBottom,\n    marginLeft,\n    width,\n    height,\n    facet: {\n      marginTop: facetMarginTop,\n      marginRight: facetMarginRight,\n      marginBottom: facetMarginBottom,\n      marginLeft: facetMarginLeft\n    }\n  } = dimensions;\n  return {\n    marginTop: Math.max(marginTop, facetMarginTop),\n    marginRight: Math.max(marginRight, facetMarginRight),\n    marginBottom: Math.max(marginBottom, facetMarginBottom),\n    marginLeft: Math.max(marginLeft, facetMarginLeft),\n    width,\n    height\n  };\n}\n\n// Returns the dimensions of each facet.\nexport function innerDimensions({fx, fy}, dimensions) {\n  const {marginTop, marginRight, marginBottom, marginLeft, width, height} = outerDimensions(dimensions);\n  return {\n    marginTop,\n    marginRight,\n    marginBottom,\n    marginLeft,\n    width: fx ? fx.scale.bandwidth() + marginLeft + marginRight : width,\n    height: fy ? fy.scale.bandwidth() + marginTop + marginBottom : height,\n    facet: {width, height}\n  };\n}\n\nfunction autoScaleRangeX(scale, dimensions) {\n  if (scale.range === undefined) {\n    const {insetLeft, insetRight} = scale;\n    const {width, marginLeft = 0, marginRight = 0} = dimensions;\n    const left = marginLeft + insetLeft;\n    const right = width - marginRight - insetRight;\n    scale.range = [left, Math.max(left, right)];\n    if (!isOrdinalScale(scale)) scale.range = piecewiseRange(scale);\n    scale.scale.range(scale.range);\n  }\n  autoScaleRound(scale);\n}\n\nfunction autoScaleRangeY(scale, dimensions) {\n  if (scale.range === undefined) {\n    const {insetTop, insetBottom} = scale;\n    const {height, marginTop = 0, marginBottom = 0} = dimensions;\n    const top = marginTop + insetTop;\n    const bottom = height - marginBottom - insetBottom;\n    scale.range = [Math.max(top, bottom), top];\n    if (!isOrdinalScale(scale)) scale.range = piecewiseRange(scale);\n    else scale.range.reverse();\n    scale.scale.range(scale.range);\n  }\n  autoScaleRound(scale);\n}\n\nfunction autoScaleRound(scale) {\n  if (scale.round === undefined && isBandScale(scale) && roundError(scale) <= 30) {\n    scale.scale.round(true);\n  }\n}\n\n// If we were to turn on rounding for this band or point scale, how much wasted\n// space would it introduce (on both ends of the range)? This must match\n// d3.scaleBand\u2019s rounding behavior:\n// https://github.com/d3/d3-scale/blob/83555bd759c7314420bd4240642beda5e258db9e/src/band.js#L20-L32\nfunction roundError({scale}) {\n  const n = scale.domain().length;\n  const [start, stop] = scale.range();\n  const paddingInner = scale.paddingInner ? scale.paddingInner() : 1;\n  const paddingOuter = scale.paddingOuter ? scale.paddingOuter() : scale.padding();\n  const m = n - paddingInner;\n  const step = Math.abs(stop - start) / Math.max(1, m + paddingOuter * 2);\n  return (step - Math.floor(step)) * m;\n}\n\nfunction piecewiseRange(scale) {\n  const length = scale.scale.domain().length + isThresholdScale(scale);\n  if (!(length > 2)) return scale.range;\n  const [start, end] = scale.range;\n  return Array.from({length}, (_, i) => start + (i / (length - 1)) * (end - start));\n}\n\nexport function normalizeScale(key, scale, hint) {\n  return createScale(key, hint === undefined ? undefined : [{hint}], {...scale});\n}\n\nfunction createScale(key, channels = [], options = {}) {\n  const type = inferScaleType(key, channels, options);\n\n  // Warn for common misuses of implicit ordinal scales. We disable this test if\n  // you specify a scale interval or if you set the domain or range explicitly,\n  // since setting the domain or range (typically with a cardinality of more than\n  // two) is another indication that you intended for the scale to be ordinal; we\n  // also disable it for facet scales since these are always band scales.\n  if (\n    options.type === undefined &&\n    options.domain === undefined &&\n    options.range === undefined &&\n    options.interval == null &&\n    key !== \"fx\" &&\n    key !== \"fy\" &&\n    isOrdinalScale({type})\n  ) {\n    const values = channels.map(({value}) => value).filter((value) => value !== undefined);\n    if (values.some(isTemporal))\n      warn(\n        `Warning: some data associated with the ${key} scale are dates. Dates are typically associated with a \"utc\" or \"time\" scale rather than a \"${formatScaleType(\n          type\n        )}\" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can specify the interval of the ${key} scale (e.g., d3.utcDay), or you can suppress this warning by setting the type of the ${key} scale to \"${formatScaleType(\n          type\n        )}\".`\n      );\n    else if (values.some(isTemporalString))\n      warn(\n        `Warning: some data associated with the ${key} scale are strings that appear to be dates (e.g., YYYY-MM-DD). If these strings represent dates, you should parse them to Date objects. Dates are typically associated with a \"utc\" or \"time\" scale rather than a \"${formatScaleType(\n          type\n        )}\" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can suppress this warning by setting the type of the ${key} scale to \"${formatScaleType(\n          type\n        )}\".`\n      );\n    else if (values.some(isNumericString))\n      warn(\n        `Warning: some data associated with the ${key} scale are strings that appear to be numbers. If these strings represent numbers, you should parse or coerce them to numbers. Numbers are typically associated with a \"linear\" scale rather than a \"${formatScaleType(\n          type\n        )}\" scale. If you want to treat this data as ordinal, you can specify the interval of the ${key} scale (e.g., 1 for integers), or you can suppress this warning by setting the type of the ${key} scale to \"${formatScaleType(\n          type\n        )}\".`\n      );\n  }\n\n  options.type = type; // Mutates input!\n\n  // Once the scale type is known, coerce the associated channel values and any\n  // explicitly-specified domain to the expected type.\n  switch (type) {\n    case \"diverging\":\n    case \"diverging-sqrt\":\n    case \"diverging-pow\":\n    case \"diverging-log\":\n    case \"diverging-symlog\":\n    case \"cyclical\":\n    case \"sequential\":\n    case \"linear\":\n    case \"sqrt\":\n    case \"threshold\":\n    case \"quantile\":\n    case \"pow\":\n    case \"log\":\n    case \"symlog\":\n      options = coerceType(channels, options, coerceNumbers);\n      break;\n    case \"identity\":\n      switch (registry.get(key)) {\n        case position:\n          options = coerceType(channels, options, coerceNumbers);\n          break;\n        case symbol:\n          options = coerceType(channels, options, coerceSymbols);\n          break;\n      }\n      break;\n    case \"utc\":\n    case \"time\":\n      options = coerceType(channels, options, coerceDates);\n      break;\n  }\n\n  switch (type) {\n    case \"diverging\":\n      return createScaleDiverging(key, channels, options);\n    case \"diverging-sqrt\":\n      return createScaleDivergingSqrt(key, channels, options);\n    case \"diverging-pow\":\n      return createScaleDivergingPow(key, channels, options);\n    case \"diverging-log\":\n      return createScaleDivergingLog(key, channels, options);\n    case \"diverging-symlog\":\n      return createScaleDivergingSymlog(key, channels, options);\n    case \"categorical\":\n    case \"ordinal\":\n    case ordinalImplicit:\n      return createScaleOrdinal(key, channels, options);\n    case \"cyclical\":\n    case \"sequential\":\n    case \"linear\":\n      return createScaleLinear(key, channels, options);\n    case \"sqrt\":\n      return createScaleSqrt(key, channels, options);\n    case \"threshold\":\n      return createScaleThreshold(key, channels, options);\n    case \"quantile\":\n      return createScaleQuantile(key, channels, options);\n    case \"quantize\":\n      return createScaleQuantize(key, channels, options);\n    case \"pow\":\n      return createScalePow(key, channels, options);\n    case \"log\":\n      return createScaleLog(key, channels, options);\n    case \"symlog\":\n      return createScaleSymlog(key, channels, options);\n    case \"utc\":\n      return createScaleUtc(key, channels, options);\n    case \"time\":\n      return createScaleTime(key, channels, options);\n    case \"point\":\n      return createScalePoint(key, channels, options);\n    case \"band\":\n      return createScaleBand(key, channels, options);\n    case \"identity\":\n      return registry.get(key) === position ? createScaleIdentity() : {type: \"identity\"};\n    case undefined:\n      return;\n    default:\n      throw new Error(`unknown scale type: ${type}`);\n  }\n}\n\nfunction formatScaleType(type) {\n  return typeof type === \"symbol\" ? type.description : type;\n}\n\n// A special type symbol when the x and y scales are replaced with a projection.\nconst typeProjection = {toString: () => \"projection\"};\n\nfunction inferScaleType(key, channels, {type, domain, range, scheme, pivot, projection}) {\n  // The facet scales are always band scales; this cannot be changed.\n  if (key === \"fx\" || key === \"fy\") return \"band\";\n\n  // If a projection is specified, the x- and y-scales are disabled; these\n  // channels will be projected rather than scaled. (But still check that none\n  // of the associated channels are incompatible with a projection.)\n  if ((key === \"x\" || key === \"y\") && projection != null) type = typeProjection;\n\n  // If a channel dictates a scale type, make sure that it is consistent with\n  // the user-specified scale type (if any) and all other channels. For example,\n  // barY requires x to be a band scale and disallows any other scale type.\n  for (const {type: t} of channels) {\n    if (t === undefined) continue;\n    else if (type === undefined) type = t;\n    else if (type !== t) throw new Error(`scale incompatible with channel: ${type} !== ${t}`);\n  }\n\n  // If the scale, a channel, or user specified a (consistent) type, return it.\n  if (type === typeProjection) return;\n  if (type !== undefined) return type;\n\n  // If there\u2019s no data (and no type) associated with this scale, don\u2019t create a scale.\n  if (domain === undefined && !channels.some(({value}) => value !== undefined)) return;\n\n  // Some scales have default types.\n  const kind = registry.get(key);\n  if (kind === radius) return \"sqrt\";\n  if (kind === opacity || kind === length) return \"linear\";\n  if (kind === symbol) return \"ordinal\";\n\n  // If the domain or range has more than two values, assume it\u2019s ordinal. You\n  // can still use a \u201Cpiecewise\u201D (or \u201Cpolylinear\u201D) scale, but you must set the\n  // type explicitly.\n  if ((domain || range || []).length > 2) return asOrdinalType(kind);\n\n  // Otherwise, infer the scale type from the data! Prefer the domain, if\n  // present, over channels. (The domain and channels should be consistently\n  // typed, and the domain is more explicit and typically much smaller.) We only\n  // check the first defined value for expedience and simplicity; we expect\n  // that the types are consistent.\n  if (domain !== undefined) {\n    if (isOrdinal(domain)) return asOrdinalType(kind);\n    if (isTemporal(domain)) return \"utc\";\n  } else {\n    const values = channels.map(({value}) => value).filter((value) => value !== undefined);\n    if (values.some(isOrdinal)) return asOrdinalType(kind);\n    if (values.some(isTemporal)) return \"utc\";\n  }\n\n  // For color scales, take a hint from the color scheme and pivot option.\n  if (kind === color) {\n    if (pivot != null || isDivergingScheme(scheme)) return \"diverging\";\n    if (isCategoricalScheme(scheme)) return \"categorical\";\n  }\n\n  return \"linear\";\n}\n\n// Positional scales default to a point scale instead of an ordinal scale.\nfunction asOrdinalType(kind) {\n  switch (kind) {\n    case position:\n      return \"point\";\n    case color:\n      return ordinalImplicit;\n    default:\n      return \"ordinal\";\n  }\n}\n\nexport function isTemporalScale({type}) {\n  return type === \"time\" || type === \"utc\";\n}\n\nexport function isOrdinalScale({type}) {\n  return type === \"ordinal\" || type === \"point\" || type === \"band\" || type === ordinalImplicit;\n}\n\nexport function isThresholdScale({type}) {\n  return type === \"threshold\";\n}\n\nfunction isBandScale({type}) {\n  return type === \"point\" || type === \"band\";\n}\n\nexport function isDivergingScale({type}) {\n  return /^diverging($|-)/.test(type);\n}\n\n// Certain marks have special behavior if a scale is collapsed, i.e. if the\n// domain is degenerate and represents only a single value such as [3, 3]; for\n// example, a rect will span the full extent of the chart along a collapsed\n// dimension (whereas a dot will simply be drawn in the center).\nexport function isCollapsed(scale) {\n  if (scale === undefined) return true; // treat missing scale as collapsed\n  const domain = scale.domain();\n  const value = scale(domain[0]);\n  for (let i = 1, n = domain.length; i < n; ++i) {\n    if (scale(domain[i]) - value) {\n      return false;\n    }\n  }\n  return true;\n}\n\n// Mutates channel.value!\nfunction coerceType(channels, {domain, ...options}, coerceValues) {\n  for (const c of channels) {\n    if (c.value !== undefined) {\n      c.value = coerceValues(c.value);\n    }\n  }\n  return {\n    domain: domain === undefined ? domain : coerceValues(domain),\n    ...options\n  };\n}\n\nfunction coerceSymbols(values) {\n  return map(values, maybeSymbol);\n}\n\nexport function scale(options = {}) {\n  let scale;\n  for (const key in options) {\n    if (!registry.has(key)) continue; // ignore unknown properties\n    if (!isScaleOptions(options[key])) continue; // e.g., ignore {color: \"red\"}\n    if (scale !== undefined) throw new Error(\"ambiguous scale definition; multiple scales found\");\n    scale = exposeScale(normalizeScale(key, options[key]));\n  }\n  if (scale === undefined) throw new Error(\"invalid scale definition; no scale found\");\n  return scale;\n}\n\nexport function exposeScales(scaleDescriptors) {\n  return (key) => {\n    if (!registry.has((key = `${key}`))) throw new Error(`unknown scale: ${key}`);\n    return key in scaleDescriptors ? exposeScale(scaleDescriptors[key]) : undefined;\n  };\n}\n\n// Note: axis- and legend-related properties (such as label, ticks and\n// tickFormat) are not included here as they do not affect the scale\u2019s behavior.\nfunction exposeScale({scale, type, domain, range, interpolate, interval, transform, percent, pivot}) {\n  if (type === \"identity\") return {type: \"identity\", apply: (d) => d, invert: (d) => d};\n  const unknown = scale.unknown ? scale.unknown() : undefined;\n  return {\n    type,\n    domain: slice(domain), // defensive copy\n    ...(range !== undefined && {range: slice(range)}), // defensive copy\n    ...(transform !== undefined && {transform}),\n    ...(percent && {percent}), // only exposed if truthy\n    ...(unknown !== undefined && {unknown}),\n    ...(interval !== undefined && {interval}),\n\n    // quantitative\n    ...(interpolate !== undefined && {interpolate}),\n    ...(scale.clamp && {clamp: scale.clamp()}),\n\n    // diverging (always asymmetric; we never want to apply the symmetric transform twice)\n    ...(pivot !== undefined && {pivot, symmetric: false}),\n\n    // log, diverging-log\n    ...(scale.base && {base: scale.base()}),\n\n    // pow, diverging-pow\n    ...(scale.exponent && {exponent: scale.exponent()}),\n\n    // symlog, diverging-symlog\n    ...(scale.constant && {constant: scale.constant()}),\n\n    // band, point\n    ...(scale.align && {align: scale.align(), round: scale.round()}),\n    ...(scale.padding &&\n      (scale.paddingInner\n        ? {paddingInner: scale.paddingInner(), paddingOuter: scale.paddingOuter()}\n        : {padding: scale.padding()})),\n    ...(scale.bandwidth && {bandwidth: scale.bandwidth(), step: scale.step()}),\n\n    // utilities\n    apply: (t) => scale(t),\n    ...(scale.invert && {invert: (t) => scale.invert(t)})\n  };\n}\n", "export function memoize1(compute) {\n  let cacheValue, cacheKeys;\n  return (...keys) => {\n    if (cacheKeys?.length !== keys.length || cacheKeys.some((k, i) => k !== keys[i])) {\n      cacheKeys = keys;\n      cacheValue = compute(...keys);\n    }\n    return cacheValue;\n  };\n}\n", "import {format as isoFormat} from \"isoformat\";\nimport {string} from \"./options.js\";\nimport {memoize1} from \"./memoize.js\";\n\nconst numberFormat = memoize1((locale) => {\n  return new Intl.NumberFormat(locale);\n});\n\nconst monthFormat = memoize1((locale, month) => {\n  return new Intl.DateTimeFormat(locale, {timeZone: \"UTC\", ...(month && {month})});\n});\n\nconst weekdayFormat = memoize1((locale, weekday) => {\n  return new Intl.DateTimeFormat(locale, {timeZone: \"UTC\", ...(weekday && {weekday})});\n});\n\nexport function formatNumber(locale = \"en-US\") {\n  const format = numberFormat(locale);\n  return (i) => (i != null && !isNaN(i) ? format.format(i) : undefined);\n}\n\nexport function formatMonth(locale = \"en-US\", format = \"short\") {\n  const fmt = monthFormat(locale, format);\n  return (i) => (i != null && !isNaN((i = +new Date(Date.UTC(2000, +i)))) ? fmt.format(i) : undefined);\n}\n\nexport function formatWeekday(locale = \"en-US\", format = \"short\") {\n  const fmt = weekdayFormat(locale, format);\n  return (i) => (i != null && !isNaN((i = +new Date(Date.UTC(2001, 0, +i)))) ? fmt.format(i) : undefined);\n}\n\nexport function formatIsoDate(date) {\n  return isoFormat(date, \"Invalid Date\");\n}\n\nexport function formatAuto(locale = \"en-US\") {\n  const number = formatNumber(locale);\n  return (v) => (v instanceof Date ? formatIsoDate : typeof v === \"number\" ? number : string)(v);\n}\n\n// TODO When Plot supports a top-level locale option, this should be removed\n// because it lacks context to know which locale to use; formatAuto should be\n// used instead whenever possible.\nexport const formatDefault = formatAuto();\n", "import {geoPath, group, namespaces} from \"d3\";\nimport {create} from \"./context.js\";\nimport {defined, nonempty} from \"./defined.js\";\nimport {formatDefault} from \"./format.js\";\nimport {\n  string,\n  number,\n  maybeColorChannel,\n  maybeNumberChannel,\n  maybeKeyword,\n  isNoneish,\n  isNone,\n  isRound,\n  keyof\n} from \"./options.js\";\nimport {warn} from \"./warnings.js\";\n\nexport const offset = (typeof window !== \"undefined\" ? window.devicePixelRatio > 1 : typeof it === \"undefined\") ? 0 : 0.5; // prettier-ignore\n\nlet nextClipId = 0;\n\nfunction getClipId() {\n  return `plot-clip-${++nextClipId}`;\n}\n\nexport function styles(\n  mark,\n  {\n    title,\n    href,\n    ariaLabel: variaLabel,\n    ariaDescription,\n    ariaHidden,\n    target,\n    fill,\n    fillOpacity,\n    stroke,\n    strokeWidth,\n    strokeOpacity,\n    strokeLinejoin,\n    strokeLinecap,\n    strokeMiterlimit,\n    strokeDasharray,\n    strokeDashoffset,\n    opacity,\n    mixBlendMode,\n    imageFilter,\n    paintOrder,\n    pointerEvents,\n    shapeRendering,\n    channels\n  },\n  {\n    ariaLabel: cariaLabel,\n    fill: defaultFill = \"currentColor\",\n    fillOpacity: defaultFillOpacity,\n    stroke: defaultStroke = \"none\",\n    strokeOpacity: defaultStrokeOpacity,\n    strokeWidth: defaultStrokeWidth,\n    strokeLinecap: defaultStrokeLinecap,\n    strokeLinejoin: defaultStrokeLinejoin,\n    strokeMiterlimit: defaultStrokeMiterlimit,\n    paintOrder: defaultPaintOrder\n  }\n) {\n  // Some marks don\u2019t support fill (e.g., tick and rule).\n  if (defaultFill === null) {\n    fill = null;\n    fillOpacity = null;\n  }\n\n  // Some marks don\u2019t support stroke (e.g., image).\n  if (defaultStroke === null) {\n    stroke = null;\n    strokeOpacity = null;\n  }\n\n  // Some marks default to fill with no stroke, while others default to stroke\n  // with no fill. For example, bar and area default to fill, while dot and line\n  // default to stroke. For marks that fill by default, the default fill only\n  // applies if the stroke is (constant) none; if you set a stroke, then the\n  // default fill becomes none. Similarly for marks that stroke by stroke, the\n  // default stroke only applies if the fill is (constant) none.\n  if (isNoneish(defaultFill)) {\n    if (!isNoneish(defaultStroke) && (!isNoneish(fill) || channels?.fill)) defaultStroke = \"none\";\n  } else {\n    if (isNoneish(defaultStroke) && (!isNoneish(stroke) || channels?.stroke)) defaultFill = \"none\";\n  }\n\n  const [vfill, cfill] = maybeColorChannel(fill, defaultFill);\n  const [vfillOpacity, cfillOpacity] = maybeNumberChannel(fillOpacity, defaultFillOpacity);\n  const [vstroke, cstroke] = maybeColorChannel(stroke, defaultStroke);\n  const [vstrokeOpacity, cstrokeOpacity] = maybeNumberChannel(strokeOpacity, defaultStrokeOpacity);\n  const [vopacity, copacity] = maybeNumberChannel(opacity);\n\n  // For styles that have no effect if there is no stroke, only apply the\n  // defaults if the stroke is not the constant none. (If stroke is a channel,\n  // then cstroke will be undefined, but there\u2019s still a stroke; hence we don\u2019t\n  // use isNoneish here.)\n  if (!isNone(cstroke)) {\n    if (strokeWidth === undefined) strokeWidth = defaultStrokeWidth;\n    if (strokeLinecap === undefined) strokeLinecap = defaultStrokeLinecap;\n    if (strokeLinejoin === undefined) strokeLinejoin = defaultStrokeLinejoin;\n\n    // The default stroke miterlimit need not be applied if the current stroke\n    // is the constant round; this only has effect on miter joins.\n    if (strokeMiterlimit === undefined && !isRound(strokeLinejoin)) strokeMiterlimit = defaultStrokeMiterlimit;\n\n    // The paint order only takes effect if there is both a fill and a stroke\n    // (at least if we ignore markers, which no built-in marks currently use).\n    if (!isNone(cfill) && paintOrder === undefined) paintOrder = defaultPaintOrder;\n  }\n\n  const [vstrokeWidth, cstrokeWidth] = maybeNumberChannel(strokeWidth);\n\n  // Some marks don\u2019t support fill (e.g., tick and rule).\n  if (defaultFill !== null) {\n    mark.fill = impliedString(cfill, \"currentColor\");\n    mark.fillOpacity = impliedNumber(cfillOpacity, 1);\n  }\n\n  // Some marks don\u2019t support stroke (e.g., image).\n  if (defaultStroke !== null) {\n    mark.stroke = impliedString(cstroke, \"none\");\n    mark.strokeWidth = impliedNumber(cstrokeWidth, 1);\n    mark.strokeOpacity = impliedNumber(cstrokeOpacity, 1);\n    mark.strokeLinejoin = impliedString(strokeLinejoin, \"miter\");\n    mark.strokeLinecap = impliedString(strokeLinecap, \"butt\");\n    mark.strokeMiterlimit = impliedNumber(strokeMiterlimit, 4);\n    mark.strokeDasharray = impliedString(strokeDasharray, \"none\");\n    mark.strokeDashoffset = impliedString(strokeDashoffset, \"0\");\n  }\n\n  mark.target = string(target);\n  mark.ariaLabel = string(cariaLabel);\n  mark.ariaDescription = string(ariaDescription);\n  mark.ariaHidden = string(ariaHidden);\n  mark.opacity = impliedNumber(copacity, 1);\n  mark.mixBlendMode = impliedString(mixBlendMode, \"normal\");\n  mark.imageFilter = impliedString(imageFilter, \"none\");\n  mark.paintOrder = impliedString(paintOrder, \"normal\");\n  mark.pointerEvents = impliedString(pointerEvents, \"auto\");\n  mark.shapeRendering = impliedString(shapeRendering, \"auto\");\n\n  return {\n    title: {value: title, optional: true, filter: null},\n    href: {value: href, optional: true, filter: null},\n    ariaLabel: {value: variaLabel, optional: true, filter: null},\n    fill: {value: vfill, scale: \"auto\", optional: true},\n    fillOpacity: {value: vfillOpacity, scale: \"auto\", optional: true},\n    stroke: {value: vstroke, scale: \"auto\", optional: true},\n    strokeOpacity: {value: vstrokeOpacity, scale: \"auto\", optional: true},\n    strokeWidth: {value: vstrokeWidth, optional: true},\n    opacity: {value: vopacity, scale: \"auto\", optional: true}\n  };\n}\n\n// Applies the specified titles via selection.call.\nexport function applyTitle(selection, L) {\n  if (L)\n    selection\n      .filter((i) => nonempty(L[i]))\n      .append(\"title\")\n      .call(applyText, L);\n}\n\n// Like applyTitle, but for grouped data (lines, areas).\nexport function applyTitleGroup(selection, L) {\n  if (L)\n    selection\n      .filter(([i]) => nonempty(L[i]))\n      .append(\"title\")\n      .call(applyTextGroup, L);\n}\n\nexport function applyText(selection, T) {\n  if (T) selection.text((i) => formatDefault(T[i]));\n}\n\nexport function applyTextGroup(selection, T) {\n  if (T) selection.text(([i]) => formatDefault(T[i]));\n}\n\nexport function applyChannelStyles(\n  selection,\n  {target, tip},\n  {\n    ariaLabel: AL,\n    title: T,\n    fill: F,\n    fillOpacity: FO,\n    stroke: S,\n    strokeOpacity: SO,\n    strokeWidth: SW,\n    opacity: O,\n    href: H\n  }\n) {\n  if (AL) applyAttr(selection, \"aria-label\", (i) => AL[i]);\n  if (F) applyAttr(selection, \"fill\", (i) => F[i]);\n  if (FO) applyAttr(selection, \"fill-opacity\", (i) => FO[i]);\n  if (S) applyAttr(selection, \"stroke\", (i) => S[i]);\n  if (SO) applyAttr(selection, \"stroke-opacity\", (i) => SO[i]);\n  if (SW) applyAttr(selection, \"stroke-width\", (i) => SW[i]);\n  if (O) applyAttr(selection, \"opacity\", (i) => O[i]);\n  if (H) applyHref(selection, (i) => H[i], target);\n  if (!tip) applyTitle(selection, T);\n}\n\nexport function applyGroupedChannelStyles(\n  selection,\n  {target, tip},\n  {\n    ariaLabel: AL,\n    title: T,\n    fill: F,\n    fillOpacity: FO,\n    stroke: S,\n    strokeOpacity: SO,\n    strokeWidth: SW,\n    opacity: O,\n    href: H\n  }\n) {\n  if (AL) applyAttr(selection, \"aria-label\", ([i]) => AL[i]);\n  if (F) applyAttr(selection, \"fill\", ([i]) => F[i]);\n  if (FO) applyAttr(selection, \"fill-opacity\", ([i]) => FO[i]);\n  if (S) applyAttr(selection, \"stroke\", ([i]) => S[i]);\n  if (SO) applyAttr(selection, \"stroke-opacity\", ([i]) => SO[i]);\n  if (SW) applyAttr(selection, \"stroke-width\", ([i]) => SW[i]);\n  if (O) applyAttr(selection, \"opacity\", ([i]) => O[i]);\n  if (H) applyHref(selection, ([i]) => H[i], target);\n  if (!tip) applyTitleGroup(selection, T);\n}\n\nfunction groupAesthetics(\n  {\n    ariaLabel: AL,\n    title: T,\n    fill: F,\n    fillOpacity: FO,\n    stroke: S,\n    strokeOpacity: SO,\n    strokeWidth: SW,\n    opacity: O,\n    href: H\n  },\n  {tip}\n) {\n  return [AL, tip ? undefined : T, F, FO, S, SO, SW, O, H].filter((c) => c !== undefined);\n}\n\nexport function groupZ(I, Z, z) {\n  const G = group(I, (i) => Z[i]);\n  if (z === undefined && G.size > (1 + I.length) >> 1) {\n    warn(\n      `Warning: the implicit z channel has high cardinality. This may occur when the fill or stroke channel is associated with quantitative data rather than ordinal or categorical data. You can suppress this warning by setting the z option explicitly; if this data represents a single series, set z to null.`\n    );\n  }\n  return G.values();\n}\n\nexport function* groupIndex(I, position, mark, channels) {\n  const {z} = mark;\n  const {z: Z} = channels; // group channel\n  const A = groupAesthetics(channels, mark); // aesthetic channels\n  const C = [...position, ...A]; // all channels\n\n  // Group the current index by Z (if any).\n  for (const G of Z ? groupZ(I, Z, z) : [I]) {\n    let Ag; // the A-values (aesthetics) of the current group, if any\n    let Gg; // the current group index (a subset of G, and I), if any\n    out: for (const i of G) {\n      // If any channel has an undefined value for this index, skip it.\n      for (const c of C) {\n        if (!defined(c[i])) {\n          if (Gg) Gg.push(-1);\n          continue out;\n        }\n      }\n\n      // Otherwise, if this is a new group, record the aesthetics for this\n      // group. Yield the current group and start a new one.\n      if (Ag === undefined) {\n        if (Gg) yield Gg;\n        (Ag = A.map((c) => keyof(c[i]))), (Gg = [i]);\n        continue;\n      }\n\n      // Otherwise, add the current index to the current group. Then, if any of\n      // the aesthetics don\u2019t match the current group, yield the current group\n      // and start a new group of the current index.\n      Gg.push(i);\n      for (let j = 0; j < A.length; ++j) {\n        const k = keyof(A[j][i]);\n        if (k !== Ag[j]) {\n          yield Gg;\n          (Ag = A.map((c) => keyof(c[i]))), (Gg = [i]);\n          continue out;\n        }\n      }\n    }\n\n    // Yield the current group, if any.\n    if (Gg) yield Gg;\n  }\n}\n\n// TODO Accept other types of clips (paths, urls, x, y, other marks\u2026)?\n// https://github.com/observablehq/plot/issues/181\nexport function maybeClip(clip) {\n  if (clip === true) clip = \"frame\";\n  else if (clip === false) clip = null;\n  return maybeKeyword(clip, \"clip\", [\"frame\", \"sphere\"]);\n}\n\n// Note: may mutate selection.node!\nfunction applyClip(selection, mark, dimensions, context) {\n  let clipUrl;\n  switch (mark.clip) {\n    case \"frame\": {\n      const {width, height, marginLeft, marginRight, marginTop, marginBottom} = dimensions;\n      const id = getClipId();\n      clipUrl = `url(#${id})`;\n      selection = create(\"svg:g\", context)\n        .call((g) =>\n          g\n            .append(\"svg:clipPath\")\n            .attr(\"id\", id)\n            .append(\"rect\")\n            .attr(\"x\", marginLeft)\n            .attr(\"y\", marginTop)\n            .attr(\"width\", width - marginRight - marginLeft)\n            .attr(\"height\", height - marginTop - marginBottom)\n        )\n        .each(function () {\n          this.appendChild(selection.node());\n          selection.node = () => this; // Note: mutation!\n        });\n      break;\n    }\n    case \"sphere\": {\n      const {projection} = context;\n      if (!projection) throw new Error(`the \"sphere\" clip option requires a projection`);\n      const id = getClipId();\n      clipUrl = `url(#${id})`;\n      selection\n        .append(\"clipPath\")\n        .attr(\"id\", id)\n        .append(\"path\")\n        .attr(\"d\", geoPath(projection)({type: \"Sphere\"}));\n      break;\n    }\n  }\n  // Here we\u2019re careful to apply the ARIA attributes to the outer G element when\n  // clipping is applied, and to apply the ARIA attributes before any other\n  // attributes (for readability).\n  applyAttr(selection, \"aria-label\", mark.ariaLabel);\n  applyAttr(selection, \"aria-description\", mark.ariaDescription);\n  applyAttr(selection, \"aria-hidden\", mark.ariaHidden);\n  applyAttr(selection, \"clip-path\", clipUrl);\n}\n\n// Note: may mutate selection.node!\nexport function applyIndirectStyles(selection, mark, dimensions, context) {\n  applyClip(selection, mark, dimensions, context);\n  applyAttr(selection, \"fill\", mark.fill);\n  applyAttr(selection, \"fill-opacity\", mark.fillOpacity);\n  applyAttr(selection, \"stroke\", mark.stroke);\n  applyAttr(selection, \"stroke-width\", mark.strokeWidth);\n  applyAttr(selection, \"stroke-opacity\", mark.strokeOpacity);\n  applyAttr(selection, \"stroke-linejoin\", mark.strokeLinejoin);\n  applyAttr(selection, \"stroke-linecap\", mark.strokeLinecap);\n  applyAttr(selection, \"stroke-miterlimit\", mark.strokeMiterlimit);\n  applyAttr(selection, \"stroke-dasharray\", mark.strokeDasharray);\n  applyAttr(selection, \"stroke-dashoffset\", mark.strokeDashoffset);\n  applyAttr(selection, \"shape-rendering\", mark.shapeRendering);\n  applyAttr(selection, \"filter\", mark.imageFilter);\n  applyAttr(selection, \"paint-order\", mark.paintOrder);\n  const {pointerEvents = context.pointerSticky === false ? \"none\" : undefined} = mark;\n  applyAttr(selection, \"pointer-events\", pointerEvents);\n}\n\nexport function applyDirectStyles(selection, mark) {\n  applyStyle(selection, \"mix-blend-mode\", mark.mixBlendMode);\n  applyAttr(selection, \"opacity\", mark.opacity);\n}\n\nfunction applyHref(selection, href, target) {\n  selection.each(function (i) {\n    const h = href(i);\n    if (h != null) {\n      const a = this.ownerDocument.createElementNS(namespaces.svg, \"a\");\n      a.setAttribute(\"fill\", \"inherit\");\n      a.setAttributeNS(namespaces.xlink, \"href\", h);\n      if (target != null) a.setAttribute(\"target\", target);\n      this.parentNode.insertBefore(a, this).appendChild(this);\n    }\n  });\n}\n\nexport function applyAttr(selection, name, value) {\n  if (value != null) selection.attr(name, value);\n}\n\nexport function applyStyle(selection, name, value) {\n  if (value != null) selection.style(name, value);\n}\n\nexport function applyTransform(selection, mark, {x, y}, tx = offset, ty = offset) {\n  tx += mark.dx;\n  ty += mark.dy;\n  if (x?.bandwidth) tx += x.bandwidth() / 2;\n  if (y?.bandwidth) ty += y.bandwidth() / 2;\n  if (tx || ty) selection.attr(\"transform\", `translate(${tx},${ty})`);\n}\n\nexport function impliedString(value, impliedValue) {\n  if ((value = string(value)) !== impliedValue) return value;\n}\n\nexport function impliedNumber(value, impliedValue) {\n  if ((value = number(value)) !== impliedValue) return value;\n}\n\n// https://www.w3.org/TR/CSS21/grammar.html\nconst validClassName =\n  /^-?([_a-z]|[\\240-\\377]|\\\\[0-9a-f]{1,6}(\\r\\n|[ \\t\\r\\n\\f])?|\\\\[^\\r\\n\\f0-9a-f])([_a-z0-9-]|[\\240-\\377]|\\\\[0-9a-f]{1,6}(\\r\\n|[ \\t\\r\\n\\f])?|\\\\[^\\r\\n\\f0-9a-f])*$/i;\n\nexport function maybeClassName(name) {\n  // The default should be changed whenever the default styles are changed, so\n  // as to avoid conflict when multiple versions of Plot are on the page.\n  if (name === undefined) return \"plot-d6a7b5\";\n  name = `${name}`;\n  if (!validClassName.test(name)) throw new Error(`invalid class name: ${name}`);\n  return name;\n}\n\nexport function applyInlineStyles(selection, style) {\n  if (typeof style === \"string\") {\n    selection.property(\"style\", style);\n  } else if (style != null) {\n    for (const element of selection) {\n      Object.assign(element.style, style);\n    }\n  }\n}\n\nexport function applyFrameAnchor({frameAnchor}, {width, height, marginTop, marginRight, marginBottom, marginLeft}) {\n  return [\n    /left$/.test(frameAnchor)\n      ? marginLeft\n      : /right$/.test(frameAnchor)\n      ? width - marginRight\n      : (marginLeft + width - marginRight) / 2,\n    /^top/.test(frameAnchor)\n      ? marginTop\n      : /^bottom/.test(frameAnchor)\n      ? height - marginBottom\n      : (marginTop + height - marginBottom) / 2\n  ];\n}\n", "import {extent} from \"d3\";\nimport {projectionAspectRatio} from \"./projection.js\";\nimport {isOrdinalScale} from \"./scales.js\";\nimport {offset} from \"./style.js\";\n\nexport function createDimensions(scales, marks, options = {}) {\n  // Compute the default margins: the maximum of the marks\u2019 margins. While not\n  // always used, they may be needed to compute the default height of the plot.\n  let marginTopDefault = 0.5 - offset,\n    marginRightDefault = 0.5 + offset,\n    marginBottomDefault = 0.5 + offset,\n    marginLeftDefault = 0.5 - offset;\n\n  for (const {marginTop, marginRight, marginBottom, marginLeft} of marks) {\n    if (marginTop > marginTopDefault) marginTopDefault = marginTop;\n    if (marginRight > marginRightDefault) marginRightDefault = marginRight;\n    if (marginBottom > marginBottomDefault) marginBottomDefault = marginBottom;\n    if (marginLeft > marginLeftDefault) marginLeftDefault = marginLeft;\n  }\n\n  // Compute the actual margins. The order of precedence is: the side-specific\n  // margin options, then the global margin option, then the defaults.\n  let {\n    margin,\n    marginTop = margin !== undefined ? margin : marginTopDefault,\n    marginRight = margin !== undefined ? margin : marginRightDefault,\n    marginBottom = margin !== undefined ? margin : marginBottomDefault,\n    marginLeft = margin !== undefined ? margin : marginLeftDefault\n  } = options;\n\n  // Coerce the margin options to numbers.\n  marginTop = +marginTop;\n  marginRight = +marginRight;\n  marginBottom = +marginBottom;\n  marginLeft = +marginLeft;\n\n  // Compute the outer dimensions of the plot. If the top and bottom margins are\n  // specified explicitly, adjust the automatic height accordingly.\n  let {\n    width = 640,\n    height = autoHeight(scales, options, {\n      width,\n      marginTopDefault,\n      marginRightDefault,\n      marginBottomDefault,\n      marginLeftDefault\n    }) + Math.max(0, marginTop - marginTopDefault + marginBottom - marginBottomDefault)\n  } = options;\n\n  // Coerce the width and height.\n  width = +width;\n  height = +height;\n\n  const dimensions = {\n    width,\n    height,\n    marginTop,\n    marginRight,\n    marginBottom,\n    marginLeft\n  };\n\n  // Compute the facet margins.\n  if (scales.fx || scales.fy) {\n    let {\n      margin: facetMargin,\n      marginTop: facetMarginTop = facetMargin !== undefined ? facetMargin : marginTop,\n      marginRight: facetMarginRight = facetMargin !== undefined ? facetMargin : marginRight,\n      marginBottom: facetMarginBottom = facetMargin !== undefined ? facetMargin : marginBottom,\n      marginLeft: facetMarginLeft = facetMargin !== undefined ? facetMargin : marginLeft\n    } = options.facet ?? {};\n\n    // Coerce the facet margin options to numbers.\n    facetMarginTop = +facetMarginTop;\n    facetMarginRight = +facetMarginRight;\n    facetMarginBottom = +facetMarginBottom;\n    facetMarginLeft = +facetMarginLeft;\n\n    dimensions.facet = {\n      marginTop: facetMarginTop,\n      marginRight: facetMarginRight,\n      marginBottom: facetMarginBottom,\n      marginLeft: facetMarginLeft\n    };\n  }\n\n  return dimensions;\n}\n\nfunction autoHeight(\n  {x, y, fy, fx},\n  {projection, aspectRatio},\n  {width, marginTopDefault, marginRightDefault, marginBottomDefault, marginLeftDefault}\n) {\n  const nfy = fy ? fy.scale.domain().length : 1;\n\n  // If a projection is specified, use its natural aspect ratio (if known).\n  const ar = projectionAspectRatio(projection);\n  if (ar) {\n    const nfx = fx ? fx.scale.domain().length : 1;\n    const far = ((1.1 * nfy - 0.1) / (1.1 * nfx - 0.1)) * ar; // 0.1 is default facet padding\n    const lar = Math.max(0.1, Math.min(10, far)); // clamp the aspect ratio to a \u201Creasonable\u201D value\n    return Math.round((width - marginLeftDefault - marginRightDefault) * lar + marginTopDefault + marginBottomDefault);\n  }\n\n  const ny = y ? (isOrdinalScale(y) ? y.scale.domain().length : Math.max(7, 17 / nfy)) : 1;\n\n  // If a desired aspect ratio is given, compute a default height to match.\n  if (aspectRatio != null) {\n    aspectRatio = +aspectRatio;\n    if (!(isFinite(aspectRatio) && aspectRatio > 0)) throw new Error(`invalid aspectRatio: ${aspectRatio}`);\n    const ratio = aspectRatioLength(\"y\", y) / (aspectRatioLength(\"x\", x) * aspectRatio);\n    const fxb = fx ? fx.scale.bandwidth() : 1;\n    const fyb = fy ? fy.scale.bandwidth() : 1;\n    const w = fxb * (width - marginLeftDefault - marginRightDefault) - x.insetLeft - x.insetRight;\n    return (ratio * w + y.insetTop + y.insetBottom) / fyb + marginTopDefault + marginBottomDefault;\n  }\n\n  return !!(y || fy) * Math.max(1, Math.min(60, ny * nfy)) * 20 + !!fx * 30 + 60;\n}\n\nfunction aspectRatioLength(k, scale) {\n  if (!scale) throw new Error(`aspectRatio requires ${k} scale`);\n  const {type, domain} = scale;\n  let transform;\n  switch (type) {\n    case \"linear\":\n    case \"utc\":\n    case \"time\":\n      transform = Number;\n      break;\n    case \"pow\": {\n      const exponent = scale.scale.exponent();\n      transform = (x) => Math.pow(x, exponent);\n      break;\n    }\n    case \"log\":\n      transform = Math.log;\n      break;\n    case \"point\":\n    case \"band\":\n      return domain.length;\n    default:\n      throw new Error(`unsupported ${k} scale for aspectRatio: ${type}`);\n  }\n  const [min, max] = extent(domain);\n  return Math.abs(transform(max) - transform(min));\n}\n", "import {InternMap, cross, rollup, sum} from \"d3\";\nimport {keyof, map, range} from \"./options.js\";\nimport {createScales} from \"./scales.js\";\n\n// Returns an array of {x?, y?, i} objects representing the facet domain.\nexport function createFacets(channelsByScale, options) {\n  const {fx, fy} = createScales(channelsByScale, options);\n  const fxDomain = fx?.scale.domain();\n  const fyDomain = fy?.scale.domain();\n  return fxDomain && fyDomain\n    ? cross(fxDomain, fyDomain).map(([x, y], i) => ({x, y, i}))\n    : fxDomain\n    ? fxDomain.map((x, i) => ({x, i}))\n    : fyDomain\n    ? fyDomain.map((y, i) => ({y, i}))\n    : undefined;\n}\n\nexport function recreateFacets(facets, {x: X, y: Y}) {\n  X &&= facetIndex(X);\n  Y &&= facetIndex(Y);\n  return facets\n    .filter(\n      X && Y // remove any facets no longer present in the domain\n        ? (f) => X.has(f.x) && Y.has(f.y)\n        : X\n        ? (f) => X.has(f.x)\n        : (f) => Y.has(f.y)\n    )\n    .sort(\n      X && Y // reorder facets to match the new scale domains\n        ? (a, b) => X.get(a.x) - X.get(b.x) || Y.get(a.y) - Y.get(b.y)\n        : X\n        ? (a, b) => X.get(a.x) - X.get(b.x)\n        : (a, b) => Y.get(a.y) - Y.get(b.y)\n    );\n}\n\n// Returns a (possibly nested) Map of [[key1, index1], [key2, index2], \u2026]\n// representing the data indexes associated with each facet.\nexport function facetGroups(data, {fx, fy}) {\n  const I = range(data);\n  const FX = fx?.value;\n  const FY = fy?.value;\n  return fx && fy\n    ? rollup(\n        I,\n        (G) => ((G.fx = FX[G[0]]), (G.fy = FY[G[0]]), G),\n        (i) => FX[i],\n        (i) => FY[i]\n      )\n    : fx\n    ? rollup(\n        I,\n        (G) => ((G.fx = FX[G[0]]), G),\n        (i) => FX[i]\n      )\n    : rollup(\n        I,\n        (G) => ((G.fy = FY[G[0]]), G),\n        (i) => FY[i]\n      );\n}\n\nexport function facetTranslator(fx, fy, {marginTop, marginLeft}) {\n  return fx && fy\n    ? ({x, y}) => `translate(${fx(x) - marginLeft},${fy(y) - marginTop})`\n    : fx\n    ? ({x}) => `translate(${fx(x) - marginLeft},0)`\n    : ({y}) => `translate(0,${fy(y) - marginTop})`;\n}\n\n// Returns an index that for each facet lists all the elements present in other\n// facets in the original index. TODO Memoize to avoid repeated work?\nexport function facetExclude(index) {\n  const ex = [];\n  const e = new Uint32Array(sum(index, (d) => d.length));\n  for (const i of index) {\n    let n = 0;\n    for (const j of index) {\n      if (i === j) continue;\n      e.set(j, n);\n      n += j.length;\n    }\n    ex.push(e.slice(0, n));\n  }\n  return ex;\n}\n\nconst facetAnchors = new Map([\n  [\"top\", facetAnchorTop],\n  [\"right\", facetAnchorRight],\n  [\"bottom\", facetAnchorBottom],\n  [\"left\", facetAnchorLeft],\n  [\"top-left\", and(facetAnchorTop, facetAnchorLeft)],\n  [\"top-right\", and(facetAnchorTop, facetAnchorRight)],\n  [\"bottom-left\", and(facetAnchorBottom, facetAnchorLeft)],\n  [\"bottom-right\", and(facetAnchorBottom, facetAnchorRight)],\n  [\"top-empty\", facetAnchorTopEmpty],\n  [\"right-empty\", facetAnchorRightEmpty],\n  [\"bottom-empty\", facetAnchorBottomEmpty],\n  [\"left-empty\", facetAnchorLeftEmpty],\n  [\"empty\", facetAnchorEmpty]\n]);\n\nexport function maybeFacetAnchor(facetAnchor) {\n  if (facetAnchor == null) return null;\n  const anchor = facetAnchors.get(`${facetAnchor}`.toLowerCase());\n  if (anchor) return anchor;\n  throw new Error(`invalid facet anchor: ${facetAnchor}`);\n}\n\nconst indexCache = new WeakMap();\n\nfunction facetIndex(V) {\n  let I = indexCache.get(V);\n  if (!I) indexCache.set(V, (I = new InternMap(map(V, (v, i) => [v, i]))));\n  return I;\n}\n\n// Like V.indexOf(v), but with the same semantics as InternMap.\nfunction facetIndexOf(V, v) {\n  return facetIndex(V).get(v);\n}\n\n// Like facets.find, but with the same semantics as InternMap.\nfunction facetFind(facets, x, y) {\n  x = keyof(x);\n  y = keyof(y);\n  return facets.find((f) => Object.is(keyof(f.x), x) && Object.is(keyof(f.y), y));\n}\n\nfunction facetEmpty(facets, x, y) {\n  return facetFind(facets, x, y)?.empty;\n}\n\nfunction facetAnchorTop(facets, {y: Y}, {y}) {\n  return Y ? facetIndexOf(Y, y) === 0 : true;\n}\n\nfunction facetAnchorBottom(facets, {y: Y}, {y}) {\n  return Y ? facetIndexOf(Y, y) === Y.length - 1 : true;\n}\n\nfunction facetAnchorLeft(facets, {x: X}, {x}) {\n  return X ? facetIndexOf(X, x) === 0 : true;\n}\n\nfunction facetAnchorRight(facets, {x: X}, {x}) {\n  return X ? facetIndexOf(X, x) === X.length - 1 : true;\n}\n\nfunction facetAnchorTopEmpty(facets, {y: Y}, {x, y, empty}) {\n  if (empty) return false;\n  if (!Y) return;\n  const i = facetIndexOf(Y, y);\n  if (i > 0) return facetEmpty(facets, x, Y[i - 1]);\n}\n\nfunction facetAnchorBottomEmpty(facets, {y: Y}, {x, y, empty}) {\n  if (empty) return false;\n  if (!Y) return;\n  const i = facetIndexOf(Y, y);\n  if (i < Y.length - 1) return facetEmpty(facets, x, Y[i + 1]);\n}\n\nfunction facetAnchorLeftEmpty(facets, {x: X}, {x, y, empty}) {\n  if (empty) return false;\n  if (!X) return;\n  const i = facetIndexOf(X, x);\n  if (i > 0) return facetEmpty(facets, X[i - 1], y);\n}\n\nfunction facetAnchorRightEmpty(facets, {x: X}, {x, y, empty}) {\n  if (empty) return false;\n  if (!X) return;\n  const i = facetIndexOf(X, x);\n  if (i < X.length - 1) return facetEmpty(facets, X[i + 1], y);\n}\n\nfunction facetAnchorEmpty(facets, channels, {empty}) {\n  return empty;\n}\n\nfunction and(a, b) {\n  return function () {\n    return a.apply(null, arguments) && b.apply(null, arguments);\n  };\n}\n\n// Facet filter, by mark; for now only the \"eq\" filter is provided.\nexport function facetFilter(facets, {channels: {fx, fy}, groups}) {\n  return fx && fy\n    ? facets.map(({x, y}) => groups.get(x)?.get(y) ?? [])\n    : fx\n    ? facets.map(({x}) => groups.get(x) ?? [])\n    : facets.map(({y}) => groups.get(y) ?? []);\n}\n", "import {channelDomain, createChannels, valueObject} from \"./channel.js\";\nimport {defined} from \"./defined.js\";\nimport {maybeFacetAnchor} from \"./facet.js\";\nimport {maybeKeyword, maybeNamed, maybeValue} from \"./options.js\";\nimport {arrayify, isDomainSort, isOptions, keyword, range, singleton} from \"./options.js\";\nimport {project} from \"./projection.js\";\nimport {maybeClip, styles} from \"./style.js\";\nimport {basic, initializer} from \"./transforms/basic.js\";\n\nexport class Mark {\n  constructor(data, channels = {}, options = {}, defaults) {\n    const {\n      facet = \"auto\",\n      facetAnchor,\n      fx,\n      fy,\n      sort,\n      dx = 0,\n      dy = 0,\n      margin = 0,\n      marginTop = margin,\n      marginRight = margin,\n      marginBottom = margin,\n      marginLeft = margin,\n      clip,\n      channels: extraChannels,\n      tip,\n      render\n    } = options;\n    this.data = data;\n    this.sort = isDomainSort(sort) ? sort : null;\n    this.initializer = initializer(options).initializer;\n    this.transform = this.initializer ? options.transform : basic(options).transform;\n    if (facet === null || facet === false) {\n      this.facet = null;\n    } else {\n      this.facet = keyword(facet === true ? \"include\" : facet, \"facet\", [\"auto\", \"include\", \"exclude\", \"super\"]);\n      this.fx = data === singleton && typeof fx === \"string\" ? [fx] : fx;\n      this.fy = data === singleton && typeof fy === \"string\" ? [fy] : fy;\n    }\n    this.facetAnchor = maybeFacetAnchor(facetAnchor);\n    channels = maybeNamed(channels);\n    if (extraChannels !== undefined) channels = {...maybeChannels(extraChannels), ...channels};\n    if (defaults !== undefined) channels = {...styles(this, options, defaults), ...channels};\n    this.channels = Object.fromEntries(\n      Object.entries(channels)\n        .map(([name, channel]) => {\n          if (isOptions(channel.value)) {\n            // apply scale overrides\n            const {value, scale = channel.scale} = channel.value;\n            channel = {...channel, scale, value};\n          }\n          if (data === singleton && typeof channel.value === \"string\") {\n            // convert field names to singleton values for decoration marks (e.g., frame)\n            const {value} = channel;\n            channel = {...channel, value: [value]};\n          }\n          return [name, channel];\n        })\n        .filter(([name, {value, optional}]) => {\n          if (value != null) return true;\n          if (optional) return false;\n          throw new Error(`missing channel value: ${name}`);\n        })\n    );\n    this.dx = +dx;\n    this.dy = +dy;\n    this.marginTop = +marginTop;\n    this.marginRight = +marginRight;\n    this.marginBottom = +marginBottom;\n    this.marginLeft = +marginLeft;\n    this.clip = maybeClip(clip);\n    this.tip = maybeTip(tip);\n    // Super-faceting currently disallow position channels; in the future, we\n    // could allow position to be specified in fx and fy in addition to (or\n    // instead of) x and y.\n    if (this.facet === \"super\") {\n      if (fx || fy) throw new Error(`super-faceting cannot use fx or fy`);\n      for (const name in this.channels) {\n        const {scale} = channels[name];\n        if (scale !== \"x\" && scale !== \"y\") continue;\n        throw new Error(`super-faceting cannot use x or y`);\n      }\n    }\n    if (render != null) {\n      this.render = composeRender(render, this.render);\n    }\n  }\n  initialize(facets, facetChannels, plotOptions) {\n    let data = arrayify(this.data);\n    if (facets === undefined && data != null) facets = [range(data)];\n    const originalFacets = facets;\n    if (this.transform != null) ({facets, data} = this.transform(data, facets, plotOptions)), (data = arrayify(data));\n    if (facets !== undefined) facets.original = originalFacets; // needed to read facetChannels\n    const channels = createChannels(this.channels, data);\n    if (this.sort != null) channelDomain(data, facets, channels, facetChannels, this.sort); // mutates facetChannels!\n    return {data, facets, channels};\n  }\n  filter(index, channels, values) {\n    for (const name in channels) {\n      const {filter = defined} = channels[name];\n      if (filter !== null) {\n        const value = values[name];\n        index = index.filter((i) => filter(value[i]));\n      }\n    }\n    return index;\n  }\n  // If there is a projection, and there are paired x and y channels associated\n  // with the x and y scale respectively (and not already in screen coordinates\n  // as with an initializer), then apply the projection, replacing the x and y\n  // values. Note that the x and y scales themselves don\u2019t exist if there is a\n  // projection, but whether the channels are associated with scales still\n  // determines whether the projection should apply; think of the projection as\n  // a combination xy-scale.\n  project(channels, values, context) {\n    for (const cx in channels) {\n      if (channels[cx].scale === \"x\" && /^x|x$/.test(cx)) {\n        const cy = cx.replace(/^x|x$/, \"y\");\n        if (cy in channels && channels[cy].scale === \"y\") {\n          project(cx, cy, values, context.projection);\n        }\n      }\n    }\n  }\n  scale(channels, scales, context) {\n    const values = valueObject(channels, scales);\n    if (context.projection) this.project(channels, values, context);\n    return values;\n  }\n}\n\nexport function marks(...marks) {\n  marks.plot = Mark.prototype.plot; // Note: depends on side-effect in plot!\n  return marks;\n}\n\nexport function composeRender(r1, r2) {\n  if (r1 == null) return r2 === null ? undefined : r2;\n  if (r2 == null) return r1 === null ? undefined : r1;\n  if (typeof r1 !== \"function\") throw new TypeError(`invalid render transform: ${r1}`);\n  if (typeof r2 !== \"function\") throw new TypeError(`invalid render transform: ${r2}`);\n  return function (i, s, v, d, c, next) {\n    return r1.call(this, i, s, v, d, c, (i, s, v, d, c) => {\n      return r2.call(this, i, s, v, d, c, next); // preserve this\n    });\n  };\n}\n\nfunction maybeChannels(channels) {\n  return Object.fromEntries(\n    Object.entries(maybeNamed(channels)).map(([name, channel]) => {\n      channel = maybeValue(channel);\n      if (channel.filter === undefined && channel.scale == null) channel = {...channel, filter: null};\n      return [name, channel];\n    })\n  );\n}\n\nfunction maybeTip(tip) {\n  return tip === true ? \"xy\" : tip === false ? null : maybeKeyword(tip, \"tip\", [\"x\", \"y\", \"xy\"]);\n}\n\nexport function withTip(options, tip) {\n  return options?.tip === true ? {...options, tip} : options;\n}\n", "import {pointer as pointof} from \"d3\";\nimport {composeRender} from \"../mark.js\";\nimport {applyFrameAnchor} from \"../style.js\";\n\nconst states = new WeakMap();\n\nfunction pointerK(kx, ky, {x, y, px, py, maxRadius = 40, channels, render, ...options} = {}) {\n  maxRadius = +maxRadius;\n  // When px or py is used, register an extra channel that the pointer\n  // interaction can use to control which point is focused; this allows pointing\n  // to function independently of where the downstream mark (e.g., a tip) is\n  // displayed. Also default x or y to null to disable maybeTuple etc.\n  if (px != null) (x ??= null), (channels = {...channels, px: {value: px, scale: \"x\"}});\n  if (py != null) (y ??= null), (channels = {...channels, py: {value: py, scale: \"y\"}});\n  return {\n    x,\n    y,\n    channels,\n    ...options,\n    // Unlike other composed transforms, the render transform must be the\n    // outermost render function because it will re-render dynamically in\n    // response to pointer events.\n    render: composeRender(function (index, scales, values, dimensions, context, next) {\n      context = {...context, pointerSticky: false};\n      const svg = context.ownerSVGElement;\n      const {data} = context.getMarkState(this);\n\n      // Isolate state per-pointer, per-plot; if the pointer is reused by\n      // multiple marks, they will share the same state (e.g., sticky modality).\n      let state = states.get(svg);\n      if (!state) states.set(svg, (state = {sticky: false, roots: [], renders: []}));\n\n      // This serves as a unique identifier of the rendered mark per-plot; it is\n      // used to record the currently-rendered elements (state.roots) so that we\n      // can tell when a rendered element is clicked on.\n      let renderIndex = state.renders.push(render) - 1;\n\n      // For faceting, we want to compute the local coordinates of each point,\n      // which means subtracting out the facet translation, if any. (It\u2019s\n      // tempting to do this using the local coordinates in SVG, but that\u2019s\n      // complicated by mark-specific transforms such as dx and dy.) Also, since\n      // band scales return the upper bound of the band, we have to offset by\n      // half the bandwidth.\n      const {x, y, fx, fy} = scales;\n      let tx = fx ? fx(index.fx) - dimensions.marginLeft : 0;\n      let ty = fy ? fy(index.fy) - dimensions.marginTop : 0;\n      if (x?.bandwidth) tx += x.bandwidth() / 2;\n      if (y?.bandwidth) ty += y.bandwidth() / 2;\n\n      // For faceting, we also need to record the closest point per facet per\n      // mark (!), since each facet has its own pointer event listeners; we only\n      // want the closest point across facets to be visible.\n      const faceted = index.fi != null;\n      let facetState;\n      if (faceted) {\n        let facetStates = state.facetStates;\n        if (!facetStates) state.facetStates = facetStates = new Map();\n        facetState = facetStates.get(this);\n        if (!facetState) facetStates.set(this, (facetState = new Map()));\n      }\n\n      // The order of precedence for the pointer position is: px & py; the\n      // middle of x1 & y1 and x2 & y2; or x1 & y1 (e.g., area); or lastly x &\n      // y. If a dimension is unspecified, the frame anchor is used.\n      const [cx, cy] = applyFrameAnchor(this, dimensions);\n      const {px: PX, py: PY} = values;\n      const px = PX ? (i) => PX[i] : anchorX(values, cx);\n      const py = PY ? (i) => PY[i] : anchorY(values, cy);\n\n      let i; // currently focused index\n      let g; // currently rendered mark\n      let s; // currently rendered stickiness\n      let f; // current animation frame\n\n      // When faceting, if more than one pointer would be visible, only show\n      // this one if it is the closest. We defer rendering using an animation\n      // frame to allow all pointer events to be received before deciding which\n      // mark to render; although when hiding, we render immediately.\n      function update(ii, ri) {\n        if (faceted) {\n          if (f) f = cancelAnimationFrame(f);\n          if (ii == null) facetState.delete(index.fi);\n          else {\n            facetState.set(index.fi, ri);\n            f = requestAnimationFrame(() => {\n              f = null;\n              for (const r of facetState.values()) {\n                if (r < ri) {\n                  ii = null;\n                  break;\n                }\n              }\n              render(ii);\n            });\n            return;\n          }\n        }\n        render(ii);\n      }\n\n      function render(ii) {\n        if (i === ii && s === state.sticky) return; // the tooltip hasn\u2019t moved\n        i = ii;\n        s = context.pointerSticky = state.sticky;\n        const I = i == null ? [] : [i];\n        if (faceted) (I.fx = index.fx), (I.fy = index.fy), (I.fi = index.fi);\n        const r = next(I, scales, values, dimensions, context);\n        if (g) {\n          // When faceting, preserve swapped mark and facet transforms; also\n          // remove ARIA attributes since these are promoted to the parent. This\n          // is perhaps brittle in that it depends on how Plot renders facets,\n          // but it produces a cleaner and more accessible SVG structure.\n          if (faceted) {\n            const p = g.parentNode;\n            const ft = g.getAttribute(\"transform\");\n            const mt = r.getAttribute(\"transform\");\n            ft ? r.setAttribute(\"transform\", ft) : r.removeAttribute(\"transform\");\n            mt ? p.setAttribute(\"transform\", mt) : p.removeAttribute(\"transform\");\n            r.removeAttribute(\"aria-label\");\n            r.removeAttribute(\"aria-description\");\n            r.removeAttribute(\"aria-hidden\");\n          }\n          g.replaceWith(r);\n        }\n        state.roots[renderIndex] = g = r;\n        context.dispatchValue(i == null ? null : data[i]);\n        return r;\n      }\n\n      function pointermove(event) {\n        if (state.sticky || (event.pointerType === \"mouse\" && event.buttons === 1)) return; // dragging\n        let [xp, yp] = pointof(event);\n        (xp -= tx), (yp -= ty); // correct for facets and band scales\n        let ii = null;\n        let ri = maxRadius * maxRadius;\n        for (const j of index) {\n          const dx = kx * (px(j) - xp);\n          const dy = ky * (py(j) - yp);\n          const rj = dx * dx + dy * dy;\n          if (rj <= ri) (ii = j), (ri = rj);\n        }\n        update(ii, ri);\n      }\n\n      function pointerdown(event) {\n        if (event.pointerType !== \"mouse\") return;\n        if (i == null) return; // not pointing\n        if (state.sticky && state.roots.some((r) => r?.contains(event.target))) return; // stay sticky\n        if (state.sticky) (state.sticky = false), state.renders.forEach((r) => r(null)); // clear all pointers\n        else (state.sticky = true), render(i);\n        event.stopImmediatePropagation(); // suppress other pointers\n      }\n\n      function pointerleave(event) {\n        if (event.pointerType !== \"mouse\") return;\n        if (!state.sticky) update(null);\n      }\n\n      // We listen to the svg element; listening to the window instead would let\n      // us receive pointer events from farther away, but would also make it\n      // hard to know when to remove the listeners. (Using a mutation observer\n      // to watch the entire document is likely too expensive.)\n      svg.addEventListener(\"pointerenter\", pointermove);\n      svg.addEventListener(\"pointermove\", pointermove);\n      svg.addEventListener(\"pointerdown\", pointerdown);\n      svg.addEventListener(\"pointerleave\", pointerleave);\n\n      return render(null);\n    }, render)\n  };\n}\n\nexport function pointer(options) {\n  return pointerK(1, 1, options);\n}\n\nexport function pointerX(options) {\n  return pointerK(1, 0.01, options);\n}\n\nexport function pointerY(options) {\n  return pointerK(0.01, 1, options);\n}\n\nexport function anchorX({x1: X1, x2: X2, x: X = X1}, cx) {\n  return X1 && X2 ? (i) => (X1[i] + X2[i]) / 2 : X ? (i) => X[i] : () => cx;\n}\n\nexport function anchorY({y1: Y1, y2: Y2, y: Y = Y1}, cy) {\n  return Y1 && Y2 ? (i) => (Y1[i] + Y2[i]) / 2 : Y ? (i) => Y[i] : () => cy;\n}\n", "import {isOrdinalScale} from \"./scales.js\";\n\nexport function inferFontVariant(scale) {\n  return isOrdinalScale(scale) && scale.interval === undefined ? undefined : \"tabular-nums\";\n}\n", "import {quantize, interpolateNumber, piecewise, format, scaleBand, scaleLinear, axisBottom} from \"d3\";\nimport {inferFontVariant} from \"../axes.js\";\nimport {createContext, create} from \"../context.js\";\nimport {map, maybeNumberChannel} from \"../options.js\";\nimport {interpolatePiecewise} from \"../scales/quantitative.js\";\nimport {applyInlineStyles, impliedString, maybeClassName} from \"../style.js\";\n\nexport function legendRamp(color, options) {\n  let {\n    label = color.label,\n    tickSize = 6,\n    width = 240,\n    height = 44 + tickSize,\n    marginTop = 18,\n    marginRight = 0,\n    marginBottom = 16 + tickSize,\n    marginLeft = 0,\n    style,\n    ticks = (width - marginLeft - marginRight) / 64,\n    tickFormat,\n    fontVariant = inferFontVariant(color),\n    round = true,\n    opacity,\n    className\n  } = options;\n  const context = createContext(options);\n  className = maybeClassName(className);\n  opacity = maybeNumberChannel(opacity)[1];\n  if (tickFormat === null) tickFormat = () => null;\n\n  const svg = create(\"svg\", context)\n    .attr(\"class\", `${className}-ramp`)\n    .attr(\"font-family\", \"system-ui, sans-serif\")\n    .attr(\"font-size\", 10)\n    .attr(\"width\", width)\n    .attr(\"height\", height)\n    .attr(\"viewBox\", `0 0 ${width} ${height}`)\n    .call((svg) =>\n      // Warning: if you edit this, change defaultClassName.\n      svg.append(\"style\").text(\n        `.${className}-ramp {\n  display: block;\n  background: white;\n  height: auto;\n  height: intrinsic;\n  max-width: 100%;\n  overflow: visible;\n}\n.${className}-ramp text {\n  white-space: pre;\n}`\n      )\n    )\n    .call(applyInlineStyles, style);\n\n  let tickAdjust = (g) => g.selectAll(\".tick line\").attr(\"y1\", marginTop + marginBottom - height);\n\n  let x;\n\n  // Some D3 scales use scale.interpolate, some scale.interpolator, and some\n  // scale.round; this normalizes the API so it works with all scale types.\n  const applyRange = round ? (x, range) => x.rangeRound(range) : (x, range) => x.range(range);\n\n  const {type, domain, range, interpolate, scale, pivot} = color;\n\n  // Continuous\n  if (interpolate) {\n    // Often interpolate is a \u201Cfixed\u201D interpolator on the [0, 1] interval, as\n    // with a built-in color scheme, but sometimes it is a function that takes\n    // two arguments and is used in conjunction with the range.\n    const interpolator =\n      range === undefined\n        ? interpolate\n        : piecewise(interpolate.length === 1 ? interpolatePiecewise(interpolate) : interpolate, range);\n\n    // Construct a D3 scale of the same type, but with a range that evenly\n    // divides the horizontal extent of the legend. (In the common case, the\n    // domain.length is two, and so the range is simply the extent.) For a\n    // diverging scale, we need an extra point in the range for the pivot such\n    // that the pivot is always drawn in the middle.\n    x = applyRange(\n      scale.copy(),\n      quantize(\n        interpolateNumber(marginLeft, width - marginRight),\n        Math.min(domain.length + (pivot !== undefined), range === undefined ? Infinity : range.length)\n      )\n    );\n\n    // Construct a 256\u00D71 canvas, filling each pixel using the interpolator.\n    const n = 256;\n    const canvas = context.document.createElement(\"canvas\");\n    canvas.width = n;\n    canvas.height = 1;\n    const context2 = canvas.getContext(\"2d\");\n    for (let i = 0, j = n - 1; i < n; ++i) {\n      context2.fillStyle = interpolator(i / j);\n      context2.fillRect(i, 0, 1, 1);\n    }\n\n    svg\n      .append(\"image\")\n      .attr(\"opacity\", opacity)\n      .attr(\"x\", marginLeft)\n      .attr(\"y\", marginTop)\n      .attr(\"width\", width - marginLeft - marginRight)\n      .attr(\"height\", height - marginTop - marginBottom)\n      .attr(\"preserveAspectRatio\", \"none\")\n      .attr(\"xlink:href\", canvas.toDataURL());\n  }\n\n  // Threshold\n  else if (type === \"threshold\") {\n    const thresholds = domain;\n\n    const thresholdFormat =\n      tickFormat === undefined ? (d) => d : typeof tickFormat === \"string\" ? format(tickFormat) : tickFormat;\n\n    // Construct a linear scale with evenly-spaced ticks for each of the\n    // thresholds; the domain extends one beyond the threshold extent.\n    x = applyRange(scaleLinear().domain([-1, range.length - 1]), [marginLeft, width - marginRight]);\n\n    svg\n      .append(\"g\")\n      .attr(\"fill-opacity\", opacity)\n      .selectAll()\n      .data(range)\n      .enter()\n      .append(\"rect\")\n      .attr(\"x\", (d, i) => x(i - 1))\n      .attr(\"y\", marginTop)\n      .attr(\"width\", (d, i) => x(i) - x(i - 1))\n      .attr(\"height\", height - marginTop - marginBottom)\n      .attr(\"fill\", (d) => d);\n\n    ticks = map(thresholds, (_, i) => i);\n    tickFormat = (i) => thresholdFormat(thresholds[i], i);\n  }\n\n  // Ordinal (hopefully!)\n  else {\n    x = applyRange(scaleBand().domain(domain), [marginLeft, width - marginRight]);\n\n    svg\n      .append(\"g\")\n      .attr(\"fill-opacity\", opacity)\n      .selectAll()\n      .data(domain)\n      .enter()\n      .append(\"rect\")\n      .attr(\"x\", x)\n      .attr(\"y\", marginTop)\n      .attr(\"width\", Math.max(0, x.bandwidth() - 1))\n      .attr(\"height\", height - marginTop - marginBottom)\n      .attr(\"fill\", scale);\n\n    tickAdjust = () => {};\n  }\n\n  svg\n    .append(\"g\")\n    .attr(\"transform\", `translate(0,${height - marginBottom})`)\n    .call(\n      axisBottom(x)\n        .ticks(Array.isArray(ticks) ? null : ticks, typeof tickFormat === \"string\" ? tickFormat : undefined)\n        .tickFormat(typeof tickFormat === \"function\" ? tickFormat : undefined)\n        .tickSize(tickSize)\n        .tickValues(Array.isArray(ticks) ? ticks : null)\n    )\n    .attr(\"font-size\", null)\n    .attr(\"font-family\", null)\n    .attr(\"font-variant\", impliedString(fontVariant, \"normal\"))\n    .call(tickAdjust)\n    .call((g) => g.select(\".domain\").remove());\n\n  if (label !== undefined) {\n    svg\n      .append(\"text\")\n      .attr(\"x\", marginLeft)\n      .attr(\"y\", marginTop - 6)\n      .attr(\"fill\", \"currentColor\") // TODO move to stylesheet?\n      .attr(\"font-weight\", \"bold\")\n      .text(label);\n  }\n\n  return svg.node();\n}\n", "export const radians = Math.PI / 180;\n", "import {create} from \"./context.js\";\n\nexport function markers(mark, {marker, markerStart = marker, markerMid = marker, markerEnd = marker} = {}) {\n  mark.markerStart = maybeMarker(markerStart);\n  mark.markerMid = maybeMarker(markerMid);\n  mark.markerEnd = maybeMarker(markerEnd);\n}\n\nfunction maybeMarker(marker) {\n  if (marker == null || marker === false) return null;\n  if (marker === true) return markerCircleFill;\n  if (typeof marker === \"function\") return marker;\n  switch (`${marker}`.toLowerCase()) {\n    case \"none\":\n      return null;\n    case \"arrow\":\n      return markerArrow(\"auto\");\n    case \"arrow-reverse\":\n      return markerArrow(\"auto-start-reverse\");\n    case \"dot\":\n      return markerDot;\n    case \"circle\":\n    case \"circle-fill\":\n      return markerCircleFill;\n    case \"circle-stroke\":\n      return markerCircleStroke;\n  }\n  throw new Error(`invalid marker: ${marker}`);\n}\n\nfunction markerArrow(orient) {\n  return (color, context) =>\n    create(\"svg:marker\", context)\n      .attr(\"viewBox\", \"-5 -5 10 10\")\n      .attr(\"markerWidth\", 6.67)\n      .attr(\"markerHeight\", 6.67)\n      .attr(\"orient\", orient)\n      .attr(\"fill\", \"none\")\n      .attr(\"stroke\", color)\n      .attr(\"stroke-width\", 1.5)\n      .attr(\"stroke-linecap\", \"round\")\n      .attr(\"stroke-linejoin\", \"round\")\n      .call((marker) => marker.append(\"path\").attr(\"d\", \"M-1.5,-3l3,3l-3,3\"))\n      .node();\n}\n\nfunction markerDot(color, context) {\n  return create(\"svg:marker\", context)\n    .attr(\"viewBox\", \"-5 -5 10 10\")\n    .attr(\"markerWidth\", 6.67)\n    .attr(\"markerHeight\", 6.67)\n    .attr(\"fill\", color)\n    .attr(\"stroke\", \"none\")\n    .call((marker) => marker.append(\"circle\").attr(\"r\", 2.5))\n    .node();\n}\n\nfunction markerCircleFill(color, context) {\n  return create(\"svg:marker\", context)\n    .attr(\"viewBox\", \"-5 -5 10 10\")\n    .attr(\"markerWidth\", 6.67)\n    .attr(\"markerHeight\", 6.67)\n    .attr(\"fill\", color)\n    .attr(\"stroke\", \"white\")\n    .attr(\"stroke-width\", 1.5)\n    .call((marker) => marker.append(\"circle\").attr(\"r\", 3))\n    .node();\n}\n\nfunction markerCircleStroke(color, context) {\n  return create(\"svg:marker\", context)\n    .attr(\"viewBox\", \"-5 -5 10 10\")\n    .attr(\"markerWidth\", 6.67)\n    .attr(\"markerHeight\", 6.67)\n    .attr(\"fill\", \"white\")\n    .attr(\"stroke\", color)\n    .attr(\"stroke-width\", 1.5)\n    .call((marker) => marker.append(\"circle\").attr(\"r\", 3))\n    .node();\n}\n\nlet nextMarkerId = 0;\n\nexport function applyMarkers(path, mark, {stroke: S}, context) {\n  return applyMarkersColor(path, mark, S && ((i) => S[i]), context);\n}\n\nexport function applyGroupedMarkers(path, mark, {stroke: S}, context) {\n  return applyMarkersColor(path, mark, S && (([i]) => S[i]), context);\n}\n\nfunction applyMarkersColor(path, {markerStart, markerMid, markerEnd, stroke}, strokeof = () => stroke, context) {\n  const iriByMarkerColor = new Map();\n\n  function applyMarker(marker) {\n    return function (i) {\n      const color = strokeof(i);\n      let iriByColor = iriByMarkerColor.get(marker);\n      if (!iriByColor) iriByMarkerColor.set(marker, (iriByColor = new Map()));\n      let iri = iriByColor.get(color);\n      if (!iri) {\n        const node = this.parentNode.insertBefore(marker(color, context), this);\n        const id = `plot-marker-${++nextMarkerId}`;\n        node.setAttribute(\"id\", id);\n        iriByColor.set(color, (iri = `url(#${id})`));\n      }\n      return iri;\n    };\n  }\n\n  if (markerStart) path.attr(\"marker-start\", applyMarker(markerStart));\n  if (markerMid) path.attr(\"marker-mid\", applyMarker(markerMid));\n  if (markerEnd) path.attr(\"marker-end\", applyMarker(markerEnd));\n}\n", "import {offset} from \"../style.js\";\n\nexport function maybeInsetX({inset, insetLeft, insetRight, ...options} = {}) {\n  [insetLeft, insetRight] = maybeInset(inset, insetLeft, insetRight);\n  return {inset, insetLeft, insetRight, ...options};\n}\n\nexport function maybeInsetY({inset, insetTop, insetBottom, ...options} = {}) {\n  [insetTop, insetBottom] = maybeInset(inset, insetTop, insetBottom);\n  return {inset, insetTop, insetBottom, ...options};\n}\n\nfunction maybeInset(inset, inset1, inset2) {\n  return inset === undefined && inset1 === undefined && inset2 === undefined\n    ? offset\n      ? [1, 0]\n      : [0.5, 0.5]\n    : [inset1, inset2];\n}\n", "import {isTemporal, labelof, map, maybeInterval, maybeValue, valueof} from \"../options.js\";\nimport {maybeInsetX, maybeInsetY} from \"./inset.js\";\n\n// The interval may be specified either as x: {value, interval} or as {x,\n// interval}. The former can be used to specify separate intervals for x and y,\n// for example with Plot.rect.\nfunction maybeIntervalValue(value, {interval}) {\n  value = {...maybeValue(value)};\n  value.interval = maybeInterval(value.interval === undefined ? interval : value.interval);\n  return value;\n}\n\nfunction maybeIntervalK(k, maybeInsetK, options, trivial) {\n  const {[k]: v, [`${k}1`]: v1, [`${k}2`]: v2} = options;\n  const {value, interval} = maybeIntervalValue(v, options);\n  if (value == null || (interval == null && !trivial)) return options;\n  const label = labelof(v);\n  if (interval == null) {\n    let V;\n    const kv = {transform: (data) => V || (V = valueof(data, value)), label};\n    return {\n      ...options,\n      [k]: undefined,\n      [`${k}1`]: v1 === undefined ? kv : v1,\n      [`${k}2`]: v2 === undefined ? kv : v2\n    };\n  }\n  let D1, V1;\n  function transform(data) {\n    if (V1 !== undefined && data === D1) return V1; // memoize\n    return (V1 = map(valueof((D1 = data), value), (v) => interval.floor(v)));\n  }\n  return maybeInsetK({\n    ...options,\n    [k]: undefined,\n    [`${k}1`]: v1 === undefined ? {transform, label} : v1,\n    [`${k}2`]: v2 === undefined ? {transform: (data) => transform(data).map((v) => interval.offset(v)), label} : v2\n  });\n}\n\nfunction maybeIntervalMidK(k, maybeInsetK, options) {\n  const {[k]: v} = options;\n  const {value, interval} = maybeIntervalValue(v, options);\n  if (value == null || interval == null) return options;\n  return maybeInsetK({\n    ...options,\n    [k]: {\n      label: labelof(v),\n      transform: (data) => {\n        const V1 = map(valueof(data, value), (v) => interval.floor(v));\n        const V2 = V1.map((v) => interval.offset(v));\n        return V1.map(\n          isTemporal(V1)\n            ? (v1, v2) =>\n                v1 == null || isNaN((v1 = +v1)) || ((v2 = V2[v2]), v2 == null) || isNaN((v2 = +v2))\n                  ? undefined\n                  : new Date((v1 + v2) / 2)\n            : (v1, v2) => (v1 == null || ((v2 = V2[v2]), v2 == null) ? NaN : (+v1 + +v2) / 2)\n        );\n      }\n    }\n  });\n}\n\nexport function maybeTrivialIntervalX(options = {}) {\n  return maybeIntervalK(\"x\", maybeInsetX, options, true);\n}\n\nexport function maybeTrivialIntervalY(options = {}) {\n  return maybeIntervalK(\"y\", maybeInsetY, options, true);\n}\n\nexport function maybeIntervalX(options = {}) {\n  return maybeIntervalK(\"x\", maybeInsetX, options);\n}\n\nexport function maybeIntervalY(options = {}) {\n  return maybeIntervalK(\"y\", maybeInsetY, options);\n}\n\nexport function maybeIntervalMidX(options = {}) {\n  return maybeIntervalMidK(\"x\", maybeInsetX, options);\n}\n\nexport function maybeIntervalMidY(options = {}) {\n  return maybeIntervalMidK(\"y\", maybeInsetY, options);\n}\n", "import {create} from \"../context.js\";\nimport {Mark, withTip} from \"../mark.js\";\nimport {applyMarkers, markers} from \"../marker.js\";\nimport {identity, number} from \"../options.js\";\nimport {isCollapsed} from \"../scales.js\";\nimport {applyChannelStyles, applyDirectStyles, applyIndirectStyles, applyTransform, offset} from \"../style.js\";\nimport {maybeIntervalX, maybeIntervalY} from \"../transforms/interval.js\";\n\nconst defaults = {\n  ariaLabel: \"rule\",\n  fill: null,\n  stroke: \"currentColor\"\n};\n\nexport class RuleX extends Mark {\n  constructor(data, options = {}) {\n    const {x, y1, y2, inset = 0, insetTop = inset, insetBottom = inset} = options;\n    super(\n      data,\n      {\n        x: {value: x, scale: \"x\", optional: true},\n        y1: {value: y1, scale: \"y\", optional: true},\n        y2: {value: y2, scale: \"y\", optional: true}\n      },\n      withTip(options, \"x\"),\n      defaults\n    );\n    this.insetTop = number(insetTop);\n    this.insetBottom = number(insetBottom);\n    markers(this, options);\n  }\n  render(index, scales, channels, dimensions, context) {\n    const {x, y} = scales;\n    const {x: X, y1: Y1, y2: Y2} = channels;\n    const {width, height, marginTop, marginRight, marginLeft, marginBottom} = dimensions;\n    const {insetTop, insetBottom} = this;\n    return create(\"svg:g\", context)\n      .call(applyIndirectStyles, this, dimensions, context)\n      .call(applyTransform, this, {x: X && x}, offset, 0)\n      .call((g) =>\n        g\n          .selectAll()\n          .data(index)\n          .enter()\n          .append(\"line\")\n          .call(applyDirectStyles, this)\n          .attr(\"x1\", X ? (i) => X[i] : (marginLeft + width - marginRight) / 2)\n          .attr(\"x2\", X ? (i) => X[i] : (marginLeft + width - marginRight) / 2)\n          .attr(\"y1\", Y1 && !isCollapsed(y) ? (i) => Y1[i] + insetTop : marginTop + insetTop)\n          .attr(\n            \"y2\",\n            Y2 && !isCollapsed(y)\n              ? y.bandwidth\n                ? (i) => Y2[i] + y.bandwidth() - insetBottom\n                : (i) => Y2[i] - insetBottom\n              : height - marginBottom - insetBottom\n          )\n          .call(applyChannelStyles, this, channels)\n          .call(applyMarkers, this, channels, context)\n      )\n      .node();\n  }\n}\n\nexport class RuleY extends Mark {\n  constructor(data, options = {}) {\n    const {x1, x2, y, inset = 0, insetRight = inset, insetLeft = inset} = options;\n    super(\n      data,\n      {\n        y: {value: y, scale: \"y\", optional: true},\n        x1: {value: x1, scale: \"x\", optional: true},\n        x2: {value: x2, scale: \"x\", optional: true}\n      },\n      withTip(options, \"y\"),\n      defaults\n    );\n    this.insetRight = number(insetRight);\n    this.insetLeft = number(insetLeft);\n    markers(this, options);\n  }\n  render(index, scales, channels, dimensions, context) {\n    const {x, y} = scales;\n    const {y: Y, x1: X1, x2: X2} = channels;\n    const {width, height, marginTop, marginRight, marginLeft, marginBottom} = dimensions;\n    const {insetLeft, insetRight} = this;\n    return create(\"svg:g\", context)\n      .call(applyIndirectStyles, this, dimensions, context)\n      .call(applyTransform, this, {y: Y && y}, 0, offset)\n      .call((g) =>\n        g\n          .selectAll()\n          .data(index)\n          .enter()\n          .append(\"line\")\n          .call(applyDirectStyles, this)\n          .attr(\"x1\", X1 && !isCollapsed(x) ? (i) => X1[i] + insetLeft : marginLeft + insetLeft)\n          .attr(\n            \"x2\",\n            X2 && !isCollapsed(x)\n              ? x.bandwidth\n                ? (i) => X2[i] + x.bandwidth() - insetRight\n                : (i) => X2[i] - insetRight\n              : width - marginRight - insetRight\n          )\n          .attr(\"y1\", Y ? (i) => Y[i] : (marginTop + height - marginBottom) / 2)\n          .attr(\"y2\", Y ? (i) => Y[i] : (marginTop + height - marginBottom) / 2)\n          .call(applyChannelStyles, this, channels)\n          .call(applyMarkers, this, channels, context)\n      )\n      .node();\n  }\n}\n\nexport function ruleX(data, options) {\n  let {x = identity, y, y1, y2, ...rest} = maybeIntervalY(options);\n  [y1, y2] = maybeOptionalZero(y, y1, y2);\n  return new RuleX(data, {...rest, x, y1, y2});\n}\n\nexport function ruleY(data, options) {\n  let {y = identity, x, x1, x2, ...rest} = maybeIntervalX(options);\n  [x1, x2] = maybeOptionalZero(x, x1, x2);\n  return new RuleY(data, {...rest, y, x1, x2});\n}\n\n// For marks specified either as [0, x] or [x1, x2], or nothing.\nfunction maybeOptionalZero(x, x1, x2) {\n  if (x == null) {\n    if (x1 === undefined) {\n      if (x2 !== undefined) return [0, x2];\n    } else {\n      if (x2 === undefined) return [0, x1];\n    }\n  } else if (x1 === undefined) {\n    return x2 === undefined ? [0, x] : [x, x2];\n  } else if (x2 === undefined) {\n    return [x, x1];\n  }\n  return [x1, x2];\n}\n", "export function template(strings, ...parts) {\n  let n = parts.length;\n\n  // If any of the interpolated parameters are strings rather than functions,\n  // bake them into the template to optimize performance during render.\n  for (let j = 0, copy = true; j < n; ++j) {\n    if (typeof parts[j] !== \"function\") {\n      if (copy) {\n        strings = strings.slice(); // copy before mutate\n        copy = false;\n      }\n      strings.splice(j, 2, strings[j] + parts[j] + strings[j + 1]);\n      parts.splice(j, 1);\n      --j, --n;\n    }\n  }\n\n  return (i) => {\n    let s = strings[0];\n    for (let j = 0; j < n; ++j) {\n      s += parts[j](i) + strings[j + 1];\n    }\n    return s;\n  };\n}\n", "import {namespaces} from \"d3\";\nimport {create} from \"../context.js\";\nimport {nonempty} from \"../defined.js\";\nimport {formatDefault} from \"../format.js\";\nimport {Mark} from \"../mark.js\";\nimport {\n  indexOf,\n  identity,\n  string,\n  maybeNumberChannel,\n  maybeTuple,\n  numberChannel,\n  isNumeric,\n  isTemporal,\n  keyword,\n  maybeFrameAnchor,\n  isTextual,\n  isIterable\n} from \"../options.js\";\nimport {\n  applyChannelStyles,\n  applyDirectStyles,\n  applyIndirectStyles,\n  applyAttr,\n  applyTransform,\n  impliedString,\n  applyFrameAnchor\n} from \"../style.js\";\nimport {template} from \"../template.js\";\nimport {maybeIntervalMidX, maybeIntervalMidY} from \"../transforms/interval.js\";\n\nconst defaults = {\n  ariaLabel: \"text\",\n  strokeLinejoin: \"round\",\n  strokeWidth: 3,\n  paintOrder: \"stroke\"\n};\n\nconst softHyphen = \"\\u00ad\";\n\nexport class Text extends Mark {\n  constructor(data, options = {}) {\n    const {\n      x,\n      y,\n      text = isIterable(data) && isTextual(data) ? identity : indexOf,\n      frameAnchor,\n      textAnchor = /right$/i.test(frameAnchor) ? \"end\" : /left$/i.test(frameAnchor) ? \"start\" : \"middle\",\n      lineAnchor = /^top/i.test(frameAnchor) ? \"top\" : /^bottom/i.test(frameAnchor) ? \"bottom\" : \"middle\",\n      lineHeight = 1,\n      lineWidth = Infinity,\n      textOverflow,\n      monospace,\n      fontFamily = monospace ? \"ui-monospace, monospace\" : undefined,\n      fontSize,\n      fontStyle,\n      fontVariant,\n      fontWeight,\n      rotate\n    } = options;\n    const [vrotate, crotate] = maybeNumberChannel(rotate, 0);\n    const [vfontSize, cfontSize] = maybeFontSizeChannel(fontSize);\n    super(\n      data,\n      {\n        x: {value: x, scale: \"x\", optional: true},\n        y: {value: y, scale: \"y\", optional: true},\n        fontSize: {value: vfontSize, optional: true},\n        rotate: {value: numberChannel(vrotate), optional: true},\n        text: {value: text, filter: nonempty, optional: true}\n      },\n      options,\n      defaults\n    );\n    this.rotate = crotate;\n    this.textAnchor = impliedString(textAnchor, \"middle\");\n    this.lineAnchor = keyword(lineAnchor, \"lineAnchor\", [\"top\", \"middle\", \"bottom\"]);\n    this.lineHeight = +lineHeight;\n    this.lineWidth = +lineWidth;\n    this.textOverflow = maybeTextOverflow(textOverflow);\n    this.monospace = !!monospace;\n    this.fontFamily = string(fontFamily);\n    this.fontSize = cfontSize;\n    this.fontStyle = string(fontStyle);\n    this.fontVariant = string(fontVariant);\n    this.fontWeight = string(fontWeight);\n    this.frameAnchor = maybeFrameAnchor(frameAnchor);\n    if (!(this.lineWidth >= 0)) throw new Error(`invalid lineWidth: ${lineWidth}`);\n    this.splitLines = splitter(this);\n    this.clipLine = clipper(this);\n  }\n  render(index, scales, channels, dimensions, context) {\n    const {x, y} = scales;\n    const {x: X, y: Y, rotate: R, text: T, title: TL, fontSize: FS} = channels;\n    const {rotate} = this;\n    const [cx, cy] = applyFrameAnchor(this, dimensions);\n    return create(\"svg:g\", context)\n      .call(applyIndirectStyles, this, dimensions, context)\n      .call(applyIndirectTextStyles, this, T, dimensions)\n      .call(applyTransform, this, {x: X && x, y: Y && y})\n      .call((g) =>\n        g\n          .selectAll()\n          .data(index)\n          .enter()\n          .append(\"text\")\n          .call(applyDirectStyles, this)\n          .call(applyMultilineText, this, T, TL)\n          .attr(\n            \"transform\",\n            template`translate(${X ? (i) => X[i] : cx},${Y ? (i) => Y[i] : cy})${\n              R ? (i) => ` rotate(${R[i]})` : rotate ? ` rotate(${rotate})` : ``\n            }`\n          )\n          .call(applyAttr, \"font-size\", FS && ((i) => FS[i]))\n          .call(applyChannelStyles, this, channels)\n      )\n      .node();\n  }\n}\n\nexport function maybeTextOverflow(textOverflow) {\n  return textOverflow == null\n    ? null\n    : keyword(textOverflow, \"textOverflow\", [\n        \"clip\", // shorthand for clip-end\n        \"ellipsis\", // \u2026 ellipsis-end\n        \"clip-start\",\n        \"clip-end\",\n        \"ellipsis-start\",\n        \"ellipsis-middle\",\n        \"ellipsis-end\"\n      ]).replace(/^(clip|ellipsis)$/, \"$1-end\");\n}\n\nfunction applyMultilineText(selection, mark, T, TL) {\n  if (!T) return;\n  const {lineAnchor, lineHeight, textOverflow, splitLines, clipLine} = mark;\n  selection.each(function (i) {\n    const lines = splitLines(formatDefault(T[i]) ?? \"\").map(clipLine);\n    const n = lines.length;\n    const y = lineAnchor === \"top\" ? 0.71 : lineAnchor === \"bottom\" ? 1 - n : (164 - n * 100) / 200;\n    if (n > 1) {\n      let m = 0;\n      for (let i = 0; i < n; ++i) {\n        ++m;\n        if (!lines[i]) continue;\n        const tspan = this.ownerDocument.createElementNS(namespaces.svg, \"tspan\");\n        tspan.setAttribute(\"x\", 0);\n        if (i === m - 1) tspan.setAttribute(\"y\", `${(y + i) * lineHeight}em`);\n        else tspan.setAttribute(\"dy\", `${m * lineHeight}em`);\n        tspan.textContent = lines[i];\n        this.appendChild(tspan);\n        m = 0;\n      }\n    } else {\n      if (y) this.setAttribute(\"y\", `${y * lineHeight}em`);\n      this.textContent = lines[0];\n    }\n    if (textOverflow && !TL && lines[0] !== T[i]) {\n      const title = this.ownerDocument.createElementNS(namespaces.svg, \"title\");\n      title.textContent = T[i];\n      this.appendChild(title);\n    }\n  });\n}\n\nexport function text(data, {x, y, ...options} = {}) {\n  if (options.frameAnchor === undefined) [x, y] = maybeTuple(x, y);\n  return new Text(data, {...options, x, y});\n}\n\nexport function textX(data, {x = identity, ...options} = {}) {\n  return new Text(data, maybeIntervalMidY({...options, x}));\n}\n\nexport function textY(data, {y = identity, ...options} = {}) {\n  return new Text(data, maybeIntervalMidX({...options, y}));\n}\n\nexport function applyIndirectTextStyles(selection, mark, T) {\n  applyAttr(selection, \"text-anchor\", mark.textAnchor);\n  applyAttr(selection, \"font-family\", mark.fontFamily);\n  applyAttr(selection, \"font-size\", mark.fontSize);\n  applyAttr(selection, \"font-style\", mark.fontStyle);\n  applyAttr(selection, \"font-variant\", mark.fontVariant === undefined ? inferFontVariant(T) : mark.fontVariant);\n  applyAttr(selection, \"font-weight\", mark.fontWeight);\n}\n\nfunction inferFontVariant(T) {\n  return T && (isNumeric(T) || isTemporal(T)) ? \"tabular-nums\" : undefined;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/font-size\nconst fontSizes = new Set([\n  // global keywords\n  \"inherit\",\n  \"initial\",\n  \"revert\",\n  \"unset\",\n  // absolute keywords\n  \"xx-small\",\n  \"x-small\",\n  \"small\",\n  \"medium\",\n  \"large\",\n  \"x-large\",\n  \"xx-large\",\n  \"xxx-large\",\n  // relative keywords\n  \"larger\",\n  \"smaller\"\n]);\n\n// The font size may be expressed as a constant in the following forms:\n// - number in pixels\n// - string keyword: see above\n// - string <length>: e.g., \"12px\"\n// - string <percentage>: e.g., \"80%\"\n// Anything else is assumed to be a channel definition.\nfunction maybeFontSizeChannel(fontSize) {\n  if (fontSize == null || typeof fontSize === \"number\") return [undefined, fontSize];\n  if (typeof fontSize !== \"string\") return [fontSize, undefined];\n  fontSize = fontSize.trim().toLowerCase();\n  return fontSizes.has(fontSize) || /^[+-]?\\d*\\.?\\d+(e[+-]?\\d+)?(\\w*|%)$/.test(fontSize)\n    ? [undefined, fontSize]\n    : [fontSize, undefined];\n}\n\n// This is a greedy algorithm for line wrapping. It would be better to use the\n// Knuth\u2013Plass line breaking algorithm (but that would be much more complex).\n// https://en.wikipedia.org/wiki/Line_wrap_and_word_wrap\nfunction lineWrap(input, maxWidth, widthof) {\n  const lines = [];\n  let lineStart,\n    lineEnd = 0;\n  for (const [wordStart, wordEnd, required] of lineBreaks(input)) {\n    // Record the start of a line. This isn\u2019t the same as the previous line\u2019s\n    // end because we often skip spaces between lines.\n    if (lineStart === undefined) lineStart = wordStart;\n\n    // If the current line is not empty, and if adding the current word would\n    // make the line longer than the allowed width, then break the line at the\n    // previous word end.\n    if (lineEnd > lineStart && widthof(input, lineStart, wordEnd) > maxWidth) {\n      lines.push(input.slice(lineStart, lineEnd) + (input[lineEnd - 1] === softHyphen ? \"-\" : \"\"));\n      lineStart = wordStart;\n    }\n\n    // If this is a required break (a newline), emit the line and reset.\n    if (required) {\n      lines.push(input.slice(lineStart, wordEnd));\n      lineStart = undefined;\n      continue;\n    }\n\n    // Extend the current line to include the new word.\n    lineEnd = wordEnd;\n  }\n  return lines;\n}\n\n// This is a rudimentary (and U.S.-centric) algorithm for finding opportunities\n// to break lines between words. A better and far more comprehensive approach\n// would be to use the official Unicode Line Breaking Algorithm.\n// https://unicode.org/reports/tr14/\nfunction* lineBreaks(input) {\n  let i = 0,\n    j = 0;\n  const n = input.length;\n  while (j < n) {\n    let k = 1;\n    switch (input[j]) {\n      case softHyphen:\n      case \"-\": // hyphen\n        ++j;\n        yield [i, j, false];\n        i = j;\n        break;\n      case \" \":\n        yield [i, j, false];\n        while (input[++j] === \" \"); // skip multiple spaces\n        i = j;\n        break;\n      case \"\\r\":\n        if (input[j + 1] === \"\\n\") ++k; // falls through\n      case \"\\n\":\n        yield [i, j, true];\n        j += k;\n        i = j;\n        break;\n      default:\n        ++j;\n        break;\n    }\n  }\n  yield [i, j, true];\n}\n\n// Computed as round(measureText(text).width * 10) at 10px system-ui. For\n// characters that are not represented in this map, we\u2019d ideally want to use a\n// weighted average of what we expect to see. But since we don\u2019t really know\n// what that is, using \u201Ce\u201D seems reasonable.\nconst defaultWidthMap = {\n  a: 56,\n  b: 63,\n  c: 57,\n  d: 63,\n  e: 58,\n  f: 37,\n  g: 62,\n  h: 60,\n  i: 26,\n  j: 26,\n  k: 55,\n  l: 26,\n  m: 88,\n  n: 60,\n  o: 60,\n  p: 62,\n  q: 62,\n  r: 39,\n  s: 54,\n  t: 38,\n  u: 60,\n  v: 55,\n  w: 79,\n  x: 54,\n  y: 55,\n  z: 55,\n  A: 69,\n  B: 67,\n  C: 73,\n  D: 74,\n  E: 61,\n  F: 58,\n  G: 76,\n  H: 75,\n  I: 28,\n  J: 55,\n  K: 67,\n  L: 58,\n  M: 89,\n  N: 75,\n  O: 78,\n  P: 65,\n  Q: 78,\n  R: 67,\n  S: 65,\n  T: 65,\n  U: 75,\n  V: 69,\n  W: 98,\n  X: 69,\n  Y: 67,\n  Z: 67,\n  0: 64,\n  1: 48,\n  2: 62,\n  3: 64,\n  4: 66,\n  5: 63,\n  6: 65,\n  7: 58,\n  8: 65,\n  9: 65,\n  \" \": 29,\n  \"!\": 32,\n  '\"': 49,\n  \"'\": 31,\n  \"(\": 39,\n  \")\": 39,\n  \",\": 31,\n  \"-\": 48,\n  \".\": 31,\n  \"/\": 32,\n  \":\": 31,\n  \";\": 31,\n  \"?\": 52,\n  \"\u2018\": 31,\n  \"\u2019\": 31,\n  \"\u201C\": 47,\n  \"\u201D\": 47,\n  \"\u2026\": 82\n};\n\n// This is a rudimentary (and U.S.-centric) algorithm for measuring the width of\n// a string based on a technique of Gregor Aisch; it assumes that individual\n// characters are laid out independently and does not implement the Unicode\n// grapheme cluster breaking algorithm. It does understand code points, though,\n// and so treats things like emoji as having the width of a lowercase e (and\n// should be equivalent to using for-of to iterate over code points, while also\n// being fast). TODO Optimize this by noting that we often re-measure characters\n// that were previously measured?\n// http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries\n// https://exploringjs.com/impatient-js/ch_strings.html#atoms-of-text\nexport function defaultWidth(text, start = 0, end = text.length) {\n  let sum = 0;\n  for (let i = start; i < end; i = readCharacter(text, i)) {\n    sum += defaultWidthMap[text[i]] ?? (isPictographic(text, i) ? 120 : defaultWidthMap.e);\n  }\n  return sum;\n}\n\n// Even for monospaced text, we can\u2019t assume that the number of UTF-16 code\n// points (i.e., the length of a string) corresponds to the number of visible\n// characters; we still have to count graphemes. And note that pictographic\n// characters such as emojis are typically not monospaced!\nexport function monospaceWidth(text, start = 0, end = text.length) {\n  let sum = 0;\n  for (let i = start; i < end; i = readCharacter(text, i)) {\n    sum += isPictographic(text, i) ? 200 : 100;\n  }\n  return sum;\n}\n\nexport function splitter({monospace, lineWidth, textOverflow}) {\n  if (textOverflow != null || lineWidth == Infinity) return (text) => text.split(/\\r\\n?|\\n/g);\n  const widthof = monospace ? monospaceWidth : defaultWidth;\n  const maxWidth = lineWidth * 100;\n  return (text) => lineWrap(text, maxWidth, widthof);\n}\n\nexport function clipper({monospace, lineWidth, textOverflow}) {\n  if (textOverflow == null || lineWidth == Infinity) return (text) => text;\n  const widthof = monospace ? monospaceWidth : defaultWidth;\n  const maxWidth = lineWidth * 100;\n  switch (textOverflow) {\n    case \"clip-start\":\n      return (text) => clipStart(text, maxWidth, widthof, \"\");\n    case \"clip-end\":\n      return (text) => clipEnd(text, maxWidth, widthof, \"\");\n    case \"ellipsis-start\":\n      return (text) => clipStart(text, maxWidth, widthof, ellipsis);\n    case \"ellipsis-middle\":\n      return (text) => clipMiddle(text, maxWidth, widthof, ellipsis);\n    case \"ellipsis-end\":\n      return (text) => clipEnd(text, maxWidth, widthof, ellipsis);\n  }\n}\n\nexport const ellipsis = \"\u2026\";\n\n// Cuts the given text to the given width, using the specified widthof function;\n// the returned [index, error] guarantees text.slice(0, index) fits within the\n// specified width with the given error. If the text fits naturally within the\n// given width, returns [-1, 0]. If the text needs cutting, the given inset\n// specifies how much space (in the same units as width and widthof) to reserve\n// for a possible ellipsis character.\nexport function cut(text, width, widthof, inset) {\n  const I = []; // indexes of read character boundaries\n  let w = 0; // current line width\n  for (let i = 0, j = 0, n = text.length; i < n; i = j) {\n    j = readCharacter(text, i); // read the next character\n    const l = widthof(text, i, j); // current character width\n    if (w + l > width) {\n      w += inset;\n      while (w > width && i > 0) (j = i), (i = I.pop()), (w -= widthof(text, i, j)); // remove excess\n      return [i, width - w];\n    }\n    w += l;\n    I.push(i);\n  }\n  return [-1, 0];\n}\n\nexport function clipEnd(text, width, widthof, ellipsis) {\n  text = text.trim(); // ignore leading and trailing whitespace\n  const e = widthof(ellipsis);\n  const [i] = cut(text, width, widthof, e);\n  return i < 0 ? text : text.slice(0, i).trimEnd() + ellipsis;\n}\n\nexport function clipMiddle(text, width, widthof, ellipsis) {\n  text = text.trim(); // ignore leading and trailing whitespace\n  const w = widthof(text);\n  if (w <= width) return text;\n  const e = widthof(ellipsis) / 2;\n  const [i, ei] = cut(text, width / 2, widthof, e);\n  const [j] = cut(text, w - width / 2 - ei + e, widthof, -e); // TODO read spaces?\n  return j < 0 ? ellipsis : text.slice(0, i).trimEnd() + ellipsis + text.slice(readCharacter(text, j)).trimStart();\n}\n\nexport function clipStart(text, width, widthof, ellipsis) {\n  text = text.trim(); // ignore leading and trailing whitespace\n  const w = widthof(text);\n  if (w <= width) return text;\n  const e = widthof(ellipsis);\n  const [j] = cut(text, w - width + e, widthof, -e); // TODO read spaces?\n  return j < 0 ? ellipsis : ellipsis + text.slice(readCharacter(text, j)).trimStart();\n}\n\nconst reCombiner = /[\\p{Combining_Mark}\\p{Emoji_Modifier}]+/uy;\nconst rePictographic = /\\p{Extended_Pictographic}/uy;\n\n// Reads a single \u201Ccharacter\u201D element from the given text starting at the given\n// index, returning the index after the read character. Ideally, this implements\n// the Unicode text segmentation algorithm and understands grapheme cluster\n// boundaries, etc., but in practice this is only smart enough to detect UTF-16\n// surrogate pairs, combining marks, and zero-width joiner (zwj) sequences such\n// as emoji skin color modifiers. https://unicode.org/reports/tr29/\nexport function readCharacter(text, i) {\n  i += isSurrogatePair(text, i) ? 2 : 1;\n  if (isCombiner(text, i)) i = reCombiner.lastIndex;\n  if (isZeroWidthJoiner(text, i)) return readCharacter(text, i + 1);\n  return i;\n}\n\n// We avoid more expensive regex tests involving Unicode property classes by\n// first checking for the common case of 7-bit ASCII characters.\nfunction isAscii(text, i) {\n  return text.charCodeAt(i) < 0x80;\n}\n\nfunction isSurrogatePair(text, i) {\n  const hi = text.charCodeAt(i);\n  if (hi >= 0xd800 && hi < 0xdc00) {\n    const lo = text.charCodeAt(i + 1);\n    return lo >= 0xdc00 && lo < 0xe000;\n  }\n  return false;\n}\n\nfunction isZeroWidthJoiner(text, i) {\n  return text.charCodeAt(i) === 0x200d;\n}\n\nfunction isCombiner(text, i) {\n  return isAscii(text, i) ? false : ((reCombiner.lastIndex = i), reCombiner.test(text));\n}\n\nfunction isPictographic(text, i) {\n  return isAscii(text, i) ? false : ((rePictographic.lastIndex = i), rePictographic.test(text));\n}\n", "import {pathRound as path} from \"d3\";\nimport {create} from \"../context.js\";\nimport {Mark} from \"../mark.js\";\nimport {maybeFrameAnchor, maybeNumberChannel, maybeTuple, keyword, identity} from \"../options.js\";\nimport {\n  applyChannelStyles,\n  applyDirectStyles,\n  applyFrameAnchor,\n  applyIndirectStyles,\n  applyTransform\n} from \"../style.js\";\nimport {template} from \"../template.js\";\n\nconst defaults = {\n  ariaLabel: \"vector\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  strokeWidth: 1.5,\n  strokeLinejoin: \"round\",\n  strokeLinecap: \"round\"\n};\n\nconst defaultRadius = 3.5;\n\n// The size of the arrowhead is proportional to its length, but we still allow\n// the relative size of the head to be controlled via the mark\u2019s width option;\n// doubling the default radius will produce an arrowhead that is twice as big.\n// That said, we\u2019ll probably want a arrow with a fixed head size, too.\nconst wingRatio = defaultRadius * 5;\n\nconst shapeArrow = {\n  draw(context, l, r) {\n    const wing = (l * r) / wingRatio;\n    context.moveTo(0, 0);\n    context.lineTo(0, -l);\n    context.moveTo(-wing, wing - l);\n    context.lineTo(0, -l);\n    context.lineTo(wing, wing - l);\n  }\n};\n\nconst shapeSpike = {\n  draw(context, l, r) {\n    context.moveTo(-r, 0);\n    context.lineTo(0, -l);\n    context.lineTo(r, 0);\n  }\n};\n\nconst shapes = new Map([\n  [\"arrow\", shapeArrow],\n  [\"spike\", shapeSpike]\n]);\n\nfunction isShapeObject(value) {\n  return value && typeof value.draw === \"function\";\n}\n\nfunction maybeShape(shape) {\n  if (isShapeObject(shape)) return shape;\n  const value = shapes.get(`${shape}`.toLowerCase());\n  if (value) return value;\n  throw new Error(`invalid shape: ${shape}`);\n}\n\nexport class Vector extends Mark {\n  constructor(data, options = {}) {\n    const {x, y, r = defaultRadius, length, rotate, shape = shapeArrow, anchor = \"middle\", frameAnchor} = options;\n    const [vl, cl] = maybeNumberChannel(length, 12);\n    const [vr, cr] = maybeNumberChannel(rotate, 0);\n    super(\n      data,\n      {\n        x: {value: x, scale: \"x\", optional: true},\n        y: {value: y, scale: \"y\", optional: true},\n        length: {value: vl, scale: \"length\", optional: true},\n        rotate: {value: vr, optional: true}\n      },\n      options,\n      defaults\n    );\n    this.r = +r;\n    this.length = cl;\n    this.rotate = cr;\n    this.shape = maybeShape(shape);\n    this.anchor = keyword(anchor, \"anchor\", [\"start\", \"middle\", \"end\"]);\n    this.frameAnchor = maybeFrameAnchor(frameAnchor);\n  }\n  render(index, scales, channels, dimensions, context) {\n    const {x, y} = scales;\n    const {x: X, y: Y, length: L, rotate: A} = channels;\n    const {length, rotate, anchor, shape, r} = this;\n    const [cx, cy] = applyFrameAnchor(this, dimensions);\n    return create(\"svg:g\", context)\n      .call(applyIndirectStyles, this, dimensions, context)\n      .call(applyTransform, this, {x: X && x, y: Y && y})\n      .call((g) =>\n        g\n          .selectAll()\n          .data(index)\n          .enter()\n          .append(\"path\")\n          .call(applyDirectStyles, this)\n          .attr(\n            \"transform\",\n            template`translate(${X ? (i) => X[i] : cx},${Y ? (i) => Y[i] : cy})${\n              A ? (i) => ` rotate(${A[i]})` : rotate ? ` rotate(${rotate})` : ``\n            }${\n              anchor === \"start\"\n                ? ``\n                : anchor === \"end\"\n                ? L\n                  ? (i) => ` translate(0,${L[i]})`\n                  : ` translate(0,${length})`\n                : L\n                ? (i) => ` translate(0,${L[i] / 2})`\n                : ` translate(0,${length / 2})`\n            }`\n          )\n          .attr(\n            \"d\",\n            L\n              ? (i) => {\n                  const p = path();\n                  shape.draw(p, L[i], r);\n                  return p;\n                }\n              : (() => {\n                  const p = path();\n                  shape.draw(p, length, r);\n                  return p;\n                })()\n          )\n          .call(applyChannelStyles, this, channels)\n      )\n      .node();\n  }\n}\n\nexport function vector(data, options = {}) {\n  let {x, y, ...rest} = options;\n  if (options.frameAnchor === undefined) [x, y] = maybeTuple(x, y);\n  return new Vector(data, {...rest, x, y});\n}\n\nexport function vectorX(data, options = {}) {\n  const {x = identity, ...rest} = options;\n  return new Vector(data, {...rest, x});\n}\n\nexport function vectorY(data, options = {}) {\n  const {y = identity, ...rest} = options;\n  return new Vector(data, {...rest, y});\n}\n\nexport function spike(data, options = {}) {\n  const {\n    shape = shapeSpike,\n    stroke = defaults.stroke,\n    strokeWidth = 1,\n    fill = stroke,\n    fillOpacity = 0.3,\n    anchor = \"start\",\n    ...rest\n  } = options;\n  return vector(data, {...rest, shape, stroke, strokeWidth, fill, fillOpacity, anchor});\n}\n", "import {extent, format, timeFormat, utcFormat} from \"d3\";\nimport {formatDefault} from \"../format.js\";\nimport {marks} from \"../mark.js\";\nimport {radians} from \"../math.js\";\nimport {arrayify, constant, identity, keyword, number, range, valueof} from \"../options.js\";\nimport {isIterable, isNoneish, isTemporal, orderof} from \"../options.js\";\nimport {maybeColorChannel, maybeNumberChannel, maybeRangeInterval} from \"../options.js\";\nimport {isTemporalScale} from \"../scales.js\";\nimport {offset} from \"../style.js\";\nimport {formatTimeTicks, isTimeYear, isUtcYear} from \"../time.js\";\nimport {initializer} from \"../transforms/basic.js\";\nimport {ruleX, ruleY} from \"./rule.js\";\nimport {text, textX, textY} from \"./text.js\";\nimport {vectorX, vectorY} from \"./vector.js\";\n\nfunction maybeData(data, options) {\n  if (arguments.length < 2 && !isIterable(data)) (options = data), (data = null);\n  if (options === undefined) options = {};\n  return [data, options];\n}\n\nfunction maybeAnchor({anchor} = {}, anchors) {\n  return anchor === undefined ? anchors[0] : keyword(anchor, \"anchor\", anchors);\n}\n\nfunction anchorY(options) {\n  return maybeAnchor(options, [\"left\", \"right\"]);\n}\n\nfunction anchorFy(options) {\n  return maybeAnchor(options, [\"right\", \"left\"]);\n}\n\nfunction anchorX(options) {\n  return maybeAnchor(options, [\"bottom\", \"top\"]);\n}\n\nfunction anchorFx(options) {\n  return maybeAnchor(options, [\"top\", \"bottom\"]);\n}\n\nexport function axisY() {\n  const [data, options] = maybeData(...arguments);\n  return axisKy(\"y\", anchorY(options), data, options);\n}\n\nexport function axisFy() {\n  const [data, options] = maybeData(...arguments);\n  return axisKy(\"fy\", anchorFy(options), data, options);\n}\n\nexport function axisX() {\n  const [data, options] = maybeData(...arguments);\n  return axisKx(\"x\", anchorX(options), data, options);\n}\n\nexport function axisFx() {\n  const [data, options] = maybeData(...arguments);\n  return axisKx(\"fx\", anchorFx(options), data, options);\n}\n\nfunction axisKy(\n  k,\n  anchor,\n  data,\n  {\n    color = \"currentColor\",\n    opacity = 1,\n    stroke = color,\n    strokeOpacity = opacity,\n    strokeWidth = 1,\n    fill = color,\n    fillOpacity = opacity,\n    textAnchor,\n    textStroke,\n    textStrokeOpacity,\n    textStrokeWidth,\n    tickSize = k === \"y\" ? 6 : 0,\n    tickPadding,\n    tickRotate,\n    x,\n    margin,\n    marginTop = margin === undefined ? 20 : margin,\n    marginRight = margin === undefined ? (anchor === \"right\" ? 40 : 0) : margin,\n    marginBottom = margin === undefined ? 20 : margin,\n    marginLeft = margin === undefined ? (anchor === \"left\" ? 40 : 0) : margin,\n    label,\n    labelAnchor,\n    labelArrow,\n    labelOffset,\n    ...options\n  }\n) {\n  tickSize = number(tickSize);\n  tickPadding = number(tickPadding);\n  tickRotate = number(tickRotate);\n  if (labelAnchor !== undefined) labelAnchor = keyword(labelAnchor, \"labelAnchor\", [\"center\", \"top\", \"bottom\"]);\n  labelArrow = maybeLabelArrow(labelArrow);\n  return marks(\n    tickSize && !isNoneish(stroke)\n      ? axisTickKy(k, anchor, data, {\n          stroke,\n          strokeOpacity,\n          strokeWidth,\n          tickSize,\n          tickPadding,\n          tickRotate,\n          x,\n          ...options\n        })\n      : null,\n    !isNoneish(fill)\n      ? axisTextKy(k, anchor, data, {\n          fill,\n          fillOpacity,\n          stroke: textStroke,\n          strokeOpacity: textStrokeOpacity,\n          strokeWidth: textStrokeWidth,\n          textAnchor,\n          tickSize,\n          tickPadding,\n          tickRotate,\n          x,\n          marginTop,\n          marginRight,\n          marginBottom,\n          marginLeft,\n          ...options\n        })\n      : null,\n    !isNoneish(fill) && label !== null\n      ? text(\n          [],\n          labelOptions({fill, fillOpacity, ...options}, function (data, facets, channels, scales, dimensions) {\n            const scale = scales[k];\n            const {marginTop, marginRight, marginBottom, marginLeft} = (k === \"y\" && dimensions.inset) || dimensions;\n            const cla = labelAnchor ?? (scale.bandwidth ? \"center\" : \"top\");\n            const clo = labelOffset ?? (anchor === \"right\" ? marginRight : marginLeft) - 3;\n            if (cla === \"center\") {\n              this.textAnchor = undefined; // middle\n              this.lineAnchor = anchor === \"right\" ? \"bottom\" : \"top\";\n              this.frameAnchor = anchor;\n              this.rotate = -90;\n            } else {\n              this.textAnchor = anchor === \"right\" ? \"end\" : \"start\";\n              this.lineAnchor = cla;\n              this.frameAnchor = `${cla}-${anchor}`;\n              this.rotate = 0;\n            }\n            this.dy = cla === \"top\" ? 3 - marginTop : cla === \"bottom\" ? marginBottom - 3 : 0;\n            this.dx = anchor === \"right\" ? clo : -clo;\n            this.ariaLabel = `${k}-axis label`;\n            return {\n              facets: [[0]],\n              channels: {text: {value: [formatAxisLabel(k, scale, {anchor, label, labelAnchor: cla, labelArrow})]}}\n            };\n          })\n        )\n      : null\n  );\n}\n\nfunction axisKx(\n  k,\n  anchor,\n  data,\n  {\n    color = \"currentColor\",\n    opacity = 1,\n    stroke = color,\n    strokeOpacity = opacity,\n    strokeWidth = 1,\n    fill = color,\n    fillOpacity = opacity,\n    textAnchor,\n    textStroke,\n    textStrokeOpacity,\n    textStrokeWidth,\n    tickSize = k === \"x\" ? 6 : 0,\n    tickPadding,\n    tickRotate,\n    y,\n    margin,\n    marginTop = margin === undefined ? (anchor === \"top\" ? 30 : 0) : margin,\n    marginRight = margin === undefined ? 20 : margin,\n    marginBottom = margin === undefined ? (anchor === \"bottom\" ? 30 : 0) : margin,\n    marginLeft = margin === undefined ? 20 : margin,\n    label,\n    labelAnchor,\n    labelArrow,\n    labelOffset,\n    ...options\n  }\n) {\n  tickSize = number(tickSize);\n  tickPadding = number(tickPadding);\n  tickRotate = number(tickRotate);\n  if (labelAnchor !== undefined) labelAnchor = keyword(labelAnchor, \"labelAnchor\", [\"center\", \"left\", \"right\"]);\n  labelArrow = maybeLabelArrow(labelArrow);\n  return marks(\n    tickSize && !isNoneish(stroke)\n      ? axisTickKx(k, anchor, data, {\n          stroke,\n          strokeOpacity,\n          strokeWidth,\n          tickSize,\n          tickPadding,\n          tickRotate,\n          y,\n          ...options\n        })\n      : null,\n    !isNoneish(fill)\n      ? axisTextKx(k, anchor, data, {\n          fill,\n          fillOpacity,\n          stroke: textStroke,\n          strokeOpacity: textStrokeOpacity,\n          strokeWidth: textStrokeWidth,\n          textAnchor,\n          tickSize,\n          tickPadding,\n          tickRotate,\n          y,\n          marginTop,\n          marginRight,\n          marginBottom,\n          marginLeft,\n          ...options\n        })\n      : null,\n    !isNoneish(fill) && label !== null\n      ? text(\n          [],\n          labelOptions({fill, fillOpacity, ...options}, function (data, facets, channels, scales, dimensions) {\n            const scale = scales[k];\n            const {marginTop, marginRight, marginBottom, marginLeft} = (k === \"x\" && dimensions.inset) || dimensions;\n            const cla = labelAnchor ?? (scale.bandwidth ? \"center\" : \"right\");\n            const clo = labelOffset ?? (anchor === \"top\" ? marginTop : marginBottom) - 3;\n            if (cla === \"center\") {\n              this.frameAnchor = anchor;\n              this.textAnchor = undefined; // middle\n            } else {\n              this.frameAnchor = `${anchor}-${cla}`;\n              this.textAnchor = cla === \"right\" ? \"end\" : \"start\";\n            }\n            this.lineAnchor = anchor;\n            this.dy = anchor === \"top\" ? -clo : clo;\n            this.dx = cla === \"right\" ? marginRight - 3 : cla === \"left\" ? 3 - marginLeft : 0;\n            this.ariaLabel = `${k}-axis label`;\n            return {\n              facets: [[0]],\n              channels: {text: {value: [formatAxisLabel(k, scale, {anchor, label, labelAnchor: cla, labelArrow})]}}\n            };\n          })\n        )\n      : null\n  );\n}\n\nfunction axisTickKy(\n  k,\n  anchor,\n  data,\n  {\n    strokeWidth = 1,\n    strokeLinecap = null,\n    strokeLinejoin = null,\n    facetAnchor = anchor + (k === \"y\" ? \"-empty\" : \"\"),\n    frameAnchor = anchor,\n    tickSize,\n    inset = 0,\n    insetLeft = inset,\n    insetRight = inset,\n    dx = 0,\n    y = k === \"y\" ? undefined : null,\n    ...options\n  }\n) {\n  return axisMark(vectorY, k, `${k}-axis tick`, data, {\n    strokeWidth,\n    strokeLinecap,\n    strokeLinejoin,\n    facetAnchor,\n    frameAnchor,\n    y,\n    ...options,\n    dx: anchor === \"left\" ? +dx - offset + +insetLeft : +dx + offset - insetRight,\n    anchor: \"start\",\n    length: tickSize,\n    shape: anchor === \"left\" ? shapeTickLeft : shapeTickRight\n  });\n}\n\nfunction axisTickKx(\n  k,\n  anchor,\n  data,\n  {\n    strokeWidth = 1,\n    strokeLinecap = null,\n    strokeLinejoin = null,\n    facetAnchor = anchor + (k === \"x\" ? \"-empty\" : \"\"),\n    frameAnchor = anchor,\n    tickSize,\n    inset = 0,\n    insetTop = inset,\n    insetBottom = inset,\n    dy = 0,\n    x = k === \"x\" ? undefined : null,\n    ...options\n  }\n) {\n  return axisMark(vectorX, k, `${k}-axis tick`, data, {\n    strokeWidth,\n    strokeLinejoin,\n    strokeLinecap,\n    facetAnchor,\n    frameAnchor,\n    x,\n    ...options,\n    dy: anchor === \"bottom\" ? +dy - offset - insetBottom : +dy + offset + +insetTop,\n    anchor: \"start\",\n    length: tickSize,\n    shape: anchor === \"bottom\" ? shapeTickBottom : shapeTickTop\n  });\n}\n\nfunction axisTextKy(\n  k,\n  anchor,\n  data,\n  {\n    facetAnchor = anchor + (k === \"y\" ? \"-empty\" : \"\"),\n    frameAnchor = anchor,\n    tickSize,\n    tickRotate = 0,\n    tickPadding = Math.max(3, 9 - tickSize) + (Math.abs(tickRotate) > 60 ? 4 * Math.cos(tickRotate * radians) : 0),\n    tickFormat,\n    text = typeof tickFormat === \"function\" ? tickFormat : undefined,\n    textAnchor = Math.abs(tickRotate) > 60 ? \"middle\" : anchor === \"left\" ? \"end\" : \"start\",\n    lineAnchor = tickRotate > 60 ? \"top\" : tickRotate < -60 ? \"bottom\" : \"middle\",\n    fontVariant,\n    inset = 0,\n    insetLeft = inset,\n    insetRight = inset,\n    dx = 0,\n    y = k === \"y\" ? undefined : null,\n    ...options\n  }\n) {\n  return axisMark(\n    textY,\n    k,\n    `${k}-axis tick label`,\n    data,\n    {\n      facetAnchor,\n      frameAnchor,\n      text: text === undefined ? null : text,\n      textAnchor,\n      lineAnchor,\n      fontVariant,\n      rotate: tickRotate,\n      y,\n      ...options,\n      dx: anchor === \"left\" ? +dx - tickSize - tickPadding + +insetLeft : +dx + +tickSize + +tickPadding - insetRight\n    },\n    function (scale, data, ticks, channels) {\n      if (fontVariant === undefined) this.fontVariant = inferFontVariant(scale);\n      if (text === undefined) channels.text = inferTextChannel(scale, data, ticks, tickFormat, anchor);\n    }\n  );\n}\n\nfunction axisTextKx(\n  k,\n  anchor,\n  data,\n  {\n    facetAnchor = anchor + (k === \"x\" ? \"-empty\" : \"\"),\n    frameAnchor = anchor,\n    tickSize,\n    tickRotate = 0,\n    tickPadding = Math.max(3, 9 - tickSize) + (Math.abs(tickRotate) >= 10 ? 4 * Math.cos(tickRotate * radians) : 0),\n    tickFormat,\n    text = typeof tickFormat === \"function\" ? tickFormat : undefined,\n    textAnchor = Math.abs(tickRotate) >= 10 ? ((tickRotate < 0) ^ (anchor === \"bottom\") ? \"start\" : \"end\") : \"middle\",\n    lineAnchor = Math.abs(tickRotate) >= 10 ? \"middle\" : anchor === \"bottom\" ? \"top\" : \"bottom\",\n    fontVariant,\n    inset = 0,\n    insetTop = inset,\n    insetBottom = inset,\n    dy = 0,\n    x = k === \"x\" ? undefined : null,\n    ...options\n  }\n) {\n  return axisMark(\n    textX,\n    k,\n    `${k}-axis tick label`,\n    data,\n    {\n      facetAnchor,\n      frameAnchor,\n      text: text === undefined ? null : text,\n      textAnchor,\n      lineAnchor,\n      fontVariant,\n      rotate: tickRotate,\n      x,\n      ...options,\n      dy: anchor === \"bottom\" ? +dy + +tickSize + +tickPadding - insetBottom : +dy - tickSize - tickPadding + +insetTop\n    },\n    function (scale, data, ticks, channels) {\n      if (fontVariant === undefined) this.fontVariant = inferFontVariant(scale);\n      if (text === undefined) channels.text = inferTextChannel(scale, data, ticks, tickFormat, anchor);\n    }\n  );\n}\n\nexport function gridY() {\n  const [data, options] = maybeData(...arguments);\n  return gridKy(\"y\", anchorY(options), data, options);\n}\n\nexport function gridFy() {\n  const [data, options] = maybeData(...arguments);\n  return gridKy(\"fy\", anchorFy(options), data, options);\n}\n\nexport function gridX() {\n  const [data, options] = maybeData(...arguments);\n  return gridKx(\"x\", anchorX(options), data, options);\n}\n\nexport function gridFx() {\n  const [data, options] = maybeData(...arguments);\n  return gridKx(\"fx\", anchorFx(options), data, options);\n}\n\nfunction gridKy(\n  k,\n  anchor,\n  data,\n  {\n    y = k === \"y\" ? undefined : null,\n    x = null,\n    x1 = anchor === \"left\" ? x : null,\n    x2 = anchor === \"right\" ? x : null,\n    ...options\n  }\n) {\n  return axisMark(ruleY, k, `${k}-grid`, data, {y, x1, x2, ...gridDefaults(options)});\n}\n\nfunction gridKx(\n  k,\n  anchor,\n  data,\n  {\n    x = k === \"x\" ? undefined : null,\n    y = null,\n    y1 = anchor === \"top\" ? y : null,\n    y2 = anchor === \"bottom\" ? y : null,\n    ...options\n  }\n) {\n  return axisMark(ruleX, k, `${k}-grid`, data, {x, y1, y2, ...gridDefaults(options)});\n}\n\nfunction gridDefaults({\n  color = \"currentColor\",\n  opacity = 0.1,\n  stroke = color,\n  strokeOpacity = opacity,\n  strokeWidth = 1,\n  ...options\n}) {\n  return {stroke, strokeOpacity, strokeWidth, ...options};\n}\n\nfunction labelOptions(\n  {fill, fillOpacity, fontFamily, fontSize, fontStyle, fontWeight, monospace, pointerEvents, shapeRendering},\n  initializer\n) {\n  // Only propagate these options if constant.\n  [, fill] = maybeColorChannel(fill);\n  [, fillOpacity] = maybeNumberChannel(fillOpacity);\n  return {\n    facet: \"super\",\n    x: null,\n    y: null,\n    fill,\n    fillOpacity,\n    fontFamily,\n    fontSize,\n    fontStyle,\n    fontWeight,\n    monospace,\n    pointerEvents,\n    shapeRendering,\n    initializer\n  };\n}\n\nfunction axisMark(mark, k, ariaLabel, data, options, initialize) {\n  let channels;\n\n  function axisInitializer(data, facets, _channels, scales, dimensions, context) {\n    const initializeFacets = data == null && (k === \"fx\" || k === \"fy\");\n    const {[k]: scale} = scales;\n    if (!scale) throw new Error(`missing scale: ${k}`);\n    let {ticks, tickSpacing, interval} = options;\n    if (isTemporalScale(scale) && typeof ticks === \"string\") (interval = ticks), (ticks = undefined);\n    if (data == null) {\n      if (isIterable(ticks)) {\n        data = arrayify(ticks);\n      } else if (scale.ticks) {\n        if (ticks !== undefined) {\n          data = scale.ticks(ticks);\n        } else {\n          interval = maybeRangeInterval(interval === undefined ? scale.interval : interval, scale.type);\n          if (interval !== undefined) {\n            // For time scales, we could pass the interval directly to\n            // scale.ticks because it\u2019s supported by d3.utcTicks; but\n            // quantitative scales and d3.ticks do not support numeric\n            // intervals for scale.ticks, so we compute them here.\n            const [min, max] = extent(scale.domain());\n            data = interval.range(min, interval.offset(interval.floor(max))); // inclusive max\n          } else {\n            const [min, max] = extent(scale.range());\n            ticks = (max - min) / (tickSpacing === undefined ? (k === \"x\" ? 80 : 35) : tickSpacing);\n            data = scale.ticks(ticks);\n          }\n        }\n      } else {\n        data = scale.domain();\n      }\n      if (k === \"y\" || k === \"x\") {\n        facets = [range(data)];\n      } else {\n        channels[k] = {scale: k, value: identity};\n      }\n    }\n    initialize?.call(this, scale, data, ticks, channels);\n    const initializedChannels = Object.fromEntries(\n      Object.entries(channels).map(([name, channel]) => {\n        return [name, {...channel, value: valueof(data, channel.value)}];\n      })\n    );\n    if (initializeFacets) facets = context.filterFacets(data, initializedChannels);\n    return {data, facets, channels: initializedChannels};\n  }\n\n  // Apply any basic initializers after the axis initializer computes the ticks.\n  const basicInitializer = initializer(options).initializer;\n  const m = mark(data, initializer({...options, initializer: axisInitializer}, basicInitializer));\n  if (data == null) {\n    channels = m.channels;\n    m.channels = {};\n  } else {\n    channels = {};\n  }\n  m.ariaLabel = ariaLabel;\n  return m;\n}\n\nfunction inferTextChannel(scale, data, ticks, tickFormat, anchor) {\n  return {value: inferTickFormat(scale, data, ticks, tickFormat, anchor)};\n}\n\n// D3\u2019s ordinal scales simply use toString by default, but if the ordinal scale\n// domain (or ticks) are numbers or dates (say because we\u2019re applying a time\n// interval to the ordinal scale), we want Plot\u2019s default formatter.\nexport function inferTickFormat(scale, data, ticks, tickFormat, anchor) {\n  return tickFormat === undefined && isTemporalScale(scale)\n    ? formatTimeTicks(scale, data, ticks, anchor)\n    : scale.tickFormat\n    ? scale.tickFormat(isIterable(ticks) ? null : ticks, tickFormat)\n    : tickFormat === undefined\n    ? isUtcYear(scale.interval)\n      ? utcFormat(\"%Y\")\n      : isTimeYear(scale.interval)\n      ? timeFormat(\"%Y\")\n      : formatDefault\n    : typeof tickFormat === \"string\"\n    ? (isTemporal(scale.domain()) ? utcFormat : format)(tickFormat)\n    : constant(tickFormat);\n}\n\nconst shapeTickBottom = {\n  draw(context, l) {\n    context.moveTo(0, 0);\n    context.lineTo(0, l);\n  }\n};\n\nconst shapeTickTop = {\n  draw(context, l) {\n    context.moveTo(0, 0);\n    context.lineTo(0, -l);\n  }\n};\n\nconst shapeTickLeft = {\n  draw(context, l) {\n    context.moveTo(0, 0);\n    context.lineTo(-l, 0);\n  }\n};\n\nconst shapeTickRight = {\n  draw(context, l) {\n    context.moveTo(0, 0);\n    context.lineTo(l, 0);\n  }\n};\n\n// TODO Unify this with the other inferFontVariant; here we only have a scale\n// function rather than a scale descriptor.\nfunction inferFontVariant(scale) {\n  return scale.bandwidth && !scale.interval ? undefined : \"tabular-nums\";\n}\n\n// Determines whether the scale points in the \u201Cpositive\u201D (right or down) or\n// \u201Cnegative\u201D (left or up) direction; if the scale order cannot be determined,\n// returns NaN; used to assign an appropriate label arrow.\nfunction inferScaleOrder(scale) {\n  return Math.sign(orderof(scale.domain())) * Math.sign(orderof(scale.range()));\n}\n\n// Takes the scale label, and if this is not an ordinal scale and the label was\n// inferred from an associated channel, adds an orientation-appropriate arrow.\nfunction formatAxisLabel(k, scale, {anchor, label = scale.label, labelAnchor, labelArrow} = {}) {\n  if (label == null || (label.inferred && isTemporalish(scale) && /^(date|time|year)$/i.test(label))) return;\n  label = String(label); // coerce to a string after checking if inferred\n  if (labelArrow === \"auto\") labelArrow = (!scale.bandwidth || scale.interval) && !/[\u2191\u2193\u2192\u2190]/.test(label);\n  if (!labelArrow) return label;\n  if (labelArrow === true) {\n    const order = inferScaleOrder(scale);\n    if (order)\n      labelArrow =\n        /x$/.test(k) || labelAnchor === \"center\"\n          ? /x$/.test(k) === order < 0\n            ? \"left\"\n            : \"right\"\n          : order < 0\n          ? \"up\"\n          : \"down\";\n  }\n  switch (labelArrow) {\n    case \"left\":\n      return `\u2190 ${label}`;\n    case \"right\":\n      return `${label} \u2192`;\n    case \"up\":\n      return anchor === \"right\" ? `${label} \u2191` : `\u2191 ${label}`;\n    case \"down\":\n      return anchor === \"right\" ? `${label} \u2193` : `\u2193 ${label}`;\n  }\n  return label;\n}\n\nfunction maybeLabelArrow(labelArrow = \"auto\") {\n  return isNoneish(labelArrow)\n    ? false\n    : typeof labelArrow === \"boolean\"\n    ? labelArrow\n    : keyword(labelArrow, \"labelArrow\", [\"auto\", \"up\", \"right\", \"down\", \"left\"]);\n}\n\nfunction isTemporalish(scale) {\n  return isTemporalScale(scale) || scale.interval != null;\n}\n", "import {pathRound as path} from \"d3\";\nimport {inferFontVariant} from \"../axes.js\";\nimport {create, createContext} from \"../context.js\";\nimport {isNoneish, maybeColorChannel, maybeNumberChannel} from \"../options.js\";\nimport {isOrdinalScale, isThresholdScale} from \"../scales.js\";\nimport {applyInlineStyles, impliedString, maybeClassName} from \"../style.js\";\nimport {inferTickFormat} from \"../marks/axis.js\";\n\nfunction maybeScale(scale, key) {\n  if (key == null) return key;\n  const s = scale(key);\n  if (!s) throw new Error(`scale not found: ${key}`);\n  return s;\n}\n\nexport function legendSwatches(color, {opacity, ...options} = {}) {\n  if (!isOrdinalScale(color) && !isThresholdScale(color))\n    throw new Error(`swatches legend requires ordinal or threshold color scale (not ${color.type})`);\n  return legendItems(color, options, (selection, scale, width, height) =>\n    selection\n      .append(\"svg\")\n      .attr(\"width\", width)\n      .attr(\"height\", height)\n      .attr(\"fill\", scale.scale)\n      .attr(\"fill-opacity\", maybeNumberChannel(opacity)[1])\n      .append(\"rect\")\n      .attr(\"width\", \"100%\")\n      .attr(\"height\", \"100%\")\n  );\n}\n\nexport function legendSymbols(\n  symbol,\n  {\n    fill = symbol.hint?.fill !== undefined ? symbol.hint.fill : \"none\",\n    fillOpacity = 1,\n    stroke = symbol.hint?.stroke !== undefined ? symbol.hint.stroke : isNoneish(fill) ? \"currentColor\" : \"none\",\n    strokeOpacity = 1,\n    strokeWidth = 1.5,\n    r = 4.5,\n    ...options\n  } = {},\n  scale\n) {\n  const [vf, cf] = maybeColorChannel(fill);\n  const [vs, cs] = maybeColorChannel(stroke);\n  const sf = maybeScale(scale, vf);\n  const ss = maybeScale(scale, vs);\n  const size = r * r * Math.PI;\n  fillOpacity = maybeNumberChannel(fillOpacity)[1];\n  strokeOpacity = maybeNumberChannel(strokeOpacity)[1];\n  strokeWidth = maybeNumberChannel(strokeWidth)[1];\n  return legendItems(symbol, options, (selection, scale, width, height) =>\n    selection\n      .append(\"svg\")\n      .attr(\"viewBox\", \"-8 -8 16 16\")\n      .attr(\"width\", width)\n      .attr(\"height\", height)\n      .attr(\"fill\", vf === \"color\" ? (d) => sf.scale(d) : cf)\n      .attr(\"fill-opacity\", fillOpacity)\n      .attr(\"stroke\", vs === \"color\" ? (d) => ss.scale(d) : cs)\n      .attr(\"stroke-opacity\", strokeOpacity)\n      .attr(\"stroke-width\", strokeWidth)\n      .append(\"path\")\n      .attr(\"d\", (d) => {\n        const p = path();\n        symbol.scale(d).draw(p, size);\n        return p;\n      })\n  );\n}\n\nfunction legendItems(scale, options = {}, swatch) {\n  let {\n    columns,\n    tickFormat,\n    fontVariant = inferFontVariant(scale),\n    // TODO label,\n    swatchSize = 15,\n    swatchWidth = swatchSize,\n    swatchHeight = swatchSize,\n    marginLeft = 0,\n    className,\n    style,\n    width\n  } = options;\n  const context = createContext(options);\n  className = maybeClassName(className);\n  if (typeof tickFormat !== \"function\") tickFormat = inferTickFormat(scale.scale, scale.domain, undefined, tickFormat);\n\n  const swatches = create(\"div\", context).attr(\n    \"class\",\n    `${className}-swatches ${className}-swatches-${columns != null ? \"columns\" : \"wrap\"}`\n  );\n\n  let extraStyle;\n\n  if (columns != null) {\n    extraStyle = `.${className}-swatches-columns .${className}-swatch {\n  display: flex;\n  align-items: center;\n  break-inside: avoid;\n  padding-bottom: 1px;\n}\n.${className}-swatches-columns .${className}-swatch::before {\n  flex-shrink: 0;\n}\n.${className}-swatches-columns .${className}-swatch-label {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}`;\n\n    swatches\n      .style(\"columns\", columns)\n      .selectAll()\n      .data(scale.domain)\n      .enter()\n      .append(\"div\")\n      .attr(\"class\", `${className}-swatch`)\n      .call(swatch, scale, swatchWidth, swatchHeight)\n      .call((item) =>\n        item.append(\"div\").attr(\"class\", `${className}-swatch-label`).attr(\"title\", tickFormat).text(tickFormat)\n      );\n  } else {\n    extraStyle = `.${className}-swatches-wrap {\n  display: flex;\n  align-items: center;\n  min-height: 33px;\n  flex-wrap: wrap;\n}\n.${className}-swatches-wrap .${className}-swatch {\n  display: inline-flex;\n  align-items: center;\n  margin-right: 1em;\n}`;\n\n    swatches\n      .selectAll()\n      .data(scale.domain)\n      .enter()\n      .append(\"span\")\n      .attr(\"class\", `${className}-swatch`)\n      .call(swatch, scale, swatchWidth, swatchHeight)\n      .append(function () {\n        return this.ownerDocument.createTextNode(tickFormat.apply(this, arguments));\n      });\n  }\n\n  return swatches\n    .call((div) =>\n      div.insert(\"style\", \"*\").text(\n        `.${className}-swatches {\n  font-family: system-ui, sans-serif;\n  font-size: 10px;\n  margin-bottom: 0.5em;\n}\n.${className}-swatch > svg {\n  margin-right: 0.5em;\n  overflow: visible;\n}\n${extraStyle}`\n      )\n    )\n    .style(\"margin-left\", marginLeft ? `${+marginLeft}px` : null)\n    .style(\"width\", width === undefined ? null : `${+width}px`)\n    .style(\"font-variant\", impliedString(fontVariant, \"normal\"))\n    .call(applyInlineStyles, style)\n    .node();\n}\n", "import {rgb} from \"d3\";\nimport {createContext} from \"./context.js\";\nimport {legendRamp} from \"./legends/ramp.js\";\nimport {legendSwatches, legendSymbols} from \"./legends/swatches.js\";\nimport {inherit, isScaleOptions} from \"./options.js\";\nimport {normalizeScale} from \"./scales.js\";\n\nconst legendRegistry = new Map([\n  [\"symbol\", legendSymbols],\n  [\"color\", legendColor],\n  [\"opacity\", legendOpacity]\n]);\n\nexport function legend(options = {}) {\n  for (const [key, value] of legendRegistry) {\n    const scale = options[key];\n    if (isScaleOptions(scale)) {\n      // e.g., ignore {color: \"red\"}\n      const context = createContext(options);\n      let hint;\n      // For symbol legends, pass a hint to the symbol scale.\n      if (key === \"symbol\") {\n        const {fill, stroke = fill === undefined && isScaleOptions(options.color) ? \"color\" : undefined} = options;\n        hint = {fill, stroke};\n      }\n      return value(normalizeScale(key, scale, hint), legendOptions(context, scale, options), (key) =>\n        isScaleOptions(options[key]) ? normalizeScale(key, options[key]) : null\n      );\n    }\n  }\n  throw new Error(\"unknown legend type; no scale found\");\n}\n\nexport function exposeLegends(scales, context, defaults = {}) {\n  return (key, options) => {\n    if (!legendRegistry.has(key)) throw new Error(`unknown legend type: ${key}`);\n    if (!(key in scales)) return;\n    return legendRegistry.get(key)(scales[key], legendOptions(context, defaults[key], options), (key) => scales[key]);\n  };\n}\n\nfunction legendOptions({className, ...context}, {label, ticks, tickFormat} = {}, options) {\n  return inherit(options, {className, ...context}, {label, ticks, tickFormat});\n}\n\nfunction legendColor(color, {legend = true, ...options}) {\n  if (legend === true) legend = color.type === \"ordinal\" ? \"swatches\" : \"ramp\";\n  if (color.domain === undefined) return;\n  switch (`${legend}`.toLowerCase()) {\n    case \"swatches\":\n      return legendSwatches(color, options);\n    case \"ramp\":\n      return legendRamp(color, options);\n    default:\n      throw new Error(`unknown legend type: ${legend}`);\n  }\n}\n\nfunction legendOpacity({type, interpolate, ...scale}, {legend = true, color = rgb(0, 0, 0), ...options}) {\n  if (!interpolate) throw new Error(`${type} opacity scales are not supported`);\n  if (legend === true) legend = \"ramp\";\n  if (`${legend}`.toLowerCase() !== \"ramp\") throw new Error(`${legend} opacity legends are not supported`);\n  return legendColor({type, ...scale, interpolate: interpolateOpacity(color)}, {legend, ...options});\n}\n\nfunction interpolateOpacity(color) {\n  const {r, g, b} = rgb(color) || rgb(0, 0, 0); // treat invalid color as black\n  return (t) => `rgba(${r},${g},${b},${t})`;\n}\n\nexport function createLegends(scales, context, options) {\n  const legends = [];\n  for (const [key, value] of legendRegistry) {\n    const o = options[key];\n    if (o?.legend && key in scales) {\n      const legend = value(scales[key], legendOptions(context, scales[key], o), (key) => scales[key]);\n      if (legend != null) legends.push(legend);\n    }\n  }\n  return legends;\n}\n", "import {create} from \"../context.js\";\nimport {Mark} from \"../mark.js\";\nimport {maybeKeyword, number, singleton} from \"../options.js\";\nimport {applyChannelStyles, applyDirectStyles, applyIndirectStyles, applyTransform} from \"../style.js\";\n\nconst defaults = {\n  ariaLabel: \"frame\",\n  fill: \"none\",\n  stroke: \"currentColor\"\n};\n\nconst lineDefaults = {\n  ariaLabel: \"frame\",\n  fill: null,\n  stroke: \"currentColor\",\n  strokeLinecap: \"square\"\n};\n\nexport class Frame extends Mark {\n  constructor(options = {}) {\n    const {\n      anchor = null,\n      inset = 0,\n      insetTop = inset,\n      insetRight = inset,\n      insetBottom = inset,\n      insetLeft = inset,\n      rx,\n      ry\n    } = options;\n    super(singleton, undefined, options, anchor == null ? defaults : lineDefaults);\n    this.anchor = maybeKeyword(anchor, \"anchor\", [\"top\", \"right\", \"bottom\", \"left\"]);\n    this.insetTop = number(insetTop);\n    this.insetRight = number(insetRight);\n    this.insetBottom = number(insetBottom);\n    this.insetLeft = number(insetLeft);\n    this.rx = number(rx);\n    this.ry = number(ry);\n  }\n  render(index, scales, channels, dimensions, context) {\n    const {marginTop, marginRight, marginBottom, marginLeft, width, height} = dimensions;\n    const {anchor, insetTop, insetRight, insetBottom, insetLeft, rx, ry} = this;\n    const x1 = marginLeft + insetLeft;\n    const x2 = width - marginRight - insetRight;\n    const y1 = marginTop + insetTop;\n    const y2 = height - marginBottom - insetBottom;\n    return create(anchor ? \"svg:line\" : \"svg:rect\", context)\n      .datum(0)\n      .call(applyIndirectStyles, this, dimensions, context)\n      .call(applyDirectStyles, this)\n      .call(applyChannelStyles, this, channels)\n      .call(applyTransform, this, {})\n      .call(\n        anchor === \"left\"\n          ? (line) => line.attr(\"x1\", x1).attr(\"x2\", x1).attr(\"y1\", y1).attr(\"y2\", y2)\n          : anchor === \"right\"\n          ? (line) => line.attr(\"x1\", x2).attr(\"x2\", x2).attr(\"y1\", y1).attr(\"y2\", y2)\n          : anchor === \"top\"\n          ? (line) => line.attr(\"x1\", x1).attr(\"x2\", x2).attr(\"y1\", y1).attr(\"y2\", y1)\n          : anchor === \"bottom\"\n          ? (line) => line.attr(\"x1\", x1).attr(\"x2\", x2).attr(\"y1\", y2).attr(\"y2\", y2)\n          : (rect) =>\n              rect\n                .attr(\"x\", x1)\n                .attr(\"y\", y1)\n                .attr(\"width\", x2 - x1)\n                .attr(\"height\", y2 - y1)\n                .attr(\"rx\", rx)\n                .attr(\"ry\", ry)\n      )\n      .node();\n  }\n}\n\nexport function frame(options) {\n  return new Frame(options);\n}\n", "import {select} from \"d3\";\nimport {getSource} from \"../channel.js\";\nimport {create} from \"../context.js\";\nimport {defined} from \"../defined.js\";\nimport {formatDefault} from \"../format.js\";\nimport {anchorX, anchorY} from \"../interactions/pointer.js\";\nimport {Mark} from \"../mark.js\";\nimport {maybeAnchor, maybeFrameAnchor, maybeTuple, number, string} from \"../options.js\";\nimport {applyDirectStyles, applyFrameAnchor, applyIndirectStyles, applyTransform, impliedString} from \"../style.js\";\nimport {identity, isIterable, isTextual} from \"../options.js\";\nimport {inferTickFormat} from \"./axis.js\";\nimport {applyIndirectTextStyles, defaultWidth, ellipsis, monospaceWidth} from \"./text.js\";\nimport {cut, clipper, splitter, maybeTextOverflow} from \"./text.js\";\n\nconst defaults = {\n  ariaLabel: \"tip\",\n  fill: \"white\",\n  stroke: \"currentColor\"\n};\n\n// These channels are not displayed in the tip; TODO allow customization.\nconst ignoreChannels = new Set([\"geometry\", \"href\", \"src\", \"ariaLabel\"]);\n\nexport class Tip extends Mark {\n  constructor(data, options = {}) {\n    if (options.tip) options = {...options, tip: false};\n    if (options.title === undefined && isIterable(data) && isTextual(data)) options = {...options, title: identity};\n    const {\n      x,\n      y,\n      x1,\n      x2,\n      y1,\n      y2,\n      anchor,\n      monospace,\n      fontFamily = monospace ? \"ui-monospace, monospace\" : undefined,\n      fontSize,\n      fontStyle,\n      fontVariant,\n      fontWeight,\n      lineHeight = 1,\n      lineWidth = 20,\n      frameAnchor,\n      textAnchor = \"start\",\n      textOverflow,\n      textPadding = 8,\n      title,\n      pointerSize = 12,\n      pathFilter = \"drop-shadow(0 3px 4px rgba(0,0,0,0.2))\"\n    } = options;\n    super(\n      data,\n      {\n        x: {value: x1 != null && x2 != null ? null : x, scale: \"x\", optional: true}, // ignore midpoint\n        y: {value: y1 != null && y2 != null ? null : y, scale: \"y\", optional: true}, // ignore midpoint\n        x1: {value: x1, scale: \"x\", optional: x2 == null},\n        y1: {value: y1, scale: \"y\", optional: y2 == null},\n        x2: {value: x2, scale: \"x\", optional: x1 == null},\n        y2: {value: y2, scale: \"y\", optional: y1 == null},\n        title: {value: title, optional: true} // filter: defined\n      },\n      options,\n      defaults\n    );\n    this.anchor = maybeAnchor(anchor, \"anchor\");\n    this.previousAnchor = this.anchor ?? \"top-left\";\n    this.frameAnchor = maybeFrameAnchor(frameAnchor);\n    this.textAnchor = impliedString(textAnchor, \"middle\");\n    this.textPadding = +textPadding;\n    this.pointerSize = +pointerSize;\n    this.pathFilter = string(pathFilter);\n    this.lineHeight = +lineHeight;\n    this.lineWidth = +lineWidth;\n    this.textOverflow = maybeTextOverflow(textOverflow);\n    this.monospace = !!monospace;\n    this.fontFamily = string(fontFamily);\n    this.fontSize = number(fontSize);\n    this.fontStyle = string(fontStyle);\n    this.fontVariant = string(fontVariant);\n    this.fontWeight = string(fontWeight);\n    for (const key in defaults) if (key in this.channels) this[key] = defaults[key]; // apply default even if channel\n    this.splitLines = splitter(this);\n    this.clipLine = clipper(this);\n  }\n  render(index, scales, values, dimensions, context) {\n    const mark = this;\n    const {x, y, fx, fy} = scales;\n    const {ownerSVGElement: svg, document} = context;\n    const {anchor, monospace, lineHeight, lineWidth} = this;\n    const {textPadding: r, pointerSize: m, pathFilter} = this;\n    const {marginTop, marginLeft} = dimensions;\n    const sources = getSources(values);\n\n    // The anchor position is the middle of x1 & y1 and x2 & y2, if available,\n    // or x & y; the former is considered more specific because it\u2019s how we\n    // disable the implicit stack and interval transforms. If any dimension is\n    // unspecified, we fallback to the frame anchor. We also need to know the\n    // facet offsets to detect when the tip would draw outside the plot, and\n    // thus we need to change the orientation.\n    const {x1: X1, y1: Y1, x2: X2, y2: Y2, x: X = X1 ?? X2, y: Y = Y1 ?? Y2} = values;\n    const ox = fx ? fx(index.fx) - marginLeft : 0;\n    const oy = fy ? fy(index.fy) - marginTop : 0;\n\n    // The order of precedence for the anchor position is: the middle of x1 & y1\n    // and x2 & y2; or x1 & y1 (e.g., area); or lastly x & y. If a dimension is\n    // unspecified, the frame anchor is used.\n    const [cx, cy] = applyFrameAnchor(this, dimensions);\n    const px = anchorX(values, cx);\n    const py = anchorY(values, cy);\n\n    // Resolve the text metric implementation. We may need an ellipsis for text\n    // truncation, so we optimistically compute the ellipsis width.\n    const widthof = monospace ? monospaceWidth : defaultWidth;\n    const ee = widthof(ellipsis);\n\n    // We borrow the scale\u2019s tick format for facet channels; this is safe for\n    // ordinal scales (but not continuous scales where the display value may\n    // need higher precision), and generally better than the default format.\n    const formatFx = fx && inferTickFormat(fx);\n    const formatFy = fy && inferTickFormat(fy);\n\n    function* format(sources, i) {\n      if (\"title\" in sources) {\n        const text = sources.title.value[i];\n        for (const line of mark.splitLines(formatDefault(text))) {\n          yield {name: \"\", value: mark.clipLine(line)};\n        }\n        return;\n      }\n      for (const key in sources) {\n        if (key === \"x1\" && \"x2\" in sources) continue;\n        if (key === \"y1\" && \"y2\" in sources) continue;\n        const channel = sources[key];\n        const value = channel.value[i];\n        if (!defined(value) && channel.scale == null) continue;\n        if (key === \"x2\" && \"x1\" in sources) {\n          yield {name: formatLabel(scales, channel, \"x\"), value: formatPair(sources.x1, channel, i)};\n        } else if (key === \"y2\" && \"y1\" in sources) {\n          yield {name: formatLabel(scales, channel, \"y\"), value: formatPair(sources.y1, channel, i)};\n        } else {\n          const scale = channel.scale;\n          const line = {name: formatLabel(scales, channel, key), value: formatDefault(value)};\n          if (scale === \"color\" || scale === \"opacity\") line[scale] = values[key][i];\n          yield line;\n        }\n      }\n      if (index.fi != null && fx) yield {name: String(fx.label ?? \"fx\"), value: formatFx(index.fx)};\n      if (index.fi != null && fy) yield {name: String(fy.label ?? \"fy\"), value: formatFy(index.fy)};\n    }\n\n    // We don\u2019t call applyChannelStyles because we only use the channels to\n    // derive the content of the tip, not its aesthetics.\n    const g = create(\"svg:g\", context)\n      .call(applyIndirectStyles, this, dimensions, context)\n      .call(applyIndirectTextStyles, this)\n      .call(applyTransform, this, {x: X && x, y: Y && y})\n      .call((g) =>\n        g\n          .selectAll()\n          .data(index)\n          .enter()\n          .append(\"g\")\n          .attr(\"transform\", (i) => `translate(${Math.round(px(i))},${Math.round(py(i))})`) // crisp edges\n          .call(applyDirectStyles, this)\n          .call((g) => g.append(\"path\").attr(\"filter\", pathFilter))\n          .call((g) =>\n            g.append(\"text\").each(function (i) {\n              const that = select(this);\n              // prevent style inheritance (from path)\n              this.setAttribute(\"fill\", \"currentColor\");\n              this.setAttribute(\"fill-opacity\", 1);\n              this.setAttribute(\"stroke\", \"none\");\n              // iteratively render each channel value\n              const names = new Set();\n              for (const line of format(sources, i)) {\n                const name = line.name;\n                if (name && names.has(name)) continue;\n                else names.add(name);\n                renderLine(that, line);\n              }\n            })\n          )\n      );\n\n    // Renders a single line (a name-value pair) to the tip, truncating the text\n    // as needed, and adding a title if the text is truncated. Note that this is\n    // just the initial layout of the text; in postrender we will compute the\n    // exact text metrics and translate the text as needed once we know the\n    // tip\u2019s orientation (anchor).\n    function renderLine(selection, {name, value, color, opacity}) {\n      const swatch = color != null || opacity != null;\n      let title;\n      let w = lineWidth * 100;\n      const [j] = cut(name, w, widthof, ee);\n      if (j >= 0) {\n        // name is truncated\n        name = name.slice(0, j).trimEnd() + ellipsis;\n        title = value.trim();\n        value = \"\";\n      } else {\n        if (name || (!value && !swatch)) value = \" \" + value;\n        const [k] = cut(value, w - widthof(name), widthof, ee);\n        if (k >= 0) {\n          // value is truncated\n          value = value.slice(0, k).trimEnd() + ellipsis;\n          title = value.trim();\n        }\n      }\n      const line = selection.append(\"tspan\").attr(\"x\", 0).attr(\"dy\", `${lineHeight}em`).text(\"\\u200b\"); // zwsp for double-click\n      if (name) line.append(\"tspan\").attr(\"font-weight\", \"bold\").text(name);\n      if (value) line.append(() => document.createTextNode(value));\n      if (swatch) line.append(\"tspan\").text(\" \u25A0\").attr(\"fill\", color).attr(\"fill-opacity\", opacity).style(\"user-select\", \"none\"); // prettier-ignore\n      if (title) line.append(\"title\").text(title);\n    }\n\n    // Only after the plot is attached to the page can we compute the exact text\n    // metrics needed to determine the tip size and orientation (anchor).\n    function postrender() {\n      const {width, height} = dimensions.facet ?? dimensions;\n      g.selectChildren().each(function (i) {\n        let {x: tx, width: w, height: h} = this.getBBox();\n        (w = Math.round(w)), (h = Math.round(h)); // crisp edges\n        let a = anchor; // use the specified anchor, if any\n        if (a === undefined) {\n          a = mark.previousAnchor; // favor the previous anchor, if it fits\n          const x = px(i) + ox;\n          const y = py(i) + oy;\n          const fitLeft = x + w + r * 2 < width;\n          const fitRight = x - w - r * 2 > 0;\n          const fitTop = y + h + m + r * 2 + 7 < height;\n          const fitBottom = y - h - m - r * 2 > 0;\n          const ax = (/-left$/.test(a) ? fitLeft || !fitRight : fitLeft && !fitRight) ? \"left\" : \"right\";\n          const ay = (/^top-/.test(a) ? fitTop || !fitBottom : fitTop && !fitBottom) ? \"top\" : \"bottom\";\n          a = mark.previousAnchor = `${ay}-${ax}`;\n        }\n        const path = this.firstChild; // note: assumes exactly two children!\n        const text = this.lastChild; // note: assumes exactly two children!\n        path.setAttribute(\"d\", getPath(a, m, r, w, h));\n        if (tx) for (const t of text.childNodes) t.setAttribute(\"x\", -tx);\n        text.setAttribute(\"y\", `${+getLineOffset(a, text.childNodes.length, lineHeight).toFixed(6)}em`);\n        text.setAttribute(\"transform\", `translate(${getTextTranslate(a, m, r, w, h)})`);\n      });\n    }\n\n    // Wait until the plot is inserted into the page so that we can use getBBox\n    // to compute the exact text dimensions. If the SVG is already connected, as\n    // when the pointer interaction triggers the re-render, use a faster\n    // microtask instead of an animation frame; if this SSR (e.g., JSDOM), skip\n    // this step. Perhaps this could be done synchronously; getting the\n    // dimensions of the SVG is easy, and although accurate text metrics are\n    // hard, we could use approximate heuristics.\n    if (svg.isConnected) Promise.resolve().then(postrender);\n    else if (typeof requestAnimationFrame !== \"undefined\") requestAnimationFrame(postrender);\n\n    return g.node();\n  }\n}\n\nexport function tip(data, {x, y, ...options} = {}) {\n  if (options.frameAnchor === undefined) [x, y] = maybeTuple(x, y);\n  return new Tip(data, {...options, x, y});\n}\n\nfunction getLineOffset(anchor, length, lineHeight) {\n  return /^top(?:-|$)/.test(anchor)\n    ? 0.94 - lineHeight\n    : /^bottom(?:-|$)/\n    ? -0.29 - length * lineHeight\n    : (length / 2) * lineHeight;\n}\n\nfunction getTextTranslate(anchor, m, r, width, height) {\n  switch (anchor) {\n    case \"middle\":\n      return [-width / 2, height / 2];\n    case \"top-left\":\n      return [r, m + r];\n    case \"top\":\n      return [-width / 2, m / 2 + r];\n    case \"top-right\":\n      return [-width - r, m + r];\n    case \"right\":\n      return [-m / 2 - width - r, height / 2];\n    case \"bottom-left\":\n      return [r, -m - r];\n    case \"bottom\":\n      return [-width / 2, -m / 2 - r];\n    case \"bottom-right\":\n      return [-width - r, -m - r];\n    case \"left\":\n      return [r + m / 2, height / 2];\n  }\n}\n\nfunction getPath(anchor, m, r, width, height) {\n  const w = width + r * 2;\n  const h = height + r * 2;\n  switch (anchor) {\n    case \"middle\":\n      return `M${-w / 2},${-h / 2}h${w}v${h}h${-w}z`;\n    case \"top-left\":\n      return `M0,0l${m},${m}h${w - m}v${h}h${-w}z`;\n    case \"top\":\n      return `M0,0l${m / 2},${m / 2}h${(w - m) / 2}v${h}h${-w}v${-h}h${(w - m) / 2}z`;\n    case \"top-right\":\n      return `M0,0l${-m},${m}h${m - w}v${h}h${w}z`;\n    case \"right\":\n      return `M0,0l${-m / 2},${-m / 2}v${m / 2 - h / 2}h${-w}v${h}h${w}v${m / 2 - h / 2}z`;\n    case \"bottom-left\":\n      return `M0,0l${m},${-m}h${w - m}v${-h}h${-w}z`;\n    case \"bottom\":\n      return `M0,0l${m / 2},${-m / 2}h${(w - m) / 2}v${-h}h${-w}v${h}h${(w - m) / 2}z`;\n    case \"bottom-right\":\n      return `M0,0l${-m},${-m}h${m - w}v${-h}h${w}z`;\n    case \"left\":\n      return `M0,0l${m / 2},${-m / 2}v${m / 2 - h / 2}h${w}v${h}h${-w}v${m / 2 - h / 2}z`;\n  }\n}\n\nfunction getSources({channels}) {\n  const sources = {};\n  for (const key in channels) {\n    if (ignoreChannels.has(key)) continue;\n    const source = getSource(channels, key);\n    if (source) sources[key] = source;\n  }\n  return sources;\n}\n\nfunction formatPair(c1, c2, i) {\n  return c2.hint?.length // e.g., stackY\u2019s y1 and y2\n    ? `${formatDefault(c2.value[i] - c1.value[i])}`\n    : `${formatDefault(c1.value[i])}\u2013${formatDefault(c2.value[i])}`;\n}\n\nfunction formatLabel(scales, c, defaultLabel) {\n  return String(scales[c.scale]?.label ?? c?.label ?? defaultLabel);\n}\n", "import {creator, select} from \"d3\";\nimport {createChannel, inferChannelScale} from \"./channel.js\";\nimport {createContext} from \"./context.js\";\nimport {createDimensions} from \"./dimensions.js\";\nimport {createFacets, recreateFacets, facetExclude, facetGroups, facetTranslator, facetFilter} from \"./facet.js\";\nimport {pointer, pointerX, pointerY} from \"./interactions/pointer.js\";\nimport {createLegends, exposeLegends} from \"./legends.js\";\nimport {Mark} from \"./mark.js\";\nimport {axisFx, axisFy, axisX, axisY, gridFx, gridFy, gridX, gridY} from \"./marks/axis.js\";\nimport {frame} from \"./marks/frame.js\";\nimport {tip} from \"./marks/tip.js\";\nimport {isColor, isIterable, isNone, isScaleOptions} from \"./options.js\";\nimport {arrayify, map, yes, maybeIntervalTransform, subarray} from \"./options.js\";\nimport {createProjection, getGeometryChannels, hasProjection} from \"./projection.js\";\nimport {createScales, createScaleFunctions, autoScaleRange, exposeScales} from \"./scales.js\";\nimport {innerDimensions, outerDimensions} from \"./scales.js\";\nimport {position, registry as scaleRegistry} from \"./scales/index.js\";\nimport {applyInlineStyles, maybeClassName} from \"./style.js\";\nimport {initializer} from \"./transforms/basic.js\";\nimport {consumeWarnings, warn} from \"./warnings.js\";\n\nexport function plot(options = {}) {\n  const {facet, style, caption, ariaLabel, ariaDescription} = options;\n\n  // className for inline styles\n  const className = maybeClassName(options.className);\n\n  // Flatten any nested marks.\n  const marks = options.marks === undefined ? [] : flatMarks(options.marks);\n\n  // Add implicit tips.\n  marks.push(...inferTips(marks));\n\n  // Compute the top-level facet state. This has roughly the same structure as\n  // mark-specific facet state, except there isn\u2019t a facetsIndex, and there\u2019s a\n  // data and dataLength so we can warn the user if a different data of the same\n  // length is used in a mark.\n  const topFacetState = maybeTopFacet(facet, options);\n\n  // Construct a map from (faceted) Mark instance to facet state, including:\n  // channels - an {fx?, fy?} object to add to the fx and fy scale\n  // groups - a possibly-nested map from facet values to indexes in the data array\n  // facetsIndex - a sparse nested array of indices corresponding to the valid facets\n  const facetStateByMark = new Map();\n  for (const mark of marks) {\n    const facetState = maybeMarkFacet(mark, topFacetState, options);\n    if (facetState) facetStateByMark.set(mark, facetState);\n  }\n\n  // Compute a Map from scale name to an array of associated channels.\n  const channelsByScale = new Map();\n  if (topFacetState) addScaleChannels(channelsByScale, [topFacetState], options);\n  addScaleChannels(channelsByScale, facetStateByMark, options);\n\n  // Add implicit axis marks. Because this happens after faceting (because it\n  // depends on whether faceting is present), we must initialize the facet state\n  // of any implicit axes, too.\n  const axes = flatMarks(inferAxes(marks, channelsByScale, options));\n  for (const mark of axes) {\n    const facetState = maybeMarkFacet(mark, topFacetState, options);\n    if (facetState) facetStateByMark.set(mark, facetState);\n  }\n  marks.unshift(...axes);\n\n  // All the possible facets are given by the domains of the fx or fy scales, or\n  // the cross-product of these domains if we facet by both x and y. We sort\n  // them in order to apply the facet filters afterwards.\n  let facets = createFacets(channelsByScale, options);\n\n  if (facets !== undefined) {\n    const topFacetsIndex = topFacetState ? facetFilter(facets, topFacetState) : undefined;\n\n    // Compute a facet index for each mark, parallel to the facets array. For\n    // mark-level facets, compute an index for that mark\u2019s data and options.\n    // Otherwise, use the top-level facet index.\n    for (const mark of marks) {\n      if (mark.facet === null || mark.facet === \"super\") continue;\n      const facetState = facetStateByMark.get(mark);\n      if (facetState === undefined) continue;\n      facetState.facetsIndex = mark.fx != null || mark.fy != null ? facetFilter(facets, facetState) : topFacetsIndex;\n    }\n\n    // The cross product of the domains of fx and fy can include fx-fy\n    // combinations for which no mark has an instance associated with that\n    // combination, and therefore we don\u2019t want to render this facet (not even\n    // the frame). The same can occur if you specify the domain of fx and fy\n    // explicitly, but there is no mark instance associated with some values in\n    // the domain. Expunge empty facets, and clear the corresponding elements\n    // from the nested index in each mark.\n    const nonEmpty = new Set();\n    for (const {facetsIndex} of facetStateByMark.values()) {\n      facetsIndex?.forEach((index, i) => {\n        if (index?.length > 0) {\n          nonEmpty.add(i);\n        }\n      });\n    }\n\n    // If all the facets are empty (as when none of the marks are actually\n    // faceted), none of them are empty.\n    facets.forEach(\n      0 < nonEmpty.size && nonEmpty.size < facets.length\n        ? (f, i) => (f.empty = !nonEmpty.has(i))\n        : (f) => (f.empty = false)\n    );\n\n    // For any mark using the \u201Cexclude\u201D facet mode, invert the index.\n    for (const mark of marks) {\n      if (mark.facet === \"exclude\") {\n        const facetState = facetStateByMark.get(mark);\n        if (facetState !== undefined) facetState.facetsIndex = facetExclude(facetState.facetsIndex);\n      }\n    }\n  }\n\n  // If a scale is explicitly declared in options, initialize its associated\n  // channels to the empty array; this will guarantee that a corresponding scale\n  // will be created later (even if there are no other channels). Ignore facet\n  // scale declarations, which are handled above.\n  for (const key of scaleRegistry.keys()) {\n    if (isScaleOptions(options[key]) && key !== \"fx\" && key !== \"fy\") {\n      channelsByScale.set(key, []);\n    }\n  }\n\n  // A Map from Mark instance to its render state, including:\n  // index - the data index e.g. [0, 1, 2, 3, \u2026]\n  // channels - an array of materialized channels e.g. [[\"x\", {value}], \u2026]\n  // faceted - a boolean indicating whether this mark is faceted\n  // values - an object of scaled values e.g. {x: [40, 32, \u2026], \u2026}\n  const stateByMark = new Map();\n\n  // Initialize the marks\u2019 state.\n  for (const mark of marks) {\n    if (stateByMark.has(mark)) throw new Error(\"duplicate mark; each mark must be unique\");\n    const {facetsIndex, channels: facetChannels} = facetStateByMark.get(mark) ?? {};\n    const {data, facets, channels} = mark.initialize(facetsIndex, facetChannels, options);\n    applyScaleTransforms(channels, options);\n    stateByMark.set(mark, {data, facets, channels});\n  }\n\n  // Initalize the scales and dimensions.\n  const scaleDescriptors = createScales(addScaleChannels(channelsByScale, stateByMark, options), options);\n  const scales = createScaleFunctions(scaleDescriptors);\n  const dimensions = createDimensions(scaleDescriptors, marks, options);\n\n  autoScaleRange(scaleDescriptors, dimensions);\n\n  const {fx, fy} = scales;\n  const subdimensions = fx || fy ? innerDimensions(scaleDescriptors, dimensions) : dimensions;\n  const superdimensions = fx || fy ? actualDimensions(scales, dimensions) : dimensions;\n\n  // Initialize the context.\n  const context = createContext(options);\n  const document = context.document;\n  const svg = creator(\"svg\").call(document.documentElement);\n  let figure = svg; // replaced with the figure element, if any\n  context.ownerSVGElement = svg;\n  context.className = className;\n  context.projection = createProjection(options, subdimensions);\n\n  // Allows e.g. the axis mark to determine faceting lazily.\n  context.filterFacets = (data, channels) => {\n    return facetFilter(facets, {channels, groups: facetGroups(data, channels)});\n  };\n\n  // Allows e.g. the tip mark to reference channels and data on other marks.\n  context.getMarkState = (mark) => {\n    const state = stateByMark.get(mark);\n    const facetState = facetStateByMark.get(mark);\n    return {...state, channels: {...state.channels, ...facetState?.channels}};\n  };\n\n  // Allows e.g. the pointer transform to support viewof.\n  context.dispatchValue = (value) => {\n    if (figure.value === value) return;\n    figure.value = value;\n    figure.dispatchEvent(new Event(\"input\", {bubbles: true}));\n  };\n\n  // Reinitialize; for deriving channels dependent on other channels.\n  const newByScale = new Set();\n  for (const [mark, state] of stateByMark) {\n    if (mark.initializer != null) {\n      const dimensions = mark.facet === \"super\" ? superdimensions : subdimensions;\n      const update = mark.initializer(state.data, state.facets, state.channels, scales, dimensions, context);\n      if (update.data !== undefined) {\n        state.data = update.data;\n      }\n      if (update.facets !== undefined) {\n        state.facets = update.facets;\n      }\n      if (update.channels !== undefined) {\n        const {fx, fy, ...channels} = update.channels; // separate facet channels\n        inferChannelScales(channels);\n        Object.assign(state.channels, channels);\n        for (const channel of Object.values(channels)) {\n          const {scale} = channel;\n          // Initializers aren\u2019t allowed to redefine position scales as this\n          // would introduce a circular dependency; so simply scale these\n          // channels as-is rather than creating new scales, and assume that\n          // they already have the scale\u2019s transform applied, if any (e.g., when\n          // generating ticks for the axis mark).\n          if (scale != null && scaleRegistry.get(scale) !== position) {\n            applyScaleTransform(channel, options);\n            newByScale.add(scale);\n          }\n        }\n        // If the initializer returns new mark-level facet channels, we must\n        // record that the mark is now faceted. Note: we aren\u2019t actually\n        // populating the facet state, but subsequently we won\u2019t need it.\n        if (fx != null || fy != null) facetStateByMark.set(mark, true);\n      }\n    }\n  }\n\n  // Reconstruct scales if new scaled channels were created during\n  // reinitialization. Preserve existing scale labels, if any.\n  if (newByScale.size) {\n    const newChannelsByScale = new Map();\n    addScaleChannels(newChannelsByScale, stateByMark, options, (key) => newByScale.has(key));\n    addScaleChannels(channelsByScale, stateByMark, options, (key) => newByScale.has(key));\n    const newScaleDescriptors = inheritScaleLabels(createScales(newChannelsByScale, options), scaleDescriptors);\n    const newScales = createScaleFunctions(newScaleDescriptors);\n    Object.assign(scaleDescriptors, newScaleDescriptors);\n    Object.assign(scales, newScales);\n  }\n\n  // Sort and filter the facets to match the fx and fy domains; this is needed\n  // because the facets were constructed prior to the fx and fy scales.\n  let facetDomains, facetTranslate;\n  if (facets !== undefined) {\n    facetDomains = {x: fx?.domain(), y: fy?.domain()};\n    facets = recreateFacets(facets, facetDomains);\n    facetTranslate = facetTranslator(fx, fy, dimensions);\n  }\n\n  // Compute value objects, applying scales and projection as needed.\n  for (const [mark, state] of stateByMark) {\n    state.values = mark.scale(state.channels, scales, context);\n  }\n\n  const {width, height} = dimensions;\n\n  select(svg)\n    .attr(\"class\", className)\n    .attr(\"fill\", \"currentColor\")\n    .attr(\"font-family\", \"system-ui, sans-serif\")\n    .attr(\"font-size\", 10)\n    .attr(\"text-anchor\", \"middle\")\n    .attr(\"width\", width)\n    .attr(\"height\", height)\n    .attr(\"viewBox\", `0 0 ${width} ${height}`)\n    .attr(\"aria-label\", ariaLabel)\n    .attr(\"aria-description\", ariaDescription)\n    .call((svg) =>\n      // Warning: if you edit this, change defaultClassName.\n      svg.append(\"style\").text(\n        `.${className} {\n  display: block;\n  background: white;\n  height: auto;\n  height: intrinsic;\n  max-width: 100%;\n}\n.${className} text,\n.${className} tspan {\n  white-space: pre;\n}`\n      )\n    )\n    .call(applyInlineStyles, style);\n\n  // Render marks.\n  for (const mark of marks) {\n    const {channels, values, facets: indexes} = stateByMark.get(mark);\n\n    // Render a non-faceted mark.\n    if (facets === undefined || mark.facet === \"super\") {\n      let index = null;\n      if (indexes) {\n        index = indexes[0];\n        index = mark.filter(index, channels, values);\n        if (index.length === 0) continue;\n      }\n      const node = mark.render(index, scales, values, superdimensions, context);\n      if (node == null) continue;\n      svg.appendChild(node);\n    }\n\n    // Render a faceted mark.\n    else {\n      let g;\n      for (const f of facets) {\n        if (!(mark.facetAnchor?.(facets, facetDomains, f) ?? !f.empty)) continue;\n        let index = null;\n        if (indexes) {\n          const faceted = facetStateByMark.has(mark);\n          index = indexes[faceted ? f.i : 0];\n          index = mark.filter(index, channels, values);\n          if (index.length === 0) continue;\n          if (!faceted && index === indexes[0]) index = subarray(index); // copy before assigning fx, fy, fi\n          (index.fx = f.x), (index.fy = f.y), (index.fi = f.i);\n        }\n        const node = mark.render(index, scales, values, subdimensions, context);\n        if (node == null) continue;\n        // Lazily construct the shared group (to drop empty marks).\n        (g ??= select(svg).append(\"g\")).append(() => node).datum(f);\n        // Promote ARIA attributes and mark transform to avoid repetition on\n        // each facet; this assumes that these attributes are consistent across\n        // facets, but that should be the case!\n        for (const name of [\"aria-label\", \"aria-description\", \"aria-hidden\", \"transform\"]) {\n          if (node.hasAttribute(name)) {\n            g.attr(name, node.getAttribute(name));\n            node.removeAttribute(name);\n          }\n        }\n      }\n      g?.selectChildren().attr(\"transform\", facetTranslate);\n    }\n  }\n\n  // Wrap the plot in a figure with a caption, if desired.\n  const legends = createLegends(scaleDescriptors, context, options);\n  if (caption != null || legends.length > 0) {\n    figure = document.createElement(\"figure\");\n    figure.style.maxWidth = \"initial\";\n    for (const legend of legends) figure.appendChild(legend);\n    figure.appendChild(svg);\n    if (caption != null) {\n      const figcaption = document.createElement(\"figcaption\");\n      figcaption.appendChild(caption?.ownerDocument ? caption : document.createTextNode(caption));\n      figure.appendChild(figcaption);\n    }\n  }\n\n  figure.scale = exposeScales(scaleDescriptors);\n  figure.legend = exposeLegends(scaleDescriptors, context, options);\n\n  const w = consumeWarnings();\n  if (w > 0) {\n    select(svg)\n      .append(\"text\")\n      .attr(\"x\", width)\n      .attr(\"y\", 20)\n      .attr(\"dy\", \"-1em\")\n      .attr(\"text-anchor\", \"end\")\n      .attr(\"font-family\", \"initial\") // fix emoji rendering in Chrome\n      .text(\"\\u26a0\\ufe0f\") // emoji variation selector\n      .append(\"title\")\n      .text(`${w.toLocaleString(\"en-US\")} warning${w === 1 ? \"\" : \"s\"}. Please check the console.`);\n  }\n\n  return figure;\n}\n\nfunction plotThis({marks = [], ...options} = {}) {\n  return plot({...options, marks: [...marks, this]});\n}\n\n// Note: This side-effect avoids a circular dependency.\nMark.prototype.plot = plotThis;\n\nfunction flatMarks(marks) {\n  return marks\n    .flat(Infinity)\n    .filter((mark) => mark != null)\n    .map(markify);\n}\n\nfunction markify(mark) {\n  return typeof mark.render === \"function\" ? mark : new Render(mark);\n}\n\nclass Render extends Mark {\n  constructor(render) {\n    if (typeof render !== \"function\") throw new TypeError(\"invalid mark; missing render function\");\n    super();\n    this.render = render;\n  }\n  render() {}\n}\n\n// Note: mutates channel.value to apply the scale transform, if any.\nfunction applyScaleTransforms(channels, options) {\n  for (const name in channels) applyScaleTransform(channels[name], options);\n  return channels;\n}\n\n// Note: mutates channel.value to apply the scale transform, if any. Also sets\n// channel.transform to false to prevent duplicate transform application.\nfunction applyScaleTransform(channel, options) {\n  const {scale, transform: t = true} = channel;\n  if (scale == null || !t) return;\n  const {\n    type,\n    percent,\n    interval,\n    transform = percent ? (x) => x * 100 : maybeIntervalTransform(interval, type)\n  } = options[scale] ?? {};\n  if (transform == null) return;\n  channel.value = map(channel.value, transform);\n  channel.transform = false;\n}\n\n// An initializer may generate channels without knowing how the downstream mark\n// will use them. Marks are typically responsible associated scales with\n// channels, but here we assume common behavior across marks.\nfunction inferChannelScales(channels) {\n  for (const name in channels) {\n    inferChannelScale(name, channels[name]);\n  }\n}\n\nfunction addScaleChannels(channelsByScale, stateByMark, options, filter = yes) {\n  for (const {channels} of stateByMark.values()) {\n    for (const name in channels) {\n      const channel = channels[name];\n      const {scale} = channel;\n      if (scale != null && filter(scale)) {\n        // Geo marks affect the default x and y domains if there is no\n        // projection. Skip this (as an optimization) when a projection is\n        // specified, or when the domains for x and y are specified.\n        if (scale === \"projection\") {\n          if (!hasProjection(options)) {\n            const gx = options.x?.domain === undefined;\n            const gy = options.y?.domain === undefined;\n            if (gx || gy) {\n              const [x, y] = getGeometryChannels(channel);\n              if (gx) addScaleChannel(channelsByScale, \"x\", x);\n              if (gy) addScaleChannel(channelsByScale, \"y\", y);\n            }\n          }\n        } else {\n          addScaleChannel(channelsByScale, scale, channel);\n        }\n      }\n    }\n  }\n  return channelsByScale;\n}\n\nfunction addScaleChannel(channelsByScale, scale, channel) {\n  const scaleChannels = channelsByScale.get(scale);\n  if (scaleChannels !== undefined) scaleChannels.push(channel);\n  else channelsByScale.set(scale, [channel]);\n}\n\n// Returns the facet groups, and possibly fx and fy channels, associated with\n// the top-level facet option {data, x, y}.\nfunction maybeTopFacet(facet, options) {\n  if (facet == null) return;\n  const {x, y} = facet;\n  if (x == null && y == null) return;\n  const data = arrayify(facet.data);\n  if (data == null) throw new Error(\"missing facet data\");\n  const channels = {};\n  if (x != null) channels.fx = createChannel(data, {value: x, scale: \"fx\"});\n  if (y != null) channels.fy = createChannel(data, {value: y, scale: \"fy\"});\n  applyScaleTransforms(channels, options);\n  const groups = facetGroups(data, channels);\n  return {channels, groups, data: facet.data};\n}\n\n// Returns the facet groups, and possibly fx and fy channels, associated with a\n// mark, either through top-level faceting or mark-level facet options {fx, fy}.\nfunction maybeMarkFacet(mark, topFacetState, options) {\n  if (mark.facet === null || mark.facet === \"super\") return;\n\n  // This mark defines a mark-level facet. TODO There\u2019s some code duplication\n  // here with maybeTopFacet that we could reduce.\n  const {fx, fy} = mark;\n  if (fx != null || fy != null) {\n    const data = arrayify(mark.data ?? fx ?? fy);\n    if (data === undefined) throw new Error(`missing facet data in ${mark.ariaLabel}`);\n    if (data === null) return; // ignore channel definitions if no data is provided TODO this right?\n    const channels = {};\n    if (fx != null) channels.fx = createChannel(data, {value: fx, scale: \"fx\"});\n    if (fy != null) channels.fy = createChannel(data, {value: fy, scale: \"fy\"});\n    applyScaleTransforms(channels, options);\n    return {channels, groups: facetGroups(data, channels)};\n  }\n\n  // This mark links to a top-level facet, if present.\n  if (topFacetState === undefined) return;\n\n  // TODO Can we link the top-level facet channels here?\n  const {channels, groups, data} = topFacetState;\n  if (mark.facet !== \"auto\" || mark.data === data) return {channels, groups};\n\n  // Warn for the common pitfall of wanting to facet mapped data with the\n  // top-level facet option.\n  if (\n    data.length > 0 &&\n    (groups.size > 1 || (groups.size === 1 && channels.fx && channels.fy && [...groups][0][1].size > 1)) &&\n    arrayify(mark.data)?.length === data.length\n  ) {\n    warn(\n      `Warning: the ${mark.ariaLabel} mark appears to use faceted data, but isn\u2019t faceted. The mark data has the same length as the facet data and the mark facet option is \"auto\", but the mark data and facet data are distinct. If this mark should be faceted, set the mark facet option to true; otherwise, suppress this warning by setting the mark facet option to false.`\n    );\n  }\n}\n\nfunction derive(mark, options = {}) {\n  return initializer({...options, x: null, y: null}, (data, facets, channels, scales, dimensions, context) => {\n    return context.getMarkState(mark);\n  });\n}\n\nfunction inferTips(marks) {\n  const tips = [];\n  for (const mark of marks) {\n    const t = mark.tip;\n    if (t) {\n      const p = t === \"x\" ? pointerX : t === \"y\" ? pointerY : pointer;\n      const options = p(derive(mark)); // TODO tip options?\n      options.title = null; // prevent implicit title for primitive data\n      tips.push(tip(mark.data, options));\n    }\n  }\n  return tips;\n}\n\nfunction inferAxes(marks, channelsByScale, options) {\n  let {\n    projection,\n    x = {},\n    y = {},\n    fx = {},\n    fy = {},\n    axis,\n    grid,\n    facet = {},\n    facet: {axis: facetAxis = axis, grid: facetGrid} = facet,\n    x: {axis: xAxis = axis, grid: xGrid = xAxis === null ? null : grid} = x,\n    y: {axis: yAxis = axis, grid: yGrid = yAxis === null ? null : grid} = y,\n    fx: {axis: fxAxis = facetAxis, grid: fxGrid = fxAxis === null ? null : facetGrid} = fx,\n    fy: {axis: fyAxis = facetAxis, grid: fyGrid = fyAxis === null ? null : facetGrid} = fy\n  } = options;\n\n  // Disable axes if the corresponding scale is not present.\n  if (projection || (!isScaleOptions(x) && !hasPositionChannel(\"x\", marks))) xAxis = xGrid = null;\n  if (projection || (!isScaleOptions(y) && !hasPositionChannel(\"y\", marks))) yAxis = yGrid = null;\n  if (!channelsByScale.has(\"fx\")) fxAxis = fxGrid = null;\n  if (!channelsByScale.has(\"fy\")) fyAxis = fyGrid = null;\n\n  // Resolve the default implicit axes by checking for explicit ones.\n  if (xAxis === undefined) xAxis = !hasAxis(marks, \"x\");\n  if (yAxis === undefined) yAxis = !hasAxis(marks, \"y\");\n  if (fxAxis === undefined) fxAxis = !hasAxis(marks, \"fx\");\n  if (fyAxis === undefined) fyAxis = !hasAxis(marks, \"fy\");\n\n  // Resolve the default orientation of axes.\n  if (xAxis === true) xAxis = \"bottom\";\n  if (yAxis === true) yAxis = \"left\";\n  if (fxAxis === true) fxAxis = xAxis === \"top\" || xAxis === null ? \"bottom\" : \"top\";\n  if (fyAxis === true) fyAxis = yAxis === \"right\" || yAxis === null ? \"left\" : \"right\";\n\n  const axes = [];\n  maybeGrid(axes, fyGrid, gridFy, fy);\n  maybeAxis(axes, fyAxis, axisFy, \"right\", \"left\", facet, fy);\n  maybeGrid(axes, fxGrid, gridFx, fx);\n  maybeAxis(axes, fxAxis, axisFx, \"top\", \"bottom\", facet, fx);\n  maybeGrid(axes, yGrid, gridY, y);\n  maybeAxis(axes, yAxis, axisY, \"left\", \"right\", options, y);\n  maybeGrid(axes, xGrid, gridX, x);\n  maybeAxis(axes, xAxis, axisX, \"bottom\", \"top\", options, x);\n  return axes;\n}\n\nfunction maybeAxis(axes, axis, axisType, primary, secondary, defaults, options) {\n  if (!axis) return;\n  const both = isBoth(axis);\n  options = axisOptions(both ? primary : axis, defaults, options);\n  const {line} = options;\n  if ((axisType === axisY || axisType === axisX) && line && !isNone(line)) axes.push(frame(lineOptions(options)));\n  axes.push(axisType(options));\n  if (both) axes.push(axisType({...options, anchor: secondary, label: null}));\n}\n\nfunction maybeGrid(axes, grid, gridType, options) {\n  if (!grid || isNone(grid)) return;\n  axes.push(gridType(gridOptions(grid, options)));\n}\n\nfunction isBoth(value) {\n  return /^\\s*both\\s*$/i.test(value);\n}\n\nfunction axisOptions(\n  anchor,\n  defaults,\n  {\n    line = defaults.line,\n    ticks,\n    tickSize,\n    tickSpacing,\n    tickPadding,\n    tickFormat,\n    tickRotate,\n    fontVariant,\n    ariaLabel,\n    ariaDescription,\n    label = defaults.label,\n    labelAnchor,\n    labelArrow = defaults.labelArrow,\n    labelOffset\n  }\n) {\n  return {\n    anchor,\n    line,\n    ticks,\n    tickSize,\n    tickSpacing,\n    tickPadding,\n    tickFormat,\n    tickRotate,\n    fontVariant,\n    ariaLabel,\n    ariaDescription,\n    label,\n    labelAnchor,\n    labelArrow,\n    labelOffset\n  };\n}\n\nfunction lineOptions(options) {\n  const {anchor, line} = options;\n  return {anchor, facetAnchor: anchor + \"-empty\", stroke: line === true ? undefined : line};\n}\n\nfunction gridOptions(\n  grid,\n  {\n    stroke = isColor(grid) ? grid : undefined,\n    ticks = isGridTicks(grid) ? grid : undefined,\n    tickSpacing,\n    ariaLabel,\n    ariaDescription\n  }\n) {\n  return {\n    stroke,\n    ticks,\n    tickSpacing,\n    ariaLabel,\n    ariaDescription\n  };\n}\n\nfunction isGridTicks(grid) {\n  switch (typeof grid) {\n    case \"number\":\n      return true;\n    case \"string\":\n      return !isColor(grid);\n  }\n  return isIterable(grid) || typeof grid?.range === \"function\";\n}\n\n// Is there an explicit axis already present? TODO We probably want a more\n// explicit test than looking for the ARIA label, but it does afford some\n// flexibility in axis implementation which is nice.\nfunction hasAxis(marks, k) {\n  const prefix = `${k}-axis `;\n  return marks.some((m) => m.ariaLabel?.startsWith(prefix));\n}\n\nfunction hasPositionChannel(k, marks) {\n  for (const mark of marks) {\n    for (const key in mark.channels) {\n      const {scale} = mark.channels[key];\n      if (scale === k || scale === \"projection\") {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\nfunction inheritScaleLabels(newScales, scales) {\n  for (const key in newScales) {\n    const newScale = newScales[key];\n    const scale = scales[key];\n    if (newScale.label === undefined && scale) {\n      newScale.label = scale.label;\n    }\n  }\n  return newScales;\n}\n\n// This differs from the other outerDimensions in that it accounts for rounding\n// and outer padding in the fact scales; we want the frame to align exactly with\n// the actual range, not the desired range.\nfunction actualDimensions({fx, fy}, dimensions) {\n  const {marginTop, marginRight, marginBottom, marginLeft, width, height} = outerDimensions(dimensions);\n  const fxr = fx && outerRange(fx);\n  const fyr = fy && outerRange(fy);\n  return {\n    marginTop: fy ? fyr[0] : marginTop,\n    marginRight: fx ? width - fxr[1] : marginRight,\n    marginBottom: fy ? height - fyr[1] : marginBottom,\n    marginLeft: fx ? fxr[0] : marginLeft,\n    // Some marks, namely the x- and y-axis labels, want to know what the\n    // desired (rather than actual) margins are for positioning.\n    inset: {\n      marginTop: dimensions.marginTop,\n      marginRight: dimensions.marginRight,\n      marginBottom: dimensions.marginBottom,\n      marginLeft: dimensions.marginLeft\n    },\n    width,\n    height\n  };\n}\n\nfunction outerRange(scale) {\n  const domain = scale.domain();\n  let x1 = scale(domain[0]);\n  let x2 = scale(domain[domain.length - 1]);\n  if (x2 < x1) [x1, x2] = [x2, x1];\n  return [x1, x2 + scale.bandwidth()];\n}\n", "import {\n  bisect,\n  extent,\n  thresholdFreedmanDiaconis,\n  thresholdScott,\n  thresholdSturges,\n  tickIncrement,\n  ticks,\n  utcTickInterval\n} from \"d3\";\nimport {withTip} from \"../mark.js\";\nimport {\n  coerceDate,\n  coerceNumbers,\n  identity,\n  isIterable,\n  isTemporal,\n  labelof,\n  map,\n  maybeApplyInterval,\n  maybeColorChannel,\n  maybeColumn,\n  maybeRangeInterval,\n  maybeTuple,\n  maybeValue,\n  mid,\n  valueof\n} from \"../options.js\";\nimport {maybeUtcInterval} from \"../time.js\";\nimport {basic} from \"./basic.js\";\nimport {\n  hasOutput,\n  maybeEvaluator,\n  maybeGroup,\n  maybeOutput,\n  maybeOutputs,\n  maybeReduce,\n  maybeSort,\n  maybeSubgroup,\n  reduceCount,\n  reduceFirst,\n  reduceIdentity\n} from \"./group.js\";\nimport {maybeInsetX, maybeInsetY} from \"./inset.js\";\n\n// Group on {z, fill, stroke}, then optionally on y, then bin x.\nexport function binX(outputs = {y: \"count\"}, options = {}) {\n  [outputs, options] = mergeOptions(outputs, options);\n  const {x, y} = options;\n  return binn(maybeBinValue(x, options, identity), null, null, y, outputs, maybeInsetX(options));\n}\n\n// Group on {z, fill, stroke}, then optionally on x, then bin y.\nexport function binY(outputs = {x: \"count\"}, options = {}) {\n  [outputs, options] = mergeOptions(outputs, options);\n  const {x, y} = options;\n  return binn(null, maybeBinValue(y, options, identity), x, null, outputs, maybeInsetY(options));\n}\n\n// Group on {z, fill, stroke}, then bin on x and y.\nexport function bin(outputs = {fill: \"count\"}, options = {}) {\n  [outputs, options] = mergeOptions(outputs, options);\n  const {x, y} = maybeBinValueTuple(options);\n  return binn(x, y, null, null, outputs, maybeInsetX(maybeInsetY(options)));\n}\n\nfunction maybeDenseInterval(bin, k, options = {}) {\n  return options?.interval == null\n    ? options\n    : bin({[k]: options?.reduce === undefined ? reduceFirst : options.reduce, filter: null}, options);\n}\n\nexport function maybeDenseIntervalX(options = {}) {\n  return maybeDenseInterval(binX, \"y\", withTip(options, \"x\"));\n}\n\nexport function maybeDenseIntervalY(options = {}) {\n  return maybeDenseInterval(binY, \"x\", withTip(options, \"y\"));\n}\n\nfunction binn(\n  bx, // optionally bin on x (exclusive with gx)\n  by, // optionally bin on y (exclusive with gy)\n  gx, // optionally group on x (exclusive with bx and gy)\n  gy, // optionally group on y (exclusive with by and gx)\n  {\n    data: reduceData = reduceIdentity, // TODO avoid materializing when unused?\n    filter = reduceCount, // return only non-empty bins by default\n    sort,\n    reverse,\n    ...outputs // output channel definitions\n  } = {},\n  inputs = {} // input channels and options\n) {\n  bx = maybeBin(bx);\n  by = maybeBin(by);\n\n  // Compute the outputs.\n  outputs = maybeBinOutputs(outputs, inputs);\n  reduceData = maybeBinReduce(reduceData, identity);\n  sort = sort == null ? undefined : maybeBinOutput(\"sort\", sort, inputs);\n  filter = filter == null ? undefined : maybeBinEvaluator(\"filter\", filter, inputs);\n\n  // Don\u2019t group on a channel if an output requires it as an input!\n  if (gx != null && hasOutput(outputs, \"x\", \"x1\", \"x2\")) gx = null;\n  if (gy != null && hasOutput(outputs, \"y\", \"y1\", \"y2\")) gy = null;\n\n  // Produce x1, x2, y1, and y2 output channels as appropriate (when binning).\n  const [BX1, setBX1] = maybeColumn(bx);\n  const [BX2, setBX2] = maybeColumn(bx);\n  const [BY1, setBY1] = maybeColumn(by);\n  const [BY2, setBY2] = maybeColumn(by);\n\n  // Produce x or y output channels as appropriate (when grouping).\n  const [k, gk] = gx != null ? [gx, \"x\"] : gy != null ? [gy, \"y\"] : [];\n  const [GK, setGK] = maybeColumn(k);\n\n  // Greedily materialize the z, fill, and stroke channels (if channels and not\n  // constants) so that we can reference them for subdividing groups without\n  // computing them more than once. We also want to consume options that should\n  // only apply to this transform rather than passing them through to the next.\n  const {\n    x,\n    y,\n    z,\n    fill,\n    stroke,\n    x1,\n    x2, // consumed if x is an output\n    y1,\n    y2, // consumed if y is an output\n    domain,\n    cumulative,\n    thresholds,\n    interval,\n    ...options\n  } = inputs;\n  const [GZ, setGZ] = maybeColumn(z);\n  const [vfill] = maybeColorChannel(fill);\n  const [vstroke] = maybeColorChannel(stroke);\n  const [GF, setGF] = maybeColumn(vfill);\n  const [GS, setGS] = maybeColumn(vstroke);\n\n  return {\n    ...(\"z\" in inputs && {z: GZ || z}),\n    ...(\"fill\" in inputs && {fill: GF || fill}),\n    ...(\"stroke\" in inputs && {stroke: GS || stroke}),\n    ...basic(options, (data, facets, plotOptions) => {\n      const K = maybeApplyInterval(valueof(data, k), plotOptions?.[gk]);\n      const Z = valueof(data, z);\n      const F = valueof(data, vfill);\n      const S = valueof(data, vstroke);\n      const G = maybeSubgroup(outputs, {z: Z, fill: F, stroke: S});\n      const groupFacets = [];\n      const groupData = [];\n      const GK = K && setGK([]);\n      const GZ = Z && setGZ([]);\n      const GF = F && setGF([]);\n      const GS = S && setGS([]);\n      const BX1 = bx && setBX1([]);\n      const BX2 = bx && setBX2([]);\n      const BY1 = by && setBY1([]);\n      const BY2 = by && setBY2([]);\n      const bin = bing(bx?.(data), by?.(data));\n      let i = 0;\n      for (const o of outputs) o.initialize(data);\n      if (sort) sort.initialize(data);\n      if (filter) filter.initialize(data);\n      for (const facet of facets) {\n        const groupFacet = [];\n        for (const o of outputs) o.scope(\"facet\", facet);\n        if (sort) sort.scope(\"facet\", facet);\n        if (filter) filter.scope(\"facet\", facet);\n        for (const [f, I] of maybeGroup(facet, G)) {\n          for (const [k, g] of maybeGroup(I, K)) {\n            for (const [b, extent] of bin(g)) {\n              if (filter && !filter.reduce(b, extent)) continue;\n              groupFacet.push(i++);\n              groupData.push(reduceData.reduceIndex(b, data, extent));\n              if (K) GK.push(k);\n              if (Z) GZ.push(G === Z ? f : Z[b[0]]);\n              if (F) GF.push(G === F ? f : F[b[0]]);\n              if (S) GS.push(G === S ? f : S[b[0]]);\n              if (BX1) BX1.push(extent.x1), BX2.push(extent.x2);\n              if (BY1) BY1.push(extent.y1), BY2.push(extent.y2);\n              for (const o of outputs) o.reduce(b, extent);\n              if (sort) sort.reduce(b);\n            }\n          }\n        }\n        groupFacets.push(groupFacet);\n      }\n      maybeSort(groupFacets, sort, reverse);\n      return {data: groupData, facets: groupFacets};\n    }),\n    ...(!hasOutput(outputs, \"x\") && (BX1 ? {x1: BX1, x2: BX2, x: mid(BX1, BX2)} : {x, x1, x2})),\n    ...(!hasOutput(outputs, \"y\") && (BY1 ? {y1: BY1, y2: BY2, y: mid(BY1, BY2)} : {y, y1, y2})),\n    ...(GK && {[gk]: GK}),\n    ...Object.fromEntries(outputs.map(({name, output}) => [name, output]))\n  };\n}\n\n// Allow bin options to be specified as part of outputs; merge them into options.\nfunction mergeOptions({cumulative, domain, thresholds, interval, ...outputs}, options) {\n  return [outputs, {cumulative, domain, thresholds, interval, ...options}];\n}\n\nfunction maybeBinValue(value, {cumulative, domain, thresholds, interval}, defaultValue) {\n  value = {...maybeValue(value)};\n  if (value.domain === undefined) value.domain = domain;\n  if (value.cumulative === undefined) value.cumulative = cumulative;\n  if (value.thresholds === undefined) value.thresholds = thresholds;\n  if (value.interval === undefined) value.interval = interval;\n  if (value.value === undefined) value.value = defaultValue;\n  value.thresholds = maybeThresholds(value.thresholds, value.interval);\n  return value;\n}\n\nfunction maybeBinValueTuple(options) {\n  let {x, y} = options;\n  x = maybeBinValue(x, options);\n  y = maybeBinValue(y, options);\n  [x.value, y.value] = maybeTuple(x.value, y.value);\n  return {x, y};\n}\n\nfunction maybeBin(options) {\n  if (options == null) return;\n  const {value, cumulative, domain = extent, thresholds} = options;\n  const bin = (data) => {\n    let V = valueof(data, value);\n    let T; // bin thresholds\n    if (isTemporal(V) || isTimeThresholds(thresholds)) {\n      V = map(V, coerceDate, Float64Array); // like coerceDates, but faster\n      let [min, max] = typeof domain === \"function\" ? domain(V) : domain;\n      let t = typeof thresholds === \"function\" && !isInterval(thresholds) ? thresholds(V, min, max) : thresholds;\n      if (typeof t === \"number\") t = utcTickInterval(min, max, t);\n      if (isInterval(t)) {\n        if (domain === extent) {\n          min = t.floor(min);\n          max = t.offset(t.floor(max));\n        }\n        t = t.range(min, t.offset(max));\n      }\n      T = t;\n    } else {\n      V = coerceNumbers(V);\n      let [min, max] = typeof domain === \"function\" ? domain(V) : domain;\n      let t = typeof thresholds === \"function\" && !isInterval(thresholds) ? thresholds(V, min, max) : thresholds;\n      if (typeof t === \"number\") {\n        // This differs from d3.ticks with regard to exclusive bounds: we want a\n        // first threshold less than or equal to the minimum, and a last\n        // threshold (strictly) greater than the maximum.\n        if (domain === extent) {\n          let step = tickIncrement(min, max, t);\n          if (isFinite(step)) {\n            if (step > 0) {\n              let r0 = Math.round(min / step);\n              let r1 = Math.round(max / step);\n              if (!(r0 * step <= min)) --r0;\n              if (!(r1 * step > max)) ++r1;\n              let n = r1 - r0 + 1;\n              t = new Float64Array(n);\n              for (let i = 0; i < n; ++i) t[i] = (r0 + i) * step;\n            } else if (step < 0) {\n              step = -step;\n              let r0 = Math.round(min * step);\n              let r1 = Math.round(max * step);\n              if (!(r0 / step <= min)) --r0;\n              if (!(r1 / step > max)) ++r1;\n              let n = r1 - r0 + 1;\n              t = new Float64Array(n);\n              for (let i = 0; i < n; ++i) t[i] = (r0 + i) / step;\n            } else {\n              t = [min];\n            }\n          } else {\n            t = [min];\n          }\n        } else {\n          t = ticks(min, max, t);\n        }\n      } else if (isInterval(t)) {\n        if (domain === extent) {\n          min = t.floor(min);\n          max = t.offset(t.floor(max));\n        }\n        t = t.range(min, t.offset(max));\n      }\n      T = t;\n    }\n    const E = [];\n    if (T.length === 1) E.push([T[0], T[0]]); // collapsed domain\n    else for (let i = 1; i < T.length; ++i) E.push([T[i - 1], T[i]]);\n    E.bin = (cumulative < 0 ? bin1cn : cumulative > 0 ? bin1cp : bin1)(E, T, V);\n    return E;\n  };\n  bin.label = labelof(value);\n  return bin;\n}\n\nexport function maybeThresholds(thresholds, interval, defaultThresholds = thresholdAuto) {\n  if (thresholds === undefined) {\n    return interval === undefined ? defaultThresholds : maybeRangeInterval(interval);\n  }\n  if (typeof thresholds === \"string\") {\n    switch (thresholds.toLowerCase()) {\n      case \"freedman-diaconis\":\n        return thresholdFreedmanDiaconis;\n      case \"scott\":\n        return thresholdScott;\n      case \"sturges\":\n        return thresholdSturges;\n      case \"auto\":\n        return thresholdAuto;\n    }\n    return maybeUtcInterval(thresholds);\n  }\n  return thresholds; // pass array, count, or function to bin.thresholds\n}\n\nfunction maybeBinOutputs(outputs, inputs) {\n  return maybeOutputs(outputs, inputs, maybeBinOutput);\n}\n\nfunction maybeBinOutput(name, reduce, inputs) {\n  return maybeOutput(name, reduce, inputs, maybeBinEvaluator);\n}\n\nfunction maybeBinEvaluator(name, reduce, inputs) {\n  return maybeEvaluator(name, reduce, inputs, maybeBinReduce);\n}\n\nfunction maybeBinReduce(reduce, value) {\n  return maybeReduce(reduce, value, maybeBinReduceFallback);\n}\n\nfunction maybeBinReduceFallback(reduce) {\n  switch (`${reduce}`.toLowerCase()) {\n    case \"x\":\n      return reduceX;\n    case \"x1\":\n      return reduceX1;\n    case \"x2\":\n      return reduceX2;\n    case \"y\":\n      return reduceY;\n    case \"y1\":\n      return reduceY1;\n    case \"y2\":\n      return reduceY2;\n  }\n  throw new Error(`invalid bin reduce: ${reduce}`);\n}\n\nfunction thresholdAuto(values, min, max) {\n  return Math.min(200, thresholdScott(values, min, max));\n}\n\nfunction isTimeThresholds(t) {\n  return isTimeInterval(t) || (isIterable(t) && isTemporal(t));\n}\n\nfunction isTimeInterval(t) {\n  return isInterval(t) && typeof t === \"function\" && t() instanceof Date;\n}\n\nfunction isInterval(t) {\n  return typeof t?.range === \"function\";\n}\n\nfunction bing(EX, EY) {\n  return EX && EY\n    ? function* (I) {\n        const X = EX.bin(I); // first bin on x\n        for (const [ix, [x1, x2]] of EX.entries()) {\n          const Y = EY.bin(X[ix]); // then bin on y\n          for (const [iy, [y1, y2]] of EY.entries()) {\n            yield [Y[iy], {x1, y1, x2, y2}];\n          }\n        }\n      }\n    : EX\n    ? function* (I) {\n        const X = EX.bin(I);\n        for (const [i, [x1, x2]] of EX.entries()) {\n          yield [X[i], {x1, x2}];\n        }\n      }\n    : function* (I) {\n        const Y = EY.bin(I);\n        for (const [i, [y1, y2]] of EY.entries()) {\n          yield [Y[i], {y1, y2}];\n        }\n      };\n}\n\n// non-cumulative distribution\nfunction bin1(E, T, V) {\n  T = coerceNumbers(T); // for faster bisection\n  return (I) => {\n    const B = E.map(() => []);\n    for (const i of I) B[bisect(T, V[i]) - 1]?.push(i); // TODO quantization?\n    return B;\n  };\n}\n\n// cumulative distribution\nfunction bin1cp(E, T, V) {\n  const bin = bin1(E, T, V);\n  return (I) => {\n    const B = bin(I);\n    for (let i = 1, n = B.length; i < n; ++i) {\n      const C = B[i - 1];\n      const b = B[i];\n      for (const j of C) b.push(j);\n    }\n    return B;\n  };\n}\n\n// complementary cumulative distribution\nfunction bin1cn(E, T, V) {\n  const bin = bin1(E, T, V);\n  return (I) => {\n    const B = bin(I);\n    for (let i = B.length - 2; i >= 0; --i) {\n      const C = B[i + 1];\n      const b = B[i];\n      for (const j of C) b.push(j);\n    }\n    return B;\n  };\n}\n\nfunction mid1(x1, x2) {\n  const m = (+x1 + +x2) / 2;\n  return x1 instanceof Date ? new Date(m) : m;\n}\n\nconst reduceX = {\n  reduceIndex(I, X, {x1, x2}) {\n    return mid1(x1, x2);\n  }\n};\n\nconst reduceY = {\n  reduceIndex(I, X, {y1, y2}) {\n    return mid1(y1, y2);\n  }\n};\n\nconst reduceX1 = {\n  reduceIndex(I, X, {x1}) {\n    return x1;\n  }\n};\n\nconst reduceX2 = {\n  reduceIndex(I, X, {x2}) {\n    return x2;\n  }\n};\n\nconst reduceY1 = {\n  reduceIndex(I, X, {y1}) {\n    return y1;\n  }\n};\n\nconst reduceY2 = {\n  reduceIndex(I, X, {y2}) {\n    return y2;\n  }\n};\n", "import {hasX, hasY, identity} from \"../options.js\";\n\nexport function maybeIdentityX(options = {}) {\n  return hasX(options) ? options : {...options, x: identity};\n}\n\nexport function maybeIdentityY(options = {}) {\n  return hasY(options) ? options : {...options, y: identity};\n}\n", "import {InternMap, cumsum, greatest, group, groupSort, max, min, rollup, sum} from \"d3\";\nimport {ascendingDefined, descendingDefined} from \"../defined.js\";\nimport {withTip} from \"../mark.js\";\nimport {maybeApplyInterval, maybeColumn, maybeZ, maybeZero} from \"../options.js\";\nimport {column, field, mid, one, range, valueof} from \"../options.js\";\nimport {basic} from \"./basic.js\";\n\nexport function stackX(stackOptions = {}, options = {}) {\n  if (arguments.length === 1) [stackOptions, options] = mergeOptions(stackOptions);\n  const {y1, y = y1, x, ...rest} = options; // note: consumes x!\n  const [transform, Y, x1, x2] = stack(y, x, \"y\", \"x\", stackOptions, rest);\n  return {...transform, y1, y: Y, x1, x2, x: mid(x1, x2)};\n}\n\nexport function stackX1(stackOptions = {}, options = {}) {\n  if (arguments.length === 1) [stackOptions, options] = mergeOptions(stackOptions);\n  const {y1, y = y1, x} = options;\n  const [transform, Y, X] = stack(y, x, \"y\", \"x\", stackOptions, options);\n  return {...transform, y1, y: Y, x: X};\n}\n\nexport function stackX2(stackOptions = {}, options = {}) {\n  if (arguments.length === 1) [stackOptions, options] = mergeOptions(stackOptions);\n  const {y1, y = y1, x} = options;\n  const [transform, Y, , X] = stack(y, x, \"y\", \"x\", stackOptions, options);\n  return {...transform, y1, y: Y, x: X};\n}\n\nexport function stackY(stackOptions = {}, options = {}) {\n  if (arguments.length === 1) [stackOptions, options] = mergeOptions(stackOptions);\n  const {x1, x = x1, y, ...rest} = options; // note: consumes y!\n  const [transform, X, y1, y2] = stack(x, y, \"x\", \"y\", stackOptions, rest);\n  return {...transform, x1, x: X, y1, y2, y: mid(y1, y2)};\n}\n\nexport function stackY1(stackOptions = {}, options = {}) {\n  if (arguments.length === 1) [stackOptions, options] = mergeOptions(stackOptions);\n  const {x1, x = x1, y} = options;\n  const [transform, X, Y] = stack(x, y, \"x\", \"y\", stackOptions, options);\n  return {...transform, x1, x: X, y: Y};\n}\n\nexport function stackY2(stackOptions = {}, options = {}) {\n  if (arguments.length === 1) [stackOptions, options] = mergeOptions(stackOptions);\n  const {x1, x = x1, y} = options;\n  const [transform, X, , Y] = stack(x, y, \"x\", \"y\", stackOptions, options);\n  return {...transform, x1, x: X, y: Y};\n}\n\nexport function maybeStackX({x, x1, x2, ...options} = {}) {\n  options = withTip(options, \"y\");\n  if (x1 === undefined && x2 === undefined) return stackX({x, ...options});\n  [x1, x2] = maybeZero(x, x1, x2);\n  return {...options, x1, x2};\n}\n\nexport function maybeStackY({y, y1, y2, ...options} = {}) {\n  options = withTip(options, \"x\");\n  if (y1 === undefined && y2 === undefined) return stackY({y, ...options});\n  [y1, y2] = maybeZero(y, y1, y2);\n  return {...options, y1, y2};\n}\n\n// The reverse option is ambiguous: it is both a stack option and a basic\n// transform. If only one options object is specified, we interpret it as a\n// stack option, and therefore must remove it from the propagated options.\nfunction mergeOptions(options) {\n  const {offset, order, reverse, ...rest} = options;\n  return [{offset, order, reverse}, rest];\n}\n\n// This is a hint to the tooltip mark that the y1 and y2 channels (for stackY,\n// or conversely x1 and x2 for stackX) represent a stacked length, and that the\n// tooltip should therefore show y2-y1 instead of an extent.\nconst lengthy = {length: true};\n\nfunction stack(x, y = one, kx, ky, {offset, order, reverse}, options) {\n  const z = maybeZ(options);\n  const [X, setX] = maybeColumn(x);\n  const [Y1, setY1] = column(y);\n  const [Y2, setY2] = column(y);\n  Y1.hint = Y2.hint = lengthy;\n  offset = maybeOffset(offset);\n  order = maybeOrder(order, offset, ky);\n  return [\n    basic(options, (data, facets, plotOptions) => {\n      const X = x == null ? undefined : setX(maybeApplyInterval(valueof(data, x), plotOptions?.[kx]));\n      const Y = valueof(data, y, Float64Array);\n      const Z = valueof(data, z);\n      const compare = order && order(data, X, Y, Z);\n      const n = data.length;\n      const Y1 = setY1(new Float64Array(n));\n      const Y2 = setY2(new Float64Array(n));\n      const facetstacks = [];\n      for (const facet of facets) {\n        const stacks = X ? Array.from(group(facet, (i) => X[i]).values()) : [facet];\n        if (compare) for (const stack of stacks) stack.sort(compare);\n        for (const stack of stacks) {\n          let yn = 0;\n          let yp = 0;\n          if (reverse) stack.reverse();\n          for (const i of stack) {\n            const y = Y[i];\n            if (y < 0) yn = Y2[i] = (Y1[i] = yn) + y;\n            else if (y > 0) yp = Y2[i] = (Y1[i] = yp) + y;\n            else Y2[i] = Y1[i] = yp; // NaN or zero\n          }\n        }\n        facetstacks.push(stacks);\n      }\n      if (offset) offset(facetstacks, Y1, Y2, Z);\n      return {data, facets};\n    }),\n    X,\n    Y1,\n    Y2\n  ];\n}\n\nfunction maybeOffset(offset) {\n  if (offset == null) return;\n  if (typeof offset === \"function\") return offset;\n  switch (`${offset}`.toLowerCase()) {\n    case \"expand\":\n    case \"normalize\":\n      return offsetExpand;\n    case \"center\":\n    case \"silhouette\":\n      return offsetCenter;\n    case \"wiggle\":\n      return offsetWiggle;\n  }\n  throw new Error(`unknown offset: ${offset}`);\n}\n\n// Given a single stack, returns the minimum and maximum values from the given\n// Y2 column. Note that this relies on Y2 always being the outer column for\n// diverging values.\nfunction extent(stack, Y2) {\n  let min = 0,\n    max = 0;\n  for (const i of stack) {\n    const y = Y2[i];\n    if (y < min) min = y;\n    if (y > max) max = y;\n  }\n  return [min, max];\n}\n\nfunction offsetExpand(facetstacks, Y1, Y2) {\n  for (const stacks of facetstacks) {\n    for (const stack of stacks) {\n      const [yn, yp] = extent(stack, Y2);\n      for (const i of stack) {\n        const m = 1 / (yp - yn || 1);\n        Y1[i] = m * (Y1[i] - yn);\n        Y2[i] = m * (Y2[i] - yn);\n      }\n    }\n  }\n}\n\nfunction offsetCenter(facetstacks, Y1, Y2) {\n  for (const stacks of facetstacks) {\n    for (const stack of stacks) {\n      const [yn, yp] = extent(stack, Y2);\n      for (const i of stack) {\n        const m = (yp + yn) / 2;\n        Y1[i] -= m;\n        Y2[i] -= m;\n      }\n    }\n    offsetZero(stacks, Y1, Y2);\n  }\n  offsetCenterFacets(facetstacks, Y1, Y2);\n}\n\nfunction offsetWiggle(facetstacks, Y1, Y2, Z) {\n  for (const stacks of facetstacks) {\n    const prev = new InternMap();\n    let y = 0;\n    for (const stack of stacks) {\n      let j = -1;\n      const Fi = stack.map((i) => Math.abs(Y2[i] - Y1[i]));\n      const Df = stack.map((i) => {\n        j = Z ? Z[i] : ++j;\n        const value = Y2[i] - Y1[i];\n        const diff = prev.has(j) ? value - prev.get(j) : 0;\n        prev.set(j, value);\n        return diff;\n      });\n      const Cf1 = [0, ...cumsum(Df)];\n      for (const i of stack) {\n        Y1[i] += y;\n        Y2[i] += y;\n      }\n      const s1 = sum(Fi);\n      if (s1) y -= sum(Fi, (d, i) => (Df[i] / 2 + Cf1[i]) * d) / s1;\n    }\n    offsetZero(stacks, Y1, Y2);\n  }\n  offsetCenterFacets(facetstacks, Y1, Y2);\n}\n\nfunction offsetZero(stacks, Y1, Y2) {\n  const m = min(stacks, (stack) => min(stack, (i) => Y1[i]));\n  for (const stack of stacks) {\n    for (const i of stack) {\n      Y1[i] -= m;\n      Y2[i] -= m;\n    }\n  }\n}\n\nfunction offsetCenterFacets(facetstacks, Y1, Y2) {\n  const n = facetstacks.length;\n  if (n === 1) return;\n  const facets = facetstacks.map((stacks) => stacks.flat());\n  const m = facets.map((I) => (min(I, (i) => Y1[i]) + max(I, (i) => Y2[i])) / 2);\n  const m0 = min(m);\n  for (let j = 0; j < n; j++) {\n    const p = m0 - m[j];\n    for (const i of facets[j]) {\n      Y1[i] += p;\n      Y2[i] += p;\n    }\n  }\n}\n\nfunction maybeOrder(order, offset, ky) {\n  if (order === undefined && offset === offsetWiggle) return orderInsideOut(ascendingDefined);\n  if (order == null) return;\n  if (typeof order === \"string\") {\n    const negate = order.startsWith(\"-\");\n    const compare = negate ? descendingDefined : ascendingDefined;\n    switch ((negate ? order.slice(1) : order).toLowerCase()) {\n      case \"value\":\n      case ky:\n        return orderY(compare);\n      case \"z\":\n        return orderZ(compare);\n      case \"sum\":\n        return orderSum(compare);\n      case \"appearance\":\n        return orderAppearance(compare);\n      case \"inside-out\":\n        return orderInsideOut(compare);\n    }\n    return orderAccessor(field(order));\n  }\n  if (typeof order === \"function\") return (order.length === 1 ? orderAccessor : orderComparator)(order);\n  if (Array.isArray(order)) return orderGiven(order);\n  throw new Error(`invalid order: ${order}`);\n}\n\n// by value\nfunction orderY(compare) {\n  return (data, X, Y) => (i, j) => compare(Y[i], Y[j]);\n}\n\n// by location\nfunction orderZ(compare) {\n  return (data, X, Y, Z) => (i, j) => compare(Z[i], Z[j]);\n}\n\n// by sum of value (a.k.a. \u201Cascending\u201D)\nfunction orderSum(compare) {\n  return orderZDomain(compare, (data, X, Y, Z) =>\n    groupSort(\n      range(data),\n      (I) => sum(I, (i) => Y[i]),\n      (i) => Z[i]\n    )\n  );\n}\n\n// by x = argmax of value\nfunction orderAppearance(compare) {\n  return orderZDomain(compare, (data, X, Y, Z) =>\n    groupSort(\n      range(data),\n      (I) => X[greatest(I, (i) => Y[i])],\n      (i) => Z[i]\n    )\n  );\n}\n\n// by x = argmax of value, but rearranged inside-out by alternating series\n// according to the sign of a running divergence of sums\nfunction orderInsideOut(compare) {\n  return orderZDomain(compare, (data, X, Y, Z) => {\n    const I = range(data);\n    const K = groupSort(\n      I,\n      (I) => X[greatest(I, (i) => Y[i])],\n      (i) => Z[i]\n    );\n    const sums = rollup(\n      I,\n      (I) => sum(I, (i) => Y[i]),\n      (i) => Z[i]\n    );\n    const Kp = [],\n      Kn = [];\n    let s = 0;\n    for (const k of K) {\n      if (s < 0) {\n        s += sums.get(k);\n        Kp.push(k);\n      } else {\n        s -= sums.get(k);\n        Kn.push(k);\n      }\n    }\n    return Kn.reverse().concat(Kp);\n  });\n}\n\nfunction orderAccessor(f) {\n  return (data) => {\n    const O = valueof(data, f);\n    return (i, j) => ascendingDefined(O[i], O[j]);\n  };\n}\n\nfunction orderComparator(f) {\n  return (data) => (i, j) => f(data[i], data[j]);\n}\n\nfunction orderGiven(domain) {\n  return orderZDomain(ascendingDefined, () => domain);\n}\n\n// Given an ordering (domain) of distinct values in z that can be derived from\n// the data, returns a comparator that can be used to sort stacks. Note that\n// this is a series order: it will be consistent across stacks.\nfunction orderZDomain(compare, domain) {\n  return (data, X, Y, Z) => {\n    if (!Z) throw new Error(\"missing channel: z\");\n    const map = new InternMap(domain(data, X, Y, Z).map((d, i) => [d, i]));\n    return (i, j) => compare(map.get(Z[i]), map.get(Z[j]));\n  };\n}\n", "import {create} from \"../context.js\";\nimport {Mark} from \"../mark.js\";\nimport {hasXY, identity, indexOf, number} from \"../options.js\";\nimport {isCollapsed} from \"../scales.js\";\nimport {applyAttr, applyChannelStyles, applyDirectStyles, applyIndirectStyles, applyTransform} from \"../style.js\";\nimport {impliedString} from \"../style.js\";\nimport {maybeIdentityX, maybeIdentityY} from \"../transforms/identity.js\";\nimport {maybeIntervalX, maybeIntervalY} from \"../transforms/interval.js\";\nimport {maybeStackX, maybeStackY} from \"../transforms/stack.js\";\n\nexport class AbstractBar extends Mark {\n  constructor(data, channels, options = {}, defaults) {\n    super(data, channels, options, defaults);\n    const {inset = 0, insetTop = inset, insetRight = inset, insetBottom = inset, insetLeft = inset, rx, ry} = options;\n    this.insetTop = number(insetTop);\n    this.insetRight = number(insetRight);\n    this.insetBottom = number(insetBottom);\n    this.insetLeft = number(insetLeft);\n    this.rx = impliedString(rx, \"auto\"); // number or percentage\n    this.ry = impliedString(ry, \"auto\");\n  }\n  render(index, scales, channels, dimensions, context) {\n    const {rx, ry} = this;\n    return create(\"svg:g\", context)\n      .call(applyIndirectStyles, this, dimensions, context)\n      .call(this._transform, this, scales)\n      .call((g) =>\n        g\n          .selectAll()\n          .data(index)\n          .enter()\n          .append(\"rect\")\n          .call(applyDirectStyles, this)\n          .attr(\"x\", this._x(scales, channels, dimensions))\n          .attr(\"width\", this._width(scales, channels, dimensions))\n          .attr(\"y\", this._y(scales, channels, dimensions))\n          .attr(\"height\", this._height(scales, channels, dimensions))\n          .call(applyAttr, \"rx\", rx)\n          .call(applyAttr, \"ry\", ry)\n          .call(applyChannelStyles, this, channels)\n      )\n      .node();\n  }\n  _x(scales, {x: X}, {marginLeft}) {\n    const {insetLeft} = this;\n    return X ? (i) => X[i] + insetLeft : marginLeft + insetLeft;\n  }\n  _y(scales, {y: Y}, {marginTop}) {\n    const {insetTop} = this;\n    return Y ? (i) => Y[i] + insetTop : marginTop + insetTop;\n  }\n  _width({x}, {x: X}, {marginRight, marginLeft, width}) {\n    const {insetLeft, insetRight} = this;\n    const bandwidth = X && x ? x.bandwidth() : width - marginRight - marginLeft;\n    return Math.max(0, bandwidth - insetLeft - insetRight);\n  }\n  _height({y}, {y: Y}, {marginTop, marginBottom, height}) {\n    const {insetTop, insetBottom} = this;\n    const bandwidth = Y && y ? y.bandwidth() : height - marginTop - marginBottom;\n    return Math.max(0, bandwidth - insetTop - insetBottom);\n  }\n}\n\nconst defaults = {\n  ariaLabel: \"bar\"\n};\n\nexport class BarX extends AbstractBar {\n  constructor(data, options = {}) {\n    const {x1, x2, y} = options;\n    super(\n      data,\n      {\n        x1: {value: x1, scale: \"x\"},\n        x2: {value: x2, scale: \"x\"},\n        y: {value: y, scale: \"y\", type: \"band\", optional: true}\n      },\n      options,\n      defaults\n    );\n  }\n  _transform(selection, mark, {x}) {\n    selection.call(applyTransform, mark, {x}, 0, 0);\n  }\n  _x({x}, {x1: X1, x2: X2}, {marginLeft}) {\n    const {insetLeft} = this;\n    return isCollapsed(x) ? marginLeft + insetLeft : (i) => Math.min(X1[i], X2[i]) + insetLeft;\n  }\n  _width({x}, {x1: X1, x2: X2}, {marginRight, marginLeft, width}) {\n    const {insetLeft, insetRight} = this;\n    return isCollapsed(x)\n      ? width - marginRight - marginLeft - insetLeft - insetRight\n      : (i) => Math.max(0, Math.abs(X2[i] - X1[i]) - insetLeft - insetRight);\n  }\n}\n\nexport class BarY extends AbstractBar {\n  constructor(data, options = {}) {\n    const {x, y1, y2} = options;\n    super(\n      data,\n      {\n        y1: {value: y1, scale: \"y\"},\n        y2: {value: y2, scale: \"y\"},\n        x: {value: x, scale: \"x\", type: \"band\", optional: true}\n      },\n      options,\n      defaults\n    );\n  }\n  _transform(selection, mark, {y}) {\n    selection.call(applyTransform, mark, {y}, 0, 0);\n  }\n  _y({y}, {y1: Y1, y2: Y2}, {marginTop}) {\n    const {insetTop} = this;\n    return isCollapsed(y) ? marginTop + insetTop : (i) => Math.min(Y1[i], Y2[i]) + insetTop;\n  }\n  _height({y}, {y1: Y1, y2: Y2}, {marginTop, marginBottom, height}) {\n    const {insetTop, insetBottom} = this;\n    return isCollapsed(y)\n      ? height - marginTop - marginBottom - insetTop - insetBottom\n      : (i) => Math.max(0, Math.abs(Y2[i] - Y1[i]) - insetTop - insetBottom);\n  }\n}\n\nexport function barX(data, options = {}) {\n  if (!hasXY(options)) options = {...options, y: indexOf, x2: identity};\n  return new BarX(data, maybeStackX(maybeIntervalX(maybeIdentityX(options))));\n}\n\nexport function barY(data, options = {}) {\n  if (!hasXY(options)) options = {...options, x: indexOf, y2: identity};\n  return new BarY(data, maybeStackY(maybeIntervalY(maybeIdentityY(options))));\n}\n", "/**\n * @license\n * Copyright 2023 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\ninterface Page {\n  Charts: ChartData;\n}\n\ninterface ChartData {\n  Programs: Program[];\n}\n\ninterface Program {\n  ID: string;\n  Name: string;\n  Charts: Chart[];\n}\n\ninterface Chart {\n  ID: string;\n  Name: string;\n  Type: string;\n  Data: Datum[] | null;\n}\n\ninterface Datum {\n  Key: string;\n  Value: number;\n}\n\ndeclare const Page: Page;\n\nimport * as d3 from \"d3\";\nimport * as Plot from \"@observablehq/plot\";\n\nfor (const program of Page.Charts.Programs) {\n  for (const counter of program.Charts) {\n    switch (counter.Type) {\n      case \"partition\":\n        document\n          .querySelector(`[data-chart-id=\"${counter.ID}\"]`)\n          ?.append(partition(counter));\n\n        break;\n      case \"histogram\":\n        document\n          .querySelector(`[data-chart-id=\"${counter.ID}\"]`)\n          ?.append(histogram(counter));\n\n        break;\n      default:\n        console.error(\"unknown chart type\");\n        break;\n    }\n  }\n}\n\nfunction partition({ Data, Name }: Chart) {\n  Data ??= [];\n  return Plot.plot({\n    color: {\n      type: \"ordinal\",\n      scheme: \"Spectral\",\n    },\n    nice: true,\n    x: {\n      label: Name,\n      labelOffset: Number.MAX_SAFE_INTEGER,\n      tickRotate: 45,\n      domain: Data.map((d) => d.Key),\n    },\n    y: {\n      label: \"Frequency\",\n      domain: [0, 1],\n    },\n    width: 1024,\n    style: \"overflow:visible;background:transparent;margin-bottom:3rem;\",\n    marks: [\n      Plot.barY(Data, {\n        tip: true,\n        fill: (d) => (isNaN(Number(d.Key)) ? d.Key : Number(d.Key)),\n        x: (d) => d.Key,\n        y: (d) => d.Value,\n      }),\n      Plot.frame(),\n    ],\n  });\n}\n\nfunction histogram({ Data }: Chart) {\n  Data ??= [];\n  const n = 3; // number of facet columns\n  const fixKey = (k: string) => (isNaN(Number(k)) ? k : Number(k));\n  const keys = Array.from(d3.union(Data.map((d) => fixKey(d.Key))));\n  const index = new Map(keys.map((key, i) => [key, i]));\n  const fx = (key: string | number) => (index.get(key) ?? 0) % n;\n  const fy = (key: string | number) => Math.floor((index.get(key) ?? 0) / n);\n\n  return Plot.plot({\n    marginLeft: 60,\n    width: 1024,\n    grid: true,\n    nice: true,\n    x: {\n      label: \"Distribution\",\n    },\n    color: {\n      type: \"ordinal\",\n      legend: true,\n      scheme: \"Spectral\",\n      label: \"Counter\",\n    },\n    y: {\n      insetTop: 16,\n      domain: [0, 1],\n    },\n    fx: {\n      ticks: [],\n    },\n    fy: {\n      ticks: [],\n    },\n    style: \"background:transparent;\",\n    marks: [\n      Plot.barY(\n        Data,\n        Plot.binX(\n          { y: \"proportion-facet\", x: \"x1\", interval: 0.1, cumulative: 1 },\n          {\n            tip: true,\n            fill: (d: Datum) => fixKey(d.Key),\n            x: (d: Datum) => d.Value,\n            fx: (d: Datum) => fx(fixKey(d.Key)),\n            fy: (d: Datum) => fy(fixKey(d.Key)),\n          }\n        )\n      ),\n      Plot.text(keys, {\n        frameAnchor: \"top\",\n        dy: 3,\n        fx,\n        fy,\n      }),\n      Plot.axisX({ anchor: \"bottom\", tickSpacing: 35 }),\n      Plot.axisX({ anchor: \"top\", tickSpacing: 35 }),\n      Plot.frame(),\n    ],\n  });\n}\n\nexport {};\n"],
  "mappings": "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",
  "names": ["ascending", "a", "b", "descending", "a", "b", "bisector", "f", "compare1", "compare2", "delta", "ascending", "d", "x", "descending", "zero", "left", "a", "lo", "hi", "mid", "right", "center", "i", "number", "x", "numbers", "values", "valueof", "value", "index", "ascendingBisect", "bisector", "ascending", "bisectRight", "bisectLeft", "bisectCenter", "number", "bisect_default", "count", "values", "valueof", "value", "index", "length", "array", "empty", "arrayify", "values", "reducer", "reduce", "cross", "lengths", "j", "index", "product", "i", "cumsum", "values", "valueof", "sum", "index", "v", "variance", "values", "valueof", "count", "delta", "mean", "sum", "value", "index", "deviation", "values", "valueof", "v", "variance", "extent", "values", "valueof", "min", "max", "value", "index", "Adder", "x", "p", "i", "j", "y", "hi", "lo", "InternMap", "entries", "key", "keyof", "value", "intern_get", "intern_set", "intern_delete", "InternSet", "values", "_intern", "_key", "identity", "x", "group", "values", "keys", "nest", "identity", "rollup", "values", "reduce", "keys", "nest", "identity", "rollups", "nest", "values", "map", "reduce", "keys", "regroup", "i", "groups", "InternMap", "keyof", "index", "value", "key", "group", "permute", "source", "keys", "key", "sort", "values", "F", "f", "index", "d", "i", "j", "c", "ascendingDefined", "permute", "compareDefined", "compare", "ascending", "a", "b", "x", "groupSort", "values", "reduce", "key", "sort", "rollup", "ak", "av", "bk", "bv", "ascending", "group", "e10", "e5", "e2", "tickSpec", "start", "stop", "count", "step", "power", "error", "factor", "i1", "i2", "inc", "ticks", "reverse", "n", "i", "tickIncrement", "tickStep", "thresholdSturges", "values", "count", "max", "values", "valueof", "value", "index", "maxIndex", "values", "valueof", "max", "index", "value", "min", "values", "valueof", "value", "index", "minIndex", "values", "valueof", "min", "index", "value", "quickselect", "array", "k", "left", "right", "compare", "ascendingDefined", "compareDefined", "n", "m", "z", "s", "sd", "newLeft", "newRight", "t", "i", "j", "swap", "greatest", "values", "compare", "ascending", "max", "defined", "maxValue", "element", "value", "quantile", "values", "p", "valueof", "numbers", "n", "min", "max", "i", "i0", "value0", "quickselect", "value1", "quantileSorted", "number", "thresholdFreedmanDiaconis", "values", "min", "max", "c", "count", "d", "quantile", "thresholdScott", "values", "min", "max", "c", "count", "d", "deviation", "mean", "values", "valueof", "count", "sum", "value", "index", "median", "values", "valueof", "quantile", "flatten", "arrays", "array", "merge", "mode", "values", "valueof", "counts", "InternMap", "value", "index", "modeValue", "modeCount", "count", "pairs", "values", "pairof", "pair", "previous", "first", "value", "a", "b", "range", "start", "stop", "step", "n", "i", "sum", "values", "valueof", "value", "index", "reverse", "values", "union", "others", "set", "InternSet", "other", "o", "identity_default", "x", "top", "right", "bottom", "left", "epsilon", "translateX", "x", "translateY", "y", "number", "scale", "d", "center", "offset", "entering", "axis", "orient", "tickArguments", "tickValues", "tickFormat", "tickSizeInner", "tickSizeOuter", "tickPadding", "k", "transform", "context", "values", "format", "identity_default", "spacing", "range", "range0", "range1", "position", "selection", "path", "tick", "tickExit", "tickEnter", "line", "text", "p", "_", "axisBottom", "scale", "axis", "bottom", "noop", "dispatch", "i", "n", "_", "t", "Dispatch", "parseTypenames", "typenames", "types", "name", "typename", "callback", "T", "get", "set", "copy", "type", "that", "args", "c", "dispatch_default", "xhtml", "namespaces_default", "namespace_default", "name", "prefix", "i", "namespaces_default", "creatorInherit", "name", "document", "uri", "xhtml", "creatorFixed", "fullname", "creator_default", "namespace_default", "none", "selector_default", "selector", "select_default", "select", "selector_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "i", "Selection", "array", "x", "empty", "selectorAll_default", "selector", "arrayAll", "select", "array", "selectAll_default", "selectorAll_default", "groups", "m", "subgroups", "parents", "j", "group", "n", "node", "i", "Selection", "matcher_default", "selector", "childMatcher", "node", "find", "childFind", "match", "childFirst", "selectChild_default", "childMatcher", "filter", "children", "childrenFilter", "match", "selectChildren_default", "childMatcher", "filter_default", "match", "matcher_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "i", "Selection", "sparse_default", "update", "enter_default", "Selection", "sparse_default", "EnterNode", "parent", "datum", "child", "next", "selector", "constant_default", "x", "bindIndex", "parent", "group", "enter", "update", "exit", "data", "i", "node", "groupLength", "dataLength", "EnterNode", "bindKey", "key", "nodeByKeyValue", "keyValues", "keyValue", "datum", "data_default", "value", "bind", "parents", "groups", "constant_default", "m", "j", "arraylike", "enterGroup", "updateGroup", "exitGroup", "i0", "i1", "previous", "next", "Selection", "exit_default", "Selection", "sparse_default", "join_default", "onenter", "onupdate", "onexit", "enter", "update", "exit", "merge_default", "context", "selection", "groups0", "groups1", "m0", "m1", "m", "merges", "j", "group0", "group1", "n", "merge", "node", "i", "Selection", "order_default", "groups", "j", "m", "group", "i", "next", "node", "sort_default", "compare", "ascending", "compareNode", "a", "b", "groups", "m", "sortgroups", "j", "group", "n", "sortgroup", "node", "i", "Selection", "call_default", "callback", "nodes_default", "node_default", "groups", "j", "m", "group", "i", "n", "node", "size_default", "size", "node", "empty_default", "each_default", "callback", "groups", "j", "m", "group", "n", "node", "attrRemove", "name", "attrRemoveNS", "fullname", "attrConstant", "value", "attrConstantNS", "attrFunction", "v", "attrFunctionNS", "attr_default", "namespace_default", "node", "window_default", "node", "styleRemove", "name", "styleConstant", "value", "priority", "styleFunction", "v", "style_default", "styleValue", "node", "window_default", "propertyRemove", "name", "propertyConstant", "value", "propertyFunction", "v", "property_default", "classArray", "string", "classList", "node", "ClassList", "name", "i", "classedAdd", "names", "list", "n", "classedRemove", "classedTrue", "classedFalse", "classedFunction", "value", "classed_default", "textRemove", "textConstant", "value", "textFunction", "v", "text_default", "htmlRemove", "htmlConstant", "value", "htmlFunction", "v", "html_default", "raise", "raise_default", "lower", "lower_default", "append_default", "name", "create", "creator_default", "constantNull", "insert_default", "name", "before", "create", "creator_default", "select", "selector_default", "remove", "parent", "remove_default", "selection_cloneShallow", "clone", "parent", "selection_cloneDeep", "clone_default", "deep", "datum_default", "value", "contextListener", "listener", "event", "parseTypenames", "typenames", "t", "name", "i", "onRemove", "typename", "on", "j", "m", "o", "onAdd", "value", "options", "on_default", "n", "dispatchEvent", "node", "type", "params", "window", "window_default", "event", "dispatchConstant", "dispatchFunction", "dispatch_default", "iterator_default", "groups", "j", "m", "group", "i", "n", "node", "root", "Selection", "groups", "parents", "selection", "selection_selection", "select_default", "selectAll_default", "selectChild_default", "selectChildren_default", "filter_default", "data_default", "enter_default", "exit_default", "join_default", "merge_default", "order_default", "sort_default", "call_default", "nodes_default", "node_default", "size_default", "empty_default", "each_default", "attr_default", "style_default", "property_default", "classed_default", "text_default", "html_default", "raise_default", "lower_default", "append_default", "insert_default", "remove_default", "clone_default", "datum_default", "on_default", "dispatch_default", "iterator_default", "selection_default", "select_default", "selector", "Selection", "root", "sourceEvent_default", "event", "sourceEvent", "pointer_default", "event", "node", "sourceEvent_default", "svg", "point", "rect", "define_default", "constructor", "factory", "prototype", "extend", "parent", "definition", "key", "Color", "darker", "brighter", "reI", "reN", "reP", "reHex", "reRgbInteger", "reRgbPercent", "reRgbaInteger", "reRgbaPercent", "reHslPercent", "reHslaPercent", "named", "define_default", "color", "channels", "color_formatHex", "color_formatHex8", "color_formatHsl", "color_formatRgb", "hslConvert", "format", "m", "l", "rgbn", "Rgb", "rgba", "hsla", "n", "r", "g", "b", "a", "rgbConvert", "o", "rgb", "opacity", "extend", "k", "clampi", "clampa", "rgb_formatHex", "rgb_formatHex8", "rgb_formatRgb", "hex", "value", "h", "s", "Hsl", "min", "max", "hsl", "m2", "m1", "hsl2rgb", "clamph", "clampt", "radians", "degrees", "K", "Xn", "Yn", "Zn", "t0", "t1", "t2", "t3", "labConvert", "o", "Lab", "Hcl", "hcl2lab", "Rgb", "rgbConvert", "r", "rgb2lrgb", "g", "b", "y", "xyz2lab", "x", "z", "lab", "l", "a", "b", "opacity", "labConvert", "Lab", "define_default", "extend", "Color", "k", "K", "y", "x", "z", "Xn", "lab2xyz", "Yn", "Zn", "Rgb", "lrgb2rgb", "xyz2lab", "t3", "t2", "t0", "t1", "rgb2lrgb", "hclConvert", "o", "Hcl", "h", "degrees", "hcl", "h", "c", "l", "opacity", "hclConvert", "Hcl", "hcl2lab", "o", "Lab", "radians", "define_default", "extend", "Color", "k", "K", "A", "B", "C", "D", "E", "ED", "EB", "BC_DA", "cubehelixConvert", "o", "Cubehelix", "Rgb", "rgbConvert", "r", "g", "b", "l", "bl", "k", "s", "h", "degrees", "cubehelix", "opacity", "define_default", "extend", "Color", "brighter", "darker", "radians", "a", "cosh", "sinh", "basis", "t1", "v0", "v1", "v2", "v3", "t2", "t3", "basis_default", "values", "n", "t", "i", "basisClosed_default", "values", "n", "t", "i", "v0", "v1", "v2", "v3", "basis", "constant_default", "x", "linear", "a", "d", "t", "exponential", "b", "y", "hue", "constant_default", "gamma", "nogamma", "rgb_default", "rgbGamma", "y", "color", "gamma", "rgb", "start", "end", "r", "g", "b", "opacity", "nogamma", "t", "rgbSpline", "spline", "colors", "i", "rgbBasis", "basis_default", "rgbBasisClosed", "basisClosed_default", "numberArray_default", "a", "b", "c", "i", "t", "isNumberArray", "x", "genericArray", "a", "b", "nb", "na", "x", "c", "i", "value_default", "t", "date_default", "a", "b", "d", "t", "number_default", "a", "b", "t", "object_default", "a", "b", "i", "c", "k", "value_default", "t", "reA", "reB", "zero", "b", "one", "t", "string_default", "a", "bi", "am", "bm", "bs", "i", "s", "q", "number_default", "o", "value_default", "a", "b", "t", "c", "constant_default", "number_default", "color", "rgb_default", "string_default", "date_default", "isNumberArray", "numberArray_default", "genericArray", "object_default", "round_default", "a", "b", "t", "degrees", "identity", "decompose_default", "a", "b", "c", "d", "e", "f", "scaleX", "scaleY", "skewX", "svgNode", "parseCss", "value", "m", "identity", "decompose_default", "parseSvg", "interpolateTransform", "parse", "pxComma", "pxParen", "degParen", "pop", "s", "translate", "xa", "ya", "xb", "yb", "q", "i", "number_default", "rotate", "a", "b", "skewX", "scale", "t", "n", "o", "interpolateTransformCss", "parseCss", "interpolateTransformSvg", "parseSvg", "hsl", "hue", "start", "end", "h", "s", "nogamma", "l", "opacity", "t", "hsl_default", "hslLong", "lab", "start", "end", "l", "nogamma", "a", "b", "opacity", "t", "hcl", "hue", "start", "end", "h", "c", "nogamma", "l", "opacity", "t", "hcl_default", "hclLong", "cubehelix", "hue", "cubehelixGamma", "y", "start", "end", "h", "s", "nogamma", "l", "opacity", "t", "cubehelix_default", "cubehelixLong", "piecewise", "interpolate", "values", "value_default", "i", "n", "v", "I", "t", "quantize_default", "interpolator", "n", "samples", "i", "frame", "timeout", "interval", "pokeDelay", "taskHead", "taskTail", "clockLast", "clockNow", "clockSkew", "clock", "setFrame", "f", "now", "clearNow", "Timer", "timer", "callback", "delay", "time", "sleep", "t", "timerFlush", "wake", "nap", "poke", "t0", "t1", "t2", "timeout_default", "callback", "delay", "time", "t", "Timer", "elapsed", "emptyOn", "dispatch_default", "emptyTween", "CREATED", "SCHEDULED", "STARTING", "STARTED", "RUNNING", "ENDING", "ENDED", "schedule_default", "node", "name", "id", "index", "group", "timing", "schedules", "create", "init", "schedule", "get", "set", "self", "tween", "timer", "elapsed", "start", "i", "j", "n", "o", "stop", "timeout_default", "tick", "t", "interrupt_default", "node", "name", "schedules", "schedule", "active", "empty", "i", "STARTING", "ENDING", "ENDED", "interrupt_default", "name", "tweenRemove", "id", "name", "tween0", "tween1", "schedule", "set", "tween", "i", "n", "tweenFunction", "value", "t", "tween_default", "get", "tweenValue", "transition", "node", "interpolate_default", "a", "b", "c", "number_default", "color", "rgb_default", "string_default", "attrRemove", "name", "attrRemoveNS", "fullname", "attrConstant", "interpolate", "value1", "string00", "string1", "interpolate0", "string0", "attrConstantNS", "attrFunction", "value", "string10", "attrFunctionNS", "attr_default", "namespace_default", "i", "interpolateTransformSvg", "interpolate_default", "tweenValue", "attrInterpolate", "name", "i", "t", "attrInterpolateNS", "fullname", "attrTweenNS", "value", "t0", "i0", "tween", "attrTween", "attrTween_default", "key", "namespace_default", "delayFunction", "id", "value", "init", "delayConstant", "delay_default", "get", "durationFunction", "id", "value", "set", "durationConstant", "duration_default", "get", "easeConstant", "id", "value", "set", "ease_default", "get", "easeVarying", "id", "value", "v", "set", "easeVarying_default", "filter_default", "match", "matcher_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "i", "Transition", "merge_default", "transition", "groups0", "groups1", "m0", "m1", "m", "merges", "j", "group0", "group1", "n", "merge", "node", "i", "Transition", "start", "name", "t", "i", "onFunction", "id", "listener", "on0", "on1", "sit", "init", "set", "schedule", "on", "on_default", "get", "removeFunction", "id", "parent", "i", "remove_default", "select_default", "select", "name", "id", "selector_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "i", "schedule_default", "get", "Transition", "selectAll_default", "select", "name", "id", "selectorAll_default", "groups", "m", "subgroups", "parents", "j", "group", "n", "node", "i", "children", "child", "inherit", "get", "k", "l", "schedule_default", "Transition", "Selection", "selection_default", "styleNull", "name", "interpolate", "string00", "string10", "interpolate0", "string0", "styleValue", "string1", "styleRemove", "styleConstant", "value1", "styleFunction", "value", "styleMaybeRemove", "id", "on0", "on1", "listener0", "key", "event", "remove", "schedule", "set", "on", "listener", "style_default", "priority", "i", "interpolateTransformCss", "interpolate_default", "tweenValue", "styleInterpolate", "name", "i", "priority", "t", "styleTween", "value", "i0", "tween", "styleTween_default", "key", "textConstant", "value", "textFunction", "value1", "text_default", "tweenValue", "textInterpolate", "i", "t", "textTween", "value", "t0", "i0", "tween", "textTween_default", "key", "transition_default", "name", "id0", "id1", "newId", "groups", "m", "j", "group", "n", "node", "i", "inherit", "get", "schedule_default", "Transition", "end_default", "on0", "on1", "that", "id", "size", "resolve", "reject", "cancel", "end", "schedule", "set", "on", "id", "Transition", "groups", "parents", "name", "transition", "selection_default", "newId", "selection_prototype", "select_default", "selectAll_default", "filter_default", "merge_default", "transition_default", "on_default", "attr_default", "attrTween_default", "style_default", "styleTween_default", "text_default", "textTween_default", "remove_default", "tween_default", "delay_default", "duration_default", "ease_default", "easeVarying_default", "end_default", "cubicInOut", "defaultTiming", "cubicInOut", "inherit", "node", "id", "timing", "transition_default", "name", "Transition", "newId", "now", "groups", "m", "j", "group", "n", "i", "schedule_default", "selection_default", "interrupt_default", "transition_default", "abs", "max", "min", "number1", "e", "number2", "X", "type", "x", "xy", "Y", "y", "XY", "type", "pi", "tau", "epsilon", "tauEpsilon", "append", "strings", "i", "appendRound", "digits", "d", "k", "n", "Path", "x", "y", "x1", "y1", "x2", "y2", "r", "x0", "y0", "x21", "y21", "x01", "y01", "l01_2", "x20", "y20", "l21_2", "l20_2", "l21", "l01", "l", "t01", "t21", "a0", "a1", "ccw", "dx", "dy", "cw", "da", "w", "h", "path", "pathRound", "formatDecimal_default", "x", "formatDecimalParts", "p", "i", "coefficient", "exponent_default", "x", "formatDecimalParts", "formatGroup_default", "grouping", "thousands", "value", "width", "i", "t", "j", "g", "length", "formatNumerals_default", "numerals", "value", "i", "re", "formatSpecifier", "specifier", "match", "FormatSpecifier", "formatTrim_default", "s", "out", "n", "i", "i0", "i1", "prefixExponent", "formatPrefixAuto_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "n", "formatRounded_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "formatTypes_default", "x", "p", "formatDecimal_default", "formatRounded_default", "formatPrefixAuto_default", "identity_default", "x", "map", "prefixes", "locale_default", "locale", "group", "identity_default", "formatGroup_default", "currencyPrefix", "currencySuffix", "decimal", "numerals", "formatNumerals_default", "percent", "minus", "nan", "newFormat", "specifier", "formatSpecifier", "fill", "align", "sign", "symbol", "zero", "width", "comma", "precision", "trim", "type", "formatTypes_default", "prefix", "suffix", "formatType", "maybeSuffix", "format", "value", "valuePrefix", "valueSuffix", "i", "n", "c", "valueNegative", "formatTrim_default", "prefixExponent", "length", "padding", "formatPrefix", "f", "e", "exponent_default", "k", "locale", "format", "formatPrefix", "defaultLocale", "definition", "locale_default", "precisionFixed_default", "step", "exponent_default", "precisionPrefix_default", "step", "value", "exponent_default", "precisionRound_default", "step", "max", "exponent_default", "epsilon", "epsilon2", "pi", "halfPi", "quarterPi", "tau", "degrees", "radians", "abs", "atan", "atan2", "cos", "exp", "log", "pow", "sin", "sign", "x", "sqrt", "tan", "acos", "pi", "asin", "halfPi", "noop", "streamGeometry", "geometry", "stream", "streamGeometryType", "streamObjectType", "object", "features", "i", "n", "coordinates", "streamLine", "streamPolygon", "geometries", "closed", "coordinate", "stream_default", "spherical", "cartesian", "atan2", "asin", "lambda", "phi", "cosPhi", "cos", "sin", "cartesianDot", "a", "b", "cartesianCross", "cartesianAddInPlace", "cartesianScale", "vector", "k", "cartesianNormalizeInPlace", "d", "l", "sqrt", "compose_default", "a", "b", "compose", "x", "y", "rotationIdentity", "lambda", "phi", "abs", "pi", "tau", "rotateRadians", "deltaLambda", "deltaPhi", "deltaGamma", "compose_default", "rotationLambda", "rotationPhiGamma", "forwardRotationLambda", "rotation", "cosDeltaPhi", "cos", "sinDeltaPhi", "sin", "cosDeltaGamma", "sinDeltaGamma", "cosPhi", "x", "y", "z", "k", "atan2", "asin", "rotation_default", "rotate", "radians", "forward", "coordinates", "degrees", "circleStream", "stream", "radius", "delta", "direction", "t0", "t1", "cosRadius", "cos", "sinRadius", "sin", "step", "tau", "circleRadius", "point", "t", "spherical", "cartesian", "cartesianNormalizeInPlace", "acos", "epsilon", "buffer_default", "lines", "line", "x", "y", "m", "noop", "result", "pointEqual_default", "a", "b", "abs", "epsilon", "Intersection", "point", "points", "other", "entry", "rejoin_default", "segments", "compareIntersection", "startInside", "interpolate", "stream", "subject", "clip", "i", "n", "segment", "p0", "p1", "pointEqual_default", "epsilon", "link", "start", "current", "isSubject", "array", "a", "b", "longitude", "point", "abs", "pi", "sign", "tau", "polygonContains_default", "polygon", "lambda", "phi", "sinPhi", "sin", "normal", "cos", "angle", "winding", "sum", "Adder", "halfPi", "epsilon", "i", "n", "m", "ring", "point0", "lambda0", "phi0", "quarterPi", "sinPhi0", "cosPhi0", "j", "lambda1", "sinPhi1", "cosPhi1", "point1", "phi1", "delta", "absDelta", "antimeridian", "k", "atan2", "arc", "cartesianCross", "cartesian", "cartesianNormalizeInPlace", "intersection", "phiArc", "asin", "epsilon2", "clip_default", "pointVisible", "clipLine", "interpolate", "start", "sink", "line", "ringBuffer", "buffer_default", "ringSink", "polygonStarted", "polygon", "segments", "ring", "clip", "point", "lineStart", "lineEnd", "pointRing", "ringStart", "ringEnd", "merge", "startInside", "polygonContains_default", "rejoin_default", "compareIntersection", "lambda", "phi", "pointLine", "clean", "ringSegments", "i", "n", "m", "segment", "validSegment", "a", "b", "halfPi", "epsilon", "antimeridian_default", "clip_default", "clipAntimeridianLine", "clipAntimeridianInterpolate", "pi", "halfPi", "stream", "lambda0", "phi0", "sign0", "clean", "lambda1", "phi1", "sign1", "delta", "abs", "epsilon", "clipAntimeridianIntersect", "cosPhi0", "cosPhi1", "sinLambda0Lambda1", "sin", "atan", "cos", "from", "to", "direction", "phi", "lambda", "circle_default", "radius", "cr", "cos", "delta", "radians", "smallRadius", "notHemisphere", "abs", "epsilon", "interpolate", "from", "to", "direction", "stream", "circleStream", "visible", "lambda", "phi", "clipLine", "point0", "c0", "v0", "v00", "clean", "point1", "point2", "v", "c", "code", "pi", "intersect", "pointEqual_default", "t", "a", "b", "two", "pa", "cartesian", "pb", "n1", "n2", "cartesianCross", "n2n2", "cartesianDot", "n1n2", "determinant", "c1", "c2", "n1xn2", "A", "cartesianScale", "B", "cartesianAddInPlace", "u", "w", "uu", "t2", "sqrt", "q", "spherical", "lambda0", "lambda1", "phi0", "phi1", "z", "polar", "meridian", "q1", "r", "clip_default", "line_default", "a", "b", "x0", "y0", "x1", "y1", "ax", "ay", "bx", "by", "t0", "t1", "dx", "dy", "r", "clipMax", "clipMin", "clipRectangle", "x0", "y0", "x1", "y1", "visible", "x", "y", "interpolate", "from", "to", "direction", "stream", "a", "a1", "corner", "comparePoint", "p", "abs", "epsilon", "compareIntersection", "b", "ca", "cb", "activeStream", "bufferStream", "buffer_default", "segments", "polygon", "ring", "x__", "y__", "v__", "x_", "y_", "v_", "first", "clean", "clipStream", "point", "lineStart", "lineEnd", "polygonStart", "polygonEnd", "polygonInside", "winding", "i", "n", "j", "m", "a0", "b0", "b1", "startInside", "cleanInside", "merge", "rejoin_default", "linePoint", "v", "line_default", "identity_default", "x", "areaSum", "Adder", "areaRingSum", "x00", "y00", "x0", "y0", "areaStream", "noop", "areaRingStart", "areaRingEnd", "abs", "area", "areaPointFirst", "x", "y", "areaPoint", "area_default", "x0", "y0", "x1", "y1", "boundsStream", "boundsPoint", "noop", "bounds", "x", "y", "bounds_default", "X0", "Y0", "Z0", "X1", "Y1", "Z1", "X2", "Y2", "Z2", "x00", "y00", "x0", "y0", "centroidStream", "centroidPoint", "centroidLineStart", "centroidLineEnd", "centroidRingStart", "centroidRingEnd", "centroid", "x", "y", "centroidPointFirstLine", "centroidPointLine", "dx", "dy", "z", "sqrt", "centroidPointFirstRing", "centroidPointRing", "centroid_default", "PathContext", "context", "_", "x", "y", "tau", "noop", "lengthSum", "Adder", "lengthRing", "x00", "y00", "x0", "y0", "lengthStream", "noop", "lengthPointFirst", "lengthPoint", "length", "x", "y", "sqrt", "measure_default", "cacheDigits", "cacheAppend", "cacheRadius", "cacheCircle", "PathString", "digits", "append", "appendRound", "_", "x", "y", "s", "result", "strings", "i", "j", "d", "k", "path_default", "projection", "context", "digits", "pointRadius", "projectionStream", "contextStream", "path", "object", "stream_default", "area_default", "measure_default", "bounds_default", "centroid_default", "_", "identity_default", "PathString", "PathContext", "d", "transform_default", "methods", "transformer", "stream", "s", "TransformStream", "key", "x", "y", "fit", "projection", "fitBounds", "object", "clip", "stream_default", "bounds_default", "fitExtent", "extent", "b", "w", "h", "k", "x", "y", "fitSize", "size", "fitWidth", "width", "fitHeight", "height", "maxDepth", "cosMinDistance", "cos", "radians", "resample_default", "project", "delta2", "resample", "resampleNone", "transformer", "x", "y", "resampleLineTo", "x0", "y0", "lambda0", "a0", "b0", "c0", "x1", "y1", "lambda1", "a1", "b1", "c1", "depth", "stream", "dx", "dy", "d2", "a", "b", "c", "m", "sqrt", "phi2", "asin", "lambda2", "abs", "epsilon", "atan2", "p", "x2", "y2", "dx2", "dy2", "dz", "lambda00", "x00", "y00", "a00", "b00", "c00", "resampleStream", "point", "lineStart", "lineEnd", "ringStart", "linePoint", "lambda", "phi", "cartesian", "ringPoint", "ringEnd", "transformRadians", "transformer", "x", "y", "radians", "transformRotate", "rotate", "scaleTranslate", "k", "dx", "dy", "sx", "sy", "transform", "scaleTranslateRotate", "alpha", "cosAlpha", "cos", "sinAlpha", "sin", "a", "b", "ai", "bi", "ci", "fi", "projection", "project", "projectionMutator", "projectAt", "lambda", "phi", "deltaLambda", "deltaPhi", "deltaGamma", "theta", "preclip", "antimeridian_default", "x0", "y0", "x1", "y1", "postclip", "identity_default", "delta2", "projectResample", "projectTransform", "projectRotateTransform", "cache", "cacheStream", "point", "invert", "degrees", "stream", "_", "reset", "circle_default", "clipRectangle", "recenter", "resample_default", "sqrt", "extent", "object", "fitExtent", "size", "fitSize", "width", "fitWidth", "height", "fitHeight", "center", "rotateRadians", "compose_default", "conicProjection", "projectAt", "phi0", "phi1", "pi", "m", "projectionMutator", "p", "_", "radians", "degrees", "cylindricalEqualAreaRaw", "phi0", "cosPhi0", "cos", "forward", "lambda", "phi", "sin", "x", "y", "asin", "conicEqualAreaRaw", "y0", "y1", "sy0", "sin", "n", "abs", "epsilon", "cylindricalEqualAreaRaw", "c", "r0", "sqrt", "project", "x", "y", "r", "cos", "r0y", "l", "atan2", "sign", "pi", "asin", "conicEqualArea_default", "conicProjection", "albers_default", "conicEqualArea_default", "multiplex", "streams", "n", "x", "y", "i", "albersUsa_default", "cache", "cacheStream", "lower48", "albers_default", "lower48Point", "alaska", "conicEqualArea_default", "alaskaPoint", "hawaii", "hawaiiPoint", "point", "pointStream", "albersUsa", "coordinates", "k", "t", "stream", "_", "reset", "epsilon", "extent", "object", "fitExtent", "size", "fitSize", "width", "fitWidth", "height", "fitHeight", "azimuthalRaw", "scale", "x", "y", "cx", "cos", "cy", "k", "sin", "azimuthalInvert", "angle", "z", "sqrt", "c", "sc", "cc", "atan2", "asin", "azimuthalEqualAreaRaw", "azimuthalRaw", "cxcy", "sqrt", "azimuthalInvert", "z", "asin", "azimuthalEqualArea_default", "projection", "azimuthalEquidistantRaw", "azimuthalRaw", "c", "acos", "sin", "azimuthalInvert", "z", "azimuthalEquidistant_default", "projection", "mercatorRaw", "lambda", "phi", "log", "tan", "halfPi", "x", "y", "atan", "exp", "mercator_default", "mercatorProjection", "tau", "project", "m", "projection", "center", "scale", "translate", "clipExtent", "x0", "y0", "x1", "y1", "_", "reclip", "k", "pi", "t", "rotation_default", "tany", "y", "tan", "halfPi", "conicConformalRaw", "y0", "y1", "cy0", "cos", "n", "sin", "log", "f", "pow", "mercatorRaw", "project", "x", "epsilon", "r", "fy", "sign", "sqrt", "l", "atan2", "abs", "pi", "atan", "conicConformal_default", "conicProjection", "equirectangularRaw", "lambda", "phi", "equirectangular_default", "projection", "conicEquidistantRaw", "y0", "y1", "cy0", "cos", "n", "sin", "g", "abs", "epsilon", "equirectangularRaw", "project", "x", "y", "gy", "nx", "l", "atan2", "sign", "pi", "sqrt", "conicEquidistant_default", "conicProjection", "A1", "A2", "A3", "A4", "M", "sqrt", "iterations", "equalEarthRaw", "lambda", "phi", "l", "asin", "sin", "l2", "l6", "cos", "x", "y", "delta", "fy", "fpy", "abs", "epsilon2", "equalEarth_default", "projection", "gnomonicRaw", "x", "y", "cy", "cos", "k", "sin", "azimuthalInvert", "atan", "gnomonic_default", "projection", "orthographicRaw", "x", "y", "cos", "sin", "azimuthalInvert", "asin", "orthographic_default", "projection", "epsilon", "stereographicRaw", "x", "y", "cy", "cos", "k", "sin", "azimuthalInvert", "z", "atan", "stereographic_default", "projection", "transverseMercatorRaw", "lambda", "phi", "log", "tan", "halfPi", "x", "y", "atan", "exp", "transverseMercator_default", "m", "mercatorProjection", "center", "rotate", "_", "initRange", "domain", "range", "initInterpolator", "interpolator", "implicit", "ordinal", "index", "InternMap", "domain", "range", "unknown", "scale", "d", "i", "_", "value", "initRange", "band", "scale", "ordinal", "domain", "ordinalRange", "r0", "r1", "step", "bandwidth", "round", "paddingInner", "paddingOuter", "align", "rescale", "n", "reverse", "start", "stop", "values", "range", "i", "_", "initRange", "pointish", "copy", "point", "constants", "x", "number", "x", "unit", "identity", "x", "normalize", "a", "b", "constants", "clamper", "t", "bimap", "domain", "range", "interpolate", "d0", "d1", "r0", "r1", "polymap", "j", "d", "r", "i", "bisect_default", "copy", "source", "target", "transformer", "value_default", "transform", "untransform", "unknown", "clamp", "piecewise", "output", "input", "rescale", "n", "scale", "y", "number_default", "_", "number", "round_default", "u", "continuous", "tickFormat", "start", "stop", "count", "specifier", "step", "tickStep", "precision", "formatSpecifier", "value", "precisionPrefix_default", "formatPrefix", "precisionRound_default", "precisionFixed_default", "format", "linearish", "scale", "domain", "count", "d", "ticks", "specifier", "tickFormat", "i0", "i1", "start", "stop", "prestep", "step", "maxIter", "tickIncrement", "linear", "continuous", "copy", "initRange", "identity", "domain", "unknown", "scale", "x", "_", "number", "linearish", "nice", "domain", "interval", "i0", "i1", "x0", "x1", "t", "transformLog", "x", "transformExp", "transformLogn", "transformExpn", "pow10", "powp", "base", "logp", "reflect", "f", "k", "loggish", "transform", "scale", "domain", "logs", "pows", "rescale", "_", "count", "d", "u", "v", "r", "i", "j", "t", "n", "z", "ticks", "specifier", "formatSpecifier", "format", "nice", "log", "transformer", "copy", "initRange", "transformSymlog", "c", "x", "transformSymexp", "symlogish", "transform", "scale", "_", "linearish", "symlog", "transformer", "copy", "initRange", "transformPow", "exponent", "x", "transformSqrt", "transformSquare", "powish", "transform", "scale", "identity", "rescale", "_", "linearish", "pow", "transformer", "copy", "initRange", "quantile", "domain", "range", "thresholds", "unknown", "rescale", "i", "n", "quantileSorted", "scale", "x", "bisect_default", "y", "_", "d", "ascending", "initRange", "threshold", "domain", "range", "unknown", "n", "scale", "x", "bisect_default", "_", "y", "i", "initRange", "t0", "t1", "timeInterval", "floori", "offseti", "count", "field", "interval", "date", "d0", "d1", "step", "start", "stop", "range", "previous", "test", "end", "d", "millisecond", "timeInterval", "date", "step", "start", "end", "k", "milliseconds", "second", "timeInterval", "date", "step", "start", "end", "seconds", "timeMinute", "timeInterval", "date", "step", "start", "end", "timeMinutes", "utcMinute", "utcMinutes", "timeHour", "timeInterval", "date", "step", "start", "end", "timeHours", "utcHour", "utcHours", "timeDay", "timeInterval", "date", "step", "start", "end", "timeDays", "utcDay", "utcDays", "unixDay", "unixDays", "timeWeekday", "i", "timeInterval", "date", "step", "start", "end", "timeSunday", "timeMonday", "timeTuesday", "timeWednesday", "timeThursday", "timeFriday", "timeSaturday", "timeSundays", "timeMondays", "timeTuesdays", "timeWednesdays", "timeThursdays", "timeFridays", "timeSaturdays", "utcWeekday", "utcSunday", "utcMonday", "utcTuesday", "utcWednesday", "utcThursday", "utcFriday", "utcSaturday", "utcSundays", "utcMondays", "utcTuesdays", "utcWednesdays", "utcThursdays", "utcFridays", "utcSaturdays", "timeMonth", "timeInterval", "date", "step", "start", "end", "timeMonths", "utcMonth", "utcMonths", "timeYear", "timeInterval", "date", "step", "start", "end", "k", "timeYears", "utcYear", "utcYears", "ticker", "year", "month", "week", "day", "hour", "minute", "tickIntervals", "second", "ticks", "start", "stop", "count", "reverse", "interval", "tickInterval", "target", "i", "bisector", "step", "tickStep", "millisecond", "t", "utcTicks", "utcTickInterval", "utcYear", "utcMonth", "utcSunday", "unixDay", "utcHour", "utcMinute", "timeTicks", "timeTickInterval", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "localDate", "d", "date", "utcDate", "newDate", "y", "m", "formatLocale", "locale", "locale_dateTime", "locale_date", "locale_time", "locale_periods", "locale_weekdays", "locale_shortWeekdays", "locale_months", "locale_shortMonths", "periodRe", "formatRe", "periodLookup", "formatLookup", "weekdayRe", "weekdayLookup", "shortWeekdayRe", "shortWeekdayLookup", "monthRe", "monthLookup", "shortMonthRe", "shortMonthLookup", "formats", "formatShortWeekday", "formatWeekday", "formatShortMonth", "formatMonth", "formatDayOfMonth", "formatMicroseconds", "formatYearISO", "formatFullYearISO", "formatHour24", "formatHour12", "formatDayOfYear", "formatMilliseconds", "formatMonthNumber", "formatMinutes", "formatPeriod", "formatQuarter", "formatUnixTimestamp", "formatUnixTimestampSeconds", "formatSeconds", "formatWeekdayNumberMonday", "formatWeekNumberSunday", "formatWeekNumberISO", "formatWeekdayNumberSunday", "formatWeekNumberMonday", "formatYear", "formatFullYear", "formatZone", "formatLiteralPercent", "utcFormats", "formatUTCShortWeekday", "formatUTCWeekday", "formatUTCShortMonth", "formatUTCMonth", "formatUTCDayOfMonth", "formatUTCMicroseconds", "formatUTCYearISO", "formatUTCFullYearISO", "formatUTCHour24", "formatUTCHour12", "formatUTCDayOfYear", "formatUTCMilliseconds", "formatUTCMonthNumber", "formatUTCMinutes", "formatUTCPeriod", "formatUTCQuarter", "formatUTCSeconds", "formatUTCWeekdayNumberMonday", "formatUTCWeekNumberSunday", "formatUTCWeekNumberISO", "formatUTCWeekdayNumberSunday", "formatUTCWeekNumberMonday", "formatUTCYear", "formatUTCFullYear", "formatUTCZone", "parses", "parseShortWeekday", "parseWeekday", "parseShortMonth", "parseMonth", "parseLocaleDateTime", "parseDayOfMonth", "parseMicroseconds", "parseYear", "parseFullYear", "parseHour24", "parseDayOfYear", "parseMilliseconds", "parseMonthNumber", "parseMinutes", "parsePeriod", "parseQuarter", "parseUnixTimestamp", "parseUnixTimestampSeconds", "parseSeconds", "parseWeekdayNumberMonday", "parseWeekNumberSunday", "parseWeekNumberISO", "parseWeekdayNumberSunday", "parseWeekNumberMonday", "parseLocaleDate", "parseLocaleTime", "parseZone", "parseLiteralPercent", "newFormat", "specifier", "string", "i", "j", "n", "c", "pad", "format", "pads", "newParse", "Z", "parseSpecifier", "week", "day", "utcMonday", "utcDay", "timeMonday", "timeDay", "parse", "f", "p", "numberRe", "percentRe", "requoteRe", "value", "fill", "width", "sign", "length", "requote", "s", "names", "name", "timeYear", "timeSunday", "dISO", "timeThursday", "z", "utcYear", "dow", "utcSunday", "UTCdISO", "utcThursday", "locale", "timeFormat", "timeParse", "utcFormat", "utcParse", "defaultLocale", "definition", "formatLocale", "date", "number", "calendar", "ticks", "tickInterval", "year", "month", "week", "day", "hour", "minute", "second", "format", "scale", "continuous", "invert", "domain", "formatMillisecond", "formatSecond", "formatMinute", "formatHour", "formatDay", "formatWeek", "formatMonth", "formatYear", "tickFormat", "y", "_", "interval", "d", "count", "specifier", "nice", "copy", "time", "initRange", "timeTicks", "timeTickInterval", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "timeFormat", "utcTime", "initRange", "calendar", "utcTicks", "utcTickInterval", "utcYear", "utcMonth", "utcSunday", "utcDay", "utcHour", "utcMinute", "second", "utcFormat", "copy", "source", "target", "transformer", "x0", "x1", "x2", "s", "t0", "t1", "t2", "k10", "k21", "interpolator", "identity", "transform", "clamp", "unknown", "scale", "x", "_", "range", "interpolate", "r0", "r1", "r2", "piecewise", "value_default", "round_default", "t", "diverging", "linearish", "copy", "initInterpolator", "divergingLog", "loggish", "divergingSymlog", "symlogish", "divergingPow", "powish", "colors_default", "specifier", "n", "colors", "i", "category10_default", "colors_default", "Accent_default", "colors_default", "Dark2_default", "colors_default", "Paired_default", "colors_default", "Pastel1_default", "colors_default", "Pastel2_default", "colors_default", "Set1_default", "colors_default", "Set2_default", "colors_default", "Set3_default", "colors_default", "Tableau10_default", "colors_default", "ramp_default", "scheme", "rgbBasis", "scheme", "colors_default", "BrBG_default", "ramp_default", "scheme", "colors_default", "PRGn_default", "ramp_default", "scheme", "colors_default", "PiYG_default", "ramp_default", "scheme", "colors_default", "PuOr_default", "ramp_default", "scheme", "colors_default", "RdBu_default", "ramp_default", "scheme", "colors_default", "RdGy_default", "ramp_default", "scheme", "colors_default", "RdYlBu_default", "ramp_default", "scheme", "colors_default", "RdYlGn_default", "ramp_default", "scheme", "colors_default", "Spectral_default", "ramp_default", "scheme", "colors_default", "BuGn_default", "ramp_default", "scheme", "colors_default", "BuPu_default", "ramp_default", "scheme", "colors_default", "GnBu_default", "ramp_default", "scheme", "colors_default", "OrRd_default", "ramp_default", "scheme", "colors_default", "PuBuGn_default", "ramp_default", "scheme", "colors_default", "PuBu_default", "ramp_default", "scheme", "colors_default", "PuRd_default", "ramp_default", "scheme", "colors_default", "RdPu_default", "ramp_default", "scheme", "colors_default", "YlGnBu_default", "ramp_default", "scheme", "colors_default", "YlGn_default", "ramp_default", "scheme", "colors_default", "YlOrBr_default", "ramp_default", "scheme", "colors_default", "YlOrRd_default", "ramp_default", "scheme", "colors_default", "Blues_default", "ramp_default", "scheme", "colors_default", "Greens_default", "ramp_default", "scheme", "colors_default", "Greys_default", "ramp_default", "scheme", "colors_default", "Purples_default", "ramp_default", "scheme", "colors_default", "Reds_default", "ramp_default", "scheme", "colors_default", "Oranges_default", "ramp_default", "cividis_default", "cubehelix_default", "cubehelixLong", "cubehelix", "warm", "cubehelixLong", "cubehelix", "cool", "c", "rainbow_default", "ts", "c", "rgb", "pi_1_3", "pi_2_3", "sinebow_default", "x", "turbo_default", "ramp", "range", "n", "t", "viridis_default", "colors_default", "magma", "inferno", "plasma", "cos", "min", "sin", "sqrt", "pi", "halfPi", "tau", "sqrt3", "sqrt", "asterisk_default", "context", "size", "r", "min", "t", "u", "circle_default", "context", "size", "r", "sqrt", "pi", "tau", "cross_default", "context", "size", "r", "sqrt", "tan30", "sqrt", "tan30_2", "diamond_default", "context", "size", "y", "x", "diamond2_default", "context", "size", "r", "sqrt", "plus_default", "context", "size", "r", "sqrt", "min", "square_default", "context", "size", "w", "sqrt", "x", "square2_default", "context", "size", "r", "sqrt", "ka", "kr", "sin", "pi", "kx", "tau", "ky", "cos", "star_default", "context", "size", "r", "sqrt", "x", "y", "c", "s", "sqrt3", "sqrt", "triangle_default", "context", "size", "y", "sqrt3", "sqrt", "triangle2_default", "context", "size", "s", "t", "u", "c", "s", "sqrt", "k", "a", "wye_default", "context", "size", "r", "x0", "y0", "x1", "y1", "x2", "y2", "times_default", "context", "size", "r", "sqrt", "min", "symbolsFill", "circle_default", "cross_default", "diamond_default", "square_default", "star_default", "triangle_default", "wye_default", "symbolsStroke", "plus_default", "times_default", "triangle2_default", "asterisk_default", "square2_default", "diamond2_default", "Transform", "k", "x", "y", "point", "location", "identity", "transform", "node", "defined", "x", "ascendingDefined", "a", "b", "ascending", "descendingDefined", "descending", "nonempty", "finite", "positive", "negative", "format", "date", "fallback", "hours", "minutes", "seconds", "milliseconds", "formatYear", "pad", "year", "value", "width", "re", "parse", "string", "fallback", "durationSecond", "durationMinute", "durationHour", "durationDay", "durationWeek", "durationMonth", "durationYear", "formats", "timeIntervals", "second", "timeMinute", "timeHour", "timeDay", "timeSunday", "timeMonth", "timeYear", "timeMonday", "timeTuesday", "timeWednesday", "timeThursday", "timeFriday", "timeSaturday", "utcIntervals", "utcMinute", "utcHour", "unixDay", "utcSunday", "utcMonth", "utcYear", "utcMonday", "utcTuesday", "utcWednesday", "utcThursday", "utcFriday", "utcSaturday", "parseInterval", "input", "intervals", "name", "period", "match", "interval", "maybeTimeInterval", "maybeUtcInterval", "isUtcYear", "i", "date", "isTimeYear", "formatTimeTicks", "scale", "data", "ticks", "anchor", "format", "timeFormat", "utcFormat", "template", "f1", "f2", "getTimeTicksInterval", "formatConditional", "medianStep", "median", "pairs", "a", "b", "bisector", "step", "start", "stop", "extent", "count", "format1", "format2", "x", "X", "j", "orderof", "TypedArray", "objectToString", "valueof", "data", "value", "type", "valueType", "maybeTypedMap", "field", "map", "constant", "maybeTypedArrayify", "f", "floater", "arrayify", "coerceNumber", "d", "i", "singleton", "name", "indexOf", "range", "identity", "one", "yes", "string", "x", "number", "first", "x", "second", "constant", "x", "percentile", "reduce", "p", "I", "f", "quantile", "coerceNumbers", "values", "TypedArray", "map", "coerceNumber", "coerceDates", "coerceDate", "parse", "maybeColorChannel", "value", "defaultValue", "isColor", "maybeNumberChannel", "maybeKeyword", "input", "name", "allowed", "keyword", "i", "arrayify", "data", "type", "slice", "hasX", "x1", "x2", "hasY", "y", "y1", "y2", "hasXY", "options", "isObject", "option", "objectToString", "isScaleOptions", "isOptions", "isDomainSort", "sort", "maybeZero", "x3", "identity", "maybeTuple", "first", "second", "maybeZ", "z", "fill", "stroke", "range", "n", "r", "take", "values", "index", "map", "i", "subarray", "I", "i", "j", "keyof", "value", "maybeInput", "key", "options", "column", "source", "labelof", "v", "maybeColumn", "defaultValue", "mid", "x1", "x2", "data", "X1", "X2", "isTemporal", "map", "_", "maybeApplyInterval", "V", "scale", "t", "maybeIntervalTransform", "interval", "type", "maybeInterval", "defined", "d", "lo", "hi", "range", "x", "maybeTimeInterval", "maybeUtcInterval", "maybeRangeInterval", "maybeNiceInterval", "maybeValue", "isOptions", "numberChannel", "valueof", "isIterable", "value", "isTextual", "values", "isOrdinal", "type", "isTemporal", "isTemporalString", "parse", "isNumericString", "isNumeric", "isEvery", "is", "every", "isColor", "color", "isOpacity", "isNoneish", "isNone", "isRound", "maybeAnchor", "name", "maybeKeyword", "maybeFrameAnchor", "orderof", "first", "last", "descending", "inherit", "options", "rest", "o", "defaults", "key", "named", "things", "names", "thing", "maybeNamed", "position", "color", "radius", "length", "opacity", "symbol", "projection", "registry", "sqrt3", "sqrt4_3", "symbolHexagon", "context", "size", "rx", "ry", "hy", "symbols", "asterisk_default", "circle_default", "cross_default", "diamond_default", "diamond2_default", "plus_default", "square_default", "square2_default", "star_default", "times_default", "triangle_default", "triangle2_default", "wye_default", "isSymbolObject", "value", "isSymbol", "maybeSymbol", "symbol", "basic", "f1", "s1", "r1", "t1", "i1", "options", "transform", "filterTransform", "isDomainSort", "composeTransform", "sortTransform", "reverseTransform", "initializer", "composeInitializer", "t2", "data", "facets", "plotOptions", "arrayify", "i2", "channels", "args", "c1", "d1", "c2", "d2", "f2", "filterTransform", "value", "data", "facets", "V", "valueof", "I", "reverseTransform", "data", "facets", "I", "sortTransform", "value", "sortData", "sortValue", "compare", "data", "facets", "compareData", "i", "j", "I", "channel", "order", "maybeValue", "negate", "descendingDefined", "ascendingDefined", "channels", "V", "valueof", "compareValue", "hasOutput", "outputs", "names", "name", "maybeOutputs", "inputs", "asOutput", "maybeOutput", "entries", "reduceTitle", "reduceFirst", "reduce", "nullOutput", "asEvaluator", "maybeEvaluator", "scale", "isObject", "evaluator", "output", "setOutput", "column", "O", "data", "scope", "I", "extent", "asReduce", "maybeReduce", "input", "maybeInput", "reducer", "V", "context", "labelof", "reduceCount", "valueof", "range", "maybeGroup", "X", "sort", "group", "i", "first", "value", "fallback", "invalidReduce", "reduceReduce", "reduceFunction", "reduceAccessor", "percentile", "reduceLast", "reduceIdentity", "reduceDistinct", "reduceSum", "reduceProportion", "deviation", "min", "minIndex", "max", "maxIndex", "reduceMaybeTemporalAccessor", "mean", "median", "variance", "mode", "maybeSubgroup", "maybeSort", "facets", "reverse", "S", "compare", "j", "ascendingDefined", "f", "take", "x", "isTemporal", "groups", "rollup", "second", "top", "bottom", "sum", "key", "s", "InternSet", "basis", "createChannel", "data", "scale", "type", "value", "filter", "hint", "name", "inferChannelScale", "valueof", "labelof", "createChannels", "channels", "channel", "valueObject", "scales", "values", "scaleName", "map", "isEvery", "isColor", "isOpacity", "isSymbol", "maybeSymbol", "registry", "channelDomain", "facets", "facetChannels", "options", "defaultOrder", "defaultReverse", "defaultReduce", "defaultLimit", "x", "y", "order", "reverse", "reduce", "limit", "maybeValue", "negate", "descendingGroup", "ascendingGroup", "maybeOrder", "X", "reindexFacetChannel", "findScaleChannel", "XV", "lo", "hi", "isIterable", "domain", "InternSet", "YV", "difference", "reducer", "maybeReduce", "rollups", "range", "I", "i", "first", "originalFacets", "V1", "V2", "vi", "j", "k1", "k2", "X1", "X2", "x2", "alias", "ak", "av", "bk", "bv", "ascendingDefined", "descendingDefined", "getSource", "key", "createContext", "options", "document", "create", "name", "select_default", "creator_default", "warnings", "consumeWarnings", "w", "warn", "message", "pi", "tau", "defaultAspectRatio", "createProjection", "projection", "globalInset", "insetTop", "insetRight", "insetBottom", "insetLeft", "dimensions", "options", "domain", "clip", "isObject", "inset", "namedProjection", "width", "height", "marginLeft", "marginRight", "marginTop", "marginBottom", "dx", "dy", "maybePostClip", "tx", "ty", "transform", "x0", "y0", "x1", "y1", "path_default", "k", "transform_default", "x", "y", "warn", "identity", "s", "scaleProjection", "albersUsa_default", "conicProjection", "albers_default", "azimuthalEqualArea_default", "azimuthalEquidistant_default", "conicConformal_default", "conicEqualArea_default", "conicEquidistant_default", "equalEarth_default", "equirectangular_default", "gnomonic_default", "reflectY", "mercator_default", "orthographic_default", "stereographic_default", "transverseMercator_default", "x2", "y2", "clipRectangle", "kx", "ky", "rotate", "precision", "type", "aspectRatio", "parallels", "constant", "stream", "project", "cx", "cy", "values", "n", "X", "Y", "i", "hasProjection", "projectionAspectRatio", "getGeometryChannels", "channel", "X", "Y", "x", "y", "sink", "object", "stream_default", "categoricalSchemes", "Accent_default", "category10_default", "Dark2_default", "Paired_default", "Pastel1_default", "Pastel2_default", "Set1_default", "Set2_default", "Set3_default", "Tableau10_default", "isCategoricalScheme", "scheme", "ordinalSchemes", "scheme11", "BrBG_default", "PRGn_default", "PiYG_default", "PuOr_default", "RdBu_default", "RdGy_default", "RdYlBu_default", "RdYlGn_default", "Spectral_default", "scheme11r", "scheme9", "Blues_default", "Greens_default", "Greys_default", "Oranges_default", "Purples_default", "Reds_default", "schemei", "turbo_default", "viridis_default", "magma", "inferno", "plasma", "cividis_default", "cubehelix_default", "warm", "cool", "BuGn_default", "BuPu_default", "GnBu_default", "OrRd_default", "PuBu_default", "PuBuGn_default", "PuRd_default", "RdPu_default", "YlGn_default", "YlGnBu_default", "YlOrBr_default", "YlOrRd_default", "schemeicyclical", "rainbow_default", "sinebow_default", "interpolate", "quantize_default", "t", "n", "ordinalScheme", "s", "ordinalRange", "length", "maybeBooleanRange", "domain", "range", "f", "value", "quantitativeSchemes", "quantitativeScheme", "divergingSchemes", "isDivergingScheme", "flip", "i", "t", "unit", "interpolators", "number_default", "rgb_default", "hsl_default", "hcl_default", "lab", "maybeInterpolator", "interpolate", "createScaleQ", "key", "scale", "channels", "type", "nice", "clamp", "zero", "domain", "inferAutoDomain", "unknown", "round", "scheme", "interval", "range", "registry", "radius", "inferRadialRange", "length", "inferLengthRange", "opacity", "color", "quantitativeScheme", "round_default", "reverse", "maybeRangeInterval", "n", "arrayify", "m", "piecewise", "_", "constant", "interpolatePiecewise", "min", "max", "extent", "slice", "orderof", "maybeNice", "maybeNiceInterval", "createScaleLinear", "options", "linear", "createScaleSqrt", "createScalePow", "exponent", "pow", "createScaleLog", "base", "inferLogDomain", "log", "createScaleSymlog", "symlog", "createScaleQuantile", "quantiles", "inferQuantileDomain", "quantize_default", "ordinalRange", "quantile", "createScaleThreshold", "createScaleQuantize", "thresholds", "ticks", "x", "sign", "isOrdered", "threshold", "d", "s", "descending", "createScaleIdentity", "identity", "inferDomain", "f", "finite", "value", "inferZeroDomain", "hint", "h25", "positive", "k", "r", "h50", "median", "v", "negative", "j", "createScaleD", "key", "scale", "transform", "channels", "type", "nice", "clamp", "domain", "inferDomain", "unknown", "pivot", "scheme", "range", "symmetric", "interpolate", "registry", "color", "rgb_default", "quantitativeScheme", "number_default", "reverse", "arrayify", "min", "max", "warn", "descending", "maybeInterpolator", "interpolatePiecewise", "piecewise", "flip", "mid", "mindelta", "maxdelta", "createScaleDiverging", "options", "diverging", "transformIdentity", "createScaleDivergingSqrt", "createScaleDivergingPow", "exponent", "divergingPow", "transformPow", "createScaleDivergingLog", "base", "negative", "positive", "divergingLog", "transformLog", "createScaleDivergingSymlog", "constant", "divergingSymlog", "transformSymlog", "x", "transformSqrt", "createScaleT", "key", "scale", "channels", "options", "createScaleQ", "createScaleTime", "time", "createScaleUtc", "utcTime", "ordinalImplicit", "createScaleO", "key", "scale", "channels", "type", "interval", "domain", "range", "reverse", "hint", "maybeRangeInterval", "inferDomain", "createScaleOrdinal", "scheme", "unknown", "options", "registry", "symbol", "inferSymbolHint", "inferSymbolRange", "map", "maybeSymbol", "color", "maybeBooleanRange", "interpolate", "quantitativeScheme", "t0", "d", "n", "quantize_default", "t", "ordinalScheme", "implicit", "ordinal", "createScalePoint", "align", "padding", "maybeRound", "point", "createScaleBand", "paddingInner", "paddingOuter", "band", "round", "values", "InternSet", "value", "v", "min", "max", "extent", "position", "sort", "ascendingDefined", "inferHint", "candidate", "isNoneish", "symbolsStroke", "symbolsFill", "createScales", "channelsByScale", "globalLabel", "globalInset", "globalInsetTop", "globalInsetRight", "globalInsetBottom", "globalInsetLeft", "round", "nice", "clamp", "zero", "align", "padding", "projection", "facetLabel", "options", "scales", "key", "channels", "scaleOptions", "scale", "createScale", "registry", "position", "label", "percent", "transform", "inset", "insetTop", "insetRight", "insetBottom", "insetLeft", "inferScaleLabel", "createScaleFunctions", "name", "type", "interval", "autoScaleRange", "dimensions", "x", "y", "fx", "fy", "superdimensions", "outerDimensions", "autoScaleRangeX", "autoScaleRangeY", "subdimensions", "innerDimensions", "l", "isOrdinalScale", "marginTop", "marginRight", "marginBottom", "marginLeft", "width", "height", "facetMarginTop", "facetMarginRight", "facetMarginBottom", "facetMarginLeft", "left", "right", "piecewiseRange", "autoScaleRound", "top", "bottom", "isBandScale", "roundError", "n", "start", "stop", "paddingInner", "paddingOuter", "m", "step", "length", "isThresholdScale", "end", "_", "createScale", "key", "channels", "options", "type", "inferScaleType", "isOrdinalScale", "values", "value", "isTemporal", "warn", "formatScaleType", "isTemporalString", "isNumericString", "coerceType", "coerceNumbers", "registry", "position", "symbol", "coerceSymbols", "coerceDates", "createScaleDiverging", "createScaleDivergingSqrt", "createScaleDivergingPow", "createScaleDivergingLog", "createScaleDivergingSymlog", "ordinalImplicit", "createScaleOrdinal", "createScaleLinear", "createScaleSqrt", "createScaleThreshold", "createScaleQuantile", "createScaleQuantize", "createScalePow", "createScaleLog", "createScaleSymlog", "createScaleUtc", "createScaleTime", "createScalePoint", "createScaleBand", "createScaleIdentity", "typeProjection", "domain", "range", "scheme", "pivot", "projection", "t", "kind", "radius", "opacity", "length", "asOrdinalType", "isOrdinal", "color", "isDivergingScheme", "isCategoricalScheme", "isTemporalScale", "isThresholdScale", "isBandScale", "isCollapsed", "scale", "domain", "value", "i", "n", "coerceType", "channels", "options", "coerceValues", "c", "coerceSymbols", "values", "map", "maybeSymbol", "exposeScales", "scaleDescriptors", "key", "registry", "exposeScale", "scale", "type", "domain", "range", "interpolate", "interval", "transform", "percent", "pivot", "d", "unknown", "slice", "t", "memoize1", "compute", "cacheValue", "cacheKeys", "keys", "k", "numberFormat", "memoize1", "locale", "monthFormat", "month", "weekdayFormat", "weekday", "formatNumber", "format", "i", "formatIsoDate", "date", "format", "formatAuto", "locale", "number", "formatNumber", "v", "string", "formatDefault", "offset", "nextClipId", "getClipId", "styles", "mark", "title", "href", "variaLabel", "ariaDescription", "ariaHidden", "target", "fill", "fillOpacity", "stroke", "strokeWidth", "strokeOpacity", "strokeLinejoin", "strokeLinecap", "strokeMiterlimit", "strokeDasharray", "strokeDashoffset", "opacity", "mixBlendMode", "imageFilter", "paintOrder", "pointerEvents", "shapeRendering", "channels", "cariaLabel", "defaultFill", "defaultFillOpacity", "defaultStroke", "defaultStrokeOpacity", "defaultStrokeWidth", "defaultStrokeLinecap", "defaultStrokeLinejoin", "defaultStrokeMiterlimit", "defaultPaintOrder", "isNoneish", "vfill", "cfill", "maybeColorChannel", "vfillOpacity", "cfillOpacity", "maybeNumberChannel", "vstroke", "cstroke", "vstrokeOpacity", "cstrokeOpacity", "vopacity", "copacity", "isNone", "isRound", "vstrokeWidth", "cstrokeWidth", "impliedString", "impliedNumber", "string", "applyTitle", "selection", "L", "i", "nonempty", "applyText", "applyText", "selection", "T", "i", "formatDefault", "applyChannelStyles", "selection", "target", "tip", "AL", "T", "F", "FO", "S", "SO", "SW", "O", "H", "applyAttr", "i", "applyHref", "applyTitle", "maybeClip", "clip", "maybeKeyword", "applyClip", "selection", "mark", "dimensions", "context", "clipUrl", "width", "height", "marginLeft", "marginRight", "marginTop", "marginBottom", "id", "getClipId", "create", "g", "projection", "path_default", "applyAttr", "applyIndirectStyles", "pointerEvents", "applyDirectStyles", "applyStyle", "applyHref", "href", "target", "i", "h", "a", "namespaces_default", "name", "value", "applyTransform", "x", "y", "tx", "offset", "ty", "impliedString", "impliedValue", "string", "impliedNumber", "number", "validClassName", "maybeClassName", "applyInlineStyles", "style", "element", "applyFrameAnchor", "frameAnchor", "createDimensions", "scales", "marks", "options", "marginTopDefault", "offset", "marginRightDefault", "marginBottomDefault", "marginLeftDefault", "marginTop", "marginRight", "marginBottom", "marginLeft", "margin", "width", "height", "autoHeight", "dimensions", "facetMargin", "facetMarginTop", "facetMarginRight", "facetMarginBottom", "facetMarginLeft", "x", "y", "fy", "fx", "projection", "aspectRatio", "nfy", "ar", "projectionAspectRatio", "nfx", "far", "lar", "ny", "isOrdinalScale", "ratio", "aspectRatioLength", "fxb", "fyb", "w", "k", "scale", "type", "domain", "transform", "exponent", "min", "max", "extent", "createFacets", "channelsByScale", "options", "fx", "fy", "createScales", "fxDomain", "fyDomain", "cross", "x", "y", "i", "recreateFacets", "facets", "X", "Y", "facetIndex", "f", "a", "b", "facetGroups", "data", "I", "range", "FX", "FY", "rollup", "G", "facetTranslator", "marginTop", "marginLeft", "facetExclude", "index", "ex", "e", "sum", "d", "n", "j", "facetAnchors", "facetAnchorTop", "facetAnchorRight", "facetAnchorBottom", "facetAnchorLeft", "and", "facetAnchorTopEmpty", "facetAnchorRightEmpty", "facetAnchorBottomEmpty", "facetAnchorLeftEmpty", "facetAnchorEmpty", "maybeFacetAnchor", "facetAnchor", "anchor", "indexCache", "V", "InternMap", "map", "v", "facetIndexOf", "facetFind", "keyof", "facetEmpty", "empty", "channels", "facetFilter", "groups", "Mark", "data", "channels", "options", "defaults", "facet", "facetAnchor", "fx", "fy", "sort", "dx", "dy", "margin", "marginTop", "marginRight", "marginBottom", "marginLeft", "clip", "extraChannels", "tip", "render", "isDomainSort", "initializer", "basic", "keyword", "singleton", "maybeFacetAnchor", "maybeNamed", "maybeChannels", "styles", "name", "channel", "isOptions", "value", "scale", "optional", "maybeClip", "maybeTip", "composeRender", "facets", "facetChannels", "plotOptions", "arrayify", "range", "originalFacets", "createChannels", "channelDomain", "index", "values", "filter", "defined", "i", "context", "cx", "cy", "project", "scales", "valueObject", "marks", "r1", "r2", "s", "v", "d", "c", "next", "maybeValue", "maybeKeyword", "withTip", "states", "pointerK", "kx", "ky", "x", "y", "px", "py", "maxRadius", "channels", "render", "options", "composeRender", "index", "scales", "values", "dimensions", "context", "next", "svg", "data", "state", "renderIndex", "fx", "fy", "tx", "ty", "faceted", "facetState", "facetStates", "cx", "cy", "applyFrameAnchor", "PX", "PY", "i", "anchorX", "anchorY", "g", "s", "f", "update", "ii", "ri", "r", "I", "p", "ft", "mt", "pointermove", "event", "xp", "yp", "pointer_default", "j", "dx", "dy", "rj", "pointerdown", "pointerleave", "pointer", "pointerX", "pointerY", "X1", "X2", "X", "Y1", "Y2", "Y", "inferFontVariant", "scale", "isOrdinalScale", "legendRamp", "color", "options", "label", "tickSize", "width", "height", "marginTop", "marginRight", "marginBottom", "marginLeft", "style", "ticks", "tickFormat", "fontVariant", "inferFontVariant", "round", "opacity", "className", "context", "createContext", "maybeClassName", "maybeNumberChannel", "svg", "create", "applyInlineStyles", "tickAdjust", "g", "x", "applyRange", "range", "type", "domain", "interpolate", "scale", "pivot", "interpolator", "piecewise", "interpolatePiecewise", "quantize_default", "number_default", "n", "canvas", "context2", "i", "j", "thresholds", "thresholdFormat", "d", "format", "linear", "map", "_", "band", "axisBottom", "impliedString", "radians", "markers", "mark", "marker", "markerStart", "markerMid", "markerEnd", "maybeMarker", "markerCircleFill", "markerArrow", "markerDot", "markerCircleStroke", "orient", "color", "context", "create", "nextMarkerId", "applyMarkers", "path", "S", "applyMarkersColor", "i", "applyMarkersColor", "path", "markerStart", "markerMid", "markerEnd", "stroke", "strokeof", "context", "iriByMarkerColor", "applyMarker", "marker", "i", "color", "iriByColor", "iri", "node", "id", "nextMarkerId", "maybeInsetX", "inset", "insetLeft", "insetRight", "options", "maybeInset", "maybeInsetY", "insetTop", "insetBottom", "inset1", "inset2", "offset", "maybeIntervalValue", "value", "interval", "maybeValue", "maybeInterval", "maybeIntervalK", "k", "maybeInsetK", "options", "trivial", "v", "v1", "v2", "label", "labelof", "V", "kv", "data", "valueof", "D1", "V1", "transform", "map", "maybeIntervalMidK", "V2", "isTemporal", "maybeIntervalX", "options", "maybeIntervalK", "maybeInsetX", "maybeIntervalY", "maybeInsetY", "maybeIntervalMidX", "maybeIntervalMidK", "maybeIntervalMidY", "defaults", "RuleX", "Mark", "data", "options", "x", "y1", "y2", "inset", "insetTop", "insetBottom", "withTip", "number", "markers", "index", "scales", "channels", "dimensions", "context", "y", "X", "Y1", "Y2", "width", "height", "marginTop", "marginRight", "marginLeft", "marginBottom", "create", "applyIndirectStyles", "applyTransform", "offset", "g", "applyDirectStyles", "i", "isCollapsed", "applyChannelStyles", "applyMarkers", "RuleY", "x1", "x2", "insetRight", "insetLeft", "Y", "X1", "X2", "ruleX", "identity", "rest", "maybeIntervalY", "maybeOptionalZero", "ruleY", "maybeIntervalX", "template", "strings", "parts", "j", "copy", "i", "s", "defaults", "softHyphen", "Text", "Mark", "data", "options", "x", "y", "text", "isIterable", "isTextual", "identity", "indexOf", "frameAnchor", "textAnchor", "lineAnchor", "lineHeight", "lineWidth", "textOverflow", "monospace", "fontFamily", "fontSize", "fontStyle", "fontVariant", "fontWeight", "rotate", "vrotate", "crotate", "maybeNumberChannel", "vfontSize", "cfontSize", "maybeFontSizeChannel", "numberChannel", "nonempty", "impliedString", "keyword", "maybeTextOverflow", "string", "maybeFrameAnchor", "splitter", "clipper", "index", "scales", "channels", "dimensions", "context", "X", "Y", "R", "T", "TL", "FS", "cx", "cy", "applyFrameAnchor", "create", "applyIndirectStyles", "applyIndirectTextStyles", "applyTransform", "g", "applyDirectStyles", "applyMultilineText", "template", "i", "applyAttr", "applyChannelStyles", "selection", "mark", "splitLines", "clipLine", "lines", "formatDefault", "n", "m", "tspan", "namespaces_default", "title", "maybeTuple", "textX", "maybeIntervalMidY", "textY", "maybeIntervalMidX", "inferFontVariant", "isNumeric", "isTemporal", "fontSizes", "lineWrap", "input", "maxWidth", "widthof", "lineStart", "lineEnd", "wordStart", "wordEnd", "required", "lineBreaks", "j", "k", "defaultWidthMap", "defaultWidth", "start", "end", "sum", "readCharacter", "isPictographic", "monospaceWidth", "clipStart", "clipEnd", "ellipsis", "clipMiddle", "cut", "width", "inset", "I", "w", "l", "e", "ei", "reCombiner", "rePictographic", "isSurrogatePair", "isCombiner", "isZeroWidthJoiner", "isAscii", "hi", "lo", "defaults", "defaultRadius", "wingRatio", "shapeArrow", "context", "l", "r", "wing", "shapeSpike", "shapes", "isShapeObject", "value", "maybeShape", "shape", "Vector", "Mark", "data", "options", "x", "y", "length", "rotate", "anchor", "frameAnchor", "vl", "cl", "maybeNumberChannel", "vr", "cr", "keyword", "maybeFrameAnchor", "index", "scales", "channels", "dimensions", "X", "Y", "L", "A", "cx", "cy", "applyFrameAnchor", "create", "applyIndirectStyles", "applyTransform", "g", "applyDirectStyles", "template", "i", "p", "pathRound", "applyChannelStyles", "vectorX", "data", "options", "x", "identity", "rest", "Vector", "vectorY", "y", "maybeData", "data", "options", "isIterable", "maybeAnchor", "anchor", "anchors", "keyword", "anchorY", "anchorFy", "anchorX", "anchorFx", "axisY", "axisKy", "axisFy", "axisX", "axisKx", "axisFx", "k", "color", "opacity", "stroke", "strokeOpacity", "strokeWidth", "fill", "fillOpacity", "textAnchor", "textStroke", "textStrokeOpacity", "textStrokeWidth", "tickSize", "tickPadding", "tickRotate", "x", "margin", "marginTop", "marginRight", "marginBottom", "marginLeft", "label", "labelAnchor", "labelArrow", "labelOffset", "number", "maybeLabelArrow", "marks", "isNoneish", "axisTickKy", "axisTextKy", "text", "labelOptions", "facets", "channels", "scales", "dimensions", "scale", "cla", "clo", "formatAxisLabel", "y", "axisTickKx", "axisTextKx", "strokeLinecap", "strokeLinejoin", "facetAnchor", "frameAnchor", "inset", "insetLeft", "insetRight", "dx", "axisMark", "vectorY", "offset", "shapeTickLeft", "shapeTickRight", "insetTop", "insetBottom", "dy", "vectorX", "shapeTickBottom", "shapeTickTop", "radians", "tickFormat", "lineAnchor", "fontVariant", "textY", "ticks", "inferFontVariant", "inferTextChannel", "textX", "gridY", "gridKy", "gridFy", "gridX", "gridKx", "gridFx", "x1", "x2", "ruleY", "gridDefaults", "y1", "y2", "ruleX", "fontFamily", "fontSize", "fontStyle", "fontWeight", "monospace", "pointerEvents", "shapeRendering", "initializer", "maybeColorChannel", "maybeNumberChannel", "mark", "ariaLabel", "initialize", "axisInitializer", "_channels", "context", "initializeFacets", "tickSpacing", "interval", "isTemporalScale", "arrayify", "maybeRangeInterval", "min", "max", "extent", "range", "identity", "initializedChannels", "name", "channel", "valueof", "basicInitializer", "m", "inferTickFormat", "formatTimeTicks", "isUtcYear", "utcFormat", "isTimeYear", "timeFormat", "formatDefault", "isTemporal", "format", "constant", "l", "inferScaleOrder", "orderof", "isTemporalish", "order", "maybeScale", "scale", "key", "s", "legendSwatches", "color", "opacity", "options", "isOrdinalScale", "isThresholdScale", "legendItems", "selection", "width", "height", "maybeNumberChannel", "legendSymbols", "symbol", "fill", "fillOpacity", "stroke", "isNoneish", "strokeOpacity", "strokeWidth", "r", "vf", "cf", "maybeColorChannel", "vs", "cs", "sf", "ss", "size", "d", "p", "pathRound", "swatch", "columns", "tickFormat", "fontVariant", "inferFontVariant", "swatchSize", "swatchWidth", "swatchHeight", "marginLeft", "className", "style", "context", "createContext", "maybeClassName", "inferTickFormat", "swatches", "create", "extraStyle", "item", "div", "impliedString", "applyInlineStyles", "legendRegistry", "legendSymbols", "legendColor", "legendOpacity", "exposeLegends", "scales", "context", "defaults", "key", "options", "legendRegistry", "legendOptions", "className", "label", "ticks", "tickFormat", "inherit", "legendColor", "color", "legend", "legendSwatches", "legendRamp", "legendOpacity", "type", "interpolate", "scale", "rgb", "interpolateOpacity", "r", "g", "b", "t", "createLegends", "legends", "value", "o", "defaults", "lineDefaults", "Frame", "Mark", "options", "anchor", "inset", "insetTop", "insetRight", "insetBottom", "insetLeft", "rx", "ry", "singleton", "maybeKeyword", "number", "index", "scales", "channels", "dimensions", "context", "marginTop", "marginRight", "marginBottom", "marginLeft", "width", "height", "x1", "x2", "y1", "y2", "create", "applyIndirectStyles", "applyDirectStyles", "applyChannelStyles", "applyTransform", "line", "rect", "frame", "defaults", "ignoreChannels", "Tip", "Mark", "data", "options", "isIterable", "isTextual", "identity", "x", "y", "x1", "x2", "y1", "y2", "anchor", "monospace", "fontFamily", "fontSize", "fontStyle", "fontVariant", "fontWeight", "lineHeight", "lineWidth", "frameAnchor", "textAnchor", "textOverflow", "textPadding", "title", "pointerSize", "pathFilter", "maybeAnchor", "maybeFrameAnchor", "impliedString", "string", "maybeTextOverflow", "number", "key", "splitter", "clipper", "index", "scales", "values", "dimensions", "context", "mark", "fx", "fy", "svg", "document", "r", "m", "marginTop", "marginLeft", "sources", "getSources", "X1", "Y1", "X2", "Y2", "X", "Y", "ox", "oy", "cx", "cy", "applyFrameAnchor", "px", "anchorX", "py", "anchorY", "widthof", "monospaceWidth", "defaultWidth", "ee", "ellipsis", "formatFx", "inferTickFormat", "formatFy", "format", "i", "text", "line", "formatDefault", "channel", "value", "defined", "formatLabel", "formatPair", "scale", "g", "create", "applyIndirectStyles", "applyIndirectTextStyles", "applyTransform", "applyDirectStyles", "that", "select_default", "names", "name", "renderLine", "selection", "color", "opacity", "swatch", "w", "j", "cut", "k", "postrender", "width", "height", "tx", "h", "a", "fitLeft", "fitRight", "fitTop", "fitBottom", "ax", "ay", "path", "getPath", "t", "getLineOffset", "getTextTranslate", "tip", "maybeTuple", "length", "channels", "source", "getSource", "c1", "c2", "c", "defaultLabel", "plot", "options", "facet", "style", "caption", "ariaLabel", "ariaDescription", "className", "maybeClassName", "marks", "flatMarks", "inferTips", "topFacetState", "maybeTopFacet", "facetStateByMark", "mark", "facetState", "maybeMarkFacet", "channelsByScale", "addScaleChannels", "axes", "inferAxes", "facets", "createFacets", "topFacetsIndex", "facetFilter", "nonEmpty", "facetsIndex", "index", "i", "f", "facetExclude", "key", "registry", "isScaleOptions", "stateByMark", "facetChannels", "data", "channels", "applyScaleTransforms", "scaleDescriptors", "createScales", "scales", "createScaleFunctions", "dimensions", "createDimensions", "autoScaleRange", "fx", "fy", "subdimensions", "innerDimensions", "superdimensions", "actualDimensions", "context", "createContext", "document", "svg", "creator_default", "figure", "createProjection", "facetGroups", "state", "value", "newByScale", "update", "inferChannelScales", "channel", "scale", "position", "applyScaleTransform", "newChannelsByScale", "newScaleDescriptors", "inheritScaleLabels", "newScales", "facetDomains", "facetTranslate", "recreateFacets", "facetTranslator", "width", "height", "select_default", "applyInlineStyles", "values", "indexes", "node", "g", "faceted", "subarray", "name", "legends", "createLegends", "legend", "figcaption", "exposeScales", "exposeLegends", "w", "consumeWarnings", "plotThis", "Mark", "markify", "Render", "render", "t", "type", "percent", "interval", "transform", "x", "maybeIntervalTransform", "map", "inferChannelScale", "filter", "yes", "hasProjection", "gx", "gy", "y", "getGeometryChannels", "addScaleChannel", "scaleChannels", "arrayify", "createChannel", "groups", "warn", "derive", "initializer", "tips", "pointerX", "pointerY", "pointer", "tip", "projection", "axis", "grid", "facetAxis", "facetGrid", "xAxis", "xGrid", "yAxis", "yGrid", "fxAxis", "fxGrid", "fyAxis", "fyGrid", "hasPositionChannel", "hasAxis", "maybeGrid", "gridFy", "maybeAxis", "axisFy", "gridFx", "axisFx", "gridY", "axisY", "gridX", "axisX", "axisType", "primary", "secondary", "defaults", "both", "isBoth", "axisOptions", "line", "isNone", "frame", "lineOptions", "gridType", "gridOptions", "anchor", "ticks", "tickSize", "tickSpacing", "tickPadding", "tickFormat", "tickRotate", "fontVariant", "label", "labelAnchor", "labelArrow", "labelOffset", "stroke", "isColor", "isGridTicks", "isIterable", "k", "prefix", "m", "newScale", "marginTop", "marginRight", "marginBottom", "marginLeft", "outerDimensions", "fxr", "outerRange", "fyr", "domain", "x1", "x2", "binX", "outputs", "options", "mergeOptions", "x", "y", "binn", "maybeBinValue", "identity", "maybeInsetX", "binn", "bx", "by", "gx", "gy", "reduceData", "reduceIdentity", "filter", "reduceCount", "sort", "reverse", "outputs", "inputs", "maybeBin", "maybeBinOutputs", "maybeBinReduce", "identity", "maybeBinOutput", "maybeBinEvaluator", "hasOutput", "BX1", "setBX1", "maybeColumn", "BX2", "setBX2", "BY1", "setBY1", "BY2", "setBY2", "k", "gk", "GK", "setGK", "x", "y", "z", "fill", "stroke", "x1", "x2", "y1", "y2", "domain", "cumulative", "thresholds", "interval", "options", "GZ", "setGZ", "vfill", "maybeColorChannel", "vstroke", "GF", "setGF", "GS", "setGS", "basic", "data", "facets", "plotOptions", "K", "maybeApplyInterval", "valueof", "Z", "F", "S", "G", "maybeSubgroup", "groupFacets", "groupData", "bin", "bing", "i", "o", "facet", "groupFacet", "f", "I", "maybeGroup", "g", "b", "extent", "maybeSort", "mid", "name", "output", "mergeOptions", "maybeBinValue", "value", "defaultValue", "maybeValue", "maybeThresholds", "maybeBin", "options", "value", "cumulative", "domain", "extent", "thresholds", "bin", "data", "V", "valueof", "T", "isTemporal", "isTimeThresholds", "map", "coerceDate", "min", "max", "t", "isInterval", "utcTickInterval", "coerceNumbers", "step", "tickIncrement", "r0", "r1", "n", "i", "ticks", "E", "bin1cn", "bin1cp", "bin1", "labelof", "maybeThresholds", "interval", "defaultThresholds", "thresholdAuto", "maybeRangeInterval", "thresholdFreedmanDiaconis", "thresholdScott", "thresholdSturges", "maybeUtcInterval", "maybeBinOutputs", "outputs", "inputs", "maybeOutputs", "maybeBinOutput", "name", "reduce", "maybeOutput", "maybeBinEvaluator", "maybeEvaluator", "maybeBinReduce", "maybeReduce", "maybeBinReduceFallback", "reduceX", "reduceX1", "reduceX2", "reduceY", "reduceY1", "reduceY2", "values", "isTimeInterval", "isIterable", "bing", "EX", "EY", "I", "X", "ix", "x1", "x2", "Y", "iy", "y1", "y2", "B", "bisect_default", "C", "b", "j", "mid1", "m", "maybeIdentityY", "options", "hasY", "identity", "stackY", "stackOptions", "options", "mergeOptions", "x1", "x", "y", "rest", "transform", "X", "y1", "y2", "stack", "mid", "maybeStackY", "y", "y1", "y2", "options", "withTip", "stackY", "maybeZero", "mergeOptions", "offset", "order", "reverse", "rest", "lengthy", "stack", "x", "one", "kx", "ky", "z", "maybeZ", "X", "setX", "maybeColumn", "Y1", "setY1", "column", "Y2", "setY2", "maybeOffset", "maybeOrder", "basic", "data", "facets", "plotOptions", "maybeApplyInterval", "valueof", "Y", "Z", "compare", "n", "facetstacks", "facet", "stacks", "group", "i", "yn", "yp", "offsetExpand", "offsetCenter", "offsetWiggle", "extent", "min", "max", "m", "offsetZero", "offsetCenterFacets", "prev", "InternMap", "j", "Fi", "Df", "value", "diff", "Cf1", "cumsum", "s1", "sum", "d", "I", "m0", "p", "orderInsideOut", "ascendingDefined", "negate", "descendingDefined", "orderY", "orderZ", "orderSum", "orderAppearance", "orderAccessor", "field", "orderComparator", "orderGiven", "orderZDomain", "groupSort", "range", "greatest", "K", "sums", "rollup", "Kp", "Kn", "k", "f", "O", "domain", "map", "AbstractBar", "Mark", "data", "channels", "options", "defaults", "inset", "insetTop", "insetRight", "insetBottom", "insetLeft", "rx", "ry", "number", "impliedString", "index", "scales", "dimensions", "context", "create", "applyIndirectStyles", "g", "applyDirectStyles", "applyAttr", "applyChannelStyles", "X", "marginLeft", "Y", "marginTop", "x", "marginRight", "width", "bandwidth", "y", "marginBottom", "height", "BarY", "AbstractBar", "data", "options", "x", "y1", "y2", "defaults", "selection", "mark", "y", "applyTransform", "Y1", "Y2", "marginTop", "insetTop", "isCollapsed", "i", "marginBottom", "height", "insetBottom", "barY", "data", "options", "hasXY", "indexOf", "identity", "BarY", "maybeStackY", "maybeIntervalY", "maybeIdentityY", "program", "counter", "partition", "histogram", "Data", "Name", "plot", "d", "barY", "frame", "n", "fixKey", "k", "keys", "union", "index", "key", "i", "fx", "fy", "binX", "text", "axisX"]
}
