{"version":3,"sources":["webpack:///./node_modules/d3/dist/package.js","webpack:///./node_modules/d3-array/src/extent.js","webpack:///./node_modules/d3-array/src/max.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-axis/src/identity.js","webpack:///./node_modules/d3-axis/src/axis.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/array.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/selectChild.js","webpack:///./node_modules/d3-selection/src/selection/selectChildren.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/iterator.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/numberArray.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/easeVarying.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/textTween.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-interpolate/src/quantize.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-scale/src/nice.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-scale-chromatic/src/colors.js","webpack:///./node_modules/d3-scale-chromatic/src/ramp.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-shape/src/arc.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/descending.js","webpack:///./node_modules/d3-shape/src/identity.js","webpack:///./node_modules/d3-shape/src/pie.js","webpack:///./node_modules/d3-shape/src/curve/step.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-zoom/src/transform.js"],"names":["min","max","undefined","valueof","value","values","index","slice","Array","prototype","x","right","bottom","left","epsilon","translateX","translateY","y","number","scale","d","center","offset","Math","bandwidth","round","entering","this","__axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","axis","context","ticks","apply","domain","format","identity","spacing","range","range0","range1","length","position","copy","selection","path","selectAll","data","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","text","merge","insert","transition","isFinite","getAttribute","p","parentNode","remove","filter","each","_","arguments","call","tickSize","axisBottom","axisLeft","noop","dispatch","t","i","n","test","Error","Dispatch","parseTypenames","typenames","types","trim","split","map","name","indexOf","hasOwnProperty","type","get","c","set","callback","concat","push","constructor","on","typename","T","that","args","none","selector","querySelector","groups","_groups","m","subgroups","j","node","subnode","group","subgroup","__data__","Selection","_parents","from","querySelectorAll","arrayAll","array","selectorAll","parents","matches","childMatcher","find","childFind","match","children","childFirst","firstElementChild","childrenFilter","matcher","update","_enter","sparse","EnterNode","parent","datum","ownerDocument","namespaceURI","_next","_parent","appendChild","child","insertBefore","next","bindIndex","groupLength","dataLength","bindKey","key","keyValue","nodeByKeyValue","Map","keyValues","has","delete","bind","constant","enterGroup","updateGroup","exitGroup","previous","i0","i1","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compareNode","a","b","compare","ascending","sortgroups","sortgroup","sort","NaN","size","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","namespace","getAttributeNS","defaultView","document","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","classedTrue","classedFalse","classedFunction","join","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","create","creator","constantNull","before","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","deep","property","contextListener","listener","event","onRemove","__on","o","removeEventListener","options","onAdd","addEventListener","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","selection_select","selectChild","selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_merge","selection_sort","nodes","selection_node","selection_size","empty","selection_empty","classed","selection_text","html","selection_raise","selection_lower","selection_remove","selection_datum","selection_on","selection_dispatch","Symbol","iterator","factory","extend","definition","Object","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatHsl","hslConvert","formatHsl","color_formatRgb","formatRgb","l","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","toString","h","s","Hsl","hsl","hsl2rgb","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","assign","displayable","pow","floor","linear","exponential","gamma","nogamma","color","start","end","rgbGamma","rgbSpline","spline","colors","rgbBasis","basisClosed","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","Date","setTime","reA","reB","source","one","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","numberArray","isArray","valueOf","object","timeout","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","f","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","e","wake","nap","poke","t0","Infinity","sleep","clearTimeout","clearInterval","setInterval","TypeError","stop","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedules","__transition","id","tween","timing","duration","ease","state","init","schedule","self","svgNode","active","interrupt","degrees","PI","rotate","skewX","scaleX","scaleY","sqrt","atan2","atan","parseCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","parseSvg","baseVal","consolidate","matrix","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","interpolateTransformCss","interpolateTransformSvg","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","easeVarying","Transition","_name","every","onFunction","on0","on1","sit","removeFunction","inherit","styleNull","styleMaybeRemove","listener0","styleTween","styleInterpolate","textInterpolate","textTween","id0","id1","newId","Promise","resolve","reject","cancel","selection_prototype","cubicInOut","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_easeVarying","transition_end","defaultTiming","selection_interrupt","selection_transition","abs","number1","number2","samples","interpolator","e10","e5","e2","reverse","step","count","tickIncrement","ceil","power","log","LN10","error","tickStep","step0","step1","delta","lo","hi","mid","ascendingComparator","ascendingBisect","bisector","bisectRight","bisect","constants","unit","normalize","clamper","bimap","d0","d1","r0","r1","polymap","target","clamp","unknown","transformer","untransform","piecewise","output","input","rescale","invert","rangeRound","u","continuous","initRange","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","width","comma","precision","toLocaleString","replace","formatDecimalParts","toExponential","coefficient","prefixExponent","grouping","substring","thousands","numerals","out","exponent","toFixed","formatDecimal","toPrecision","formatRounded","formatPrefixAuto","toUpperCase","prefixes","locale","formatGroup","Number","currencyPrefix","currency","currencySuffix","decimal","formatNumerals","String","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","charCodeAt","padding","formatPrefix","defaultLocale","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","implicit","ordinal","newInterval","floori","offseti","field","interval","date","setMonth","setHours","setFullYear","getFullYear","setDate","getMonth","durationSecond","durationMinute","durationHour","durationDay","durationWeek","weekday","getDate","getDay","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","getMilliseconds","getSeconds","getMinutes","getHours","getUTCSeconds","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","localDate","H","M","S","L","utcDate","UTC","newDate","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","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","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","pad","pads","charAt","newParse","Z","week","day","parseSpecifier","Q","V","w","getUTCMonth","W","U","getUTCHours","X","utcFormat","utcParse","timeFormat","numberRe","percentRe","requoteRe","requote","dISO","z","getUTCMilliseconds","getUTCMinutes","dow","UTCdISO","x0","x1","durationMonth","durationYear","calendar","year","month","hour","minute","second","millisecond","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatYear","tickIntervals","tickInterval","scheme","ramp","pi","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","halfPi","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","cornerRadius","padRadius","buffer","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","Linear","_context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","point","defined","curve","defined0","sortValues","descending","pie","sum","arcs","pa","Step","_t","_x","_y","stepAfter","epsilon2","cosh","exp","sinh","tanh","zoom","ux0","uy0","w0","ux1","uy1","w1","rho","b0","rho4","rho2","b1","coshr0","SQRT2","_1","_2","_4","zoomRho","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom"],"mappings":"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","file":"js/chunk-vendors~c616263e.6662a5bb.js","sourcesContent":["export var name = \"d3\";\nexport var version = \"6.5.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v${npm_package_version%%.*}.js && cp ../d3/dist/d3.min.js d3.v${npm_package_version%%.*}.min.js && git add d3.v${npm_package_version%%.*}.js d3.v${npm_package_version%%.*}.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"3\",\"rollup\":\"2\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"5\",\"rollup-plugin-terser\":\"7\",\"tape\":\"4\",\"tape-await\":\"0.1\"};\nexport var dependencies = {\"d3-array\":\"2\",\"d3-axis\":\"2\",\"d3-brush\":\"2\",\"d3-chord\":\"2\",\"d3-color\":\"2\",\"d3-contour\":\"2\",\"d3-delaunay\":\"5\",\"d3-dispatch\":\"2\",\"d3-drag\":\"2\",\"d3-dsv\":\"2\",\"d3-ease\":\"2\",\"d3-fetch\":\"2\",\"d3-force\":\"2\",\"d3-format\":\"2\",\"d3-geo\":\"2\",\"d3-hierarchy\":\"2\",\"d3-interpolate\":\"2\",\"d3-path\":\"2\",\"d3-polygon\":\"2\",\"d3-quadtree\":\"2\",\"d3-random\":\"2\",\"d3-scale\":\"3\",\"d3-scale-chromatic\":\"2\",\"d3-selection\":\"2\",\"d3-shape\":\"2\",\"d3-time\":\"2\",\"d3-time-format\":\"3\",\"d3-timer\":\"2\",\"d3-transition\":\"2\",\"d3-zoom\":\"2\"};\n","export default function(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","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 var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array.js\";\nimport 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.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\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 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] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\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) : 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)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\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 = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), 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 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","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","export default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","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 var group = select.apply(this, arguments);\n return group == null ? [] : array(group);\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 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 array from \"../array.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’t 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 = array(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","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 enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\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(selection) {\n if (!(selection instanceof Selection)) throw new Error(\"invalid merge\");\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","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\";\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 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","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(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? 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: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","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","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’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, 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 {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import {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 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 interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\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 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 {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’re 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’re 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’re 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’re 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’re 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 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 “__brush” 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) {\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().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\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 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();\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 interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\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();\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();\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();\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();\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();\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","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 e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n step = -step;\n start = Math.ceil(start * step);\n stop = Math.floor(stop * step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(f) {\n let delta = f;\n let compare = f;\n\n if (f.length === 1) {\n delta = (d, x) => f(d) - x;\n compare = ascendingComparator(f);\n }\n\n function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n\n function center(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) 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 ascendingComparator(f) {\n return (d, x) => ascending(f(d), x);\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import 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(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function 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 isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export 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","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport 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 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, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {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 {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"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","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 {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target),\n step;\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n return interval.every(step);\n }\n\n return interval;\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1]))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","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 {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 \"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","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\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"],"sourceRoot":""}