{"version":3,"sources":["webpack:///./src/components/WorldMap/WorldMap.vue","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/cross.js","webpack:///./node_modules/d3-array/src/array.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-axis/src/array.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/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/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/index.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/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-chord/src/math.js","webpack:///./node_modules/d3-chord/src/array.js","webpack:///./node_modules/d3-chord/src/chord.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-chord/src/ribbon.js","webpack:///./node_modules/d3-collection/src/map.js","webpack:///./node_modules/d3-collection/src/set.js","webpack:///./node_modules/d3-contour/src/array.js","webpack:///./node_modules/d3-contour/src/density.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-random/src/defaultSource.js","webpack:///./node_modules/d3-random/src/normal.js","webpack:///./node_modules/d3-random/src/uniform.js","webpack:///./node_modules/d3-random/src/irwinHall.js","webpack:///./node_modules/d3-random/src/logNormal.js","webpack:///./node_modules/d3-random/src/bates.js","webpack:///./node_modules/d3-random/src/exponential.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/array.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-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-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/time.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-voronoi/src/RedBlackTree.js","webpack:///./node_modules/d3-voronoi/src/Edge.js","webpack:///./node_modules/d3-voronoi/src/Cell.js","webpack:///./node_modules/d3-voronoi/src/Circle.js","webpack:///./node_modules/d3-voronoi/src/Beach.js","webpack:///./node_modules/d3-voronoi/src/Diagram.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:///./node_modules/d3-zoom/src/zoom.js","webpack:///./src/util/throttle.js","webpack:///src/components/WorldMap/WorldMap.vue","webpack:///./src/components/WorldMap/WorldMap.vue?f0c8","webpack:///./src/components/WorldMap/WorldMap.vue?6ec9","webpack:///./node_modules/datamaps/node_modules/d3/d3.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/topojson/build/topojson.js","webpack:///./node_modules/datamaps/dist/datamaps.all.js"],"names":["render","_vm","this","_c","_self","staticStyle","attrs","staticRenderFns","a","b","NaN","compare","length","ascendingComparator","left","x","lo","hi","mid","right","f","d","ascending","ascendingBisect","bisector","bisectRight","bisect","Array","prototype","e10","slice","map","Math","sqrt","e5","e2","reverse","n","ticks","step","i","stop","start","count","tickIncrement","isFinite","ceil","floor","max","power","log","LN10","error","pow","tickStep","step0","abs","step1","noop","value","dispatch","t","arguments","_","test","Error","Dispatch","parseTypenames","typenames","types","trim","split","name","indexOf","hasOwnProperty","type","get","c","set","callback","concat","push","constructor","on","typename","T","copy","call","that","args","apply","none","selector","querySelector","select","groups","_groups","m","subgroups","j","node","subnode","group","subgroup","__data__","Selection","_parents","querySelectorAll","selectorAll","parents","matches","match","matcher","update","_enter","sparse","EnterNode","parent","datum","ownerDocument","namespaceURI","_next","_parent","appendChild","child","insertBefore","next","keyPrefix","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","key","keyValue","nodeByKeyValue","keyValues","size","each","bind","enterGroup","updateGroup","exitGroup","previous","i0","i1","_exit","onenter","append","onupdate","onexit","remove","merge","order","groups0","groups1","selection","m0","m1","min","merges","group0","group1","compareDocumentPosition","parentNode","compareNode","sortgroups","sortgroup","sort","nodes","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","namespace","getAttributeNS","getAttribute","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","filterEvents","mouseenter","mouseleave","filterContextListener","listener","index","contextListener","event","related","relatedTarget","event1","event0","onRemove","__on","o","removeEventListener","capture","onAdd","wrap","addEventListener","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","selection_select","selectAll","filter","selection_filter","selection_data","selection_enter","selection_exit","selection_merge","selection_nodes","selection_node","selection_size","empty","selection_empty","attr","classed","text","selection_text","html","selection_raise","selection_lower","insert","selection_remove","selection_on","selection_dispatch","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","format","l","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","round","toString","h","s","Hsl","hsl","hsl2rgb","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","assign","displayable","k","values","linear","exponential","y","gamma","nogamma","color","end","rgbGamma","rgbSpline","spline","colors","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","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","e","wake","nap","poke","t0","Infinity","sleep","clearTimeout","clearInterval","setInterval","TypeError","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedules","__transition","id","tween","timing","duration","ease","state","init","schedule","self","tick","cssNode","cssRoot","cssView","svgNode","active","interrupt","degrees","PI","translateX","translateY","rotate","skewX","scaleX","scaleY","atan2","atan","parseCss","transform","decompose","parseSvg","baseVal","consolidate","matrix","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","scale","interpolateTransformCss","interpolateTransformSvg","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","transition","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","Transition","_name","every","onFunction","on0","on1","sit","removeFunction","children","inherit","styleNull","styleMaybeRemove","listener0","undefined","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_end","defaultTiming","selection_interrupt","selection_transition","number1","number2","cos","sin","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","dx","dy","cw","da","rect","w","Map","has","clear","keys","entries","Set","proto","_x","_y","cover","tree","xm","ym","xp","yp","bottom","_root","leaf","addAll","xz","yz","z","visit","x3","y3","quads","radius","d2","retainer","removeAll","quadtree","Quadtree","leaf_copy","treeProto","target","extent","find","root","visitAfter","random","randomUniform","sourceRandomUniform","randomNormal","mu","sigma","sourceRandomNormal","randomLogNormal","normal","exp","sourceRandomLogNormal","randomIrwinHall","sum","sourceRandomIrwinHall","randomBates","irwinHall","sourceRandomBates","randomExponential","lambda","sourceRandomExponential","initRange","domain","range","unit","normalize","clamper","bimap","d0","d1","r0","r1","polymap","clamp","unknown","transformer","untransform","piecewise","output","input","rescale","invert","rangeRound","u","continuous","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","width","comma","precision","toLocaleString","replace","formatDecimalParts","p","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","tickFormat","nice","newInterval","floori","offseti","field","interval","date","offset","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","getUTCMonth","W","U","getUTCHours","X","utcFormat","utcParse","numberRe","percentRe","requoteRe","requote","dISO","getUTCMilliseconds","getUTCMinutes","dow","UTCdISO","utcMonth","utcHour","setUTCMinutes","utcMinute","setUTCSeconds","RedBlackTree","RedBlackNode","C","R","P","N","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","createEdge","edge","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","ax","ay","bx","by","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","clipEdges","createCell","site","cellHalfedgeAngle","cell","va","vb","cellHalfedgeStart","cellHalfedgeEnd","sortCellHalfedges","array","clipCells","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v00","v01","v11","v10","firstCircle","circlePool","Circle","cy","attachCircle","lArc","rArc","lSite","cSite","rSite","cx","epsilon2","ha","hc","circle","circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","edges","polygons","polygon","triangles","forEach","s0","e1","s1","links","_found","vx","vy","SQRT2","Transform","point","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom","throttle","handlerFunc","resizeTimeout","color1","color2","highlightFillColor","borderColor","highlightBorderColor","mapData","AUS","BRA","CAN","DEU","FRA","GBR","GEO","IND","ROU","RUS","USA","methods","generateColors","d3","generateMapColors","mapDataValues","maxVal","fills","defaultFill","val","fillKey","initVectorMap","_this$generateMapColo","worldMap","DataMap","scope","element","getElementById","responsive","geographyConfig","borderWidth","borderOpacity","highlightBorderWidth","highlightBorderOpacity","resizeFunc","resize","mounted","_mounted","_asyncToGenerator","regeneratorRuntime","mark","_callee","_context","prev","component","version","d3_arraySlice","d3_array","d3_document","d3_documentElement","d3_window","childNodes","nodeType","d3_element_prototype","Element","d3_element_setAttribute","d3_element_setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","d3_ascending","d3_number","d3_numeric","d3_bisector","descending","mean","quantile","median","numbers","variance","deviation","d3_bisect","d3_transposeLength","bisectLeft","shuffle","permute","indexes","permutes","pairs","p1","transpose","row","zip","arrays","merged","d3_range_integerScale","d3_class","ctor","properties","defineProperty","enumerable","d3_Map","d3_map_proto","d3_map_zero","d3_map_escape","d3_map_unescape","d3_map_has","d3_map_remove","d3_map_keys","d3_map_size","d3_map_empty","d3_Set","d3_identity","d3_rebind","method","d3_vendorSymbol","d3_vendorPrefixes","prefixName","nest","sortValues","rollup","sortKeys","mapType","depth","setter","valuesByKey","sortKey","keyMap","behavior","rebind","d3_noop","d3_dispatch","d3_dispatch_event","listeners","listenerByName","d3_eventPreventDefault","preventDefault","d3_eventSource","sourceEvent","d3_eventDispatch","of","thiz","argumentz","e0","d3_requote_re","d3_subclass","__proto__","d3_selection","d3_selectionPrototype","d3_select","d3_selectAll","d3_selectMatches","d3_selectMatcher","Sizzle","matchesSelector","d3_selection_selector","d3_selection_selectorAll","d3_nsXhtml","d3_nsPrefix","d3_selection_attr","attrNull","attrNullNS","ns","qualify","d3_collapse","d3_selection_classedRe","d3_selection_classes","d3_selection_classed","d3_selection_classedName","classedConstant","d3_selection_style","d3_selection_property","propertyNull","d3_selection_creator","createNS","d3_selectionRemove","d3_selection_dataNode","d3_selection_filter","d3_selection_sortComparator","comparator","d3_selection_each","d3_selection_enter","d3_selection_enterPrototype","groupData","nodeData","n0","updateNodes","enterNodes","exitNodes","d3_selection_enterInsertBefore","j0","d3_selection_on","d3_selection_onListener","d3_selection_onFilters","$","d3_selection_onFilter","upgroup","d3_event_dragSelect","d3_event_dragId","d3_event_dragSuppress","click","suppressClick","off","mouse","container","d3_mousePoint","d3_mouse_bug44083","navigator","userAgent","changedTouches","ownerSVGElement","createSVGPoint","scrollX","scrollY","position","top","margin","border","ctm","getScreenCTM","pageX","pageY","clientX","clientY","matrixTransform","inverse","getBoundingClientRect","clientLeft","clientTop","d3_behavior_dragTouchId","identifier","touch","touches","drag","origin","mousedown","dragstart","touchstart","subject","move","dragOffset","correspondingElement","dragged","dragId","dragName","dragSubject","moved","ended","dragRestore","position0","position1","ε","ε2","π","τ","τε","halfπ","d3_radians","d3_degrees","d3_sgn","d3_cross2d","d3_acos","d3_asin","asin","d3_sinh","d3_cosh","d3_tanh","d3_haversin","ρ","ρ2","ρ4","interpolateZoom","p0","ux0","uy0","w0","ux1","uy1","w1","b0","b1","coshr0","zoom","translate0","center0","center","mousewheelTimer","touchtime","view","scaleExtent","d3_behavior_zoomInfinity","zooming","mousemove","mouseup","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","scaleTo","translateTo","zoomTo","__chart__","zoomstarted","zoomed","zoomended","location0","d3_selection_interrupt","scale0","locations0","distance0","zoomName","touchmove","touchend","targets","relocate","started","changed","LN2","l0","l1","distance1","scale1","d3_behavior_zoomDelta","shiftKey","deltaY","deltaMode","wheelDelta","view1","d3_transitionInheritId","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","d3_hslPrototype","d3_hsl_rgb","vv","d3_rgb","d3_hcl","d3_lab_hcl","d3_lab","d3_rgb_lab","hcl","d3_hclPrototype","d3_hcl_lab","d3_lab_K","lab","d3_lab_X","d3_lab_Y","d3_lab_Z","d3_labPrototype","d3_lab_rgb","d3_lab_xyz","d3_xyz_rgb","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_rgbPrototype","d3_rgb_hex","parseFloat","d3_rgb_parseNumber","d3_rgb_names","d3_rgb_xyz","d3_functor","d3_xhrType","response","url","mimeType","d3_xhr","xhr","headers","request","XMLHttpRequest","responseType","respond","result","status","d3_xhrHasResponse","load","XDomainRequest","onload","onerror","onreadystatechange","readyState","onprogress","progress","header","send","open","setRequestHeader","overrideMimeType","beforesend","abort","d3_xhr_fixCallback","responseText","functor","dsv","delimiter","reFormat","delimiterCode","typedResponse","formatRow","formatValue","parseRows","Function","JSON","stringify","eol","EOL","EOF","rows","I","token","formatRows","fieldSet","fields","csv","tsv","d3_timer_queueHead","d3_timer_queueTail","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer","then","d3_timer_step","d3_timer_mark","d3_timer_sweep","d3_format_precision","flush","d3_formatPrefixes","d3_formatPrefix","d3_locale_numberFormat","locale_decimal","locale_thousands","locale_grouping","locale_currency","d3_format_re","zfill","integer","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","negative","lastIndexOf","fromCharCode","d3_time","d3_date","d3_date_utc","getTime","d3_time_prototype","setDay","setUTCDay","setMilliseconds","setUTCMilliseconds","setMinutes","setSeconds","d3_time_interval","number","dt","times","range_utc","utc","d3_time_interval_utc","d3_locale_timeFormat","locale_days","locale_shortDays","d3_time_format","template","d3_time_formatPads","d3_time_formats","d3_time_parse","localZ","d3_time_parsers","multi","d3_time_formatMulti","d3_time_periodLookup","d3_time_dayRe","d3_time_formatRe","d3_time_dayLookup","d3_time_formatLookup","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_monthRe","d3_time_monthLookup","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","A","B","d3_time_formatPad","dayOfYear","sundayOfYear","mondayOfYear","Y","d3_time_zone","d3_time_parseWeekdayAbbrev","d3_time_parseWeekday","d3_time_parseMonthAbbrev","d3_time_parseMonth","d3_time_parseLocaleFull","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseAmPm","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseLocaleDate","d3_time_parseLocaleTime","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","year","years","weeks","weekOfYear","d3_time_numberRe","d3_time_percentRe","d3_time_expandYear","zs","zh","zm","numberFormat","timeFormat","d3_locale_enUS","d3_adder","geo","d3_adderSum","d3_adderTemp","reset","bv","av","d3_geo_streamGeometry","geometry","d3_geo_streamGeometryType","stream","d3_geo_streamObjectType","Feature","feature","FeatureCollection","features","Sphere","sphere","Point","coordinates","MultiPoint","LineString","d3_geo_streamLine","MultiLineString","Polygon","d3_geo_streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","area","d3_geo_areaSum","d3_geo_area","d3_geo_centroidW0","d3_geo_centroidW1","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_areaRingSum","d3_geo_areaRingStart","λ00","φ00","λ0","cosφ0","sinφ0","nextPoint","λ","φ","dλ","sdλ","adλ","cosφ","sinφ","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","vector","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","bounds","φ0","λ1","φ1","λ_","λ__","φ__","dλSum","ranges","bound","ringPoint","ringStart","ringEnd","linePoint","equatorial","inflection","λi","antimeridian","φi","angle","compareRanges","withinRange","best","centroid","d3_geo_centroid","d3_geo_centroidPoint","d3_geo_centroidLineStart","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","d3_geo_centroidPointXYZ","z0","cz","d3_geo_compose","compose","d3_true","d3_geo_clipPolygon","segments","clipStartInside","clip","segment","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","entry","points","current","isSubject","other","d3_geo_clip","pointVisible","clipLine","clipStart","line","rotatedClipStart","pointRing","d3_geo_pointInPolygon","polygonStarted","d3_geo_clipSort","pointLine","ring","buffer","d3_geo_clipBufferListener","ringListener","clean","ringSegments","shift","d3_geo_clipSegmentLength1","lines","rejoin","d3_geo_clipAntimeridian","d3_geo_clipAntimeridianLine","d3_geo_clipAntimeridianInterpolate","sλ0","sλ1","d3_geo_clipAntimeridianIntersect","cosφ1","sinλ0_λ1","from","to","direction","meridian","parallel","meridianNormal","polarAngle","winding","point0","intersection","φarc","d3_geo_clipCircle","cr","smallRadius","notHemisphere","d3_geo_circleInterpolate","visible","c0","point2","point1","code","intersect","two","pa","pb","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","δλ","polar","q1","d3_geom_clipLine","d3_geo_clipExtentMAX","d3_geo_clipExtent","x__","y__","v__","x_","y_","v_","first","listener_","bufferListener","insidePolygon","inside","wn","corner","comparePoints","ca","cb","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","ρ0","forward","ρ0_y","clipExtent","valid","conicEqualArea","raw","albers","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathAreaPolygon","d3_geo_pathBoundsX0","d3_geo_pathBoundsY0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY1","d3_geo_pathArea","d3_geo_pathAreaRingStart","x00","y00","d3_geo_pathBounds","d3_geo_pathBoundsPoint","d3_geo_pathBuffer","pointCircle","d3_geo_pathBufferCircle","pointLineStart","lineEndPolygon","pointRadius","d3_geo_lengthSum","d3_geo_pathCentroid","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","context","d3_geo_resample","project","δ2","cosMinDistance","maxDepth","resample","resampleRecursive","resampleNone","d3_geo_transformPoint","a00","b00","c00","resampleLineTo","φ2","λ2","dx2","dy2","dz","d3_geo_pathProjectStream","d3_geo_projectionRadians","d3_geo_transform","d3_geo_projection","projectRotate","δx","δy","projectResample","δφ","δγ","preclip","postclip","clipAngle","projection","d3_geo_rotation","invalidate","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_rotationλ","d3_geo_rotationφγ","d3_geo_forwardRotationλ","rotation","cosδφ","sinδφ","cosδγ","sinδγ","sr","d3_geo_circleAngle","d3_geo_graticuleX","d3_geo_graticuleY","d3_source","d3_target","d3_geo_interpolate","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","distance","path","projectStream","contextStream","cacheStream","projectionMutator","equirectangular","Δλ","sinΔλ","cosΔλ","sinφ1","graticule","X1","X0","Y1","Y0","DX","DY","outline","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","d3_geo_length","d3_geo_lengthLineStart","d3_geo_azimuthal","azimuthal","cosλ","sinc","cosc","d3_geo_azimuthalEqualArea","cosλcosφ","azimuthalEqualArea","d3_geo_azimuthalEquidistant","d3_geo_conicConformal","F","d3_geo_mercator","d3_geo_conicEquidistant","G","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","d3_geo_mercatorProjection","clipAuto","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullUpper","hull","hs","d3_geom_hullOrder","stereographic","transverseMercator","geom","vertices","flippedPoints","upper","skipLeft","skipRight","d3_geom_polygonPrototype","d3_geom_polygonInside","d3_geom_polygonIntersect","x43","y43","ua","d3_geom_polygonClosed","d3_geom_voronoiEdges","d3_geom_voronoiCells","d3_geom_voronoiBeaches","d3_geom_voronoiFirstCircle","d3_geom_voronoiCircles","d3_geom_voronoiBeachPool","d3_geom_voronoiCirclePool","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","d3_geom_voronoiCreateBeach","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiRemoveBeach","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","d3_geom_voronoiCell","d3_geom_voronoiCloseCells","iHalfEdge","halfEdges","nHalfEdges","prepare","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","d3_geom_voronoiClipEdges","d3_geom_voronoiConnectEdge","d3_geom_voronoiEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","bbox","d3_geom_voronoiVertexOrder","diagram","voronoi","d3_geom_voronoiClipExtent","d3_geom_voronoiTriangleArea","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeNode","d3_geom_quadtreeVisit","sx","sy","d3_geom_quadtreeFind","closestPoint","minDistance2","distance2","below","d3_interpolateRgb","ar","ag","ab","br","bg","bb","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","d3_interpolate_numberA","d3_interpolate_numberB","delaunay","compat","xs","ys","x1_","y1_","x2_","y2_","nx","ny","insertChild","nPoint","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolators","d3_interpolateArray","interpolateArray","d3_ease_default","d3_ease","poly","d3_ease_poly","quad","d3_ease_quad","cubic","d3_ease_cubic","d3_ease_sin","d3_ease_exp","d3_ease_circle","elastic","d3_ease_elastic","back","d3_ease_back","bounce","d3_ease_bounce","d3_ease_mode","d3_ease_reverse","d3_ease_reflect","d3_ease_clamp","d3_ease_cubicInOut","d3_interpolateHcl","ah","ac","al","bh","bc","bl","d3_interpolateHsl","as","d3_interpolateLab","aa","ba","d3_interpolateRound","d3_transform","kx","d3_transformNormalize","kz","d3_transformDot","ky","d3_transformCombine","skew","interpolateHcl","interpolateHsl","interpolateLab","interpolateRound","d3_transformIdentity","d3_interpolateTransformPop","d3_interpolateTranslate","ta","tb","d3_interpolateRotate","ra","rb","d3_interpolateSkew","wa","wb","d3_interpolateScale","ka","kb","d3_interpolateTransform","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","link","lca","d3_layout_bundleLeastCommonAncestor","d3_layout_bundleAncestors","ancestors","aNodes","bNodes","aNode","bNode","sharedNode","d3_layout_forceDragstart","fixed","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","d3_layout_forceAccumulate","alpha","charges","charge","pointCharge","layout","bundle","paths","chord","chords","sortGroups","sortSubgroups","sortChords","relayout","groupSums","groupIndex","subgroupIndex","di","dj","subindex","startAngle","endAngle","resort","force","distances","strengths","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","chargeDistance2","d3_layout_forceChargeDistance2","gravity","theta2","repulse","dw","dn","dragmove","resume","weight","chargeDistance","theta","neighbors","dimension","candidates","d3_layout_hierarchyRebind","hierarchy","d3_layout_hierarchyLinks","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyVisitAfter","nodes2","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","stack","childs","revalue","partition","pie","d3_layout_pieSortByValue","padAngle","arcs","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","series","orders","offsets","d3_layout_stackOrders","d3_layout_stackOffsets","d3_layout_stackMaxIndex","sums","d3_layout_stackReduceSum","tops","bottoms","silhouette","wiggle","s2","s3","o0","expand","reduce","d3_layout_stackSum","d3_layout_histogramBinSturges","d3_layout_histogramBinFixed","d3_layout_histogramRange","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","dr","d3_layout_packSiblings","xMin","xMax","yMin","yMax","d3_layout_packLink","d3_layout_packPlace","isect","d3_layout_packUnlink","d3_layout_packTransform","db","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","change","d3_layout_treeShift","d3_layout_treeAncestor","vim","ancestor","d3_layout_clusterY","d3_layout_clusterX","d3_layout_clusterLeft","d3_layout_clusterRight","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","d3_scaleRange","rangeExtent","d3_scale_bilinear","uninterpolate","d3_scale_nice","d3_scale_niceStep","d3_scale_niceIdentity","histogram","frequency","valuer","ranger","binner","bin","bins","thresholds","pack","separation","nodeSize","root0","root1","wrapTree","firstWalk","secondWalk","sizeNode","tx","node1","queue","siblings","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","cluster","previousNode","treemap","stickies","sticky","mode","ratio","squarify","score","remaining","worst","stickify","rmax","rmin","padFunction","padConstant","µ","σ","logNormal","bates","d3_scale_polylinear","d3_scale_linear","d3_scale_linearTicks","d3_scale_linearTickFormat","d3_scale_linearNice","d3_scale_linearRebind","d3_scale_linearTickRange","span","err","d3_scale_linearPrecision","d3_scale_linearFormatPrecision","d3_scale_linearFormatSignificant","d3_scale_log","base","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_pow","powp","d3_scale_powPow","powb","d3_scale_ordinal","rangeBand","steps","xi","rangePoints","rangeRoundPoints","rangeBands","outerPadding","rangeRoundBands","ordinal","category10","d3_category10","category20","d3_category20","category20b","d3_category20b","category20c","d3_category20c","d3_scale_quantile","quantiles","invertExtent","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","identity","d3_zero","quantize","threshold","innerRadius","d3_svg_arcInnerRadius","outerRadius","d3_svg_arcOuterRadius","cornerRadius","padRadius","d3_svg_arcAuto","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","rc","circleSegment","rp","ap","d3_svg_arcSweep","h1","h0","rc1","rc0","oc","kc","lc","t30","d3_svg_arcCornerTangents","t12","t03","ox","oy","D","cx0","cx1","dx0","dy0","dx1","dy1","d3_svg_line","defined","d3_svg_lineLinear","interpolateKey","tension","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStep","d3_svg_lineStepBefore","d3_svg_lineStepAfter","d3_svg_lineBasis","d3_svg_lineBasisOpen","d3_svg_lineBasisClosed","d3_svg_lineBundle","cardinal","d3_svg_lineCardinal","d3_svg_lineCardinalOpen","d3_svg_lineCardinalClosed","monotone","d3_svg_lineMonotone","d3_svg_lineHermite","d3_svg_lineCardinalTangents","tangents","pi","lp","p2","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","d3_svg_lineRadial","d3_svg_area","interpolateReverse","points0","points1","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_diagonalRadialProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","radial","equals","curve","diagonal","p3","projection_","d3_svg_symbols","cross","diamond","d3_svg_symbolTan30","square","d3_svg_symbolSqrt3","symbolTypes","d3_transitionId","d3_transitionNamespace","d3_transitionInherit","d3_transitionNode","d3_transition","d3_selection_interruptNS","lock","activeId","d3_transitionPrototype","d3_transition_tween","d3_transition_text","tweens","cancelId","subnodes","nameNS","styleString","inheritId","axis","tickFormat_","orient","d3_svg_axisDefaultOrient","innerTickSize","outerTickSize","tickPadding","tickArguments_","tickValues","tickTransform","tickEnter","tickExit","tickUpdate","tickSpacing","pathUpdate","lineEnter","lineUpdate","textEnter","textUpdate","d3_svg_axisX","d3_svg_axisY","d3_svg_axisOrients","tickSize","tickSubdivide","brush","xExtentDomain","yExtentDomain","xExtent","yExtent","xClamp","yClamp","resizes","d3_svg_brushResizes","brushstart","background","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","redraw","eventTarget","event_","resizing","resizingX","resizingY","dragging","keydown","keyup","brushmove","brushend","ex","ey","altKey","keyCode","move1","extent1","extent0","yi","nw","ne","se","sw","d3_time_formatUtc","d3_time_formatIso","d3_time_formatIsoNative","toISOString","d3_time_scale","tickMethod","d3_time_scaleSteps","d3_time_scaleMilliseconds","d3_time_scaleDate","skip","skipped","iso","second","seconds","minute","minutes","hour","timezone","hours","month","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUtcMethods","d3_time_scaleUtcFormat","d3_json","d3_html","createRange","selectNode","body","createContextualFragment","json","responseXML","DESCRIPTORS","getKeys","toIObject","isEnum","module","exports","isEntries","it","O","$export","$values","global","transformAbsolute","transformRelative","topology","feature$1","absolute","geometryType","stitchArcs","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","ends","dp","fg","gf","mesh","meshArcs","geomsByArc","geoms","cartesianTriangleArea","triangle","mergeArcs","objects","polygonsByArc","components","register","ring$$","ki","indexesByArc","ij","ik","compareArea","minAreaHeap","heap","up","down","removed","presimplify","relative","maxArea","topojson","defaultOptions","aspectRatio","setProjection","dataType","done","filters","dataUrl","hideAntarctica","hideHawaiiAndAlaska","popupTemplate","geography","popupOnHover","highlightOnHover","projectionConfig","bubblesConfig","fillOpacity","animate","highlightFillOpacity","exitDelay","arcConfig","strokeColor","strokeWidth","arcSharpness","animationSpeed","destination","latitude","longitude","datumValue","optionsValue","optionsValues","fnContext","addContainer","height","offsetWidth","offsetHeight","options","addStyleBlock","drawSubunits","fillData","colorCodeData","geoConfig","subunits","addLayer","geoData","fillColor","handleGeographyConfig","moveToFront","$this","previousAttributes","updatePopup","addLegend","layer","label","legendTitle","defaultFillName","labels","addGraticule","handleArcs","defaults","originXY","destXY","latLngToXY","midXY","sharpness","getTotalLength","WebkitTransition","strokeDasharray","strokeDashoffset","handleLabels","labelStartCoodinates","xOffset","yOffset","smallStateIndex","yStart","fontSize","labelColor","lineWidth","fontFamily","customLabelText","handleBubbles","filterData","datumHasCoords","latLng","centered","filterKey","obj","prop","Datamap","addPlugin","disableDefaultStyles","draw","newsize","clientWidth","oldsize","pathAndProjection","results","customTopo","dataJson","tmpData","Datamaps","updateChoropleth","hoverover","worldTopo","abwTopo","afgTopo","agoTopo","aiaTopo","albTopo","aldTopo","andTopo","areTopo","argTopo","armTopo","asmTopo","ataTopo","atcTopo","atfTopo","atgTopo","ausTopo","autTopo","azeTopo","bdiTopo","belTopo","benTopo","bfaTopo","bgdTopo","bgrTopo","bhrTopo","bhsTopo","bihTopo","bjnTopo","blmTopo","blrTopo","blzTopo","bmuTopo","bolTopo","braTopo","brbTopo","brnTopo","btnTopo","norTopo","bwaTopo","cafTopo","canTopo","cheTopo","chlTopo","chnTopo","civTopo","clpTopo","cmrTopo","codTopo","cogTopo","cokTopo","colTopo","comTopo","cpvTopo","criTopo","csiTopo","cubTopo","cuwTopo","cymTopo","cynTopo","cypTopo","czeTopo","deuTopo","djiTopo","dmaTopo","dnkTopo","domTopo","dzaTopo","ecuTopo","egyTopo","eriTopo","esbTopo","espTopo","estTopo","ethTopo","finTopo","fjiTopo","flkTopo","fraTopo","froTopo","fsmTopo","gabTopo","psxTopo","gbrTopo","geoTopo","ggyTopo","ghaTopo","gibTopo","ginTopo","gmbTopo","gnbTopo","gnqTopo","grcTopo","grdTopo","grlTopo","gtmTopo","gumTopo","guyTopo","hkgTopo","hmdTopo","hndTopo","hrvTopo","htiTopo","hunTopo","idnTopo","imnTopo","indTopo","ioaTopo","iotTopo","irlTopo","irnTopo","irqTopo","islTopo","isrTopo","itaTopo","jamTopo","jeyTopo","jorTopo","jpnTopo","kabTopo","kasTopo","kazTopo","kenTopo","kgzTopo","khmTopo","kirTopo","knaTopo","korTopo","kosTopo","kwtTopo","laoTopo","lbnTopo","lbrTopo","lbyTopo","lcaTopo","lieTopo","lkaTopo","lsoTopo","ltuTopo","luxTopo","lvaTopo","macTopo","mafTopo","marTopo","mcoTopo","mdaTopo","mdgTopo","mdvTopo","mexTopo","mhlTopo","mkdTopo","mliTopo","mltTopo","mmrTopo","mneTopo","mngTopo","mnpTopo","mozTopo","mrtTopo","msrTopo","musTopo","mwiTopo","mysTopo","namTopo","nclTopo","nerTopo","nfkTopo","ngaTopo","nicTopo","niuTopo","nldTopo","nplTopo","nruTopo","nulTopo","nzlTopo","omnTopo","pakTopo","panTopo","pcnTopo","perTopo","pgaTopo","phlTopo","plwTopo","pngTopo","polTopo","priTopo","prkTopo","prtTopo","pryTopo","pyfTopo","qatTopo","rouTopo","rusTopo","rwaTopo","sahTopo","sauTopo","scrTopo","sdnTopo","sdsTopo","senTopo","serTopo","sgpTopo","sgsTopo","shnTopo","slbTopo","sleTopo","slvTopo","smrTopo","solTopo","somTopo","spmTopo","srbTopo","stpTopo","surTopo","svkTopo","svnTopo","sweTopo","swzTopo","sxmTopo","sycTopo","syrTopo","tcaTopo","tcdTopo","tgoTopo","thaTopo","tjkTopo","tkmTopo","tlsTopo","tonTopo","ttoTopo","tunTopo","turTopo","tuvTopo","twnTopo","tzaTopo","ugaTopo","ukrTopo","umiTopo","uryTopo","usaTopo","usgTopo","uzbTopo","vatTopo","vctTopo","venTopo","vgbTopo","virTopo","vnmTopo","vutTopo","wlfTopo","wsbTopo","wsmTopo","yemTopo","zafTopo","zmbTopo","zweTopo","lat","lng","className","subunit","subunitData","pluginFn","createNewLayer","jQuery","fn","datamaps","datamap"],"mappings":"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K,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAA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","file":"js/chunk-47b42782.289f0371.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticStyle:{\"height\":\"300px\"},attrs:{\"id\":\"worldMap\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export var slice = Array.prototype.slice;\n","var noop = {value: function() {}};\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\";\nimport selector from \"../selector\";\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","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\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\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 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","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\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\";\nimport {Selection} from \"./index\";\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\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\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 = {},\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 = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[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 = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\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[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\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 = 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\";\nimport {Selection} from \"./index\";\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\";\n\nexport default function(selection) {\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\";\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 var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\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 var size = 0;\n this.each(function() { ++size; });\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\";\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;\n}\n","import namespace from \"../namespace\";\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\";\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\";\nimport {xhtml} from \"./namespaces\";\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\";\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\";\nimport selector from \"../selector\";\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","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\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.capture);\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, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\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.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\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 if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\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","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\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\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\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 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};\n\nexport default selection;\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 function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","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(function(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 cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\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 {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}\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_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 end: transition_end\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 return defaultTiming.time = now(), defaultTiming;\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 {customEvent, event, touch, mouse, 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\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\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() {\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.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\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() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\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 pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\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 = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.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();\n }\n }\n\n function ended() {\n nopropagation();\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();\n }\n\n function keydowned() {\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();\n }\n\n function keyupped() {\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();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\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 var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\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: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\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(domain) {\n var a = domain[0], b = domain[domain.length - 1], 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 piecewise = Math.min(domain.length, range.length) > 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 = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : 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(transform, untransform) {\n return transformer()(transform, untransform);\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 decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import 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 \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // 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(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, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(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(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"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[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\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(identity, identity),\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, step) {\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 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 }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\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, step);\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, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n 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\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(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;\n\n return i;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","/**\n * Simple throttle function that executes a passed function only once in the specified timeout\n * @param handlerFunc\n * @param [timeout] the throttle interval\n */\nexport function throttle(handlerFunc, timeout = 66) {\n let resizeTimeout;\n if (!resizeTimeout) {\n resizeTimeout = setTimeout(() => {\n resizeTimeout = null;\n handlerFunc();\n // The actualResizeHandler will execute at a rate of 15fps\n }, timeout);\n }\n}\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WorldMap.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WorldMap.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./WorldMap.vue?vue&type=template&id=54069cc1\"\nimport script from \"./WorldMap.vue?vue&type=script&lang=js\"\nexport * from \"./WorldMap.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","!function() {\n var d3 = {\n version: \"3.5.17\"\n };\n var d3_arraySlice = [].slice, d3_array = function(list) {\n return d3_arraySlice.call(list);\n };\n var d3_document = this.document;\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function(list) {\n var i = list.length, array = new Array(i);\n while (i--) array[i] = list[i];\n return array;\n };\n }\n }\n if (!Date.now) Date.now = function() {\n return +new Date();\n };\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n d3_element_prototype.setAttribute = function(name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n d3_element_prototype.setAttributeNS = function(space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n d3_style_prototype.setProperty = function(name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n d3.ascending = d3_ascending;\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n d3.descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n d3.min = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n return a;\n };\n d3.max = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n return a;\n };\n d3.extent = function(array, f) {\n var i = -1, n = array.length, a, b, c;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n return [ a, c ];\n };\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n function d3_numeric(x) {\n return !isNaN(x);\n }\n d3.sum = function(array, f) {\n var s = 0, n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n } else {\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n return s;\n };\n d3.mean = function(array, f) {\n var s = 0, n = array.length, a, i = -1, j = n;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n }\n if (j) return s / j;\n };\n d3.quantile = function(values, p) {\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n d3.median = function(array, f) {\n var numbers = [], n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n };\n d3.variance = function(array, f) {\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n if (j > 1) return s / (j - 1);\n };\n d3.deviation = function() {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n function d3_bisector(compare) {\n return {\n left: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n }\n return lo;\n }\n };\n }\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n d3.bisector = function(f) {\n return d3_bisector(f.length === 1 ? function(d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n d3.shuffle = function(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n var m = i1 - i0, t, i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n return array;\n };\n d3.permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n };\n d3.pairs = function(array) {\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n return pairs;\n };\n d3.transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n function d3_transposeLength(d) {\n return d.length;\n }\n d3.zip = function() {\n return d3.transpose(arguments);\n };\n d3.keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n };\n d3.values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n };\n d3.entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({\n key: key,\n value: map[key]\n });\n return entries;\n };\n d3.merge = function(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n return merged;\n };\n var abs = Math.abs;\n d3.range = function(start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n return range;\n };\n function d3_range_integerScale(x) {\n var k = 1;\n while (x * k % 1) k *= 10;\n return k;\n }\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n d3.map = function(object, f) {\n var map = new d3_Map();\n if (object instanceof d3_Map) {\n object.forEach(function(key, value) {\n map.set(key, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1, n = object.length, o;\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n } else {\n for (var key in object) map.set(key, object[key]);\n }\n return map;\n };\n function d3_Map() {\n this._ = Object.create(null);\n }\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function(key) {\n return this._[d3_map_escape(key)];\n },\n set: function(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function() {\n var values = [];\n for (var key in this._) values.push(this._[key]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var key in this._) entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n }\n });\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n function d3_map_keys() {\n var keys = [];\n for (var key in this._) keys.push(d3_map_unescape(key));\n return keys;\n }\n function d3_map_size() {\n var size = 0;\n for (var key in this._) ++size;\n return size;\n }\n function d3_map_empty() {\n for (var key in this._) return false;\n return true;\n }\n d3.nest = function() {\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [ object ]);\n }\n }\n if (mapType) {\n object = mapType();\n setter = function(keyValue, values) {\n object.set(keyValue, map(mapType, values, depth));\n };\n } else {\n object = {};\n setter = function(keyValue, values) {\n object[keyValue] = map(mapType, values, depth);\n };\n }\n valuesByKey.forEach(setter);\n return object;\n }\n function entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [], sortKey = sortKeys[depth++];\n map.forEach(function(key, keyMap) {\n array.push({\n key: key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function(a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n nest.map = function(array, mapType) {\n return map(mapType, array, 0);\n };\n nest.entries = function(array) {\n return entries(map(d3.map, array, 0), 0);\n };\n nest.key = function(d) {\n keys.push(d);\n return nest;\n };\n nest.sortKeys = function(order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n nest.sortValues = function(order) {\n sortValues = order;\n return nest;\n };\n nest.rollup = function(f) {\n rollup = f;\n return nest;\n };\n return nest;\n };\n d3.set = function(array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n return set;\n };\n function d3_Set() {\n this._ = Object.create(null);\n }\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key));\n }\n });\n d3.behavior = {};\n function d3_identity(d) {\n return d;\n }\n d3.rebind = function(target, source) {\n var i = 1, n = arguments.length, method;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n function d3_noop() {}\n d3.dispatch = function() {\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n return dispatch;\n };\n function d3_dispatch() {}\n d3_dispatch.prototype.on = function(type, listener) {\n var i = type.indexOf(\".\"), name = \"\";\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n function d3_dispatch_event(dispatch) {\n var listeners = [], listenerByName = new d3_Map();\n function event() {\n var z = listeners, i = -1, n = z.length, l;\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n return dispatch;\n }\n event.on = function(name, listener) {\n var l = listenerByName.get(name), i;\n if (arguments.length < 2) return l && l.on;\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n return event;\n }\n d3.event = null;\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n function d3_eventSource() {\n var e = d3.event, s;\n while (s = e.sourceEvent) e = s;\n return e;\n }\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n dispatch.of = function(thiz, argumentz) {\n return function(e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n return dispatch;\n }\n d3.requote = function(s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\n object.__proto__ = prototype;\n } : function(object, prototype) {\n for (var property in prototype) object[property] = prototype[property];\n };\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n var d3_select = function(s, n) {\n return n.querySelector(s);\n }, d3_selectAll = function(s, n) {\n return n.querySelectorAll(s);\n }, d3_selectMatches = function(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n d3_selectMatches = function(n, s) {\n return d3_selectMatcher.call(n, s);\n };\n return d3_selectMatches(n, s);\n };\n if (typeof Sizzle === \"function\") {\n d3_select = function(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n d3_selectAll = Sizzle;\n d3_selectMatches = Sizzle.matchesSelector;\n }\n d3.selection = function() {\n return d3.select(d3_document.documentElement);\n };\n var d3_selectionPrototype = d3.selection.prototype = [];\n d3_selectionPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, group, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_select(selector, this);\n };\n }\n d3_selectionPrototype.selectAll = function(selector) {\n var subgroups = [], subgroup, node;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_selectAll(selector, this);\n };\n }\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: d3_nsXhtml,\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 d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function(name) {\n var i = name.indexOf(\":\"), prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n d3_selectionPrototype.attr = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n for (value in name) this.each(d3_selection_attr(value, name[value]));\n return this;\n }\n return this.each(d3_selection_attr(name, value));\n };\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrConstant() {\n this.setAttribute(name, value);\n }\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n }\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n }\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n d3_selectionPrototype.classed = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n if (value = node.classList) {\n while (++i < n) if (!value.contains(name[i])) return false;\n } else {\n value = node.getAttribute(\"class\");\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n return true;\n }\n for (value in name) this.each(d3_selection_classed(value, name[value]));\n return this;\n }\n return this.each(d3_selection_classed(name, value));\n };\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n function classedConstant() {\n var i = -1;\n while (++i < n) name[i](this, value);\n }\n function classedFunction() {\n var i = -1, x = value.apply(this, arguments);\n while (++i < n) name[i](this, x);\n }\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function(node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n d3_selectionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n return this;\n }\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n priority = \"\";\n }\n return this.each(d3_selection_style(name, value, priority));\n };\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n }\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n d3_selectionPrototype.property = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n for (value in name) this.each(d3_selection_property(value, name[value]));\n return this;\n }\n return this.each(d3_selection_property(name, value));\n };\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n function propertyConstant() {\n this[name] = value;\n }\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name]; else this[name] = x;\n }\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n d3_selectionPrototype.text = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function() {\n this.textContent = \"\";\n } : function() {\n this.textContent = value;\n }) : this.node().textContent;\n };\n d3_selectionPrototype.html = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function() {\n this.innerHTML = \"\";\n } : function() {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n d3_selectionPrototype.append = function(name) {\n name = d3_selection_creator(name);\n return this.select(function() {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n function d3_selection_creator(name) {\n function create() {\n var document = this.ownerDocument, namespace = this.namespaceURI;\n return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n }\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n d3_selectionPrototype.insert = function(name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function() {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n d3_selectionPrototype.remove = function() {\n return this.each(d3_selectionRemove);\n };\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n d3_selectionPrototype.data = function(value, key) {\n var i = -1, n = this.length, group, node;\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n return value;\n }\n function bind(group, groupData) {\n var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n if (key) {\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n for (i = -1; ++i < n; ) {\n if (node = group[i]) {\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n exitNodes[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n keyValues[i] = keyValue;\n }\n }\n for (i = -1; ++i < m; ) {\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n } else if (node !== true) {\n updateNodes[i] = node;\n node.__data__ = nodeData;\n }\n nodeByKeyValue.set(keyValue, true);\n }\n for (i = -1; ++i < n; ) {\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n exitNodes[i] = group[i];\n }\n }\n } else {\n for (i = -1; ++i < n0; ) {\n node = group[i];\n nodeData = groupData[i];\n if (node) {\n node.__data__ = nodeData;\n updateNodes[i] = node;\n } else {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n }\n }\n for (;i < m; ++i) {\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\n }\n for (;i < n; ++i) {\n exitNodes[i] = group[i];\n }\n }\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n update.enter = function() {\n return enter;\n };\n update.exit = function() {\n return exit;\n };\n return update;\n };\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n d3_selectionPrototype.datum = function(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n d3_selectionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_filter(selector) {\n return function() {\n return d3_selectMatches(this, selector);\n };\n }\n d3_selectionPrototype.order = function() {\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n };\n d3_selectionPrototype.sort = function(comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n return this.order();\n };\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function(a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n d3_selectionPrototype.each = function(callback) {\n return d3_selection_each(this, function(node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n function d3_selection_each(groups, callback) {\n for (var 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(node, i, j);\n }\n }\n return groups;\n }\n d3_selectionPrototype.call = function(callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n d3_selectionPrototype.empty = function() {\n return !this.node();\n };\n d3_selectionPrototype.node = function() {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n return null;\n };\n d3_selectionPrototype.size = function() {\n var n = 0;\n d3_selection_each(this, function() {\n ++n;\n });\n return n;\n };\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n d3_selection_enterPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, upgroup, group, node;\n for (var j = -1, m = this.length; ++j < m; ) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n d3_selection_enterPrototype.insert = function(name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function(d, i, j) {\n var group = enter[j].update, n = group.length, node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n while (!(node = group[i0]) && ++i0 < n) ;\n return node;\n };\n }\n d3.select = function(node) {\n var group;\n if (typeof node === \"string\") {\n group = [ d3_select(node, d3_document) ];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [ node ];\n group.parentNode = d3_documentElement(node);\n }\n return d3_selection([ group ]);\n };\n d3.selectAll = function(nodes) {\n var group;\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n return d3_selection([ group ]);\n };\n d3_selectionPrototype.on = function(type, listener, capture) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n return this;\n }\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n return this.each(d3_selection_on(type, listener, capture));\n };\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n function onRemove() {\n var l = this[name];\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n for (var name in this) {\n if (match = name.match(re)) {\n var l = this[name];\n this.removeEventListener(match[1], l, l.$);\n delete this[name];\n }\n }\n }\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n if (d3_document) {\n d3_selection_onFilters.forEach(function(k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n function d3_selection_onListener(listener, argumentz) {\n return function(e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function(e) {\n var target = this, related = e.relatedTarget;\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n var d3_event_dragSelect, d3_event_dragId = 0;\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n return function(suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n if (suppressClick) {\n var off = function() {\n w.on(click, null);\n };\n w.on(click, function() {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n d3.mouse = function(container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n if (d3_mouse_bug44083 < 0) {\n var window = d3_window(container);\n if (window.scrollX || window.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [ point.x, point.y ];\n }\n var rect = container.getBoundingClientRect();\n return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n }\n d3.touch = function(container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n d3.behavior.drag = function() {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n function dragstart(id, position, subject, move, end) {\n return function() {\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n } else {\n dragOffset = [ 0, 0 ];\n }\n dispatch({\n type: \"dragstart\"\n });\n function moved() {\n var position1 = position(parent, dragId), dx, dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx: dx,\n dy: dy\n });\n }\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n drag.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n return d3.rebind(drag, event, \"on\");\n };\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n d3.touches = function(container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function(touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n }\n function d3_asin(x) {\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n }\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n d3.interpolateZoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < ε2) {\n S = Math.log(w1 / w0) / ρ;\n i = function(t) {\n return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / ρ;\n i = function(t) {\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n };\n }\n i.duration = S * 1e3;\n return i;\n };\n d3.behavior.zoom = function() {\n var view = {\n x: 0,\n y: 0,\n k: 1\n }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n zoom.event = function(g) {\n g.each(function() {\n var dispatch = event.of(this, arguments), view1 = view;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function() {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function() {\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n return function(t) {\n var l = i(t), k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k: k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function() {\n zoomended(dispatch);\n }).each(\"end.zoom\", function() {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n zoom.translate = function(_) {\n if (!arguments.length) return [ view.x, view.y ];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n zoom.scale = function(_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n zoom.scaleExtent = function(_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.center = function(_) {\n if (!arguments.length) return center;\n center = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.size = function(_) {\n if (!arguments.length) return size;\n size = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.duration = function(_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n zoom.x = function(z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n zoom.y = function(z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n function location(p) {\n return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n }\n function point(l) {\n return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n }\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n function rescale() {\n if (x1) x1.domain(x0.range().map(function(x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function(y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [ view.x, view.y ]\n });\n }\n function zoomended(dispatch) {\n if (!--zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n function mousedowned() {\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n function touchstarted() {\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function(t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n var touches = relocate(), now = Date.now();\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n function moved() {\n var touches = d3.touches(that), p0, l0, p1, l1;\n d3_selection_interrupt.call(that);\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n scaleTo(scale1 * scale0);\n }\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function() {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n function dblclicked() {\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n return d3.rebind(zoom, event, \"on\");\n };\n var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n d3.color = d3_color;\n function d3_color() {}\n d3_color.prototype.toString = function() {\n return this.rgb() + \"\";\n };\n d3.hsl = d3_hsl;\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n d3_hslPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n d3_hslPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n d3_hslPrototype.rgb = function() {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n function v(h) {\n if (h > 360) h -= 360; else if (h < 0) h += 360;\n if (h < 60) return m1 + (m2 - m1) * h / 60;\n if (h < 180) return m2;\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n return m1;\n }\n function vv(h) {\n return Math.round(v(h) * 255);\n }\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n d3.hcl = d3_hcl;\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n d3_hclPrototype.brighter = function(k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.darker = function(k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.rgb = function() {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n d3.lab = d3_lab;\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n var d3_lab_K = 18;\n var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n d3_labPrototype.brighter = function(k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.darker = function(k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.rgb = function() {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n }\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n function d3_lab_xyz(x) {\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n function d3_xyz_lab(x) {\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n }\n d3.rgb = d3_rgb;\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n d3_rgbPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n var r = this.r, g = this.g, b = this.b, i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n d3_rgbPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n d3_rgbPrototype.hsl = function() {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n d3_rgbPrototype.toString = function() {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0, g = 0, b = 0, m1, m2, color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n if (m1) {\n m2 = m1[2].split(\",\");\n switch (m1[1]) {\n case \"hsl\":\n {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n\n case \"rgb\":\n {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n return rgb(r, g, b);\n }\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n if (d) {\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new d3_hsl(h, s, l);\n }\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n function d3_rgb_xyz(r) {\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n }\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function(key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function() {\n return v;\n };\n }\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n function d3_xhrType(response) {\n return function(url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n request.readyState > 3 && respond();\n };\n function respond() {\n var status = request.status, result;\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n request.onprogress = function(event) {\n var o = d3.event;\n d3.event = event;\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n xhr.header = function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name]; else headers[name] = value + \"\";\n return xhr;\n };\n xhr.mimeType = function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n xhr.responseType = function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n xhr.response = function(value) {\n response = value;\n return xhr;\n };\n [ \"get\", \"post\" ].forEach(function(method) {\n xhr[method] = function() {\n return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n };\n });\n xhr.send = function(method, data, callback) {\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n callback(null, request);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n xhr.abort = function() {\n request.abort();\n return xhr;\n };\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function(error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n d3.dsv = function(delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n xhr.row = function(_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n return xhr;\n }\n function response(request) {\n return dsv.parse(request.responseText);\n }\n function typedResponse(f) {\n return function(request) {\n return dsv.parse(request.responseText, f);\n };\n }\n dsv.parse = function(text, f) {\n var o;\n return dsv.parseRows(text, function(row, i) {\n if (o) return o(row, i - 1);\n var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n o = f ? function(row, i) {\n return f(a(row), i);\n } : a;\n });\n };\n dsv.parseRows = function(text, f) {\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n while (I < N) {\n var c = text.charCodeAt(I++), k = 1;\n if (c === 10) eol = true; else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n return text.slice(j);\n }\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n return rows;\n };\n dsv.format = function(rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(), fields = [];\n rows.forEach(function(row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n return fields.map(function(field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n dsv.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n return dsv;\n };\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n setTimeout(callback, 17);\n };\n d3.timer = function() {\n d3_timer.apply(this, arguments);\n };\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay, timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n return timer;\n }\n function d3_timer_step() {\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n d3.timer.flush = function() {\n d3_timer_mark();\n d3_timer_sweep();\n };\n function d3_timer_mark() {\n var now = Date.now(), timer = d3_timer_queueHead;\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n return now;\n }\n function d3_timer_sweep() {\n var t0, t1 = d3_timer_queueHead, time = Infinity;\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n d3_timer_queueTail = t0;\n return time;\n }\n function d3_format_precision(x, p) {\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n }\n d3.round = function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n d3.formatPrefix = function(value, precision) {\n var i = 0;\n if (value = +value) {\n if (value < 0) value *= -1;\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n }\n return d3_formatPrefixes[8 + i / 3];\n };\n function d3_formatPrefix(d, i) {\n var k = Math.pow(10, abs(8 - i) * 3);\n return {\n scale: i > 8 ? function(d) {\n return d / k;\n } : function(d) {\n return d * k;\n },\n symbol: d\n };\n }\n function d3_locale_numberFormat(locale) {\n var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\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 = locale_grouping[j = (j + 1) % locale_grouping.length];\n }\n return t.reverse().join(locale_thousands);\n } : d3_identity;\n return function(specifier) {\n var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n if (precision) precision = +precision.substring(1);\n if (zfill || fill === \"0\" && align === \"=\") {\n zfill = fill = \"0\";\n align = \"=\";\n }\n switch (type) {\n case \"n\":\n comma = true;\n type = \"g\";\n break;\n\n case \"%\":\n scale = 100;\n suffix = \"%\";\n type = \"f\";\n break;\n\n case \"p\":\n scale = 100;\n suffix = \"%\";\n type = \"r\";\n break;\n\n case \"b\":\n case \"o\":\n case \"x\":\n case \"X\":\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n case \"c\":\n exponent = false;\n\n case \"d\":\n integer = true;\n precision = 0;\n break;\n\n case \"s\":\n scale = -1;\n type = \"r\";\n break;\n }\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n if (type == \"r\" && !precision) type = \"g\";\n if (precision != null) {\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n }\n type = d3_format_types.get(type) || d3_format_typeDefault;\n var zcomma = zfill && comma;\n return function(value) {\n var fullSuffix = suffix;\n if (integer && value % 1) return \"\";\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n if (scale < 0) {\n var unit = d3.formatPrefix(value, precision);\n value = unit.scale(value);\n fullSuffix = unit.symbol + suffix;\n } else {\n value *= scale;\n }\n value = type(value, precision);\n var i = value.lastIndexOf(\".\"), before, after;\n if (i < 0) {\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\n if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n } else {\n before = value.substring(0, i);\n after = locale_decimal + value.substring(i + 1);\n }\n if (!zfill && comma) before = formatGroup(before, Infinity);\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n negative += prefix;\n value = before + after;\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n };\n };\n }\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n var d3_format_types = d3.map({\n b: function(x) {\n return x.toString(2);\n },\n c: function(x) {\n return String.fromCharCode(x);\n },\n o: function(x) {\n return x.toString(8);\n },\n x: function(x) {\n return x.toString(16);\n },\n X: function(x) {\n return x.toString(16).toUpperCase();\n },\n g: function(x, p) {\n return x.toPrecision(p);\n },\n e: function(x, p) {\n return x.toExponential(p);\n },\n f: function(x, p) {\n return x.toFixed(p);\n },\n r: function(x, p) {\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n }\n });\n function d3_format_typeDefault(x) {\n return x + \"\";\n }\n var d3_time = d3.time = {}, d3_date = Date;\n function d3_date_utc() {\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n }\n d3_date_utc.prototype = {\n getDate: function() {\n return this._.getUTCDate();\n },\n getDay: function() {\n return this._.getUTCDay();\n },\n getFullYear: function() {\n return this._.getUTCFullYear();\n },\n getHours: function() {\n return this._.getUTCHours();\n },\n getMilliseconds: function() {\n return this._.getUTCMilliseconds();\n },\n getMinutes: function() {\n return this._.getUTCMinutes();\n },\n getMonth: function() {\n return this._.getUTCMonth();\n },\n getSeconds: function() {\n return this._.getUTCSeconds();\n },\n getTime: function() {\n return this._.getTime();\n },\n getTimezoneOffset: function() {\n return 0;\n },\n valueOf: function() {\n return this._.valueOf();\n },\n setDate: function() {\n d3_time_prototype.setUTCDate.apply(this._, arguments);\n },\n setDay: function() {\n d3_time_prototype.setUTCDay.apply(this._, arguments);\n },\n setFullYear: function() {\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n },\n setHours: function() {\n d3_time_prototype.setUTCHours.apply(this._, arguments);\n },\n setMilliseconds: function() {\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n },\n setMinutes: function() {\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n },\n setMonth: function() {\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\n },\n setSeconds: function() {\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n },\n setTime: function() {\n d3_time_prototype.setTime.apply(this._, arguments);\n }\n };\n var d3_time_prototype = Date.prototype;\n function d3_time_interval(local, step, number) {\n function round(date) {\n var d0 = local(date), d1 = offset(d0, 1);\n return date - d0 < d1 - date ? d0 : d1;\n }\n function ceil(date) {\n step(date = local(new d3_date(date - 1)), 1);\n return date;\n }\n function offset(date, k) {\n step(date = new d3_date(+date), k);\n return date;\n }\n function range(t0, t1, dt) {\n var time = ceil(t0), times = [];\n if (dt > 1) {\n while (time < t1) {\n if (!(number(time) % dt)) times.push(new Date(+time));\n step(time, 1);\n }\n } else {\n while (time < t1) times.push(new Date(+time)), step(time, 1);\n }\n return times;\n }\n function range_utc(t0, t1, dt) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = t0;\n return range(utc, t1, dt);\n } finally {\n d3_date = Date;\n }\n }\n local.floor = local;\n local.round = round;\n local.ceil = ceil;\n local.offset = offset;\n local.range = range;\n var utc = local.utc = d3_time_interval_utc(local);\n utc.floor = utc;\n utc.round = d3_time_interval_utc(round);\n utc.ceil = d3_time_interval_utc(ceil);\n utc.offset = d3_time_interval_utc(offset);\n utc.range = range_utc;\n return local;\n }\n function d3_time_interval_utc(method) {\n return function(date, k) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = date;\n return method(utc, k)._;\n } finally {\n d3_date = Date;\n }\n };\n }\n d3_time.year = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setMonth(0, 1);\n return date;\n }, function(date, offset) {\n date.setFullYear(date.getFullYear() + offset);\n }, function(date) {\n return date.getFullYear();\n });\n d3_time.years = d3_time.year.range;\n d3_time.years.utc = d3_time.year.utc.range;\n d3_time.day = d3_time_interval(function(date) {\n var day = new d3_date(2e3, 0);\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return day;\n }, function(date, offset) {\n date.setDate(date.getDate() + offset);\n }, function(date) {\n return date.getDate() - 1;\n });\n d3_time.days = d3_time.day.range;\n d3_time.days.utc = d3_time.day.utc.range;\n d3_time.dayOfYear = function(date) {\n var year = d3_time.year(date);\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n };\n [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n i = 7 - i;\n var interval = d3_time[day] = d3_time_interval(function(date) {\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n return date;\n }, function(date, offset) {\n date.setDate(date.getDate() + Math.floor(offset) * 7);\n }, function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n });\n d3_time[day + \"s\"] = interval.range;\n d3_time[day + \"s\"].utc = interval.utc.range;\n d3_time[day + \"OfYear\"] = function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n };\n });\n d3_time.week = d3_time.sunday;\n d3_time.weeks = d3_time.sunday.range;\n d3_time.weeks.utc = d3_time.sunday.utc.range;\n d3_time.weekOfYear = d3_time.sundayOfYear;\n function d3_locale_timeFormat(locale) {\n var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n function d3_time_format(template) {\n var n = template.length;\n function format(date) {\n var string = [], i = -1, j = 0, c, p, f;\n while (++i < n) {\n if (template.charCodeAt(i) === 37) {\n string.push(template.slice(j, i));\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(template.slice(j, i));\n return string.join(\"\");\n }\n format.parse = function(string) {\n var d = {\n y: 1900,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0,\n Z: null\n }, i = d3_time_parse(d, template, string, 0);\n if (i != string.length) return null;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n date.setFullYear(d.y, 0, 1);\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n } else date.setFullYear(d.y, d.m, d.d);\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n return localZ ? date._ : date;\n };\n format.toString = function() {\n return template;\n };\n return format;\n }\n function d3_time_parse(date, template, string, j) {\n var c, p, t, i = 0, n = template.length, m = string.length;\n while (i < n) {\n if (j >= m) return -1;\n c = template.charCodeAt(i++);\n if (c === 37) {\n t = template.charAt(i++);\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n if (!p || (j = p(date, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n d3_time_format.utc = function(template) {\n var local = d3_time_format(template);\n function format(date) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date();\n utc._ = date;\n return local(utc);\n } finally {\n d3_date = Date;\n }\n }\n format.parse = function(string) {\n try {\n d3_date = d3_date_utc;\n var date = local.parse(string);\n return date && date._;\n } finally {\n d3_date = Date;\n }\n };\n format.toString = local.toString;\n return format;\n };\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n locale_periods.forEach(function(p, i) {\n d3_time_periodLookup.set(p.toLowerCase(), i);\n });\n var d3_time_formats = {\n a: function(d) {\n return locale_shortDays[d.getDay()];\n },\n A: function(d) {\n return locale_days[d.getDay()];\n },\n b: function(d) {\n return locale_shortMonths[d.getMonth()];\n },\n B: function(d) {\n return locale_months[d.getMonth()];\n },\n c: d3_time_format(locale_dateTime),\n d: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n e: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n H: function(d, p) {\n return d3_time_formatPad(d.getHours(), p, 2);\n },\n I: function(d, p) {\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n },\n j: function(d, p) {\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n },\n L: function(d, p) {\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\n },\n m: function(d, p) {\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\n },\n M: function(d, p) {\n return d3_time_formatPad(d.getMinutes(), p, 2);\n },\n p: function(d) {\n return locale_periods[+(d.getHours() >= 12)];\n },\n S: function(d, p) {\n return d3_time_formatPad(d.getSeconds(), p, 2);\n },\n U: function(d, p) {\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n },\n w: function(d) {\n return d.getDay();\n },\n W: function(d, p) {\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n },\n x: d3_time_format(locale_date),\n X: d3_time_format(locale_time),\n y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n },\n Y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n },\n Z: d3_time_zone,\n \"%\": function() {\n return \"%\";\n }\n };\n var d3_time_parsers = {\n a: d3_time_parseWeekdayAbbrev,\n A: d3_time_parseWeekday,\n b: d3_time_parseMonthAbbrev,\n B: d3_time_parseMonth,\n c: d3_time_parseLocaleFull,\n d: d3_time_parseDay,\n e: d3_time_parseDay,\n H: d3_time_parseHour24,\n I: d3_time_parseHour24,\n j: d3_time_parseDayOfYear,\n L: d3_time_parseMilliseconds,\n m: d3_time_parseMonthNumber,\n M: d3_time_parseMinutes,\n p: d3_time_parseAmPm,\n S: d3_time_parseSeconds,\n U: d3_time_parseWeekNumberSunday,\n w: d3_time_parseWeekdayNumber,\n W: d3_time_parseWeekNumberMonday,\n x: d3_time_parseLocaleDate,\n X: d3_time_parseLocaleTime,\n y: d3_time_parseYear,\n Y: d3_time_parseFullYear,\n Z: d3_time_parseZone,\n \"%\": d3_time_parseLiteralPercent\n };\n function d3_time_parseWeekdayAbbrev(date, string, i) {\n d3_time_dayAbbrevRe.lastIndex = 0;\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseWeekday(date, string, i) {\n d3_time_dayRe.lastIndex = 0;\n var n = d3_time_dayRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonthAbbrev(date, string, i) {\n d3_time_monthAbbrevRe.lastIndex = 0;\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonth(date, string, i) {\n d3_time_monthRe.lastIndex = 0;\n var n = d3_time_monthRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseLocaleFull(date, string, i) {\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n }\n function d3_time_parseLocaleDate(date, string, i) {\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n }\n function d3_time_parseLocaleTime(date, string, i) {\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n }\n function d3_time_parseAmPm(date, string, i) {\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n return n == null ? -1 : (date.p = n, i);\n }\n return d3_time_format;\n }\n var d3_time_formatPads = {\n \"-\": \"\",\n _: \" \",\n \"0\": \"0\"\n }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n function d3_time_formatPad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n function d3_time_formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n }\n function d3_time_formatLookup(names) {\n var map = new d3_Map(), i = -1, n = names.length;\n while (++i < n) map.set(names[i].toLowerCase(), i);\n return map;\n }\n function d3_time_parseWeekdayNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n return n ? (date.w = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberSunday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.U = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberMonday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.W = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseFullYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n return n ? (date.y = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n }\n function d3_time_parseZone(date, string, i) {\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n i + 5) : -1;\n }\n function d3_time_expandYear(d) {\n return d + (d > 68 ? 1900 : 2e3);\n }\n function d3_time_parseMonthNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n }\n function d3_time_parseDay(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.d = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseDayOfYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.j = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseHour24(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.H = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMinutes(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.M = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseSeconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.S = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMilliseconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.L = +n[0], i + n[0].length) : -1;\n }\n function d3_time_zone(d) {\n var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n }\n function d3_time_parseLiteralPercent(date, string, i) {\n d3_time_percentRe.lastIndex = 0;\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n function d3_time_formatMulti(formats) {\n var n = formats.length, i = -1;\n while (++i < n) formats[i][0] = this(formats[i][0]);\n return function(date) {\n var i = 0, f = formats[i];\n while (!f[1](date)) f = formats[++i];\n return f[0](date);\n };\n }\n d3.locale = function(locale) {\n return {\n numberFormat: d3_locale_numberFormat(locale),\n timeFormat: d3_locale_timeFormat(locale)\n };\n };\n var d3_locale_enUS = d3.locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [ 3 ],\n currency: [ \"$\", \"\" ],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\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 d3.format = d3_locale_enUS.numberFormat;\n d3.geo = {};\n function d3_adder() {}\n d3_adder.prototype = {\n s: 0,\n t: 0,\n add: function(y) {\n d3_adderSum(y, this.t, d3_adderTemp);\n d3_adderSum(d3_adderTemp.s, this.s, this);\n if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n },\n reset: function() {\n this.s = this.t = 0;\n },\n valueOf: function() {\n return this.s;\n }\n };\n var d3_adderTemp = new d3_adder();\n function d3_adderSum(a, b, o) {\n var x = o.s = a + b, bv = x - a, av = x - bv;\n o.t = a - av + (b - bv);\n }\n d3.geo.stream = function(object, listener) {\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n d3_geo_streamObjectType[object.type](object, listener);\n } else {\n d3_geo_streamGeometry(object, listener);\n }\n };\n function d3_geo_streamGeometry(geometry, listener) {\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\n }\n }\n var d3_geo_streamObjectType = {\n Feature: function(feature, listener) {\n d3_geo_streamGeometry(feature.geometry, listener);\n },\n FeatureCollection: function(object, listener) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n }\n };\n var d3_geo_streamGeometryType = {\n Sphere: function(object, listener) {\n listener.sphere();\n },\n Point: function(object, listener) {\n object = object.coordinates;\n listener.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n },\n LineString: function(object, listener) {\n d3_geo_streamLine(object.coordinates, listener, 0);\n },\n MultiLineString: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n },\n Polygon: function(object, listener) {\n d3_geo_streamPolygon(object.coordinates, listener);\n },\n MultiPolygon: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n },\n GeometryCollection: function(object, listener) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n }\n };\n function d3_geo_streamLine(coordinates, listener, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n listener.lineStart();\n while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n listener.lineEnd();\n }\n function d3_geo_streamPolygon(coordinates, listener) {\n var i = -1, n = coordinates.length;\n listener.polygonStart();\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n listener.polygonEnd();\n }\n d3.geo.area = function(object) {\n d3_geo_areaSum = 0;\n d3.geo.stream(object, d3_geo_area);\n return d3_geo_areaSum;\n };\n var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n var d3_geo_area = {\n sphere: function() {\n d3_geo_areaSum += 4 * π;\n },\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_areaRingSum.reset();\n d3_geo_area.lineStart = d3_geo_areaRingStart;\n },\n polygonEnd: function() {\n var area = 2 * d3_geo_areaRingSum;\n d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n }\n };\n function d3_geo_areaRingStart() {\n var λ00, φ00, λ0, cosφ0, sinφ0;\n d3_geo_area.point = function(λ, φ) {\n d3_geo_area.point = nextPoint;\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n sinφ0 = Math.sin(φ);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n φ = φ * d3_radians / 2 + π / 4;\n var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n d3_geo_areaRingSum.add(Math.atan2(v, u));\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n }\n d3_geo_area.lineEnd = function() {\n nextPoint(λ00, φ00);\n };\n }\n function d3_geo_cartesian(spherical) {\n var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n }\n function d3_geo_cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n }\n function d3_geo_cartesianCross(a, b) {\n return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n }\n function d3_geo_cartesianAdd(a, b) {\n a[0] += b[0];\n a[1] += b[1];\n a[2] += b[2];\n }\n function d3_geo_cartesianScale(vector, k) {\n return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n }\n function d3_geo_cartesianNormalize(d) {\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l;\n d[1] /= l;\n d[2] /= l;\n }\n function d3_geo_spherical(cartesian) {\n return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n }\n function d3_geo_sphericalEqual(a, b) {\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n }\n d3.geo.bounds = function() {\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n var bound = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n bound.point = ringPoint;\n bound.lineStart = ringStart;\n bound.lineEnd = ringEnd;\n dλSum = 0;\n d3_geo_area.polygonStart();\n },\n polygonEnd: function() {\n d3_geo_area.polygonEnd();\n bound.point = point;\n bound.lineStart = lineStart;\n bound.lineEnd = lineEnd;\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n range[0] = λ0, range[1] = λ1;\n }\n };\n function point(λ, φ) {\n ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n function linePoint(λ, φ) {\n var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n if (p0) {\n var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n d3_geo_cartesianNormalize(inflection);\n inflection = d3_geo_spherical(inflection);\n var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = inflection[1] * d3_degrees;\n if (φi > φ1) φ1 = φi;\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = -inflection[1] * d3_degrees;\n if (φi < φ0) φ0 = φi;\n } else {\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n if (antimeridian) {\n if (λ < λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n } else {\n if (λ1 >= λ0) {\n if (λ < λ0) λ0 = λ;\n if (λ > λ1) λ1 = λ;\n } else {\n if (λ > λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n }\n }\n } else {\n point(λ, φ);\n }\n p0 = p, λ_ = λ;\n }\n function lineStart() {\n bound.point = linePoint;\n }\n function lineEnd() {\n range[0] = λ0, range[1] = λ1;\n bound.point = point;\n p0 = null;\n }\n function ringPoint(λ, φ) {\n if (p0) {\n var dλ = λ - λ_;\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n } else λ__ = λ, φ__ = φ;\n d3_geo_area.point(λ, φ);\n linePoint(λ, φ);\n }\n function ringStart() {\n d3_geo_area.lineStart();\n }\n function ringEnd() {\n ringPoint(λ__, φ__);\n d3_geo_area.lineEnd();\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n range[0] = λ0, range[1] = λ1;\n p0 = null;\n }\n function angle(λ0, λ1) {\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n }\n function compareRanges(a, b) {\n return a[0] - b[0];\n }\n function withinRange(x, range) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n }\n return function(feature) {\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\n ranges = [];\n d3.geo.stream(feature, bound);\n var n = ranges.length;\n if (n) {\n ranges.sort(compareRanges);\n for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n b = ranges[i];\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n var best = -Infinity, dλ;\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n b = merged[i];\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n }\n }\n ranges = range = null;\n return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n };\n }();\n d3.geo.centroid = function(object) {\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, d3_geo_centroid);\n var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n if (m < ε2) {\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n m = x * x + y * y + z * z;\n if (m < ε2) return [ NaN, NaN ];\n }\n return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n };\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n var d3_geo_centroid = {\n sphere: d3_noop,\n point: d3_geo_centroidPoint,\n lineStart: d3_geo_centroidLineStart,\n lineEnd: d3_geo_centroidLineEnd,\n polygonStart: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n }\n };\n function d3_geo_centroidPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n }\n function d3_geo_centroidPointXYZ(x, y, z) {\n ++d3_geo_centroidW0;\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n }\n function d3_geo_centroidLineStart() {\n var x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroid.point = nextPoint;\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_centroidLineEnd() {\n d3_geo_centroid.point = d3_geo_centroidPoint;\n }\n function d3_geo_centroidRingStart() {\n var λ00, φ00, x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ00 = λ, φ00 = φ;\n d3_geo_centroid.point = nextPoint;\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n d3_geo_centroid.lineEnd = function() {\n nextPoint(λ00, φ00);\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n d3_geo_centroid.point = d3_geo_centroidPoint;\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n d3_geo_centroidX2 += v * cx;\n d3_geo_centroidY2 += v * cy;\n d3_geo_centroidZ2 += v * cz;\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n }\n function d3_true() {\n return true;\n }\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n var subject = [], clip = [];\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n];\n if (d3_geo_sphericalEqual(p0, p1)) {\n listener.lineStart();\n for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n listener.lineEnd();\n return;\n }\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n a.o = b;\n subject.push(a);\n clip.push(b);\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n a.o = b;\n subject.push(a);\n clip.push(b);\n });\n clip.sort(compare);\n d3_geo_clipPolygonLinkCircular(subject);\n d3_geo_clipPolygonLinkCircular(clip);\n if (!subject.length) return;\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n clip[i].e = entry = !entry;\n }\n var start = subject[0], points, point;\n while (1) {\n var current = start, isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n listener.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, listener);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, listener);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n listener.lineEnd();\n }\n }\n function d3_geo_clipPolygonLinkCircular(array) {\n if (!(n = array.length)) return;\n var n, i = 0, a = array[0], b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n }\n function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other;\n this.e = entry;\n this.v = false;\n this.n = this.p = null;\n }\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n return function(rotate, listener) {\n var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = d3.merge(segments);\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n if (segments.length) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n } else if (clipStartInside) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n listener.polygonStart();\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n listener.polygonEnd();\n }\n };\n function point(λ, φ) {\n var point = rotate(λ, φ);\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n }\n function pointLine(λ, φ) {\n var point = rotate(λ, φ);\n line.point(point[0], point[1]);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n var segments;\n var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n function pointRing(λ, φ) {\n ring.push([ λ, φ ]);\n var point = rotate(λ, φ);\n ringListener.point(point[0], point[1]);\n }\n function ringStart() {\n ringListener.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringListener.lineEnd();\n var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n if (clean & 1) {\n segment = ringSegments[0];\n var n = segment.length - 1, i = -1, point;\n if (n > 0) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n while (++i < n) listener.point((point = segment[i])[0], point[1]);\n listener.lineEnd();\n }\n return;\n }\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n }\n return clip;\n };\n }\n function d3_geo_clipSegmentLength1(segment) {\n return segment.length > 1;\n }\n function d3_geo_clipBufferListener() {\n var lines = [], line;\n return {\n lineStart: function() {\n lines.push(line = []);\n },\n point: function(λ, φ) {\n line.push([ λ, φ ]);\n },\n lineEnd: d3_noop,\n buffer: function() {\n var buffer = lines;\n lines = [];\n line = null;\n return buffer;\n },\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n }\n };\n }\n function d3_geo_clipSort(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n }\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n function d3_geo_clipAntimeridianLine(listener) {\n var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n return {\n lineStart: function() {\n listener.lineStart();\n clean = 1;\n },\n point: function(λ1, φ1) {\n var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n if (abs(dλ - π) < ε) {\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n listener.point(λ1, φ0);\n clean = 0;\n } else if (sλ0 !== sλ1 && dλ >= π) {\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n clean = 0;\n }\n listener.point(λ0 = λ1, φ0 = φ1);\n sλ0 = sλ1;\n },\n lineEnd: function() {\n listener.lineEnd();\n λ0 = φ0 = NaN;\n },\n clean: function() {\n return 2 - clean;\n }\n };\n }\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n }\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n var φ;\n if (from == null) {\n φ = direction * halfπ;\n listener.point(-π, φ);\n listener.point(0, φ);\n listener.point(π, φ);\n listener.point(π, 0);\n listener.point(π, -φ);\n listener.point(0, -φ);\n listener.point(-π, -φ);\n listener.point(-π, 0);\n listener.point(-π, φ);\n } else if (abs(from[0] - to[0]) > ε) {\n var s = from[0] < to[0] ? π : -π;\n φ = direction * s / 2;\n listener.point(-s, φ);\n listener.point(0, φ);\n listener.point(s, φ);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function d3_geo_pointInPolygon(point, polygon) {\n var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n d3_geo_areaRingSum.reset();\n for (var i = 0, n = polygon.length; i < n; ++i) {\n var ring = polygon[i], m = ring.length;\n if (!m) continue;\n var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n while (true) {\n if (j === m) j = 0;\n point = ring[j];\n var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n d3_geo_cartesianNormalize(arc);\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n d3_geo_cartesianNormalize(intersection);\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n }\n }\n if (!j++) break;\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n }\n }\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n }\n function d3_geo_clipCircle(radius) {\n var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n function visible(λ, φ) {\n return Math.cos(λ) * Math.cos(φ) > cr;\n }\n function clipLine(listener) {\n var point0, c0, v0, v00, clean;\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(λ, φ) {\n var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n point1[0] += ε;\n point1[1] += ε;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n listener.lineStart();\n point2 = intersect(point1, point0);\n listener.point(point2[0], point2[1]);\n } else {\n point2 = intersect(point0, point1);\n listener.point(point2[0], point2[1]);\n listener.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n } else {\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n listener.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) listener.lineEnd();\n point0 = null;\n },\n clean: function() {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n function intersect(a, b, two) {\n var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n d3_geo_cartesianAdd(A, B);\n var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n d3_geo_cartesianAdd(q, A);\n q = d3_geo_spherical(q);\n if (!two) return q;\n var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n d3_geo_cartesianAdd(q1, A);\n return [ q, d3_geo_spherical(q1) ];\n }\n }\n function code(λ, φ) {\n var r = smallRadius ? radius : π - radius, code = 0;\n if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n return code;\n }\n }\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function(line) {\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n var d3_geo_clipExtentMAX = 1e9;\n d3.geo.clipExtent = function() {\n var x0, y0, x1, y1, stream, clip, clipExtent = {\n stream: function(output) {\n if (stream) stream.valid = false;\n stream = clip(output);\n stream.valid = true;\n return stream;\n },\n extent: function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n if (stream) stream.valid = false, stream = null;\n return clipExtent;\n }\n };\n return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n };\n function d3_geo_clipExtent(x0, y0, x1, y1) {\n return function(listener) {\n var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n listener = bufferListener;\n segments = [];\n polygon = [];\n clean = true;\n },\n polygonEnd: function() {\n listener = listener_;\n segments = d3.merge(segments);\n var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n if (inside || visible) {\n listener.polygonStart();\n if (inside) {\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (visible) {\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n }\n listener.polygonEnd();\n }\n segments = polygon = ring = null;\n }\n };\n function insidePolygon(p) {\n var wn = 0, n = polygon.length, y = p[1];\n for (var i = 0; i < n; ++i) {\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n b = v[j];\n if (a[1] <= y) {\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n } else {\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n }\n a = b;\n }\n }\n return wn !== 0;\n }\n function interpolate(from, to, direction, listener) {\n var a = 0, a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n do {\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n } while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function pointVisible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function point(x, y) {\n if (pointVisible(x, y)) listener.point(x, y);\n }\n var x__, y__, v__, x_, y_, v_, first, clean;\n function lineStart() {\n clip.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferListener.rejoin();\n segments.push(bufferListener.buffer());\n }\n clip.point = point;\n if (v_) listener.lineEnd();\n }\n function linePoint(x, y) {\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n var v = pointVisible(x, y);\n if (polygon) ring.push([ x, y ]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n listener.lineStart();\n listener.point(x, y);\n }\n } else {\n if (v && v_) listener.point(x, y); else {\n var l = {\n a: {\n x: x_,\n y: y_\n },\n b: {\n x: x,\n y: y\n }\n };\n if (clipLine(l)) {\n if (!v_) {\n listener.lineStart();\n listener.point(l.a.x, l.a.y);\n }\n listener.point(l.b.x, l.b.y);\n if (!v) listener.lineEnd();\n clean = false;\n } else if (v) {\n listener.lineStart();\n listener.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clip;\n };\n function corner(p, direction) {\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n }\n function compare(a, b) {\n return comparePoints(a.x, b.x);\n }\n function comparePoints(a, b) {\n var ca = corner(a, 1), cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n }\n function d3_geo_conic(projectAt) {\n var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n p.parallels = function(_) {\n if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n };\n return p;\n }\n function d3_geo_conicEqualArea(φ0, φ1) {\n var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n function forward(λ, φ) {\n var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = ρ0 - y;\n return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n };\n return forward;\n }\n (d3.geo.conicEqualArea = function() {\n return d3_geo_conic(d3_geo_conicEqualArea);\n }).raw = d3_geo_conicEqualArea;\n d3.geo.albers = function() {\n return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n };\n d3.geo.albersUsa = function() {\n var lower48 = d3.geo.albers();\n var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n var point, pointStream = {\n point: function(x, y) {\n point = [ x, y ];\n }\n }, lower48Point, alaskaPoint, hawaiiPoint;\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n point = null;\n (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n return point;\n }\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function(stream) {\n var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n return {\n point: function(x, y) {\n lower48Stream.point(x, y);\n alaskaStream.point(x, y);\n hawaiiStream.point(x, y);\n },\n sphere: function() {\n lower48Stream.sphere();\n alaskaStream.sphere();\n hawaiiStream.sphere();\n },\n lineStart: function() {\n lower48Stream.lineStart();\n alaskaStream.lineStart();\n hawaiiStream.lineStart();\n },\n lineEnd: function() {\n lower48Stream.lineEnd();\n alaskaStream.lineEnd();\n hawaiiStream.lineEnd();\n },\n polygonStart: function() {\n lower48Stream.polygonStart();\n alaskaStream.polygonStart();\n hawaiiStream.polygonStart();\n },\n polygonEnd: function() {\n lower48Stream.polygonEnd();\n alaskaStream.polygonEnd();\n hawaiiStream.polygonEnd();\n }\n };\n };\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_);\n alaska.precision(_);\n hawaii.precision(_);\n return albersUsa;\n };\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_);\n alaska.scale(_ * .35);\n hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n return albersUsa;\n };\n return albersUsa.scale(1070);\n };\n var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_pathAreaPolygon = 0;\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n }\n };\n function d3_geo_pathAreaRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathArea.point = function(x, y) {\n d3_geo_pathArea.point = nextPoint;\n x00 = x0 = x, y00 = y0 = y;\n };\n function nextPoint(x, y) {\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n x0 = x, y0 = y;\n }\n d3_geo_pathArea.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n var d3_geo_pathBounds = {\n point: d3_geo_pathBoundsPoint,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_pathBoundsPoint(x, y) {\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n }\n function d3_geo_pathBuffer() {\n var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointCircle = d3_geo_pathBufferCircle(_);\n return stream;\n },\n result: function() {\n if (buffer.length) {\n var result = buffer.join(\"\");\n buffer = [];\n return result;\n }\n }\n };\n function point(x, y) {\n buffer.push(\"M\", x, \",\", y, pointCircle);\n }\n function pointLineStart(x, y) {\n buffer.push(\"M\", x, \",\", y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n buffer.push(\"L\", x, \",\", y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n buffer.push(\"Z\");\n }\n return stream;\n }\n function d3_geo_pathBufferCircle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n }\n var d3_geo_pathCentroid = {\n point: d3_geo_pathCentroidPoint,\n lineStart: d3_geo_pathCentroidLineStart,\n lineEnd: d3_geo_pathCentroidLineEnd,\n polygonStart: function() {\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n }\n };\n function d3_geo_pathCentroidPoint(x, y) {\n d3_geo_centroidX0 += x;\n d3_geo_centroidY0 += y;\n ++d3_geo_centroidZ0;\n }\n function d3_geo_pathCentroidLineStart() {\n var x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n }\n function d3_geo_pathCentroidLineEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n }\n function d3_geo_pathCentroidRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n z = y0 * x - x0 * y;\n d3_geo_centroidX2 += z * (x0 + x);\n d3_geo_centroidY2 += z * (y0 + y);\n d3_geo_centroidZ2 += z * 3;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n d3_geo_pathCentroid.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n function d3_geo_pathContext(context) {\n var pointRadius = 4.5;\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointRadius = _;\n return stream;\n },\n result: d3_noop\n };\n function point(x, y) {\n context.moveTo(x + pointRadius, y);\n context.arc(x, y, pointRadius, 0, τ);\n }\n function pointLineStart(x, y) {\n context.moveTo(x, y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n context.lineTo(x, y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n context.closePath();\n }\n return stream;\n }\n function d3_geo_resample(project) {\n var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n function resample(stream) {\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\n }\n function resampleNone(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n });\n }\n function resampleRecursive(stream) {\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n var resample = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.polygonStart();\n resample.lineStart = ringStart;\n },\n polygonEnd: function() {\n stream.polygonEnd();\n resample.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resample.point = linePoint;\n stream.lineStart();\n }\n function linePoint(λ, φ) {\n var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resample.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resample.point = ringPoint;\n resample.lineEnd = ringEnd;\n }\n function ringPoint(λ, φ) {\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resample.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n resample.lineEnd = lineEnd;\n lineEnd();\n }\n return resample;\n }\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n if (d2 > 4 * δ2 && depth--) {\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n }\n }\n }\n resample.precision = function(_) {\n if (!arguments.length) return Math.sqrt(δ2);\n maxDepth = (δ2 = _ * _) > 0 && 16;\n return resample;\n };\n return resample;\n }\n d3.geo.path = function() {\n var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n d3.geo.stream(object, cacheStream);\n }\n return contextStream.result();\n }\n path.area = function(object) {\n d3_geo_pathAreaSum = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\n return d3_geo_pathAreaSum;\n };\n path.centroid = function(object) {\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n };\n path.bounds = function(object) {\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n };\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n return reset();\n };\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return reset();\n };\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n function reset() {\n cacheStream = null;\n return path;\n }\n return path.projection(d3.geo.albersUsa()).context(null);\n };\n function d3_geo_pathProjectStream(project) {\n var resample = d3_geo_resample(function(x, y) {\n return project([ x * d3_degrees, y * d3_degrees ]);\n });\n return function(stream) {\n return d3_geo_projectionRadians(resample(stream));\n };\n }\n d3.geo.transform = function(methods) {\n return {\n stream: function(stream) {\n var transform = new d3_geo_transform(stream);\n for (var k in methods) transform[k] = methods[k];\n return transform;\n }\n };\n };\n function d3_geo_transform(stream) {\n this.stream = stream;\n }\n d3_geo_transform.prototype = {\n point: function(x, y) {\n this.stream.point(x, y);\n },\n sphere: function() {\n this.stream.sphere();\n },\n lineStart: function() {\n this.stream.lineStart();\n },\n lineEnd: function() {\n this.stream.lineEnd();\n },\n polygonStart: function() {\n this.stream.polygonStart();\n },\n polygonEnd: function() {\n this.stream.polygonEnd();\n }\n };\n function d3_geo_transformPoint(stream, point) {\n return {\n point: point,\n sphere: function() {\n stream.sphere();\n },\n lineStart: function() {\n stream.lineStart();\n },\n lineEnd: function() {\n stream.lineEnd();\n },\n polygonStart: function() {\n stream.polygonStart();\n },\n polygonEnd: function() {\n stream.polygonEnd();\n }\n };\n }\n d3.geo.projection = d3_geo_projection;\n d3.geo.projectionMutator = d3_geo_projectionMutator;\n function d3_geo_projection(project) {\n return d3_geo_projectionMutator(function() {\n return project;\n })();\n }\n function d3_geo_projectionMutator(projectAt) {\n var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n x = project(x, y);\n return [ x[0] * k + δx, δy - x[1] * k ];\n }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n function projection(point) {\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n return [ point[0] * k + δx, δy - point[1] * k ];\n }\n function invert(point) {\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n }\n projection.stream = function(output) {\n if (stream) stream.valid = false;\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n stream.valid = true;\n return stream;\n };\n projection.clipAngle = function(_) {\n if (!arguments.length) return clipAngle;\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n return invalidate();\n };\n projection.clipExtent = function(_) {\n if (!arguments.length) return clipExtent;\n clipExtent = _;\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n return invalidate();\n };\n projection.scale = function(_) {\n if (!arguments.length) return k;\n k = +_;\n return reset();\n };\n projection.translate = function(_) {\n if (!arguments.length) return [ x, y ];\n x = +_[0];\n y = +_[1];\n return reset();\n };\n projection.center = function(_) {\n if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n λ = _[0] % 360 * d3_radians;\n φ = _[1] % 360 * d3_radians;\n return reset();\n };\n projection.rotate = function(_) {\n if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n δλ = _[0] % 360 * d3_radians;\n δφ = _[1] % 360 * d3_radians;\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n return reset();\n };\n d3.rebind(projection, projectResample, \"precision\");\n function reset() {\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n var center = project(λ, φ);\n δx = x - center[0] * k;\n δy = y + center[1] * k;\n return invalidate();\n }\n function invalidate() {\n if (stream) stream.valid = false, stream = null;\n return projection;\n }\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return reset();\n };\n }\n function d3_geo_projectionRadians(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n stream.point(x * d3_radians, y * d3_radians);\n });\n }\n function d3_geo_equirectangular(λ, φ) {\n return [ λ, φ ];\n }\n (d3.geo.equirectangular = function() {\n return d3_geo_projection(d3_geo_equirectangular);\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n d3.geo.rotation = function(rotate) {\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n }\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n };\n return forward;\n };\n function d3_geo_identityRotation(λ, φ) {\n return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n }\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\n function d3_geo_rotation(δλ, δφ, δγ) {\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n }\n function d3_geo_forwardRotationλ(δλ) {\n return function(λ, φ) {\n return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n };\n }\n function d3_geo_rotationλ(δλ) {\n var rotation = d3_geo_forwardRotationλ(δλ);\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\n return rotation;\n }\n function d3_geo_rotationφγ(δφ, δγ) {\n var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n function rotation(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n }\n rotation.invert = function(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n };\n return rotation;\n }\n d3.geo.circle = function() {\n var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n function circle() {\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n interpolate(null, null, 1, {\n point: function(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= d3_degrees, x[1] *= d3_degrees;\n }\n });\n return {\n type: \"Polygon\",\n coordinates: [ ring ]\n };\n }\n circle.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return circle;\n };\n circle.angle = function(x) {\n if (!arguments.length) return angle;\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n return circle;\n };\n circle.precision = function(_) {\n if (!arguments.length) return precision;\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n return circle;\n };\n return circle.angle(90);\n };\n function d3_geo_circleInterpolate(radius, precision) {\n var cr = Math.cos(radius), sr = Math.sin(radius);\n return function(from, to, direction, listener) {\n var step = direction * precision;\n if (from != null) {\n from = d3_geo_circleAngle(cr, from);\n to = d3_geo_circleAngle(cr, to);\n if (direction > 0 ? from < to : from > to) from += direction * τ;\n } else {\n from = radius + direction * τ;\n to = radius - .5 * step;\n }\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n }\n };\n }\n function d3_geo_circleAngle(cr, point) {\n var a = d3_geo_cartesian(point);\n a[0] -= cr;\n d3_geo_cartesianNormalize(a);\n var angle = d3_acos(-a[1]);\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n }\n d3.geo.distance = function(a, b) {\n var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n };\n d3.geo.graticule = function() {\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n return abs(x % DX) > ε;\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n return abs(y % DY) > ε;\n }).map(y));\n }\n graticule.lines = function() {\n return lines().map(function(coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n };\n };\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.minorExtent();\n return graticule.majorExtent(_).minorExtent(_);\n };\n graticule.majorExtent = function(_) {\n if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.minorExtent = function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function(_) {\n if (!arguments.length) return graticule.minorStep();\n return graticule.majorStep(_).minorStep(_);\n };\n graticule.majorStep = function(_) {\n if (!arguments.length) return [ DX, DY ];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.minorStep = function(_) {\n if (!arguments.length) return [ dx, dy ];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = d3_geo_graticuleX(y0, y1, 90);\n y = d3_geo_graticuleY(x0, x1, precision);\n X = d3_geo_graticuleX(Y0, Y1, 90);\n Y = d3_geo_graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n };\n function d3_geo_graticuleX(y0, y1, dy) {\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\n return function(x) {\n return y.map(function(y) {\n return [ x, y ];\n });\n };\n }\n function d3_geo_graticuleY(x0, x1, dx) {\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\n return function(y) {\n return x.map(function(x) {\n return [ x, y ];\n });\n };\n }\n function d3_source(d) {\n return d.source;\n }\n function d3_target(d) {\n return d.target;\n }\n d3.geo.greatArc = function() {\n var source = d3_source, source_, target = d3_target, target_;\n function greatArc() {\n return {\n type: \"LineString\",\n coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n };\n }\n greatArc.distance = function() {\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n };\n greatArc.source = function(_) {\n if (!arguments.length) return source;\n source = _, source_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.target = function(_) {\n if (!arguments.length) return target;\n target = _, target_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.precision = function() {\n return arguments.length ? greatArc : 0;\n };\n return greatArc;\n };\n d3.geo.interpolate = function(source, target) {\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n };\n function d3_geo_interpolate(x0, y0, x1, y1) {\n var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n var interpolate = d ? function(t) {\n var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n } : function() {\n return [ x0 * d3_degrees, y0 * d3_degrees ];\n };\n interpolate.distance = d;\n return interpolate;\n }\n d3.geo.length = function(object) {\n d3_geo_lengthSum = 0;\n d3.geo.stream(object, d3_geo_length);\n return d3_geo_lengthSum;\n };\n var d3_geo_lengthSum;\n var d3_geo_length = {\n sphere: d3_noop,\n point: d3_noop,\n lineStart: d3_geo_lengthLineStart,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_lengthLineStart() {\n var λ0, sinφ0, cosφ0;\n d3_geo_length.point = function(λ, φ) {\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n d3_geo_length.point = nextPoint;\n };\n d3_geo_length.lineEnd = function() {\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n };\n function nextPoint(λ, φ) {\n var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n }\n }\n function d3_geo_azimuthal(scale, angle) {\n function azimuthal(λ, φ) {\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n }\n azimuthal.invert = function(x, y) {\n var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n };\n return azimuthal;\n }\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n return Math.sqrt(2 / (1 + cosλcosφ));\n }, function(ρ) {\n return 2 * Math.asin(ρ / 2);\n });\n (d3.geo.azimuthalEqualArea = function() {\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\n }).raw = d3_geo_azimuthalEqualArea;\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n var c = Math.acos(cosλcosφ);\n return c && c / Math.sin(c);\n }, d3_identity);\n (d3.geo.azimuthalEquidistant = function() {\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\n }).raw = d3_geo_azimuthalEquidistant;\n function d3_geo_conicConformal(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), t = function(φ) {\n return Math.tan(π / 4 + φ / 2);\n }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n if (!n) return d3_geo_mercator;\n function forward(λ, φ) {\n if (F > 0) {\n if (φ < -halfπ + ε) φ = -halfπ + ε;\n } else {\n if (φ > halfπ - ε) φ = halfπ - ε;\n }\n var ρ = F / Math.pow(t(φ), n);\n return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n };\n return forward;\n }\n (d3.geo.conicConformal = function() {\n return d3_geo_conic(d3_geo_conicConformal);\n }).raw = d3_geo_conicConformal;\n function d3_geo_conicEquidistant(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n if (abs(n) < ε) return d3_geo_equirectangular;\n function forward(λ, φ) {\n var ρ = G - φ;\n return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = G - y;\n return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n };\n return forward;\n }\n (d3.geo.conicEquidistant = function() {\n return d3_geo_conic(d3_geo_conicEquidistant);\n }).raw = d3_geo_conicEquidistant;\n var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / cosλcosφ;\n }, Math.atan);\n (d3.geo.gnomonic = function() {\n return d3_geo_projection(d3_geo_gnomonic);\n }).raw = d3_geo_gnomonic;\n function d3_geo_mercator(λ, φ) {\n return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n }\n d3_geo_mercator.invert = function(x, y) {\n return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n };\n function d3_geo_mercatorProjection(project) {\n var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n m.scale = function() {\n var v = scale.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.translate = function() {\n var v = translate.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.clipExtent = function(_) {\n var v = clipExtent.apply(m, arguments);\n if (v === m) {\n if (clipAuto = _ == null) {\n var k = π * scale(), t = translate();\n clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n }\n } else if (clipAuto) {\n v = null;\n }\n return v;\n };\n return m.clipExtent(null);\n }\n (d3.geo.mercator = function() {\n return d3_geo_mercatorProjection(d3_geo_mercator);\n }).raw = d3_geo_mercator;\n var d3_geo_orthographic = d3_geo_azimuthal(function() {\n return 1;\n }, Math.asin);\n (d3.geo.orthographic = function() {\n return d3_geo_projection(d3_geo_orthographic);\n }).raw = d3_geo_orthographic;\n var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / (1 + cosλcosφ);\n }, function(ρ) {\n return 2 * Math.atan(ρ);\n });\n (d3.geo.stereographic = function() {\n return d3_geo_projection(d3_geo_stereographic);\n }).raw = d3_geo_stereographic;\n function d3_geo_transverseMercator(λ, φ) {\n return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n }\n d3_geo_transverseMercator.invert = function(x, y) {\n return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n };\n (d3.geo.transverseMercator = function() {\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n projection.center = function(_) {\n return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n };\n projection.rotate = function(_) {\n return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n [ _[0], _[1], _[2] - 90 ]);\n };\n return rotate([ 0, 0, 90 ]);\n }).raw = d3_geo_transverseMercator;\n d3.geom = {};\n function d3_geom_pointX(d) {\n return d[0];\n }\n function d3_geom_pointY(d) {\n return d[1];\n }\n d3.geom.hull = function(vertices) {\n var x = d3_geom_pointX, y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n for (i = 0; i < n; i++) {\n points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n }\n points.sort(d3_geom_hullOrder);\n for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n return polygon;\n }\n hull.x = function(_) {\n return arguments.length ? (x = _, hull) : x;\n };\n hull.y = function(_) {\n return arguments.length ? (y = _, hull) : y;\n };\n return hull;\n };\n function d3_geom_hullUpper(points) {\n var n = points.length, hull = [ 0, 1 ], hs = 2;\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n hull[hs++] = i;\n }\n return hull.slice(0, hs);\n }\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n d3.geom.polygon = function(coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n d3_geom_polygonPrototype.area = function() {\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n return area * .5;\n };\n d3_geom_polygonPrototype.centroid = function(k) {\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n if (!arguments.length) k = -1 / (6 * this.area());\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n return [ x * k, y * k ];\n };\n d3_geom_polygonPrototype.clip = function(subject) {\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n while (++j < m) {\n d = input[j];\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n c = d;\n }\n if (closed) subject.push(subject[0]);\n a = b;\n }\n return subject;\n };\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [ x1 + ua * x21, y1 + ua * y21 ];\n }\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n x: x,\n y: y\n }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length, iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > ε) node = node.L; else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n if (dxr > ε) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -ε) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -ε) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n d3_geom_voronoiCell.prototype.prepare = function() {\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n x: x0,\n y: abs(x2 - x0) < ε ? y2 : y1\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n x: abs(y2 - y1) < ε ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n x: x1,\n y: abs(x2 - x1) < ε ? y2 : y0\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n x: abs(y2 - y0) < ε ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P, rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -ε2) return;\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null, node = d3_geom_voronoiCircles._;\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L; else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R; else {\n before = node;\n break;\n }\n }\n }\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n while (i--) {\n e = edges[i];\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n }; else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n }; else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n edge.a = va;\n edge.b = vb;\n return true;\n }\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a, vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n d3_geom_voronoiHalfEdge.prototype = {\n start: function() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function(after, node) {\n var parent, grandpa, uncle;\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n if (parent) {\n if (parent.L === node) parent.L = next; else parent.R = next;\n } else {\n this._ = next;\n }\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) {\n node.C = false;\n return;\n }\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n if (node) node.C = false;\n }\n };\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node, q = node.R, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node, q = node.L, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n }\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n d3.geom.voronoi = function(points) {\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n function voronoi(data) {\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n var s = e.start();\n return [ s.x, s.y ];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n function sites(data) {\n return data.map(function(d, i) {\n return {\n x: Math.round(fx(d, i) / ε) * ε,\n y: Math.round(fy(d, i) / ε) * ε,\n i: i\n };\n });\n }\n voronoi.links = function(data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n return edge.l && edge.r;\n }).map(function(edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n voronoi.triangles = function(data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n }\n }\n });\n return triangles;\n };\n voronoi.x = function(_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n voronoi.y = function(_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n voronoi.clipExtent = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n voronoi.size = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n };\n return voronoi;\n };\n var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n d3.geom.delaunay = function(vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n return quadtree(points);\n }\n function quadtree(data) {\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n } else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n var dx = x2_ - x1_, dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n function insert(n, d, x, y, x1, y1, x2, y2) {\n if (isNaN(x) || isNaN(y)) return;\n if (n.leaf) {\n var nx = n.x, ny = n.y;\n if (nx != null) {\n if (abs(nx - x) + abs(ny - y) < .01) {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n } else {\n var nPoint = n.point;\n n.x = n.y = n.point = null;\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n } else {\n n.x = x, n.y = y, n.point = d;\n }\n } else {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n }\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\n var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n n.leaf = false;\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n if (right) x1 = xm; else x2 = xm;\n if (below) y1 = ym; else y2 = ym;\n insert(n, d, x, y, x1, y1, x2, y2);\n }\n var root = d3_geom_quadtreeNode();\n root.add = function(d) {\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n };\n root.visit = function(f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n root.find = function(point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n i = -1;\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n --i;\n } else data.forEach(root.add);\n xs = ys = data = d = null;\n return root;\n }\n quadtree.x = function(_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n quadtree.y = function(_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n quadtree.extent = function(_) {\n if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n y2 = +_[1][1];\n return quadtree;\n };\n quadtree.size = function(_) {\n if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n return quadtree;\n };\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity, closestPoint;\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n if (point = node.point) {\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n return closestPoint;\n }\n d3.interpolateRgb = d3_interpolateRgb;\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n return function(t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n d3.interpolateObject = d3_interpolateObject;\n function d3_interpolateObject(a, b) {\n var i = {}, c = {}, k;\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n }\n d3.interpolateNumber = d3_interpolateNumber;\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function(t) {\n return a * (1 - t) + b * t;\n };\n }\n d3.interpolateString = d3_interpolateString;\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm; else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i: i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n bi = d3_interpolate_numberB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n return b(t) + \"\";\n }) : function() {\n return 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 d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length, f;\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n return f;\n }\n d3.interpolators = [ function(a, b) {\n var t = typeof b;\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n } ];\n d3.interpolateArray = d3_interpolateArray;\n function d3_interpolateArray(a, b) {\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n for (;i < na; ++i) c[i] = a[i];\n for (;i < nb; ++i) c[i] = b[i];\n return function(t) {\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\n return c;\n };\n }\n var d3_ease_default = function() {\n return d3_identity;\n };\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function() {\n return d3_ease_quad;\n },\n cubic: function() {\n return d3_ease_cubic;\n },\n sin: function() {\n return d3_ease_sin;\n },\n exp: function() {\n return d3_ease_exp;\n },\n circle: function() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n d3.ease = function(name) {\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n function d3_ease_clamp(f) {\n return function(t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n function d3_ease_reverse(f) {\n return function(t) {\n return 1 - f(1 - t);\n };\n }\n function d3_ease_reflect(f) {\n return function(t) {\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n function d3_ease_quad(t) {\n return t * t;\n }\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t, t3 = t2 * t;\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n }\n function d3_ease_poly(e) {\n return function(t) {\n return Math.pow(t, e);\n };\n }\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * halfπ);\n }\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = .45;\n if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n return function(t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n };\n }\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function(t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n }\n d3.interpolateHcl = d3_interpolateHcl;\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateHsl = d3_interpolateHsl;\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateLab = d3_interpolateLab;\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n return function(t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n d3.interpolateRound = d3_interpolateRound;\n function d3_interpolateRound(a, b) {\n b -= a;\n return function(t) {\n return Math.round(a + b * t);\n };\n }\n d3.transform = function(string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function(string) {\n if (string != null) {\n g.setAttribute(\"transform\", string);\n var t = g.transform.baseVal.consolidate();\n }\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n function d3_transform(m) {\n var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [ m.e, m.f ];\n this.scale = [ kx, ky ];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n d3_transform.prototype.toString = function() {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n return k;\n }\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n function d3_interpolateTransform(a, b) {\n var s = [], q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\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 function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return (x - a) / b;\n };\n }\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n d3.layout = {};\n d3.layout.bundle = function() {\n return function(links) {\n var paths = [], i = -1, n = links.length;\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n return paths;\n };\n };\n function d3_layout_bundlePath(link) {\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n var k = points.length;\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n return points;\n }\n function d3_layout_bundleAncestors(node) {\n var ancestors = [], parent = node.parent;\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n ancestors.push(node);\n return ancestors;\n }\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n return sharedNode;\n }\n d3.layout.chord = function() {\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n function relayout() {\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n while (++i < n) {\n x = 0, j = -1;\n while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n if (sortGroups) {\n groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n if (sortSubgroups) {\n subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n }\n k = (τ - padding * n) / k;\n x = 0, i = -1;\n while (++i < n) {\n x0 = x, j = -1;\n while (++j < n) {\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n i = -1;\n while (++i < n) {\n j = i - 1;\n while (++j < n) {\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source: source,\n target: target\n });\n }\n }\n }\n if (sortChords) resort();\n }\n function resort() {\n chords.sort(function(a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n chord.matrix = function(x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n chord.padding = function(x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n chord.sortGroups = function(x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n chord.sortSubgroups = function(x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n chord.sortChords = function(x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n chord.chords = function() {\n if (!chords) relayout();\n return chords;\n };\n chord.groups = function() {\n if (!groups) relayout();\n return groups;\n };\n return chord;\n };\n d3.layout.force = function() {\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n function repulse(node) {\n return function(quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n return true;\n }\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n return !quad.charge;\n };\n }\n force.tick = function() {\n if ((alpha *= .99) < .005) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n i = -1;\n while (++i < n) {\n o = nodes[i];\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n event.tick({\n type: \"tick\",\n alpha: alpha\n });\n };\n force.nodes = function(x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n force.links = function(x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n force.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n force.linkDistance = function(x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.distance = force.linkDistance;\n force.linkStrength = function(x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.friction = function(x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n force.charge = function(x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.chargeDistance = function(x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n force.gravity = function(x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n force.theta = function(x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n force.alpha = function(x) {\n if (!arguments.length) return alpha;\n x = +x;\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n return force;\n };\n force.start = function() {\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n function position(dimension, size) {\n if (!neighbors) {\n neighbors = new Array(n);\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n for (j = 0; j < m; ++j) {\n var o = links[j];\n neighbors[o.source.index].push(o.target);\n neighbors[o.target.index].push(o.source);\n }\n }\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n return Math.random() * size;\n }\n return force.resume();\n };\n force.resume = function() {\n return force.alpha(.1);\n };\n force.stop = function() {\n return force.alpha(0);\n };\n force.drag = function() {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n return d3.rebind(force, event, \"on\");\n };\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0, cy = 0;\n quad.charge = 0;\n if (!quad.leaf) {\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - .5;\n quad.point.y += Math.random() - .5;\n }\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n d3.layout.hierarchy = function() {\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n function hierarchy(root) {\n var stack = [ root ], nodes = [], node;\n root.depth = 0;\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var childs, parent;\n if (sort && (childs = node.children)) childs.sort(sort);\n if (value && (parent = node.parent)) parent.value += node.value;\n });\n return nodes;\n }\n hierarchy.sort = function(x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n hierarchy.children = function(x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n hierarchy.value = function(x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n hierarchy.revalue = function(root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function(node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n return root;\n };\n return hierarchy;\n };\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [ node ];\n while ((node = nodes.pop()) != null) {\n callback(node);\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n while (--n >= 0) nodes.push(children[n]);\n }\n }\n }\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [ node ], nodes2 = [];\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n if ((children = node.children) && (n = children.length)) {\n var i = -1, n, children;\n while (++i < n) nodes.push(children[i]);\n }\n }\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function(parent) {\n return (parent.children || []).map(function(child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n d3.layout.partition = function() {\n var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n if (children && (n = children.length)) {\n var i = -1, n, c, d;\n dx = node.value ? dx / node.value : 0;\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n function depth(node) {\n var children = node.children, d = 0;\n if (children && (n = children.length)) {\n var i = -1, n;\n while (++i < n) d = Math.max(d, depth(children[i]));\n }\n return 1 + d;\n }\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n partition.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n d3.layout.pie = function() {\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n function pie(data) {\n var n = data.length, values = data.map(function(d, i) {\n return +value.call(pie, d, i);\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n return values[j] - values[i];\n } : function(i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function(i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n pie.value = function(_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n pie.sort = function(_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n pie.startAngle = function(_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n pie.endAngle = function(_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n pie.padAngle = function(_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n return pie;\n };\n var d3_layout_pieSortByValue = {};\n d3.layout.stack = function() {\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function(d, i) {\n return values.call(stack, d, i);\n });\n var points = series.map(function(d) {\n return d.map(function(v, i) {\n return [ x.call(stack, v, i), y.call(stack, v, i) ];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length, n, i, j, o;\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n return data;\n }\n stack.values = function(x) {\n if (!arguments.length) return values;\n values = x;\n return stack;\n };\n stack.order = function(x) {\n if (!arguments.length) return order;\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n return stack;\n };\n stack.offset = function(x) {\n if (!arguments.length) return offset;\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n return stack;\n };\n stack.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n stack.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n stack.out = function(z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n return stack;\n };\n function d3_layout_stackX(d) {\n return d.x;\n }\n function d3_layout_stackY(d) {\n return d.y;\n }\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function(data) {\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n return max[a] - max[b];\n }), top = 0, bottom = 0, tops = [], bottoms = [];\n for (i = 0; i < n; ++i) {\n j = index[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n return bottoms.reverse().concat(tops);\n },\n reverse: function(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function(data) {\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o > max) max = o;\n sums.push(o);\n }\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n return y0;\n },\n wiggle: function(data) {\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n y0[0] = o = o0 = 0;\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n s2 += s3 * data[i][j][1];\n }\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n for (j = 0; j < m; ++j) y0[j] -= o0;\n return y0;\n },\n expand: function(data) {\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n }\n for (j = 0; j < m; ++j) y0[j] = 0;\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n function d3_layout_stackOffsetZero(data) {\n var j = -1, m = data[0].length, y0 = [];\n while (++j < m) y0[j] = 0;\n return y0;\n }\n function d3_layout_stackMaxIndex(array) {\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\n for (;i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n return j;\n }\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n d3.layout.histogram = function() {\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n function histogram(data, i) {\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n if (m > 0) {\n i = -1;\n while (++i < n) {\n x = values[i];\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function(x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n histogram.range = function(x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n histogram.bins = function(x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function(range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n histogram.frequency = function(x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n return histogram;\n };\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n while (++x <= n) f[x] = m * x + b;\n return f;\n }\n function d3_layout_histogramRange(values) {\n return [ d3.min(values), d3.max(values) ];\n }\n d3.layout.pack = function() {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r = +r(d.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r -= dr;\n });\n }\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n pack.size = function(_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n pack.radius = function(_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n pack.padding = function(_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n return .999 * dr * dr > dx * dx + dy * dy;\n }\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n function bound(node) {\n xMin = Math.min(node.x - node.r, xMin);\n xMax = Math.max(node.x + node.r, xMax);\n yMin = Math.min(node.y - node.r, yMin);\n yMax = Math.max(node.y + node.r, yMax);\n }\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0, s1 = 1, s2 = 1;\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n if (children) {\n var i = -1, n = children.length;\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n }\n }\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n if (db && (dx || dy)) {\n var da = b.r + c.r, dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n d3.layout.tree = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n var left = root0, right = root0, bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [ root0 ]\n }, queue = [ root1 ], node1;\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i: i\n }).a = child);\n }\n }\n return root1.children[0];\n }\n function firstWalk(v) {\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n tree.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n tree.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n tree.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n function d3_layout_treeRight(v) {\n var children = v.children, n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n function d3_layout_treeShift(v) {\n var shift = 0, change = 0, children = v.children, i = children.length, w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n d3.layout.cluster = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var children = node.children;\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n cluster.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n cluster.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n cluster.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function(child) {\n return child.y;\n });\n }\n function d3_layout_clusterX(children) {\n return children.reduce(function(x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n function d3_layout_clusterRight(node) {\n var children = node.children, n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n d3.layout.treemap = function() {\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n function scale(children, k) {\n var i = -1, n = children.length, child, area;\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n function squarify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n children.forEach(squarify);\n }\n }\n function stickify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), remaining = children.slice(), child, row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n children.forEach(stickify);\n }\n }\n function worst(row, u) {\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n function position(row, u, rect, flush) {\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n function treemap(d) {\n var nodes = stickies || hierarchy(d), root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([ root ], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n treemap.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n treemap.padding = function(x) {\n if (!arguments.length) return padding;\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n }\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n padConstant) : padConstant;\n return treemap;\n };\n treemap.round = function(x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n treemap.sticky = function(x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n treemap.ratio = function(x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n treemap.mode = function(x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n return {\n x: x,\n y: y,\n dx: dx,\n dy: dy\n };\n }\n d3.random = {\n normal: function(µ, σ) {\n var n = arguments.length;\n if (n < 2) σ = 1;\n if (n < 1) µ = 0;\n return function() {\n var x, y, r;\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function() {\n var random = d3.random.normal.apply(d3, arguments);\n return function() {\n return Math.exp(random());\n };\n },\n bates: function(m) {\n var random = d3.random.irwinHall(m);\n return function() {\n return random() / m;\n };\n },\n irwinHall: function(m) {\n return function() {\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\n return s;\n };\n }\n };\n d3.scale = {};\n function d3_scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [ start, stop ] : [ stop, start ];\n }\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n return function(x) {\n return i(u(x));\n };\n }\n function d3_scale_nice(domain, nice) {\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n return function(x) {\n var j = d3.bisect(domain, x, 1, k) - 1;\n return i[j](u[j](x));\n };\n }\n d3.scale.linear = function() {\n return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n };\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n function scale(x) {\n return output(x);\n }\n scale.invert = function(y) {\n return input(y);\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.rangeRound = function(x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n scale.clamp = function(x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n scale.interpolate = function(x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n scale.copy = function() {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n return rescale();\n }\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n extent[2] = step;\n return extent;\n }\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n function d3_scale_linearTickFormat(domain, m, format) {\n var range = d3_scale_linearTickRange(domain, m);\n if (format) {\n var match = d3_format_re.exec(format);\n match.shift();\n if (match[8] === \"s\") {\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n match[8] = \"f\";\n format = d3.format(match.join(\"\"));\n return function(d) {\n return format(prefix.scale(d)) + prefix.symbol;\n };\n }\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n format = match.join(\"\");\n } else {\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n }\n return d3.format(format);\n }\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\n }\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n d3.scale.log = function() {\n return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n };\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n function scale(x) {\n return linear(log(x));\n }\n scale.invert = function(x) {\n return pow(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n scale.base = function(_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n scale.nice = function() {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n scale.ticks = function() {\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n if (isFinite(j - i)) {\n if (positive) {\n for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n }\n for (i = 0; ticks[i] < u; i++) {}\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\n ticks = ticks.slice(i, j);\n }\n return ticks;\n };\n scale.tickFormat = function(n, format) {\n if (!arguments.length) return d3_scale_logFormat;\n if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n var k = Math.max(1, base * n / scale.ticks().length);\n return function(d) {\n var i = d / pow(Math.round(log(d)));\n if (i * base < base - .5) i *= base;\n return i <= k ? format(d) : \"\";\n };\n };\n scale.copy = function() {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n floor: function(x) {\n return -Math.ceil(-x);\n },\n ceil: function(x) {\n return -Math.floor(-x);\n }\n };\n d3.scale.pow = function() {\n return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n };\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n function scale(x) {\n return linear(powp(x));\n }\n scale.invert = function(x) {\n return powb(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n scale.exponent = function(x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n scale.copy = function() {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_scale_powPow(e) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n d3.scale.sqrt = function() {\n return d3.scale.pow().exponent(.5);\n };\n d3.scale.ordinal = function() {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [ [] ]\n });\n };\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n function steps(start, step) {\n return d3.range(domain.length).map(function(i) {\n return start + step * i;\n });\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1, n = x.length, xi;\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n return scale[ranger.t].apply(scale, ranger.a);\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n scale.rangePoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundPoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBand = function() {\n return rangeBand;\n };\n scale.rangeExtent = function() {\n return d3_scaleExtent(ranger.a[0]);\n };\n scale.copy = function() {\n return d3_scale_ordinal(domain, ranger);\n };\n return scale.domain(domain);\n }\n d3.scale.category10 = function() {\n return d3.scale.ordinal().range(d3_category10);\n };\n d3.scale.category20 = function() {\n return d3.scale.ordinal().range(d3_category20);\n };\n d3.scale.category20b = function() {\n return d3.scale.ordinal().range(d3_category20b);\n };\n d3.scale.category20c = function() {\n return d3.scale.ordinal().range(d3_category20c);\n };\n var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n d3.scale.quantile = function() {\n return d3_scale_quantile([], []);\n };\n function d3_scale_quantile(domain, range) {\n var thresholds;\n function rescale() {\n var k = 0, q = range.length;\n thresholds = [];\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n return scale;\n }\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.quantiles = function() {\n return thresholds;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n };\n scale.copy = function() {\n return d3_scale_quantile(domain, range);\n };\n return rescale();\n }\n d3.scale.quantize = function() {\n return d3_scale_quantize(0, 1, [ 0, 1 ]);\n };\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n scale.domain = function(x) {\n if (!arguments.length) return [ x0, x1 ];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [ y, y + 1 / kx ];\n };\n scale.copy = function() {\n return d3_scale_quantize(x0, x1, range);\n };\n return rescale();\n }\n d3.scale.threshold = function() {\n return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n };\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n scale.domain = function(_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n scale.range = function(_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return [ domain[y - 1], domain[y] ];\n };\n scale.copy = function() {\n return d3_scale_threshold(domain, range);\n };\n return scale;\n }\n d3.scale.identity = function() {\n return d3_scale_identity([ 0, 1 ]);\n };\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n identity.invert = identity;\n identity.domain = identity.range = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n identity.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n identity.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n identity.copy = function() {\n return d3_scale_identity(domain);\n };\n return identity;\n }\n d3.svg = {};\n function d3_zero() {\n return 0;\n }\n d3.svg.arc = function() {\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc, rc0 = rc;\n if (da < π) {\n var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n path.push(\"Z\");\n return path.join(\"\");\n }\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n arc.innerRadius = function(v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n arc.outerRadius = function(v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n arc.cornerRadius = function(v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n arc.padRadius = function(v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n arc.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n arc.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n arc.padAngle = function(v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n return [ Math.cos(a) * r, Math.sin(a) * r ];\n };\n return arc;\n };\n var d3_svg_arcAuto = \"auto\";\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n }\n function d3_svg_line(projection) {\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n function line(data) {\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n line.x = function(_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n line.y = function(_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n line.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n line.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n line.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n return line;\n }\n d3.svg.line = function() {\n return d3_svg_line(d3_identity);\n };\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function(key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n function d3_svg_lineStep(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepBefore(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepAfter(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n return path.join(\"\");\n }\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n }\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n return path;\n }\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n }\n return tangents;\n }\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n points.push(points[n - 1]);\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBasisClosed(points) {\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n --i;\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n if (n) {\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n return d3_svg_lineBasis(points);\n }\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n m[i] = d;\n return m;\n }\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n if (abs(d) < ε) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n i = -1;\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([ s || 0, m[i] * s || 0 ]);\n }\n return tangents;\n }\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n d3.svg.line.radial = function() {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n function d3_svg_lineRadial(points) {\n var point, i = -1, n = points.length, r, a;\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - halfπ;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n return points;\n }\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n function area(data) {\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n return x;\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n return y;\n } : d3_functor(y1), x, y;\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n area.x = function(_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n area.x0 = function(_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n area.x1 = function(_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n area.y = function(_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n area.y0 = function(_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n area.y1 = function(_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n area.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n area.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n area.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n return area;\n }\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n d3.svg.area = function() {\n return d3_svg_area(d3_identity);\n };\n d3.svg.area.radial = function() {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n d3.svg.chord = function() {\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n function chord(d, i) {\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n function subgroup(self, f, d, i) {\n var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n return {\n r: r,\n a0: a0,\n a1: a1,\n p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n };\n }\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n }\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n chord.radius = function(v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n chord.source = function(v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n chord.target = function(v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n chord.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n chord.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n return chord;\n };\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n d3.svg.diagonal = function() {\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n function diagonal(d, i) {\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3 ];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n diagonal.source = function(x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n diagonal.target = function(x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n diagonal.projection = function(x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n return diagonal;\n };\n function d3_svg_diagonalProjection(d) {\n return [ d.x, d.y ];\n }\n d3.svg.diagonal.radial = function() {\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n diagonal.projection = function(x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n return diagonal;\n };\n function d3_svg_diagonalRadialProjection(projection) {\n return function() {\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n return [ r * Math.cos(a), r * Math.sin(a) ];\n };\n }\n d3.svg.symbol = function() {\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n symbol.type = function(x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n symbol.size = function(x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n return symbol;\n };\n function d3_svg_symbolSize() {\n return 64;\n }\n function d3_svg_symbolType() {\n return \"circle\";\n }\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / π);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n },\n square: function(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n d3_selectionPrototype.transition = function(name) {\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_selectionPrototype.interrupt = function(name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n function d3_selection_interruptNS(ns) {\n return function() {\n var lock, activeId, active;\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId]; else delete this[ns];\n lock.active += .5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n d3.transition = function(selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n d3.transition.prototype = d3_transitionPrototype;\n d3_transitionPrototype.select = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.selectAll = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n for (var k = -1, o = subnodes.length; ++k < o; ) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_transition(subgroups, this.namespace, this.id);\n };\n d3_transitionPrototype.tween = function(name, tween) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function(node) {\n node[ns][id].tween.remove(name);\n } : function(node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id, ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function(node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n d3_transitionPrototype.attr = function(nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) this.attr(value, nameNS[value]);\n return this;\n }\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function() {\n var a = this.getAttribute(name), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function() {\n var a = this.getAttributeNS(name.space, name.local), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function(t) {\n this.setAttribute(name, f(t));\n };\n }\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function(t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.style(priority, name[priority], value);\n return this;\n }\n priority = \"\";\n }\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function() {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n return a !== b && (i = d3_interpolate(a, b), function(t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function(t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n return this.tween(\"style.\" + name, styleTween);\n };\n d3_transitionPrototype.text = function(value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function() {\n this.textContent = b;\n };\n }\n d3_transitionPrototype.remove = function() {\n var ns = this.namespace;\n return this.each(\"end.transition\", function() {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n d3_transitionPrototype.ease = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function(node) {\n node[ns][id].ease = value;\n });\n };\n d3_transitionPrototype.delay = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function(node) {\n node[ns][id].delay = value;\n }));\n };\n d3_transitionPrototype.duration = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function(node) {\n node[ns][id].duration = value;\n }));\n };\n d3_transitionPrototype.each = function(type, listener) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function(node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function(node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n return this;\n };\n d3_transitionPrototype.transition = function() {\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id1);\n };\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }), transition = lock[id], time, timer, duration, ease, tweens;\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n function start(elapsed) {\n var activeId = lock.active, active = lock[activeId];\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n timer.c = tick;\n d3_timer(function() {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function(key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n function tick(elapsed) {\n var t = elapsed / duration, e = ease(t), n = tweens.length;\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id]; else delete node[ns];\n return 1;\n }\n }\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time: time,\n timer: timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n d3.svg.axis = function() {\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n function axis(g) {\n g.each(function() {\n var g = d3.select(this);\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n axis.ticks = function() {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n axis.tickSize = function(x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n axis.innerTickSize = function(x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n axis.outerTickSize = function(x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n axis.tickSubdivide = function() {\n return arguments.length && axis;\n };\n return axis;\n };\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function(d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function(d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n d3.svg.brush = function() {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n function brush(g) {\n g.each(function() {\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g.selectAll(\".background\").data([ 0 ]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function(d) {\n return \"resize \" + d;\n }).style(\"cursor\", function(d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function(d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function(d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n redraw(gUpdate);\n });\n }\n brush.event = function(g) {\n g.each(function() {\n var event_ = event.of(this, arguments), extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n }, extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function() {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function() {\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function(t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function() {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n function brushstart() {\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n g.interrupt().selectAll(\"*\").interrupt();\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n d3_eventPreventDefault();\n }\n }\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n function brushmove() {\n var point = d3.mouse(target), moved = false;\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null; else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n brush.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.clamp = function(z) {\n if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n return brush;\n };\n brush.extent = function(z) {\n var x0, x1, y0, y1, t;\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n }\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [ x0, x1 ];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n }\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [ y0, y1 ];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n }\n return brush;\n };\n brush.clear = function() {\n if (!brush.empty()) {\n xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n xExtentDomain = yExtentDomain = null;\n }\n return brush;\n };\n brush.empty = function() {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n return d3.rebind(brush, event, \"on\");\n };\n var d3_svg_brushCursor = {\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 var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n var d3_time_formatUtc = d3_time_format.utc;\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n function d3_time_formatIsoNative(date) {\n return date.toISOString();\n }\n d3_time_formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n d3_time.second = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 1e3) * 1e3);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n }, function(date) {\n return date.getSeconds();\n });\n d3_time.seconds = d3_time.second.range;\n d3_time.seconds.utc = d3_time.second.utc.range;\n d3_time.minute = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 6e4) * 6e4);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n }, function(date) {\n return date.getMinutes();\n });\n d3_time.minutes = d3_time.minute.range;\n d3_time.minutes.utc = d3_time.minute.utc.range;\n d3_time.hour = d3_time_interval(function(date) {\n var timezone = date.getTimezoneOffset() / 60;\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n }, function(date) {\n return date.getHours();\n });\n d3_time.hours = d3_time.hour.range;\n d3_time.hours.utc = d3_time.hour.utc.range;\n d3_time.month = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setDate(1);\n return date;\n }, function(date, offset) {\n date.setMonth(date.getMonth() + offset);\n }, function(date) {\n return date.getMonth();\n });\n d3_time.months = d3_time.month.range;\n d3_time.months.utc = d3_time.month.utc.range;\n function d3_time_scale(linear, methods, format) {\n function scale(x) {\n return linear(x);\n }\n scale.invert = function(x) {\n return d3_time_scaleDate(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n linear.domain(x);\n return scale;\n };\n function tickMethod(extent, count) {\n var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n return d / 31536e6;\n }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n }\n scale.nice = function(interval, skip) {\n var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n if (method) interval = method[0], skip = method[1];\n function skipped(date) {\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n }\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n floor: function(date) {\n while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n return date;\n },\n ceil: function(date) {\n while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n return date;\n }\n } : interval));\n };\n scale.ticks = function(interval, skip) {\n var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n range: interval\n }, skip ];\n if (method) interval = method[0], skip = method[1];\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n };\n scale.tickFormat = function() {\n return format;\n };\n scale.copy = function() {\n return d3_time_scale(linear.copy(), methods, format);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_time_scaleDate(t) {\n return new Date(t);\n }\n var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\n var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n return d.getMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getHours();\n } ], [ \"%a %d\", function(d) {\n return d.getDay() && d.getDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getMonth();\n } ], [ \"%Y\", d3_true ] ]);\n var d3_time_scaleMilliseconds = {\n range: function(start, stop, step) {\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n },\n floor: d3_identity,\n ceil: d3_identity\n };\n d3_time_scaleLocalMethods.year = d3_time.year;\n d3_time.scale = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n };\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n return [ m[0].utc, m[1] ];\n });\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n return d.getUTCMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getUTCSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getUTCMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getUTCHours();\n } ], [ \"%a %d\", function(d) {\n return d.getUTCDay() && d.getUTCDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getUTCDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getUTCMonth();\n } ], [ \"%Y\", d3_true ] ]);\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\n d3_time.scale.utc = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n };\n d3.text = d3_xhrType(function(request) {\n return request.responseText;\n });\n d3.json = function(url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n d3.html = function(url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n d3.xml = d3_xhrType(function(request) {\n return request.responseXML;\n });\n if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.topojson = global.topojson || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction noop() {}\n\nfunction transformAbsolute(transform) {\n if (!transform) return noop;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(point, i) {\n if (!i) x0 = y0 = 0;\n point[0] = (x0 += point[0]) * kx + dx;\n point[1] = (y0 += point[1]) * ky + dy;\n };\n}\n\nfunction transformRelative(transform) {\n if (!transform) return noop;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(point, i) {\n if (!i) x0 = y0 = 0;\n var x1 = Math.round((point[0] - dx) / kx),\n y1 = Math.round((point[1] - dy) / ky);\n point[0] = x1 - x0;\n point[1] = y1 - y0;\n x0 = x1;\n y0 = y1;\n };\n}\n\nfunction reverse(array, n) {\n var t, j = array.length, i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n\nfunction bisect(a, x) {\n var lo = 0, hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (a[mid] < x) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n}\n\nfunction feature(topology, o) {\n return o.type === \"GeometryCollection\" ? {\n type: \"FeatureCollection\",\n features: o.geometries.map(function(o) { return feature$1(topology, o); })\n } : feature$1(topology, o);\n}\n\nfunction feature$1(topology, o) {\n var f = {\n type: \"Feature\",\n id: o.id,\n properties: o.properties || {},\n geometry: object(topology, o)\n };\n if (o.id == null) delete f.id;\n return f;\n}\n\nfunction object(topology, o) {\n var absolute = transformAbsolute(topology.transform),\n arcs = topology.arcs;\n\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length, p; k < n; ++k) {\n points.push(p = a[k].slice());\n absolute(p, k);\n }\n if (i < 0) reverse(points, n);\n }\n\n function point(p) {\n p = p.slice();\n absolute(p, 0);\n return p;\n }\n\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0].slice());\n return points;\n }\n\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0].slice());\n return points;\n }\n\n function polygon(arcs) {\n return arcs.map(ring);\n }\n\n function geometry(o) {\n var t = o.type;\n return t === \"GeometryCollection\" ? {type: t, geometries: o.geometries.map(geometry)}\n : t in geometryType ? {type: t, coordinates: geometryType[t](o)}\n : null;\n }\n\n var geometryType = {\n Point: function(o) { return point(o.coordinates); },\n MultiPoint: function(o) { return o.coordinates.map(point); },\n LineString: function(o) { return line(o.arcs); },\n MultiLineString: function(o) { return o.arcs.map(line); },\n Polygon: function(o) { return polygon(o.arcs); },\n MultiPolygon: function(o) { return o.arcs.map(polygon); }\n };\n\n return geometry(o);\n}\n\nfunction stitchArcs(topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function(i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i], t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n\n arcs.forEach(function(i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f, g;\n\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n fragments.push(f);\n }\n }\n\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n return fragments;\n}\n\nfunction mesh(topology) {\n return object(topology, meshArcs.apply(this, arguments));\n}\n\nfunction meshArcs(topology, o, filter) {\n var arcs = [];\n\n function arc(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n }\n\n function line(arcs) {\n arcs.forEach(arc);\n }\n\n function polygon(arcs) {\n arcs.forEach(line);\n }\n\n function geometry(o) {\n if (o.type === \"GeometryCollection\") o.geometries.forEach(geometry);\n else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs);\n }\n\n if (arguments.length > 1) {\n var geomsByArc = [],\n geom;\n\n var geometryType = {\n LineString: line,\n MultiLineString: polygon,\n Polygon: polygon,\n MultiPolygon: function(arcs) { arcs.forEach(polygon); }\n };\n\n geometry(o);\n\n geomsByArc.forEach(arguments.length < 3\n ? function(geoms) { arcs.push(geoms[0].i); }\n : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n } else {\n for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i);\n }\n\n return {type: \"MultiLineString\", arcs: stitchArcs(topology, arcs)};\n}\n\nfunction cartesianTriangleArea(triangle) {\n var a = triangle[0], b = triangle[1], c = triangle[2];\n return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]));\n}\n\nfunction ring(ring) {\n var i = -1,\n n = ring.length,\n a,\n b = ring[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = ring[i];\n area += a[0] * b[1] - a[1] * b[0];\n }\n\n return area / 2;\n}\n\nfunction merge(topology) {\n return object(topology, mergeArcs.apply(this, arguments));\n}\n\nfunction mergeArcs(topology, objects) {\n var polygonsByArc = {},\n polygons = [],\n components = [];\n\n objects.forEach(function(o) {\n if (o.type === \"Polygon\") register(o.arcs);\n else if (o.type === \"MultiPolygon\") o.arcs.forEach(register);\n });\n\n function register(polygon) {\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);\n });\n });\n polygons.push(polygon);\n }\n\n function area(ring$$) {\n return Math.abs(ring(object(topology, {type: \"Polygon\", arcs: [ring$$]}).coordinates[0]));\n }\n\n polygons.forEach(function(polygon) {\n if (!polygon._) {\n var component = [],\n neighbors = [polygon];\n polygon._ = 1;\n components.push(component);\n while (polygon = neighbors.pop()) {\n component.push(polygon);\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {\n if (!polygon._) {\n polygon._ = 1;\n neighbors.push(polygon);\n }\n });\n });\n });\n }\n }\n });\n\n polygons.forEach(function(polygon) {\n delete polygon._;\n });\n\n return {\n type: \"MultiPolygon\",\n arcs: components.map(function(polygons) {\n var arcs = [], n;\n\n // Extract the exterior (unique) arcs.\n polygons.forEach(function(polygon) {\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {\n arcs.push(arc);\n }\n });\n });\n });\n\n // Stitch the arcs into one or more rings.\n arcs = stitchArcs(topology, arcs);\n\n // If more than one ring is returned,\n // at most one of these rings can be the exterior;\n // choose the one with the greatest absolute area.\n if ((n = arcs.length) > 1) {\n for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) {\n if ((ki = area(arcs[i])) > k) {\n t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki;\n }\n }\n }\n\n return arcs;\n })\n };\n}\n\nfunction neighbors(objects) {\n var indexesByArc = {}, // arc index -> array of object indexes\n neighbors = objects.map(function() { return []; });\n\n function line(arcs, i) {\n arcs.forEach(function(a) {\n if (a < 0) a = ~a;\n var o = indexesByArc[a];\n if (o) o.push(i);\n else indexesByArc[a] = [i];\n });\n }\n\n function polygon(arcs, i) {\n arcs.forEach(function(arc) { line(arc, i); });\n }\n\n function geometry(o, i) {\n if (o.type === \"GeometryCollection\") o.geometries.forEach(function(o) { geometry(o, i); });\n else if (o.type in geometryType) geometryType[o.type](o.arcs, i);\n }\n\n var geometryType = {\n LineString: line,\n MultiLineString: polygon,\n Polygon: polygon,\n MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }\n };\n\n objects.forEach(geometry);\n\n for (var i in indexesByArc) {\n for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {\n for (var k = j + 1; k < m; ++k) {\n var ij = indexes[j], ik = indexes[k], n;\n if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);\n if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);\n }\n }\n }\n\n return neighbors;\n}\n\nfunction compareArea(a, b) {\n return a[1][2] - b[1][2];\n}\n\nfunction minAreaHeap() {\n var heap = {},\n array = [],\n size = 0;\n\n heap.push = function(object) {\n up(array[object._ = size] = object, size++);\n return size;\n };\n\n heap.pop = function() {\n if (size <= 0) return;\n var removed = array[0], object;\n if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0);\n return removed;\n };\n\n heap.remove = function(removed) {\n var i = removed._, object;\n if (array[i] !== removed) return; // invalid request\n if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i);\n return i;\n };\n\n function up(object, i) {\n while (i > 0) {\n var j = ((i + 1) >> 1) - 1,\n parent = array[j];\n if (compareArea(object, parent) >= 0) break;\n array[parent._ = i] = parent;\n array[object._ = i = j] = object;\n }\n }\n\n function down(object, i) {\n while (true) {\n var r = (i + 1) << 1,\n l = r - 1,\n j = i,\n child = array[j];\n if (l < size && compareArea(array[l], child) < 0) child = array[j = l];\n if (r < size && compareArea(array[r], child) < 0) child = array[j = r];\n if (j === i) break;\n array[child._ = i] = child;\n array[object._ = i = j] = object;\n }\n }\n\n return heap;\n}\n\nfunction presimplify(topology, triangleArea) {\n var absolute = transformAbsolute(topology.transform),\n relative = transformRelative(topology.transform),\n heap = minAreaHeap();\n\n if (!triangleArea) triangleArea = cartesianTriangleArea;\n\n topology.arcs.forEach(function(arc) {\n var triangles = [],\n maxArea = 0,\n triangle,\n i,\n n,\n p;\n\n // To store each point’s effective area, we create a new array rather than\n // extending the passed-in point to workaround a Chrome/V8 bug (getting\n // stuck in smi mode). For midpoints, the initial effective area of\n // Infinity will be computed in the next step.\n for (i = 0, n = arc.length; i < n; ++i) {\n p = arc[i];\n absolute(arc[i] = [p[0], p[1], Infinity], i);\n }\n\n for (i = 1, n = arc.length - 1; i < n; ++i) {\n triangle = arc.slice(i - 1, i + 2);\n triangle[1][2] = triangleArea(triangle);\n triangles.push(triangle);\n heap.push(triangle);\n }\n\n for (i = 0, n = triangles.length; i < n; ++i) {\n triangle = triangles[i];\n triangle.previous = triangles[i - 1];\n triangle.next = triangles[i + 1];\n }\n\n while (triangle = heap.pop()) {\n var previous = triangle.previous,\n next = triangle.next;\n\n // If the area of the current point is less than that of the previous point\n // to be eliminated, use the latter's area instead. This ensures that the\n // current point cannot be eliminated without eliminating previously-\n // eliminated points.\n if (triangle[1][2] < maxArea) triangle[1][2] = maxArea;\n else maxArea = triangle[1][2];\n\n if (previous) {\n previous.next = next;\n previous[2] = triangle[2];\n update(previous);\n }\n\n if (next) {\n next.previous = previous;\n next[0] = triangle[0];\n update(next);\n }\n }\n\n arc.forEach(relative);\n });\n\n function update(triangle) {\n heap.remove(triangle);\n triangle[1][2] = triangleArea(triangle);\n heap.push(triangle);\n }\n\n return topology;\n}\n\nvar version = \"1.6.27\";\n\nexports.version = version;\nexports.mesh = mesh;\nexports.meshArcs = meshArcs;\nexports.merge = merge;\nexports.mergeArcs = mergeArcs;\nexports.feature = feature;\nexports.neighbors = neighbors;\nexports.presimplify = presimplify;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));","(function() {\n var svg;\n\n // Save off default references\n var d3 = window.d3, topojson = window.topojson;\n\n var defaultOptions = {\n scope: 'world',\n responsive: false,\n aspectRatio: 0.5625,\n setProjection: setProjection,\n projection: 'equirectangular',\n dataType: 'json',\n data: {},\n done: function() {},\n fills: {\n defaultFill: '#ABDDA4'\n },\n filters: {},\n geographyConfig: {\n dataUrl: null,\n hideAntarctica: true,\n hideHawaiiAndAlaska : false,\n borderWidth: 1,\n borderOpacity: 1,\n borderColor: '#FDFDFD',\n popupTemplate: function(geography, data) {\n return '
' + geography.properties.name + '
';\n },\n popupOnHover: true,\n highlightOnHover: true,\n highlightFillColor: '#FC8D59',\n highlightBorderColor: 'rgba(250, 15, 160, 0.2)',\n highlightBorderWidth: 2,\n highlightBorderOpacity: 1\n },\n projectionConfig: {\n rotation: [97, 0]\n },\n bubblesConfig: {\n borderWidth: 2,\n borderOpacity: 1,\n borderColor: '#FFFFFF',\n popupOnHover: true,\n radius: null,\n popupTemplate: function(geography, data) {\n return '
' + data.name + '
';\n },\n fillOpacity: 0.75,\n animate: true,\n highlightOnHover: true,\n highlightFillColor: '#FC8D59',\n highlightBorderColor: 'rgba(250, 15, 160, 0.2)',\n highlightBorderWidth: 2,\n highlightBorderOpacity: 1,\n highlightFillOpacity: 0.85,\n exitDelay: 100,\n key: JSON.stringify\n },\n arcConfig: {\n strokeColor: '#DD1C77',\n strokeWidth: 1,\n arcSharpness: 1,\n animationSpeed: 600,\n popupOnHover: false,\n popupTemplate: function(geography, data) {\n // Case with latitude and longitude\n if ( ( data.origin && data.destination ) && data.origin.latitude && data.origin.longitude && data.destination.latitude && data.destination.longitude ) {\n return '
Arc
Origin: ' + JSON.stringify(data.origin) + '
Destination: ' + JSON.stringify(data.destination) + '
';\n }\n // Case with only country name\n else if ( data.origin && data.destination ) {\n return '
Arc
' + data.origin + ' -> ' + data.destination + '
';\n }\n // Missing information\n else {\n return '';\n }\n }\n }\n };\n\n /*\n Getter for value. If not declared on datumValue, look up the chain into optionsValue\n */\n function val( datumValue, optionsValue, context ) {\n if ( typeof context === 'undefined' ) {\n context = optionsValue;\n optionsValues = undefined;\n }\n var value = typeof datumValue !== 'undefined' ? datumValue : optionsValue;\n\n if (typeof value === 'undefined') {\n return null;\n }\n\n if ( typeof value === 'function' ) {\n var fnContext = [context];\n if ( context.geography ) {\n fnContext = [context.geography, context.data];\n }\n return value.apply(null, fnContext);\n }\n else {\n return value;\n }\n }\n\n function addContainer( element, height, width ) {\n this.svg = d3.select( element ).append('svg')\n .attr('width', width || element.offsetWidth)\n .attr('data-width', width || element.offsetWidth)\n .attr('class', 'datamap')\n .attr('height', height || element.offsetHeight)\n .style('overflow', 'hidden'); // IE10+ doesn't respect height/width when map is zoomed in\n\n if (this.options.responsive) {\n d3.select(this.options.element).style({'position': 'relative', 'padding-bottom': (this.options.aspectRatio*100) + '%'});\n d3.select(this.options.element).select('svg').style({'position': 'absolute', 'width': '100%', 'height': '100%'});\n d3.select(this.options.element).select('svg').select('g').selectAll('path').style('vector-effect', 'non-scaling-stroke');\n\n }\n\n return this.svg;\n }\n\n // setProjection takes the svg element and options\n function setProjection( element, options ) {\n var width = options.width || element.offsetWidth;\n var height = options.height || element.offsetHeight;\n var projection, path;\n var svg = this.svg;\n\n if ( options && typeof options.scope === 'undefined') {\n options.scope = 'world';\n }\n\n if ( options.scope === 'usa' ) {\n projection = d3.geo.albersUsa()\n .scale(width)\n .translate([width / 2, height / 2]);\n }\n else if ( options.scope === 'world' ) {\n projection = d3.geo[options.projection]()\n .scale((width + 1) / 2 / Math.PI)\n .translate([width / 2, height / (options.projection === \"mercator\" ? 1.45 : 1.8)]);\n }\n\n if ( options.projection === 'orthographic' ) {\n\n svg.append(\"defs\").append(\"path\")\n .datum({type: \"Sphere\"})\n .attr(\"id\", \"sphere\")\n .attr(\"d\", path);\n\n svg.append(\"use\")\n .attr(\"class\", \"stroke\")\n .attr(\"xlink:href\", \"#sphere\");\n\n svg.append(\"use\")\n .attr(\"class\", \"fill\")\n .attr(\"xlink:href\", \"#sphere\");\n projection.scale(250).clipAngle(90).rotate(options.projectionConfig.rotation)\n }\n\n path = d3.geo.path()\n .projection( projection );\n\n return {path: path, projection: projection};\n }\n\n function addStyleBlock() {\n if ( d3.select('.datamaps-style-block').empty() ) {\n d3.select('head').append('style').attr('class', 'datamaps-style-block')\n .html('.datamap path.datamaps-graticule { fill: none; stroke: #777; stroke-width: 0.5px; stroke-opacity: .5; pointer-events: none; } .datamap .labels {pointer-events: none;} .datamap path:not(.datamaps-arc), .datamap circle, .datamap line {stroke: #FFFFFF; vector-effect: non-scaling-stroke; stroke-width: 1px;} .datamaps-legend dt, .datamaps-legend dd { float: left; margin: 0 3px 0 0;} .datamaps-legend dd {width: 20px; margin-right: 6px; border-radius: 3px;} .datamaps-legend {padding-bottom: 20px; z-index: 1001; position: absolute; left: 4px; font-size: 12px; font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;} .datamaps-hoverover {display: none; font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif; } .hoverinfo {padding: 4px; border-radius: 1px; background-color: #FFF; box-shadow: 1px 1px 5px #CCC; font-size: 12px; border: 1px solid #CCC; } .hoverinfo hr {border:1px dotted #CCC; }');\n }\n }\n\n function drawSubunits( data ) {\n var fillData = this.options.fills,\n colorCodeData = this.options.data || {},\n geoConfig = this.options.geographyConfig;\n\n var subunits = this.svg.select('g.datamaps-subunits');\n if ( subunits.empty() ) {\n subunits = this.addLayer('datamaps-subunits', null, true);\n }\n\n var geoData = topojson.feature( data, data.objects[ this.options.scope ] ).features;\n if ( geoConfig.hideAntarctica ) {\n geoData = geoData.filter(function(feature) {\n return feature.id !== \"ATA\";\n });\n }\n\n if ( geoConfig.hideHawaiiAndAlaska ) {\n geoData = geoData.filter(function(feature) {\n return feature.id !== \"HI\" && feature.id !== 'AK';\n });\n }\n\n var geo = subunits.selectAll('path.datamaps-subunit').data( geoData );\n\n geo.enter()\n .append('path')\n .attr('d', this.path)\n .attr('class', function(d) {\n return 'datamaps-subunit ' + d.id;\n })\n .attr('data-info', function(d) {\n return JSON.stringify( colorCodeData[d.id]);\n })\n .style('fill', function(d) {\n // If fillKey - use that\n // Otherwise check 'fill'\n // Otherwise check 'defaultFill'\n var fillColor;\n\n var datum = colorCodeData[d.id];\n if ( datum && datum.fillKey ) {\n fillColor = fillData[ val(datum.fillKey, {data: colorCodeData[d.id], geography: d}) ];\n }\n\n if ( typeof fillColor === 'undefined' ) {\n fillColor = val(datum && datum.fillColor, fillData.defaultFill, {data: colorCodeData[d.id], geography: d});\n }\n\n return fillColor;\n })\n .style('stroke-width', geoConfig.borderWidth)\n .style('stroke-opacity', geoConfig.borderOpacity)\n .style('stroke', geoConfig.borderColor);\n }\n\n function handleGeographyConfig () {\n var hoverover;\n var svg = this.svg;\n var self = this;\n var options = this.options.geographyConfig;\n\n if ( options.highlightOnHover || options.popupOnHover ) {\n svg.selectAll('.datamaps-subunit')\n .on('mouseover', function(d) {\n var $this = d3.select(this);\n var datum = self.options.data[d.id] || {};\n if ( options.highlightOnHover ) {\n var previousAttributes = {\n 'fill': $this.style('fill'),\n 'stroke': $this.style('stroke'),\n 'stroke-width': $this.style('stroke-width'),\n 'fill-opacity': $this.style('fill-opacity')\n };\n\n $this\n .style('fill', val(datum.highlightFillColor, options.highlightFillColor, datum))\n .style('stroke', val(datum.highlightBorderColor, options.highlightBorderColor, datum))\n .style('stroke-width', val(datum.highlightBorderWidth, options.highlightBorderWidth, datum))\n .style('stroke-opacity', val(datum.highlightBorderOpacity, options.highlightBorderOpacity, datum))\n .style('fill-opacity', val(datum.highlightFillOpacity, options.highlightFillOpacity, datum))\n .attr('data-previousAttributes', JSON.stringify(previousAttributes));\n\n // As per discussion on https://github.com/markmarkoh/datamaps/issues/19\n if ( ! /((MSIE)|(Trident))/.test(navigator.userAgent) ) {\n moveToFront.call(this);\n }\n }\n\n if ( options.popupOnHover ) {\n self.updatePopup($this, d, options, svg);\n }\n })\n .on('mouseout', function() {\n var $this = d3.select(this);\n\n if (options.highlightOnHover) {\n // Reapply previous attributes\n var previousAttributes = JSON.parse( $this.attr('data-previousAttributes') );\n for ( var attr in previousAttributes ) {\n $this.style(attr, previousAttributes[attr]);\n }\n }\n $this.on('mousemove', null);\n d3.selectAll('.datamaps-hoverover').style('display', 'none');\n });\n }\n\n function moveToFront() {\n this.parentNode.appendChild(this);\n }\n }\n\n // Plugin to add a simple map legend\n function addLegend(layer, data, options) {\n data = data || {};\n if ( !this.options.fills ) {\n return;\n }\n\n var html = '
';\n var label = '';\n if ( data.legendTitle ) {\n html = '

' + data.legendTitle + '

' + html;\n }\n for ( var fillKey in this.options.fills ) {\n\n if ( fillKey === 'defaultFill') {\n if (! data.defaultFillName ) {\n continue;\n }\n label = data.defaultFillName;\n } else {\n if (data.labels && data.labels[fillKey]) {\n label = data.labels[fillKey];\n } else {\n label= fillKey + ': ';\n }\n }\n html += '
' + label + '
';\n html += '
 
';\n }\n html += '
';\n\n var hoverover = d3.select( this.options.element ).append('div')\n .attr('class', 'datamaps-legend')\n .html(html);\n }\n\n function addGraticule ( layer, options ) {\n var graticule = d3.geo.graticule();\n this.svg.insert(\"path\", '.datamaps-subunits')\n .datum(graticule)\n .attr(\"class\", \"datamaps-graticule\")\n .attr(\"d\", this.path);\n }\n\n function handleArcs (layer, data, options) {\n var self = this,\n svg = this.svg;\n\n if ( !data || (data && !data.slice) ) {\n throw \"Datamaps Error - arcs must be an array\";\n }\n\n // For some reason arc options were put in an `options` object instead of the parent arc\n // I don't like this, so to match bubbles and other plugins I'm moving it\n // This is to keep backwards compatability\n for ( var i = 0; i < data.length; i++ ) {\n data[i] = defaults(data[i], data[i].options);\n delete data[i].options;\n }\n\n if ( typeof options === \"undefined\" ) {\n options = defaultOptions.arcConfig;\n }\n\n var arcs = layer.selectAll('path.datamaps-arc').data( data, JSON.stringify );\n\n var path = d3.geo.path()\n .projection(self.projection);\n\n arcs\n .enter()\n .append('svg:path')\n .attr('class', 'datamaps-arc')\n .style('stroke-linecap', 'round')\n .style('stroke', function(datum) {\n return val(datum.strokeColor, options.strokeColor, datum);\n })\n .style('fill', 'none')\n .style('stroke-width', function(datum) {\n return val(datum.strokeWidth, options.strokeWidth, datum);\n })\n .attr('d', function(datum) {\n\n var originXY, destXY;\n\n if (typeof datum.origin === \"string\") {\n switch (datum.origin) {\n case \"CAN\":\n originXY = self.latLngToXY(56.624472, -114.665293);\n break;\n case \"CHL\":\n originXY = self.latLngToXY(-33.448890, -70.669265);\n break;\n case \"IDN\":\n originXY = self.latLngToXY(-6.208763, 106.845599);\n break;\n case \"JPN\":\n originXY = self.latLngToXY(35.689487, 139.691706);\n break;\n case \"MYS\":\n originXY = self.latLngToXY(3.139003, 101.686855);\n break;\n case \"NOR\":\n originXY = self.latLngToXY(59.913869, 10.752245);\n break;\n case \"USA\":\n originXY = self.latLngToXY(41.140276, -100.760145);\n break;\n case \"VNM\":\n originXY = self.latLngToXY(21.027764, 105.834160);\n break;\n default:\n originXY = self.path.centroid(svg.select('path.' + datum.origin).data()[0]);\n }\n } else {\n originXY = self.latLngToXY(val(datum.origin.latitude, datum), val(datum.origin.longitude, datum))\n }\n\n if (typeof datum.destination === 'string') {\n switch (datum.destination) {\n case \"CAN\":\n destXY = self.latLngToXY(56.624472, -114.665293);\n break;\n case \"CHL\":\n destXY = self.latLngToXY(-33.448890, -70.669265);\n break;\n case \"IDN\":\n destXY = self.latLngToXY(-6.208763, 106.845599);\n break;\n case \"JPN\":\n destXY = self.latLngToXY(35.689487, 139.691706);\n break;\n case \"MYS\":\n destXY = self.latLngToXY(3.139003, 101.686855);\n break;\n case \"NOR\":\n destXY = self.latLngToXY(59.913869, 10.752245);\n break;\n case \"USA\":\n destXY = self.latLngToXY(41.140276, -100.760145);\n break;\n case \"VNM\":\n destXY = self.latLngToXY(21.027764, 105.834160);\n break;\n default:\n destXY = self.path.centroid(svg.select('path.' + datum.destination).data()[0]);\n }\n } else {\n destXY = self.latLngToXY(val(datum.destination.latitude, datum), val(datum.destination.longitude, datum));\n }\n var midXY = [ (originXY[0] + destXY[0]) / 2, (originXY[1] + destXY[1]) / 2];\n if (options.greatArc) {\n // TODO: Move this to inside `if` clause when setting attr `d`\n var greatArc = d3.geo.greatArc()\n .source(function(d) { return [val(d.origin.longitude, d), val(d.origin.latitude, d)]; })\n .target(function(d) { return [val(d.destination.longitude, d), val(d.destination.latitude, d)]; });\n\n return path(greatArc(datum))\n }\n var sharpness = val(datum.arcSharpness, options.arcSharpness, datum);\n return \"M\" + originXY[0] + ',' + originXY[1] + \"S\" + (midXY[0] + (50 * sharpness)) + \",\" + (midXY[1] - (75 * sharpness)) + \",\" + destXY[0] + \",\" + destXY[1];\n })\n .attr('data-info', function(datum) {\n return JSON.stringify(datum);\n })\n .on('mouseover', function ( datum ) {\n var $this = d3.select(this);\n\n if (options.popupOnHover) {\n self.updatePopup($this, datum, options, svg);\n }\n })\n .on('mouseout', function ( datum ) {\n var $this = d3.select(this);\n\n d3.selectAll('.datamaps-hoverover').style('display', 'none');\n })\n .transition()\n .delay(100)\n .style('fill', function(datum) {\n /*\n Thank you Jake Archibald, this is awesome.\n Source: http://jakearchibald.com/2013/animated-line-drawing-svg/\n */\n var length = this.getTotalLength();\n this.style.transition = this.style.WebkitTransition = 'none';\n this.style.strokeDasharray = length + ' ' + length;\n this.style.strokeDashoffset = length;\n this.getBoundingClientRect();\n this.style.transition = this.style.WebkitTransition = 'stroke-dashoffset ' + val(datum.animationSpeed, options.animationSpeed, datum) + 'ms ease-out';\n this.style.strokeDashoffset = '0';\n return 'none';\n })\n\n arcs.exit()\n .transition()\n .style('opacity', 0)\n .remove();\n }\n\n function handleLabels ( layer, options ) {\n var self = this;\n options = options || {};\n var labelStartCoodinates = this.projection([-67.707617, 42.722131]);\n this.svg.selectAll(\".datamaps-subunit\")\n .attr(\"data-foo\", function(d) {\n var center = self.path.centroid(d);\n var xOffset = 7.5, yOffset = 5;\n\n if ( [\"FL\", \"KY\", \"MI\"].indexOf(d.id) > -1 ) xOffset = -2.5;\n if ( d.id === \"NY\" ) xOffset = -1;\n if ( d.id === \"MI\" ) yOffset = 18;\n if ( d.id === \"LA\" ) xOffset = 13;\n\n var x,y;\n\n x = center[0] - xOffset;\n y = center[1] + yOffset;\n\n var smallStateIndex = [\"VT\", \"NH\", \"MA\", \"RI\", \"CT\", \"NJ\", \"DE\", \"MD\", \"DC\"].indexOf(d.id);\n if ( smallStateIndex > -1) {\n var yStart = labelStartCoodinates[1];\n x = labelStartCoodinates[0];\n y = yStart + (smallStateIndex * (2+ (options.fontSize || 12)));\n layer.append(\"line\")\n .attr(\"x1\", x - 3)\n .attr(\"y1\", y - 5)\n .attr(\"x2\", center[0])\n .attr(\"y2\", center[1])\n .style(\"stroke\", options.labelColor || \"#000\")\n .style(\"stroke-width\", options.lineWidth || 1)\n }\n\n layer.append(\"text\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .style(\"font-size\", (options.fontSize || 10) + 'px')\n .style(\"font-family\", options.fontFamily || \"Verdana\")\n .style(\"fill\", options.labelColor || \"#000\")\n .text(function() {\n if (options.customLabelText && options.customLabelText[d.id]) {\n return options.customLabelText[d.id]\n } else {\n return d.id\n }\n });\n\n return \"bar\";\n });\n }\n\n\n function handleBubbles (layer, data, options ) {\n var self = this,\n fillData = this.options.fills,\n filterData = this.options.filters,\n svg = this.svg;\n\n if ( !data || (data && !data.slice) ) {\n throw \"Datamaps Error - bubbles must be an array\";\n }\n\n var bubbles = layer.selectAll('circle.datamaps-bubble').data( data, options.key );\n\n bubbles\n .enter()\n .append('svg:circle')\n .attr('class', 'datamaps-bubble')\n .attr('cx', function ( datum ) {\n var latLng;\n if ( datumHasCoords(datum) ) {\n latLng = self.latLngToXY(datum.latitude, datum.longitude);\n }\n else if ( datum.centered ) {\n if ( datum.centered === 'USA' ) {\n latLng = self.projection([-98.58333, 39.83333])\n } else {\n latLng = self.path.centroid(svg.select('path.' + datum.centered).data()[0]);\n }\n }\n if ( latLng ) return latLng[0];\n })\n .attr('cy', function ( datum ) {\n var latLng;\n if ( datumHasCoords(datum) ) {\n latLng = self.latLngToXY(datum.latitude, datum.longitude);\n }\n else if ( datum.centered ) {\n if ( datum.centered === 'USA' ) {\n latLng = self.projection([-98.58333, 39.83333])\n } else {\n latLng = self.path.centroid(svg.select('path.' + datum.centered).data()[0]);\n }\n }\n if ( latLng ) return latLng[1];\n })\n .attr('r', function(datum) {\n // If animation enabled start with radius 0, otherwise use full size.\n return options.animate ? 0 : val(datum.radius, options.radius, datum);\n })\n .attr('data-info', function(datum) {\n return JSON.stringify(datum);\n })\n .attr('filter', function (datum) {\n var filterKey = filterData[ val(datum.filterKey, options.filterKey, datum) ];\n\n if (filterKey) {\n return filterKey;\n }\n })\n .style('stroke', function ( datum ) {\n return val(datum.borderColor, options.borderColor, datum);\n })\n .style('stroke-width', function ( datum ) {\n return val(datum.borderWidth, options.borderWidth, datum);\n })\n .style('stroke-opacity', function ( datum ) {\n return val(datum.borderOpacity, options.borderOpacity, datum);\n })\n .style('fill-opacity', function ( datum ) {\n return val(datum.fillOpacity, options.fillOpacity, datum);\n })\n .style('fill', function ( datum ) {\n var fillColor = fillData[ val(datum.fillKey, options.fillKey, datum) ];\n return fillColor || fillData.defaultFill;\n })\n .on('mouseover', function ( datum ) {\n var $this = d3.select(this);\n\n if (options.highlightOnHover) {\n // Save all previous attributes for mouseout\n var previousAttributes = {\n 'fill': $this.style('fill'),\n 'stroke': $this.style('stroke'),\n 'stroke-width': $this.style('stroke-width'),\n 'fill-opacity': $this.style('fill-opacity')\n };\n\n $this\n .style('fill', val(datum.highlightFillColor, options.highlightFillColor, datum))\n .style('stroke', val(datum.highlightBorderColor, options.highlightBorderColor, datum))\n .style('stroke-width', val(datum.highlightBorderWidth, options.highlightBorderWidth, datum))\n .style('stroke-opacity', val(datum.highlightBorderOpacity, options.highlightBorderOpacity, datum))\n .style('fill-opacity', val(datum.highlightFillOpacity, options.highlightFillOpacity, datum))\n .attr('data-previousAttributes', JSON.stringify(previousAttributes));\n }\n\n if (options.popupOnHover) {\n self.updatePopup($this, datum, options, svg);\n }\n })\n .on('mouseout', function ( datum ) {\n var $this = d3.select(this);\n\n if (options.highlightOnHover) {\n // Reapply previous attributes\n var previousAttributes = JSON.parse( $this.attr('data-previousAttributes') );\n for ( var attr in previousAttributes ) {\n $this.style(attr, previousAttributes[attr]);\n }\n }\n\n d3.selectAll('.datamaps-hoverover').style('display', 'none');\n })\n\n bubbles.transition()\n .duration(400)\n .attr('r', function ( datum ) {\n return val(datum.radius, options.radius, datum);\n })\n .transition()\n .duration(0)\n .attr('data-info', function(d) {\n return JSON.stringify(d);\n });\n\n bubbles.exit()\n .transition()\n .delay(options.exitDelay)\n .attr(\"r\", 0)\n .remove();\n\n function datumHasCoords (datum) {\n return typeof datum !== 'undefined' && typeof datum.latitude !== 'undefined' && typeof datum.longitude !== 'undefined';\n }\n }\n\n function defaults(obj) {\n Array.prototype.slice.call(arguments, 1).forEach(function(source) {\n if (source) {\n for (var prop in source) {\n // Deep copy if property not set\n if (obj[prop] == null) {\n if (typeof source[prop] == 'function') {\n obj[prop] = source[prop];\n }\n else {\n obj[prop] = JSON.parse(JSON.stringify(source[prop]));\n }\n }\n }\n }\n });\n return obj;\n }\n /**************************************\n Public Functions\n ***************************************/\n\n function Datamap( options ) {\n\n if ( typeof d3 === 'undefined' || typeof topojson === 'undefined' ) {\n throw new Error('Include d3.js (v3.0.3 or greater) and topojson on this page before creating a new map');\n }\n // Set options for global use\n this.options = defaults(options, defaultOptions);\n this.options.geographyConfig = defaults(options.geographyConfig, defaultOptions.geographyConfig);\n this.options.projectionConfig = defaults(options.projectionConfig, defaultOptions.projectionConfig);\n this.options.bubblesConfig = defaults(options.bubblesConfig, defaultOptions.bubblesConfig);\n this.options.arcConfig = defaults(options.arcConfig, defaultOptions.arcConfig);\n\n // Add the SVG container\n if ( d3.select( this.options.element ).select('svg').length > 0 ) {\n addContainer.call(this, this.options.element, this.options.height, this.options.width );\n }\n\n // Add core plugins to this instance\n this.addPlugin('bubbles', handleBubbles);\n this.addPlugin('legend', addLegend);\n this.addPlugin('arc', handleArcs);\n this.addPlugin('labels', handleLabels);\n this.addPlugin('graticule', addGraticule);\n\n // Append style block with basic hoverover styles\n if ( ! this.options.disableDefaultStyles ) {\n addStyleBlock();\n }\n\n return this.draw();\n }\n\n // Resize map\n Datamap.prototype.resize = function () {\n\n var self = this;\n var options = self.options;\n\n if (options.responsive) {\n var newsize = options.element.clientWidth,\n oldsize = d3.select( options.element).select('svg').attr('data-width');\n\n d3.select(options.element).select('svg').selectAll('g').attr('transform', 'scale(' + (newsize / oldsize) + ')');\n }\n }\n\n // Actually draw the features(states & countries)\n Datamap.prototype.draw = function() {\n // Save off in a closure\n var self = this;\n var options = self.options;\n\n // Set projections and paths based on scope\n var pathAndProjection = options.setProjection.apply(this, [options.element, options] );\n\n this.path = pathAndProjection.path;\n this.projection = pathAndProjection.projection;\n\n // If custom URL for topojson data, retrieve it and render\n if ( options.geographyConfig.dataUrl ) {\n d3.json( options.geographyConfig.dataUrl, function(error, results) {\n if ( error ) throw new Error(error);\n self.customTopo = results;\n draw( results );\n });\n }\n else {\n draw( this[options.scope + 'Topo'] || options.geographyConfig.dataJson);\n }\n\n return this;\n\n function draw (data) {\n // If fetching remote data, draw the map first then call `updateChoropleth`\n if ( self.options.dataUrl ) {\n // Allow for csv or json data types\n d3[self.options.dataType](self.options.dataUrl, function(data) {\n // In the case of csv, transform data to object\n if ( self.options.dataType === 'csv' && (data && data.slice) ) {\n var tmpData = {};\n for(var i = 0; i < data.length; i++) {\n tmpData[data[i].id] = data[i];\n }\n data = tmpData;\n }\n Datamaps.prototype.updateChoropleth.call(self, data);\n });\n }\n drawSubunits.call(self, data);\n handleGeographyConfig.call(self);\n\n if ( self.options.geographyConfig.popupOnHover || self.options.bubblesConfig.popupOnHover) {\n hoverover = d3.select( self.options.element ).append('div')\n .attr('class', 'datamaps-hoverover')\n .style('z-index', 10001)\n .style('position', 'absolute');\n }\n\n // Fire off finished callback\n self.options.done(self);\n }\n };\n /**************************************\n TopoJSON\n ***************************************/\n Datamap.prototype.worldTopo = {\n \"type\": \"Topology\",\n \"objects\": {\n \"world\": {\n \"type\": \"GeometryCollection\",\n \"geometries\": [{\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Afghanistan\"\n },\n \"id\": \"AFG\",\n \"arcs\": [\n [0, 1, 2, 3, 4, 5]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Angola\"\n },\n \"id\": \"AGO\",\n \"arcs\": [\n [\n [6, 7, 8, 9]\n ],\n [\n [10, 11, 12]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Albania\"\n },\n \"id\": \"ALB\",\n \"arcs\": [\n [13, 14, 15, 16, 17]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"United Arab Emirates\"\n },\n \"id\": \"ARE\",\n \"arcs\": [\n [18, 19, 20, 21, 22]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Argentina\"\n },\n \"id\": \"ARG\",\n \"arcs\": [\n [\n [23, 24]\n ],\n [\n [25, 26, 27, 28, 29, 30]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Armenia\"\n },\n \"id\": \"ARM\",\n \"arcs\": [\n [31, 32, 33, 34, 35]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Antarctica\"\n },\n \"id\": \"ATA\",\n \"arcs\": [\n [\n [36]\n ],\n [\n [37]\n ],\n [\n [38]\n ],\n [\n [39]\n ],\n [\n [40]\n ],\n [\n [41]\n ],\n [\n [42]\n ],\n [\n [43]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"French Southern and Antarctic Lands\"\n },\n \"id\": \"ATF\",\n \"arcs\": [\n [44]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Australia\"\n },\n \"id\": \"AUS\",\n \"arcs\": [\n [\n [45]\n ],\n [\n [46]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Austria\"\n },\n \"id\": \"AUT\",\n \"arcs\": [\n [47, 48, 49, 50, 51, 52, 53]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Azerbaijan\"\n },\n \"id\": \"AZE\",\n \"arcs\": [\n [\n [54, -35]\n ],\n [\n [55, 56, -33, 57, 58]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Burundi\"\n },\n \"id\": \"BDI\",\n \"arcs\": [\n [59, 60, 61]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Belgium\"\n },\n \"id\": \"BEL\",\n \"arcs\": [\n [62, 63, 64, 65, 66]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Benin\"\n },\n \"id\": \"BEN\",\n \"arcs\": [\n [67, 68, 69, 70, 71]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Burkina Faso\"\n },\n \"id\": \"BFA\",\n \"arcs\": [\n [72, 73, 74, -70, 75, 76]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Bangladesh\"\n },\n \"id\": \"BGD\",\n \"arcs\": [\n [77, 78, 79]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Bulgaria\"\n },\n \"id\": \"BGR\",\n \"arcs\": [\n [80, 81, 82, 83, 84, 85]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"The Bahamas\"\n },\n \"id\": \"BHS\",\n \"arcs\": [\n [\n [86]\n ],\n [\n [87]\n ],\n [\n [88]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Bosnia and Herzegovina\"\n },\n \"id\": \"BIH\",\n \"arcs\": [\n [89, 90, 91]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Belarus\"\n },\n \"id\": \"BLR\",\n \"arcs\": [\n [92, 93, 94, 95, 96]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Belize\"\n },\n \"id\": \"BLZ\",\n \"arcs\": [\n [97, 98, 99]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Bolivia\"\n },\n \"id\": \"BOL\",\n \"arcs\": [\n [100, 101, 102, 103, -31]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Brazil\"\n },\n \"id\": \"BRA\",\n \"arcs\": [\n [-27, 104, -103, 105, 106, 107, 108, 109, 110, 111, 112]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Brunei\"\n },\n \"id\": \"BRN\",\n \"arcs\": [\n [113, 114]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Bhutan\"\n },\n \"id\": \"BTN\",\n \"arcs\": [\n [115, 116]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Botswana\"\n },\n \"id\": \"BWA\",\n \"arcs\": [\n [117, 118, 119, 120]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Central African Republic\"\n },\n \"id\": \"CAF\",\n \"arcs\": [\n [121, 122, 123, 124, 125, 126, 127]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Canada\"\n },\n \"id\": \"CAN\",\n \"arcs\": [\n [\n [128]\n ],\n [\n [129]\n ],\n [\n [130]\n ],\n [\n [131]\n ],\n [\n [132]\n ],\n [\n [133]\n ],\n [\n [134]\n ],\n [\n [135]\n ],\n [\n [136]\n ],\n [\n [137]\n ],\n [\n [138, 139, 140, 141]\n ],\n [\n [142]\n ],\n [\n [143]\n ],\n [\n [144]\n ],\n [\n [145]\n ],\n [\n [146]\n ],\n [\n [147]\n ],\n [\n [148]\n ],\n [\n [149]\n ],\n [\n [150]\n ],\n [\n [151]\n ],\n [\n [152]\n ],\n [\n [153]\n ],\n [\n [154]\n ],\n [\n [155]\n ],\n [\n [156]\n ],\n [\n [157]\n ],\n [\n [158]\n ],\n [\n [159]\n ],\n [\n [160]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Switzerland\"\n },\n \"id\": \"CHE\",\n \"arcs\": [\n [-51, 161, 162, 163]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Chile\"\n },\n \"id\": \"CHL\",\n \"arcs\": [\n [\n [-24, 164]\n ],\n [\n [-30, 165, 166, -101]\n ]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"China\"\n },\n \"id\": \"CHN\",\n \"arcs\": [\n [\n [167]\n ],\n [\n [168, 169, 170, 171, 172, 173, -117, 174, 175, 176, 177, -4, 178, 179, 180, 181, 182, 183]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ivory Coast\"\n },\n \"id\": \"CIV\",\n \"arcs\": [\n [184, 185, 186, 187, -73, 188]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Cameroon\"\n },\n \"id\": \"CMR\",\n \"arcs\": [\n [189, 190, 191, 192, 193, 194, -128, 195]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Democratic Republic of the Congo\"\n },\n \"id\": \"COD\",\n \"arcs\": [\n [196, 197, -60, 198, 199, -10, 200, -13, 201, -126, 202]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Republic of the Congo\"\n },\n \"id\": \"COG\",\n \"arcs\": [\n [-12, 203, 204, -196, -127, -202]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Colombia\"\n },\n \"id\": \"COL\",\n \"arcs\": [\n [205, 206, 207, 208, 209, -107, 210]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Costa Rica\"\n },\n \"id\": \"CRI\",\n \"arcs\": [\n [211, 212, 213, 214]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Cuba\"\n },\n \"id\": \"CUB\",\n \"arcs\": [\n [215]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Northern Cyprus\"\n },\n \"id\": \"-99\",\n \"arcs\": [\n [216, 217]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Cyprus\"\n },\n \"id\": \"CYP\",\n \"arcs\": [\n [218, -218]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Czech Republic\"\n },\n \"id\": \"CZE\",\n \"arcs\": [\n [-53, 219, 220, 221]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Germany\"\n },\n \"id\": \"DEU\",\n \"arcs\": [\n [222, 223, -220, -52, -164, 224, 225, -64, 226, 227, 228]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Djibouti\"\n },\n \"id\": \"DJI\",\n \"arcs\": [\n [229, 230, 231, 232]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Denmark\"\n },\n \"id\": \"DNK\",\n \"arcs\": [\n [\n [233]\n ],\n [\n [-229, 234]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Dominican Republic\"\n },\n \"id\": \"DOM\",\n \"arcs\": [\n [235, 236]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Algeria\"\n },\n \"id\": \"DZA\",\n \"arcs\": [\n [237, 238, 239, 240, 241, 242, 243, 244]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ecuador\"\n },\n \"id\": \"ECU\",\n \"arcs\": [\n [245, -206, 246]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Egypt\"\n },\n \"id\": \"EGY\",\n \"arcs\": [\n [247, 248, 249, 250, 251]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Eritrea\"\n },\n \"id\": \"ERI\",\n \"arcs\": [\n [252, 253, 254, -233]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Spain\"\n },\n \"id\": \"ESP\",\n \"arcs\": [\n [255, 256, 257, 258]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Estonia\"\n },\n \"id\": \"EST\",\n \"arcs\": [\n [259, 260, 261]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ethiopia\"\n },\n \"id\": \"ETH\",\n \"arcs\": [\n [-232, 262, 263, 264, 265, 266, 267, -253]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Finland\"\n },\n \"id\": \"FIN\",\n \"arcs\": [\n [268, 269, 270, 271]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Fiji\"\n },\n \"id\": \"FJI\",\n \"arcs\": [\n [\n [272]\n ],\n [\n [273, 274]\n ],\n [\n [275, -275]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Falkland Islands\"\n },\n \"id\": \"FLK\",\n \"arcs\": [\n [276]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"France\"\n },\n \"id\": \"FRA\",\n \"arcs\": [\n [\n [277]\n ],\n [\n [278, -225, -163, 279, 280, -257, 281, -66]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"French Guiana\"\n },\n \"id\": \"GUF\",\n \"arcs\": [\n [282, 283, 284, 285, -111]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Gabon\"\n },\n \"id\": \"GAB\",\n \"arcs\": [\n [286, 287, -190, -205]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"United Kingdom\"\n },\n \"id\": \"GBR\",\n \"arcs\": [\n [\n [288, 289]\n ],\n [\n [290]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Georgia\"\n },\n \"id\": \"GEO\",\n \"arcs\": [\n [291, 292, -58, -32, 293]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ghana\"\n },\n \"id\": \"GHA\",\n \"arcs\": [\n [294, -189, -77, 295]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Guinea\"\n },\n \"id\": \"GIN\",\n \"arcs\": [\n [296, 297, 298, 299, 300, 301, -187]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Gambia\"\n },\n \"id\": \"GMB\",\n \"arcs\": [\n [302, 303]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Guinea Bissau\"\n },\n \"id\": \"GNB\",\n \"arcs\": [\n [304, 305, -300]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Equatorial Guinea\"\n },\n \"id\": \"GNQ\",\n \"arcs\": [\n [306, -191, -288]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Greece\"\n },\n \"id\": \"GRC\",\n \"arcs\": [\n [\n [307]\n ],\n [\n [308, -15, 309, -84, 310]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Greenland\"\n },\n \"id\": \"GRL\",\n \"arcs\": [\n [311]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Guatemala\"\n },\n \"id\": \"GTM\",\n \"arcs\": [\n [312, 313, -100, 314, 315, 316]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Guyana\"\n },\n \"id\": \"GUY\",\n \"arcs\": [\n [317, 318, -109, 319]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Honduras\"\n },\n \"id\": \"HND\",\n \"arcs\": [\n [320, 321, -316, 322, 323]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Croatia\"\n },\n \"id\": \"HRV\",\n \"arcs\": [\n [324, -92, 325, 326, 327, 328]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Haiti\"\n },\n \"id\": \"HTI\",\n \"arcs\": [\n [-237, 329]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Hungary\"\n },\n \"id\": \"HUN\",\n \"arcs\": [\n [-48, 330, 331, 332, 333, -329, 334]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Indonesia\"\n },\n \"id\": \"IDN\",\n \"arcs\": [\n [\n [335]\n ],\n [\n [336, 337]\n ],\n [\n [338]\n ],\n [\n [339]\n ],\n [\n [340]\n ],\n [\n [341]\n ],\n [\n [342]\n ],\n [\n [343]\n ],\n [\n [344, 345]\n ],\n [\n [346]\n ],\n [\n [347]\n ],\n [\n [348, 349]\n ],\n [\n [350]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"India\"\n },\n \"id\": \"IND\",\n \"arcs\": [\n [-177, 351, -175, -116, -174, 352, -80, 353, 354]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ireland\"\n },\n \"id\": \"IRL\",\n \"arcs\": [\n [355, -289]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Iran\"\n },\n \"id\": \"IRN\",\n \"arcs\": [\n [356, -6, 357, 358, 359, 360, -55, -34, -57, 361]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Iraq\"\n },\n \"id\": \"IRQ\",\n \"arcs\": [\n [362, 363, 364, 365, 366, 367, -360]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Iceland\"\n },\n \"id\": \"ISL\",\n \"arcs\": [\n [368]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Israel\"\n },\n \"id\": \"ISR\",\n \"arcs\": [\n [369, 370, 371, -252, 372, 373, 374]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Italy\"\n },\n \"id\": \"ITA\",\n \"arcs\": [\n [\n [375]\n ],\n [\n [376]\n ],\n [\n [377, 378, -280, -162, -50]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Jamaica\"\n },\n \"id\": \"JAM\",\n \"arcs\": [\n [379]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Jordan\"\n },\n \"id\": \"JOR\",\n \"arcs\": [\n [-370, 380, -366, 381, 382, -372, 383]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Japan\"\n },\n \"id\": \"JPN\",\n \"arcs\": [\n [\n [384]\n ],\n [\n [385]\n ],\n [\n [386]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Kazakhstan\"\n },\n \"id\": \"KAZ\",\n \"arcs\": [\n [387, 388, 389, 390, -181, 391]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Kenya\"\n },\n \"id\": \"KEN\",\n \"arcs\": [\n [392, 393, 394, 395, -265, 396]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Kyrgyzstan\"\n },\n \"id\": \"KGZ\",\n \"arcs\": [\n [-392, -180, 397, 398]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Cambodia\"\n },\n \"id\": \"KHM\",\n \"arcs\": [\n [399, 400, 401, 402]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"South Korea\"\n },\n \"id\": \"KOR\",\n \"arcs\": [\n [403, 404]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Kosovo\"\n },\n \"id\": \"-99\",\n \"arcs\": [\n [-18, 405, 406, 407]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Kuwait\"\n },\n \"id\": \"KWT\",\n \"arcs\": [\n [408, 409, -364]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Laos\"\n },\n \"id\": \"LAO\",\n \"arcs\": [\n [410, 411, -172, 412, -401]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Lebanon\"\n },\n \"id\": \"LBN\",\n \"arcs\": [\n [-374, 413, 414]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Liberia\"\n },\n \"id\": \"LBR\",\n \"arcs\": [\n [415, 416, -297, -186]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Libya\"\n },\n \"id\": \"LBY\",\n \"arcs\": [\n [417, -245, 418, 419, -250, 420, 421]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Sri Lanka\"\n },\n \"id\": \"LKA\",\n \"arcs\": [\n [422]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Lesotho\"\n },\n \"id\": \"LSO\",\n \"arcs\": [\n [423]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Lithuania\"\n },\n \"id\": \"LTU\",\n \"arcs\": [\n [424, 425, 426, -93, 427]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Luxembourg\"\n },\n \"id\": \"LUX\",\n \"arcs\": [\n [-226, -279, -65]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Latvia\"\n },\n \"id\": \"LVA\",\n \"arcs\": [\n [428, -262, 429, -94, -427]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Morocco\"\n },\n \"id\": \"MAR\",\n \"arcs\": [\n [-242, 430, 431]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Moldova\"\n },\n \"id\": \"MDA\",\n \"arcs\": [\n [432, 433]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Madagascar\"\n },\n \"id\": \"MDG\",\n \"arcs\": [\n [434]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Mexico\"\n },\n \"id\": \"MEX\",\n \"arcs\": [\n [435, -98, -314, 436, 437]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Macedonia\"\n },\n \"id\": \"MKD\",\n \"arcs\": [\n [-408, 438, -85, -310, -14]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Mali\"\n },\n \"id\": \"MLI\",\n \"arcs\": [\n [439, -239, 440, -74, -188, -302, 441]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Myanmar\"\n },\n \"id\": \"MMR\",\n \"arcs\": [\n [442, -78, -353, -173, -412, 443]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Montenegro\"\n },\n \"id\": \"MNE\",\n \"arcs\": [\n [444, -326, -91, 445, -406, -17]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Mongolia\"\n },\n \"id\": \"MNG\",\n \"arcs\": [\n [446, -183]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Mozambique\"\n },\n \"id\": \"MOZ\",\n \"arcs\": [\n [447, 448, 449, 450, 451, 452, 453, 454]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Mauritania\"\n },\n \"id\": \"MRT\",\n \"arcs\": [\n [455, 456, 457, -240, -440]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Malawi\"\n },\n \"id\": \"MWI\",\n \"arcs\": [\n [-455, 458, 459]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Malaysia\"\n },\n \"id\": \"MYS\",\n \"arcs\": [\n [\n [460, 461]\n ],\n [\n [-349, 462, -115, 463]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Namibia\"\n },\n \"id\": \"NAM\",\n \"arcs\": [\n [464, -8, 465, -119, 466]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"New Caledonia\"\n },\n \"id\": \"NCL\",\n \"arcs\": [\n [467]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Niger\"\n },\n \"id\": \"NER\",\n \"arcs\": [\n [-75, -441, -238, -418, 468, -194, 469, -71]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Nigeria\"\n },\n \"id\": \"NGA\",\n \"arcs\": [\n [470, -72, -470, -193]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Nicaragua\"\n },\n \"id\": \"NIC\",\n \"arcs\": [\n [471, -324, 472, -213]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Netherlands\"\n },\n \"id\": \"NLD\",\n \"arcs\": [\n [-227, -63, 473]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Norway\"\n },\n \"id\": \"NOR\",\n \"arcs\": [\n [\n [474, -272, 475, 476]\n ],\n [\n [477]\n ],\n [\n [478]\n ],\n [\n [479]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Nepal\"\n },\n \"id\": \"NPL\",\n \"arcs\": [\n [-352, -176]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"New Zealand\"\n },\n \"id\": \"NZL\",\n \"arcs\": [\n [\n [480]\n ],\n [\n [481]\n ]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Oman\"\n },\n \"id\": \"OMN\",\n \"arcs\": [\n [\n [482, 483, -22, 484]\n ],\n [\n [-20, 485]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Pakistan\"\n },\n \"id\": \"PAK\",\n \"arcs\": [\n [-178, -355, 486, -358, -5]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Panama\"\n },\n \"id\": \"PAN\",\n \"arcs\": [\n [487, -215, 488, -208]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Peru\"\n },\n \"id\": \"PER\",\n \"arcs\": [\n [-167, 489, -247, -211, -106, -102]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Philippines\"\n },\n \"id\": \"PHL\",\n \"arcs\": [\n [\n [490]\n ],\n [\n [491]\n ],\n [\n [492]\n ],\n [\n [493]\n ],\n [\n [494]\n ],\n [\n [495]\n ],\n [\n [496]\n ]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Papua New Guinea\"\n },\n \"id\": \"PNG\",\n \"arcs\": [\n [\n [497]\n ],\n [\n [498]\n ],\n [\n [-345, 499]\n ],\n [\n [500]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Poland\"\n },\n \"id\": \"POL\",\n \"arcs\": [\n [-224, 501, 502, -428, -97, 503, 504, -221]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Puerto Rico\"\n },\n \"id\": \"PRI\",\n \"arcs\": [\n [505]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"North Korea\"\n },\n \"id\": \"PRK\",\n \"arcs\": [\n [506, 507, -405, 508, -169]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Portugal\"\n },\n \"id\": \"PRT\",\n \"arcs\": [\n [-259, 509]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Paraguay\"\n },\n \"id\": \"PRY\",\n \"arcs\": [\n [-104, -105, -26]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Qatar\"\n },\n \"id\": \"QAT\",\n \"arcs\": [\n [510, 511]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Romania\"\n },\n \"id\": \"ROU\",\n \"arcs\": [\n [512, -434, 513, 514, -81, 515, -333]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Russia\"\n },\n \"id\": \"RUS\",\n \"arcs\": [\n [\n [516]\n ],\n [\n [-503, 517, -425]\n ],\n [\n [518, 519]\n ],\n [\n [520]\n ],\n [\n [521]\n ],\n [\n [522]\n ],\n [\n [523]\n ],\n [\n [524]\n ],\n [\n [525]\n ],\n [\n [526, -507, -184, -447, -182, -391, 527, -59, -293, 528, 529, -95, -430, -261, 530, -269, -475, 531, -520]\n ],\n [\n [532]\n ],\n [\n [533]\n ],\n [\n [534]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Rwanda\"\n },\n \"id\": \"RWA\",\n \"arcs\": [\n [535, -61, -198, 536]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Western Sahara\"\n },\n \"id\": \"ESH\",\n \"arcs\": [\n [-241, -458, 537, -431]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Saudi Arabia\"\n },\n \"id\": \"SAU\",\n \"arcs\": [\n [538, -382, -365, -410, 539, -512, 540, -23, -484, 541]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Sudan\"\n },\n \"id\": \"SDN\",\n \"arcs\": [\n [542, 543, -123, 544, -421, -249, 545, -254, -268, 546]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"South Sudan\"\n },\n \"id\": \"SSD\",\n \"arcs\": [\n [547, -266, -396, 548, -203, -125, 549, -543]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Senegal\"\n },\n \"id\": \"SEN\",\n \"arcs\": [\n [550, -456, -442, -301, -306, 551, -304]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Solomon Islands\"\n },\n \"id\": \"SLB\",\n \"arcs\": [\n [\n [552]\n ],\n [\n [553]\n ],\n [\n [554]\n ],\n [\n [555]\n ],\n [\n [556]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Sierra Leone\"\n },\n \"id\": \"SLE\",\n \"arcs\": [\n [557, -298, -417]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"El Salvador\"\n },\n \"id\": \"SLV\",\n \"arcs\": [\n [558, -317, -322]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Somaliland\"\n },\n \"id\": \"-99\",\n \"arcs\": [\n [-263, -231, 559, 560]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Somalia\"\n },\n \"id\": \"SOM\",\n \"arcs\": [\n [-397, -264, -561, 561]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Republic of Serbia\"\n },\n \"id\": \"SRB\",\n \"arcs\": [\n [-86, -439, -407, -446, -90, -325, -334, -516]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Suriname\"\n },\n \"id\": \"SUR\",\n \"arcs\": [\n [562, -285, 563, -283, -110, -319]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Slovakia\"\n },\n \"id\": \"SVK\",\n \"arcs\": [\n [-505, 564, -331, -54, -222]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Slovenia\"\n },\n \"id\": \"SVN\",\n \"arcs\": [\n [-49, -335, -328, 565, -378]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Sweden\"\n },\n \"id\": \"SWE\",\n \"arcs\": [\n [-476, -271, 566]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Swaziland\"\n },\n \"id\": \"SWZ\",\n \"arcs\": [\n [567, -451]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Syria\"\n },\n \"id\": \"SYR\",\n \"arcs\": [\n [-381, -375, -415, 568, 569, -367]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Chad\"\n },\n \"id\": \"TCD\",\n \"arcs\": [\n [-469, -422, -545, -122, -195]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Togo\"\n },\n \"id\": \"TGO\",\n \"arcs\": [\n [570, -296, -76, -69]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Thailand\"\n },\n \"id\": \"THA\",\n \"arcs\": [\n [571, -462, 572, -444, -411, -400]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Tajikistan\"\n },\n \"id\": \"TJK\",\n \"arcs\": [\n [-398, -179, -3, 573]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Turkmenistan\"\n },\n \"id\": \"TKM\",\n \"arcs\": [\n [-357, 574, -389, 575, -1]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"East Timor\"\n },\n \"id\": \"TLS\",\n \"arcs\": [\n [576, -337]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Trinidad and Tobago\"\n },\n \"id\": \"TTO\",\n \"arcs\": [\n [577]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Tunisia\"\n },\n \"id\": \"TUN\",\n \"arcs\": [\n [-244, 578, -419]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Turkey\"\n },\n \"id\": \"TUR\",\n \"arcs\": [\n [\n [-294, -36, -361, -368, -570, 579]\n ],\n [\n [-311, -83, 580]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Taiwan\"\n },\n \"id\": \"TWN\",\n \"arcs\": [\n [581]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"United Republic of Tanzania\"\n },\n \"id\": \"TZA\",\n \"arcs\": [\n [-394, 582, -448, -460, 583, -199, -62, -536, 584]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Uganda\"\n },\n \"id\": \"UGA\",\n \"arcs\": [\n [-537, -197, -549, -395, -585]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ukraine\"\n },\n \"id\": \"UKR\",\n \"arcs\": [\n [-530, 585, -514, -433, -513, -332, -565, -504, -96]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Uruguay\"\n },\n \"id\": \"URY\",\n \"arcs\": [\n [-113, 586, -28]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"United States of America\"\n },\n \"id\": \"USA\",\n \"arcs\": [\n [\n [587]\n ],\n [\n [588]\n ],\n [\n [589]\n ],\n [\n [590]\n ],\n [\n [591]\n ],\n [\n [592, -438, 593, -139]\n ],\n [\n [594]\n ],\n [\n [595]\n ],\n [\n [596]\n ],\n [\n [-141, 597]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Uzbekistan\"\n },\n \"id\": \"UZB\",\n \"arcs\": [\n [-576, -388, -399, -574, -2]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Venezuela\"\n },\n \"id\": \"VEN\",\n \"arcs\": [\n [598, -320, -108, -210]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Vietnam\"\n },\n \"id\": \"VNM\",\n \"arcs\": [\n [599, -402, -413, -171]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Vanuatu\"\n },\n \"id\": \"VUT\",\n \"arcs\": [\n [\n [600]\n ],\n [\n [601]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"West Bank\"\n },\n \"id\": \"PSE\",\n \"arcs\": [\n [-384, -371]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Yemen\"\n },\n \"id\": \"YEM\",\n \"arcs\": [\n [602, -542, -483]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"South Africa\"\n },\n \"id\": \"ZAF\",\n \"arcs\": [\n [-467, -118, 603, -452, -568, -450, 604],\n [-424]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Zambia\"\n },\n \"id\": \"ZMB\",\n \"arcs\": [\n [-459, -454, 605, -120, -466, -7, -200, -584]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Zimbabwe\"\n },\n \"id\": \"ZWE\",\n \"arcs\": [\n [-604, -121, -606, -453]\n ]\n }]\n }\n },\n \"arcs\": [\n [\n [6700, 7164],\n [28, -23],\n [21, 8],\n [6, 27],\n [22, 9],\n [15, 18],\n [6, 47],\n [23, 11],\n [5, 21],\n [13, -15],\n [8, -2]\n ],\n [\n [6847, 7265],\n [16, -1],\n [20, -12]\n ],\n [\n [6883, 7252],\n [9, -7],\n [20, 19],\n [9, -12],\n [9, 27],\n [17, -1],\n [4, 9],\n [3, 24],\n [12, 20],\n [15, -13],\n [-3, -18],\n [9, -3],\n [-3, -50],\n [11, -19],\n [10, 12],\n [12, 6],\n [17, 27],\n [19, -5],\n [29, 0]\n ],\n [\n [7082, 7268],\n [5, -17]\n ],\n [\n [7087, 7251],\n [-16, -6],\n [-14, -11],\n [-32, -7],\n [-30, -13],\n [-16, -25],\n [6, -25],\n [4, -30],\n [-14, -25],\n [1, -22],\n [-8, -22],\n [-26, 2],\n [11, -39],\n [-18, -15],\n [-12, -35],\n [2, -36],\n [-11, -16],\n [-10, 5],\n [-22, -8],\n [-3, -16],\n [-20, 0],\n [-16, -34],\n [-1, -50],\n [-36, -24],\n [-19, 5],\n [-6, -13],\n [-16, 7],\n [-28, -8],\n [-47, 30]\n ],\n [\n [6690, 6820],\n [25, 53],\n [-2, 38],\n [-21, 10],\n [-2, 38],\n [-9, 47],\n [12, 32],\n [-12, 9],\n [7, 43],\n [12, 74]\n ],\n [\n [5664, 4412],\n [3, -18],\n [-4, -29],\n [5, -28],\n [-4, -22],\n [3, -20],\n [-58, 1],\n [-2, -188],\n [19, -49],\n [18, -37]\n ],\n [\n [5644, 4022],\n [-51, -24],\n [-67, 9],\n [-19, 28],\n [-113, -3],\n [-4, -4],\n [-17, 27],\n [-18, 2],\n [-16, -10],\n [-14, -12]\n ],\n [\n [5325, 4035],\n [-2, 38],\n [4, 51],\n [9, 55],\n [2, 25],\n [9, 53],\n [6, 24],\n [16, 39],\n [9, 26],\n [3, 44],\n [-1, 34],\n [-9, 21],\n [-7, 36],\n [-7, 35],\n [2, 12],\n [8, 24],\n [-8, 57],\n [-6, 39],\n [-14, 38],\n [3, 11]\n ],\n [\n [5342, 4697],\n [11, 8],\n [8, -1],\n [10, 7],\n [82, -1],\n [7, -44],\n [8, -35],\n [6, -19],\n [11, -31],\n [18, 5],\n [9, 8],\n [16, -8],\n [4, 14],\n [7, 35],\n [17, 2],\n [2, 10],\n [14, 1],\n [-3, -22],\n [34, 1],\n [1, -37],\n [5, -23],\n [-4, -36],\n [2, -36],\n [9, -22],\n [-1, -70],\n [7, 5],\n [12, -1],\n [17, 8],\n [13, -3]\n ],\n [\n [5338, 4715],\n [-8, 45]\n ],\n [\n [5330, 4760],\n [12, 25],\n [8, 10],\n [10, -20]\n ],\n [\n [5360, 4775],\n [-10, -12],\n [-4, -16],\n [-1, -25],\n [-7, -7]\n ],\n [\n [5571, 7530],\n [-3, -20],\n [4, -25],\n [11, -15]\n ],\n [\n [5583, 7470],\n [0, -15],\n [-9, -9],\n [-2, -19],\n [-13, -29]\n ],\n [\n [5559, 7398],\n [-5, 5],\n [0, 13],\n [-15, 19],\n [-3, 29],\n [2, 40],\n [4, 18],\n [-4, 10]\n ],\n [\n [5538, 7532],\n [-2, 18],\n [12, 29],\n [1, -11],\n [8, 6]\n ],\n [\n [5557, 7574],\n [6, -16],\n [7, -6],\n [1, -22]\n ],\n [\n [6432, 6490],\n [5, 3],\n [1, -16],\n [22, 9],\n [23, -2],\n [17, -1],\n [19, 39],\n [20, 38],\n [18, 37]\n ],\n [\n [6557, 6597],\n [5, -20]\n ],\n [\n [6562, 6577],\n [4, -47]\n ],\n [\n [6566, 6530],\n [-14, 0],\n [-3, -39],\n [5, -8],\n [-12, -12],\n [0, -24],\n [-8, -24],\n [-1, -24]\n ],\n [\n [6533, 6399],\n [-6, -12],\n [-83, 29],\n [-11, 60],\n [-1, 14]\n ],\n [\n [3140, 1814],\n [-17, 2],\n [-30, 0],\n [0, 132]\n ],\n [\n [3093, 1948],\n [11, -27],\n [14, -45],\n [36, -35],\n [39, -15],\n [-13, -30],\n [-26, -2],\n [-14, 20]\n ],\n [\n [3258, 3743],\n [51, -96],\n [23, -9],\n [34, -44],\n [29, -23],\n [4, -26],\n [-28, -90],\n [28, -16],\n [32, -9],\n [22, 10],\n [25, 45],\n [4, 52]\n ],\n [\n [3482, 3537],\n [14, 11],\n [14, -34],\n [-1, -47],\n [-23, -33],\n [-19, -24],\n [-31, -57],\n [-37, -81]\n ],\n [\n [3399, 3272],\n [-7, -47],\n [-7, -61],\n [0, -58],\n [-6, -14],\n [-2, -38]\n ],\n [\n [3377, 3054],\n [-2, -31],\n [35, -50],\n [-4, -41],\n [18, -26],\n [-2, -29],\n [-26, -75],\n [-42, -32],\n [-55, -12],\n [-31, 6],\n [6, -36],\n [-6, -44],\n [5, -30],\n [-16, -20],\n [-29, -8],\n [-26, 21],\n [-11, -15],\n [4, -59],\n [18, -18],\n [16, 19],\n [8, -31],\n [-26, -18],\n [-22, -37],\n [-4, -59],\n [-7, -32],\n [-26, 0],\n [-22, -31],\n [-8, -44],\n [28, -43],\n [26, -12],\n [-9, -53],\n [-33, -33],\n [-18, -70],\n [-25, -23],\n [-12, -28],\n [9, -61],\n [19, -34],\n [-12, 3]\n ],\n [\n [3095, 1968],\n [-26, 9],\n [-67, 8],\n [-11, 34],\n [0, 45],\n [-18, -4],\n [-10, 21],\n [-3, 63],\n [22, 26],\n [9, 37],\n [-4, 30],\n [15, 51],\n [10, 78],\n [-3, 35],\n [12, 11],\n [-3, 22],\n [-13, 12],\n [10, 25],\n [-13, 22],\n [-6, 68],\n [11, 12],\n [-5, 72],\n [7, 61],\n [7, 52],\n [17, 22],\n [-9, 58],\n [0, 54],\n [21, 38],\n [-1, 50],\n [16, 57],\n [0, 55],\n [-7, 11],\n [-13, 102],\n [17, 60],\n [-2, 58],\n [10, 53],\n [18, 56],\n [20, 36],\n [-9, 24],\n [6, 19],\n [-1, 98],\n [30, 29],\n [10, 62],\n [-3, 14]\n ],\n [\n [3136, 3714],\n [23, 54],\n [36, -15],\n [16, -42],\n [11, 47],\n [32, -2],\n [4, -13]\n ],\n [\n [6210, 7485],\n [39, 9]\n ],\n [\n [6249, 7494],\n [5, -15],\n [11, -10],\n [-6, -15],\n [15, -21],\n [-8, -18],\n [12, -16],\n [13, -10],\n [0, -41]\n ],\n [\n [6291, 7348],\n [-10, -2]\n ],\n [\n [6281, 7346],\n [-11, 34],\n [0, 10],\n [-12, -1],\n [-9, 16],\n [-5, -1]\n ],\n [\n [6244, 7404],\n [-11, 17],\n [-21, 15],\n [3, 28],\n [-5, 21]\n ],\n [\n [3345, 329],\n [-8, -30],\n [-8, -27],\n [-59, 8],\n [-62, -3],\n [-34, 20],\n [0, 2],\n [-16, 17],\n [63, -2],\n [60, -6],\n [20, 24],\n [15, 21],\n [29, -24]\n ],\n [\n [577, 361],\n [-53, -8],\n [-36, 21],\n [-17, 21],\n [-1, 3],\n [-18, 16],\n [17, 22],\n [52, -9],\n [28, -18],\n [21, -21],\n [7, -27]\n ],\n [\n [3745, 447],\n [35, -26],\n [12, -36],\n [3, -25],\n [1, -30],\n [-43, -19],\n [-45, -15],\n [-52, -14],\n [-59, -11],\n [-65, 3],\n [-37, 20],\n [5, 24],\n [59, 16],\n [24, 20],\n [18, 26],\n [12, 22],\n [17, 20],\n [18, 25],\n [14, 0],\n [41, 12],\n [42, -12]\n ],\n [\n [1633, 715],\n [36, -9],\n [33, 10],\n [-16, -20],\n [-26, -15],\n [-39, 4],\n [-27, 21],\n [6, 20],\n [33, -11]\n ],\n [\n [1512, 716],\n [43, -23],\n [-17, 3],\n [-36, 5],\n [-38, 17],\n [20, 12],\n [28, -14]\n ],\n [\n [2250, 808],\n [31, -8],\n [30, 7],\n [17, -34],\n [-22, 5],\n [-34, -2],\n [-34, 2],\n [-38, -4],\n [-28, 12],\n [-15, 24],\n [18, 11],\n [35, -8],\n [40, -5]\n ],\n [\n [3098, 866],\n [4, -27],\n [-5, -23],\n [-8, -22],\n [-33, -8],\n [-31, -12],\n [-36, 1],\n [14, 24],\n [-33, -9],\n [-31, -8],\n [-21, 18],\n [-2, 24],\n [30, 23],\n [20, 7],\n [32, -2],\n [8, 30],\n [1, 22],\n [0, 47],\n [16, 28],\n [25, 9],\n [15, -22],\n [6, -22],\n [12, -26],\n [10, -26],\n [7, -26]\n ],\n [\n [3371, 1268],\n [-11, -13],\n [-21, 9],\n [-23, -6],\n [-19, -14],\n [-20, -15],\n [-14, -17],\n [-4, -23],\n [2, -22],\n [13, -20],\n [-19, -14],\n [-26, -4],\n [-15, -20],\n [-17, -19],\n [-17, -25],\n [-4, -22],\n [9, -24],\n [15, -19],\n [23, -14],\n [21, -18],\n [12, -23],\n [6, -22],\n [8, -24],\n [13, -19],\n [8, -22],\n [4, -55],\n [8, -22],\n [2, -23],\n [9, -23],\n [-4, -31],\n [-15, -24],\n [-17, -20],\n [-37, -8],\n [-12, -21],\n [-17, -20],\n [-42, -22],\n [-37, -9],\n [-35, -13],\n [-37, -13],\n [-22, -24],\n [-45, -2],\n [-49, 2],\n [-44, -4],\n [-47, 0],\n [9, -24],\n [42, -10],\n [31, -16],\n [18, -21],\n [-31, -19],\n [-48, 6],\n [-40, -15],\n [-2, -24],\n [-1, -23],\n [33, -20],\n [6, -22],\n [35, -22],\n [59, -9],\n [50, -16],\n [40, -19],\n [50, -18],\n [70, -10],\n [68, -16],\n [47, -17],\n [52, -20],\n [27, -28],\n [13, -22],\n [34, 21],\n [46, 17],\n [48, 19],\n [58, 15],\n [49, 16],\n [69, 1],\n [68, -8],\n [56, -14],\n [18, 26],\n [39, 17],\n [70, 1],\n [55, 13],\n [52, 13],\n [58, 8],\n [62, 10],\n [43, 15],\n [-20, 21],\n [-12, 21],\n [0, 22],\n [-54, -2],\n [-57, -10],\n [-54, 0],\n [-8, 22],\n [4, 44],\n [12, 13],\n [40, 14],\n [47, 14],\n [34, 17],\n [33, 18],\n [25, 23],\n [38, 10],\n [38, 8],\n [19, 5],\n [43, 2],\n [41, 8],\n [34, 12],\n [34, 14],\n [30, 14],\n [39, 18],\n [24, 20],\n [26, 17],\n [9, 24],\n [-30, 13],\n [10, 25],\n [18, 18],\n [29, 12],\n [31, 14],\n [28, 18],\n [22, 23],\n [13, 28],\n [21, 16],\n [33, -3],\n [13, -20],\n [34, -2],\n [1, 22],\n [14, 23],\n [30, -6],\n [7, -22],\n [33, -3],\n [36, 10],\n [35, 7],\n [31, -3],\n [12, -25],\n [31, 20],\n [28, 10],\n [31, 9],\n [31, 8],\n [29, 14],\n [31, 9],\n [24, 13],\n [17, 20],\n [20, -15],\n [29, 8],\n [20, -27],\n [16, -21],\n [32, 11],\n [12, 24],\n [28, 16],\n [37, -4],\n [11, -22],\n [22, 22],\n [30, 7],\n [33, 3],\n [29, -2],\n [31, -7],\n [30, -3],\n [13, -20],\n [18, -17],\n [31, 10],\n [32, 3],\n [32, 0],\n [31, 1],\n [28, 8],\n [29, 7],\n [25, 16],\n [26, 11],\n [28, 5],\n [21, 17],\n [15, 32],\n [16, 20],\n [29, -10],\n [11, -21],\n [24, -13],\n [29, 4],\n [19, -21],\n [21, -15],\n [28, 14],\n [10, 26],\n [25, 10],\n [29, 20],\n [27, 8],\n [33, 11],\n [22, 13],\n [22, 14],\n [22, 13],\n [26, -7],\n [25, 21],\n [18, 16],\n [26, -1],\n [23, 14],\n [6, 21],\n [23, 16],\n [23, 11],\n [28, 10],\n [25, 4],\n [25, -3],\n [26, -6],\n [22, -16],\n [3, -26],\n [24, -19],\n [17, -17],\n [33, -7],\n [19, -16],\n [23, -16],\n [26, -3],\n [23, 11],\n [24, 24],\n [26, -12],\n [27, -7],\n [26, -7],\n [27, -5],\n [28, 0],\n [23, -61],\n [-1, -15],\n [-4, -27],\n [-26, -15],\n [-22, -22],\n [4, -23],\n [31, 1],\n [-4, -23],\n [-14, -22],\n [-13, -24],\n [21, -19],\n [32, -6],\n [32, 11],\n [15, 23],\n [10, 22],\n [15, 18],\n [17, 18],\n [7, 21],\n [15, 29],\n [18, 5],\n [31, 3],\n [28, 7],\n [28, 9],\n [14, 23],\n [8, 22],\n [19, 22],\n [27, 15],\n [23, 12],\n [16, 19],\n [15, 11],\n [21, 9],\n [27, -6],\n [25, 6],\n [28, 7],\n [30, -4],\n [20, 17],\n [14, 39],\n [11, -16],\n [13, -28],\n [23, -12],\n [27, -4],\n [26, 7],\n [29, -5],\n [26, -1],\n [17, 6],\n [24, -4],\n [21, -12],\n [25, 8],\n [30, 0],\n [25, 8],\n [29, -8],\n [19, 19],\n [14, 20],\n [19, 16],\n [35, 44],\n [18, -8],\n [21, -16],\n [18, -21],\n [36, -36],\n [27, -1],\n [25, 0],\n [30, 7],\n [30, 8],\n [23, 16],\n [19, 18],\n [31, 2],\n [21, 13],\n [22, -12],\n [14, -18],\n [19, -19],\n [31, 2],\n [19, -15],\n [33, -15],\n [35, -5],\n [29, 4],\n [21, 19],\n [19, 18],\n [25, 5],\n [25, -8],\n [29, -6],\n [26, 9],\n [25, 0],\n [24, -6],\n [26, -5],\n [25, 10],\n [30, 9],\n [28, 3],\n [32, 0],\n [25, 5],\n [25, 5],\n [8, 29],\n [1, 24],\n [17, -16],\n [5, -27],\n [10, -24],\n [11, -20],\n [23, -10],\n [32, 4],\n [36, 1],\n [25, 3],\n [37, 0],\n [26, 1],\n [36, -2],\n [31, -5],\n [20, -18],\n [-5, -22],\n [18, -18],\n [30, -13],\n [31, -15],\n [35, -11],\n [38, -9],\n [28, -9],\n [32, -2],\n [18, 20],\n [24, -16],\n [21, -19],\n [25, -13],\n [34, -6],\n [32, -7],\n [13, -23],\n [32, -14],\n [21, -21],\n [31, -9],\n [32, 1],\n [30, -4],\n [33, 1],\n [34, -4],\n [31, -8],\n [28, -14],\n [29, -12],\n [20, -17],\n [-3, -23],\n [-15, -21],\n [-13, -27],\n [-9, -21],\n [-14, -24],\n [-36, -9],\n [-16, -21],\n [-36, -13],\n [-13, -23],\n [-19, -22],\n [-20, -18],\n [-11, -25],\n [-7, -22],\n [-3, -26],\n [0, -22],\n [16, -23],\n [6, -22],\n [13, -21],\n [52, -8],\n [11, -26],\n [-50, -9],\n [-43, -13],\n [-52, -2],\n [-24, -34],\n [-5, -27],\n [-12, -22],\n [-14, -22],\n [37, -20],\n [14, -24],\n [24, -22],\n [33, -20],\n [39, -19],\n [42, -18],\n [64, -19],\n [14, -29],\n [80, -12],\n [5, -5],\n [21, -17],\n [77, 15],\n [63, -19],\n [48, -14],\n [-9997, -1],\n [24, 35],\n [50, -19],\n [3, 2],\n [30, 19],\n [4, 0],\n [3, -1],\n [40, -25],\n [35, 25],\n [7, 3],\n [81, 11],\n [27, -14],\n [13, -7],\n [41, -20],\n [79, -15],\n [63, -18],\n [107, -14],\n [80, 16],\n [118, -11],\n [67, -19],\n [73, 17],\n [78, 17],\n [6, 27],\n [-110, 3],\n [-89, 14],\n [-24, 23],\n [-74, 12],\n [5, 27],\n [10, 24],\n [10, 22],\n [-5, 25],\n [-46, 16],\n [-22, 21],\n [-43, 18],\n [68, -3],\n [64, 9],\n [40, -20],\n [50, 18],\n [45, 22],\n [23, 19],\n [-10, 25],\n [-36, 16],\n [-41, 17],\n [-57, 4],\n [-50, 8],\n [-54, 6],\n [-18, 22],\n [-36, 18],\n [-21, 21],\n [-9, 67],\n [14, -6],\n [25, -18],\n [45, 6],\n [44, 8],\n [23, -26],\n [44, 6],\n [37, 13],\n [35, 16],\n [32, 20],\n [41, 5],\n [-1, 22],\n [-9, 22],\n [8, 21],\n [36, 11],\n [16, -20],\n [42, 12],\n [32, 15],\n [40, 1],\n [38, 6],\n [37, 13],\n [30, 13],\n [34, 13],\n [22, -4],\n [19, -4],\n [41, 8],\n [37, -10],\n [38, 1],\n [37, 8],\n [37, -6],\n [41, -6],\n [39, 3],\n [40, -2],\n [42, -1],\n [38, 3],\n [28, 17],\n [34, 9],\n [35, -13],\n [33, 11],\n [30, 21],\n [18, -19],\n [9, -21],\n [18, -19],\n [29, 17],\n [33, -22],\n [38, -7],\n [32, -16],\n [39, 3],\n [36, 11],\n [41, -3],\n [38, -8],\n [38, -10],\n [15, 25],\n [-18, 20],\n [-14, 21],\n [-36, 5],\n [-15, 22],\n [-6, 22],\n [-10, 43],\n [21, -8],\n [36, -3],\n [36, 3],\n [33, -9],\n [28, -17],\n [12, -21],\n [38, -4],\n [36, 9],\n [38, 11],\n [34, 7],\n [28, -14],\n [37, 5],\n [24, 45],\n [23, -27],\n [32, -10],\n [34, 6],\n [23, -23],\n [37, -3],\n [33, -7],\n [34, -12],\n [21, 22],\n [11, 20],\n [28, -23],\n [38, 6],\n [28, -13],\n [19, -19],\n [37, 5],\n [29, 13],\n [29, 15],\n [33, 8],\n [39, 7],\n [36, 8],\n [27, 13],\n [16, 19],\n [7, 25],\n [-3, 24],\n [-9, 24],\n [-10, 23],\n [-9, 23],\n [-7, 21],\n [-1, 23],\n [2, 23],\n [13, 22],\n [11, 24],\n [5, 23],\n [-6, 26],\n [-3, 23],\n [14, 27],\n [15, 17],\n [18, 22],\n [19, 19],\n [22, 17],\n [11, 25],\n [15, 17],\n [18, 15],\n [26, 3],\n [18, 19],\n [19, 11],\n [23, 7],\n [20, 15],\n [16, 19],\n [22, 7],\n [16, -15],\n [-10, -20],\n [-29, -17]\n ],\n [\n [6914, 2185],\n [18, -19],\n [26, -7],\n [1, -11],\n [-7, -27],\n [-43, -4],\n [-1, 31],\n [4, 25],\n [2, 12]\n ],\n [\n [9038, 2648],\n [27, -21],\n [15, 8],\n [22, 12],\n [16, -4],\n [2, -70],\n [-9, -21],\n [-3, -47],\n [-10, 16],\n [-19, -41],\n [-6, 3],\n [-17, 2],\n [-17, 50],\n [-4, 39],\n [-16, 52],\n [1, 27],\n [18, -5]\n ],\n [\n [8987, 4244],\n [10, -46],\n [18, 22],\n [9, -25],\n [13, -23],\n [-3, -26],\n [6, -51],\n [5, -29],\n [7, -7],\n [7, -51],\n [-3, -30],\n [9, -40],\n [31, -31],\n [19, -28],\n [19, -26],\n [-4, -14],\n [16, -37],\n [11, -64],\n [11, 13],\n [11, -26],\n [7, 9],\n [5, -63],\n [19, -36],\n [13, -22],\n [22, -48],\n [8, -48],\n [1, -33],\n [-2, -37],\n [13, -50],\n [-2, -52],\n [-5, -28],\n [-7, -52],\n [1, -34],\n [-6, -43],\n [-12, -53],\n [-21, -29],\n [-10, -46],\n [-9, -29],\n [-8, -51],\n [-11, -30],\n [-7, -44],\n [-4, -41],\n [2, -18],\n [-16, -21],\n [-31, -2],\n [-26, -24],\n [-13, -23],\n [-17, -26],\n [-23, 27],\n [-17, 10],\n [5, 31],\n [-15, -11],\n [-25, -43],\n [-24, 16],\n [-15, 9],\n [-16, 4],\n [-27, 17],\n [-18, 37],\n [-5, 45],\n [-7, 30],\n [-13, 24],\n [-27, 7],\n [9, 28],\n [-7, 44],\n [-13, -41],\n [-25, -11],\n [14, 33],\n [5, 34],\n [10, 29],\n [-2, 44],\n [-22, -50],\n [-18, -21],\n [-10, -47],\n [-22, 25],\n [1, 31],\n [-18, 43],\n [-14, 22],\n [5, 14],\n [-36, 35],\n [-19, 2],\n [-27, 29],\n [-50, -6],\n [-36, -21],\n [-31, -20],\n [-27, 4],\n [-29, -30],\n [-24, -14],\n [-6, -31],\n [-10, -24],\n [-23, -1],\n [-18, -5],\n [-24, 10],\n [-20, -6],\n [-19, -3],\n [-17, -31],\n [-8, 2],\n [-14, -16],\n [-13, -19],\n [-21, 2],\n [-18, 0],\n [-30, 38],\n [-15, 11],\n [1, 34],\n [14, 8],\n [4, 14],\n [-1, 21],\n [4, 41],\n [-3, 35],\n [-15, 60],\n [-4, 33],\n [1, 34],\n [-11, 38],\n [-1, 18],\n [-12, 23],\n [-4, 47],\n [-16, 46],\n [-4, 26],\n [13, -26],\n [-10, 55],\n [14, -17],\n [8, -23],\n [0, 30],\n [-14, 47],\n [-3, 18],\n [-6, 18],\n [3, 34],\n [6, 15],\n [4, 29],\n [-3, 35],\n [11, 42],\n [2, -45],\n [12, 41],\n [22, 20],\n [14, 25],\n [21, 22],\n [13, 4],\n [7, -7],\n [22, 22],\n [17, 6],\n [4, 13],\n [8, 6],\n [15, -2],\n [29, 18],\n [15, 26],\n [7, 31],\n [17, 30],\n [1, 24],\n [1, 32],\n [19, 50],\n [12, -51],\n [12, 12],\n [-10, 28],\n [9, 29],\n [12, -13],\n [3, 45],\n [15, 29],\n [7, 23],\n [14, 10],\n [0, 17],\n [13, -7],\n [0, 15],\n [12, 8],\n [14, 8],\n [20, -27],\n [16, -35],\n [17, 0],\n [18, -6],\n [-6, 33],\n [13, 47],\n [13, 15],\n [-5, 15],\n [12, 34],\n [17, 21],\n [14, -7],\n [24, 11],\n [-1, 30],\n [-20, 19],\n [15, 9],\n [18, -15],\n [15, -24],\n [23, -15],\n [8, 6],\n [17, -18],\n [17, 17],\n [10, -5],\n [7, 11],\n [12, -29],\n [-7, -32],\n [-11, -24],\n [-9, -2],\n [3, -23],\n [-8, -30],\n [-10, -29],\n [2, -17],\n [22, -32],\n [21, -19],\n [15, -20],\n [20, -35],\n [8, 0],\n [14, -15],\n [4, -19],\n [27, -20],\n [18, 20],\n [6, 32],\n [5, 26],\n [4, 33],\n [8, 47],\n [-4, 28],\n [2, 17],\n [-3, 34],\n [4, 45],\n [5, 12],\n [-4, 20],\n [7, 31],\n [5, 32],\n [1, 17],\n [10, 22],\n [8, -29],\n [2, -37],\n [7, -7],\n [1, -25],\n [10, -30],\n [2, -33],\n [-1, -22]\n ],\n [\n [5471, 7900],\n [-2, -24],\n [-16, 0],\n [6, -13],\n [-9, -38]\n ],\n [\n [5450, 7825],\n [-6, -10],\n [-24, -1],\n [-14, -13],\n [-23, 4]\n ],\n [\n [5383, 7805],\n [-40, 15],\n [-6, 21],\n [-27, -10],\n [-4, -12],\n [-16, 9]\n ],\n [\n [5290, 7828],\n [-15, 1],\n [-12, 11],\n [4, 15],\n [-1, 10]\n ],\n [\n [5266, 7865],\n [8, 3],\n [14, -16],\n [4, 16],\n [25, -3],\n [20, 11],\n [13, -2],\n [9, -12],\n [2, 10],\n [-4, 38],\n [10, 8],\n [10, 27]\n ],\n [\n [5377, 7945],\n [21, -19],\n [15, 24],\n [10, 5],\n [22, -18],\n [13, 3],\n [13, -12]\n ],\n [\n [5471, 7928],\n [-3, -7],\n [3, -21]\n ],\n [\n [6281, 7346],\n [-19, 8],\n [-14, 27],\n [-4, 23]\n ],\n [\n [6349, 7527],\n [15, -31],\n [14, -42],\n [13, -2],\n [8, -16],\n [-23, -5],\n [-5, -46],\n [-4, -21],\n [-11, -13],\n [1, -30]\n ],\n [\n [6357, 7321],\n [-7, -3],\n [-17, 31],\n [10, 30],\n [-9, 17],\n [-10, -4],\n [-33, -44]\n ],\n [\n [6249, 7494],\n [6, 10],\n [21, -17],\n [15, -4],\n [4, 7],\n [-14, 32],\n [7, 9]\n ],\n [\n [6288, 7531],\n [8, -2],\n [19, -36],\n [13, -4],\n [4, 15],\n [17, 23]\n ],\n [\n [5814, 4792],\n [-1, 71],\n [-7, 27]\n ],\n [\n [5806, 4890],\n [17, -5],\n [8, 34],\n [15, -4]\n ],\n [\n [5846, 4915],\n [1, -23],\n [6, -14],\n [1, -19],\n [-7, -12],\n [-11, -31],\n [-10, -22],\n [-12, -2]\n ],\n [\n [5092, 8091],\n [20, -5],\n [26, 12],\n [17, -25],\n [16, -14]\n ],\n [\n [5171, 8059],\n [-4, -40]\n ],\n [\n [5167, 8019],\n [-7, -2],\n [-3, -33]\n ],\n [\n [5157, 7984],\n [-24, 26],\n [-14, -4],\n [-20, 28],\n [-13, 23],\n [-13, 1],\n [-4, 21]\n ],\n [\n [5069, 8079],\n [23, 12]\n ],\n [\n [5074, 5427],\n [-23, -7]\n ],\n [\n [5051, 5420],\n [-7, 41],\n [2, 136],\n [-6, 12],\n [-1, 29],\n [-10, 21],\n [-8, 17],\n [3, 31]\n ],\n [\n [5024, 5707],\n [10, 7],\n [6, 26],\n [13, 5],\n [6, 18]\n ],\n [\n [5059, 5763],\n [10, 17],\n [10, 0],\n [21, -34]\n ],\n [\n [5100, 5746],\n [-1, -19],\n [6, -35],\n [-6, -24],\n [3, -16],\n [-13, -37],\n [-9, -18],\n [-5, -37],\n [1, -38],\n [-2, -95]\n ],\n [\n [4921, 5627],\n [-19, 15],\n [-13, -2],\n [-10, -15],\n [-12, 13],\n [-5, 19],\n [-13, 13]\n ],\n [\n [4849, 5670],\n [-1, 34],\n [7, 26],\n [-1, 20],\n [23, 48],\n [4, 41],\n [7, 14],\n [14, -8],\n [11, 12],\n [4, 16],\n [22, 26],\n [5, 19],\n [26, 24],\n [15, 9],\n [7, -12],\n [18, 0]\n ],\n [\n [5010, 5939],\n [-2, -28],\n [3, -27],\n [16, -39],\n [1, -28],\n [32, -14],\n [-1, -40]\n ],\n [\n [5024, 5707],\n [-24, 1]\n ],\n [\n [5000, 5708],\n [-13, 5],\n [-9, -9],\n [-12, 4],\n [-48, -3],\n [-1, -33],\n [4, -45]\n ],\n [\n [7573, 6360],\n [0, -43],\n [-10, 9],\n [2, -47]\n ],\n [\n [7565, 6279],\n [-8, 30],\n [-1, 31],\n [-6, 28],\n [-11, 34],\n [-26, 3],\n [3, -25],\n [-9, -32],\n [-12, 12],\n [-4, -11],\n [-8, 6],\n [-11, 5]\n ],\n [\n [7472, 6360],\n [-4, 49],\n [-10, 45],\n [5, 35],\n [-17, 16],\n [6, 22],\n [18, 22],\n [-20, 31],\n [9, 40],\n [22, -26],\n [14, -3],\n [2, -41],\n [26, -8],\n [26, 1],\n [16, -10],\n [-13, -50],\n [-12, -3],\n [-9, -34],\n [16, -31],\n [4, 38],\n [8, 0],\n [14, -93]\n ],\n [\n [5629, 7671],\n [8, -25],\n [11, 5],\n [21, -9],\n [41, -4],\n [13, 16],\n [33, 13],\n [20, -21],\n [17, -6]\n ],\n [\n [5793, 7640],\n [-15, -25],\n [-10, -42],\n [9, -34]\n ],\n [\n [5777, 7539],\n [-24, 8],\n [-28, -18]\n ],\n [\n [5725, 7529],\n [0, -30],\n [-26, -5],\n [-19, 20],\n [-22, -16],\n [-21, 2]\n ],\n [\n [5637, 7500],\n [-2, 39],\n [-14, 19]\n ],\n [\n [5621, 7558],\n [5, 8],\n [-3, 7],\n [4, 19],\n [11, 18],\n [-14, 26],\n [-2, 21],\n [7, 14]\n ],\n [\n [2846, 6461],\n [-7, -3],\n [-7, 34],\n [-10, 17],\n [6, 38],\n [8, -3],\n [10, -49],\n [0, -34]\n ],\n [\n [2838, 6628],\n [-30, -10],\n [-2, 22],\n [13, 5],\n [18, -2],\n [1, -15]\n ],\n [\n [2861, 6628],\n [-5, -42],\n [-5, 8],\n [0, 31],\n [-12, 23],\n [0, 7],\n [22, -27]\n ],\n [\n [5527, 7708],\n [10, 0],\n [-7, -26],\n [14, -23],\n [-4, -28],\n [-7, -2]\n ],\n [\n [5533, 7629],\n [-5, -6],\n [-9, -13],\n [-4, -33]\n ],\n [\n [5515, 7577],\n [-25, 23],\n [-10, 24],\n [-11, 13],\n [-12, 22],\n [-6, 19],\n [-14, 27],\n [6, 25],\n [10, -14],\n [6, 12],\n [13, 2],\n [24, -10],\n [19, 1],\n [12, -13]\n ],\n [\n [5652, 8242],\n [27, 0],\n [30, 22],\n [6, 34],\n [23, 19],\n [-3, 26]\n ],\n [\n [5735, 8343],\n [17, 10],\n [30, 23]\n ],\n [\n [5782, 8376],\n [29, -15],\n [4, -15],\n [15, 7],\n [27, -14],\n [3, -27],\n [-6, -16],\n [17, -39],\n [12, -11],\n [-2, -11],\n [19, -10],\n [8, -16],\n [-11, -13],\n [-23, 2],\n [-5, -5],\n [7, -20],\n [6, -37]\n ],\n [\n [5882, 8136],\n [-23, -4],\n [-9, -13],\n [-2, -30],\n [-11, 6],\n [-25, -3],\n [-7, 14],\n [-11, -10],\n [-10, 8],\n [-22, 1],\n [-31, 15],\n [-28, 4],\n [-22, -1],\n [-15, -16],\n [-13, -2]\n ],\n [\n [5653, 8105],\n [-1, 26],\n [-8, 27],\n [17, 12],\n [0, 24],\n [-8, 22],\n [-1, 26]\n ],\n [\n [2524, 6110],\n [-1, 8],\n [4, 3],\n [5, -7],\n [10, 36],\n [5, 0]\n ],\n [\n [2547, 6150],\n [0, -8],\n [5, -1],\n [0, -16],\n [-5, -25],\n [3, -9],\n [-3, -21],\n [2, -6],\n [-4, -30],\n [-5, -16],\n [-5, -1],\n [-6, -21]\n ],\n [\n [2529, 5996],\n [-8, 0],\n [2, 67],\n [1, 47]\n ],\n [\n [3136, 3714],\n [-20, -8],\n [-11, 82],\n [-15, 66],\n [9, 57],\n [-15, 25],\n [-4, 43],\n [-13, 40]\n ],\n [\n [3067, 4019],\n [17, 64],\n [-12, 49],\n [7, 20],\n [-5, 22],\n [10, 30],\n [1, 50],\n [1, 41],\n [6, 20],\n [-24, 96]\n ],\n [\n [3068, 4411],\n [21, -5],\n [14, 1],\n [6, 18],\n [25, 24],\n [14, 22],\n [37, 10],\n [-3, -44],\n [3, -23],\n [-2, -40],\n [30, -53],\n [31, -9],\n [11, -23],\n [19, -11],\n [11, -17],\n [18, 0],\n [16, -17],\n [1, -34],\n [6, -18],\n [0, -25],\n [-8, -1],\n [11, -69],\n [53, -2],\n [-4, -35],\n [3, -23],\n [15, -16],\n [6, -37],\n [-4, -47],\n [-8, -26],\n [3, -33],\n [-9, -12]\n ],\n [\n [3384, 3866],\n [-1, 18],\n [-25, 30],\n [-26, 1],\n [-49, -17],\n [-13, -52],\n [-1, -32],\n [-11, -71]\n ],\n [\n [3482, 3537],\n [6, 34],\n [3, 35],\n [1, 32],\n [-10, 11],\n [-11, -9],\n [-10, 2],\n [-4, 23],\n [-2, 54],\n [-5, 18],\n [-19, 16],\n [-11, -12],\n [-30, 11],\n [2, 81],\n [-8, 33]\n ],\n [\n [3068, 4411],\n [-15, -11],\n [-13, 7],\n [2, 90],\n [-23, -35],\n [-24, 2],\n [-11, 31],\n [-18, 4],\n [5, 25],\n [-15, 36],\n [-11, 53],\n [7, 11],\n [0, 25],\n [17, 17],\n [-3, 32],\n [7, 20],\n [2, 28],\n [32, 40],\n [22, 11],\n [4, 9],\n [25, -2]\n ],\n [\n [3058, 4804],\n [13, 162],\n [0, 25],\n [-4, 34],\n [-12, 22],\n [0, 42],\n [15, 10],\n [6, -6],\n [1, 23],\n [-16, 6],\n [-1, 37],\n [54, -2],\n [10, 21],\n [7, -19],\n [6, -35],\n [5, 8]\n ],\n [\n [3142, 5132],\n [15, -32],\n [22, 4],\n [5, 18],\n [21, 14],\n [11, 10],\n [4, 25],\n [19, 17],\n [-1, 12],\n [-24, 5],\n [-3, 37],\n [1, 40],\n [-13, 15],\n [5, 6],\n [21, -8],\n [22, -15],\n [8, 14],\n [20, 9],\n [31, 23],\n [10, 22],\n [-3, 17]\n ],\n [\n [3313, 5365],\n [14, 2],\n [7, -13],\n [-4, -26],\n [9, -9],\n [7, -28],\n [-8, -20],\n [-4, -51],\n [7, -30],\n [2, -27],\n [17, -28],\n [14, -3],\n [3, 12],\n [8, 3],\n [13, 10],\n [9, 16],\n [15, -5],\n [7, 2]\n ],\n [\n [3429, 5170],\n [15, -5],\n [3, 12],\n [-5, 12],\n [3, 17],\n [11, -5],\n [13, 6],\n [16, -13]\n ],\n [\n [3485, 5194],\n [12, -12],\n [9, 16],\n [6, -3],\n [4, -16],\n [13, 4],\n [11, 22],\n [8, 44],\n [17, 54]\n ],\n [\n [3565, 5303],\n [9, 3],\n [7, -33],\n [16, -103],\n [14, -10],\n [1, -41],\n [-21, -48],\n [9, -18],\n [49, -9],\n [1, -60],\n [21, 39],\n [35, -21],\n [46, -36],\n [14, -35],\n [-5, -32],\n [33, 18],\n [54, -32],\n [41, 3],\n [41, -49],\n [36, -66],\n [21, -17],\n [24, -3],\n [10, -18],\n [9, -76],\n [5, -35],\n [-11, -98],\n [-14, -39],\n [-39, -82],\n [-18, -67],\n [-21, -51],\n [-7, -1],\n [-7, -43],\n [2, -111],\n [-8, -91],\n [-3, -39],\n [-9, -23],\n [-5, -79],\n [-28, -77],\n [-5, -61],\n [-22, -26],\n [-7, -35],\n [-30, 0],\n [-44, -23],\n [-19, -26],\n [-31, -18],\n [-33, -47],\n [-23, -58],\n [-5, -44],\n [5, -33],\n [-5, -60],\n [-6, -28],\n [-20, -33],\n [-31, -104],\n [-24, -47],\n [-19, -27],\n [-13, -57],\n [-18, -33]\n ],\n [\n [3517, 3063],\n [-8, 33],\n [13, 28],\n [-16, 40],\n [-22, 33],\n [-29, 38],\n [-10, -2],\n [-28, 46],\n [-18, -7]\n ],\n [\n [8172, 5325],\n [11, 22],\n [23, 32]\n ],\n [\n [8206, 5379],\n [-1, -29],\n [-2, -37],\n [-13, 1],\n [-6, -20],\n [-12, 31]\n ],\n [\n [7546, 6698],\n [12, -19],\n [-2, -36],\n [-23, -2],\n [-23, 4],\n [-18, -9],\n [-25, 22],\n [-1, 12]\n ],\n [\n [7466, 6670],\n [19, 44],\n [15, 15],\n [20, -14],\n [14, -1],\n [12, -16]\n ],\n [\n [5817, 3752],\n [-39, -43],\n [-25, -44],\n [-10, -40],\n [-8, -22],\n [-15, -4],\n [-5, -29],\n [-3, -18],\n [-17, -14],\n [-23, 3],\n [-13, 17],\n [-12, 7],\n [-14, -14],\n [-6, -28],\n [-14, -18],\n [-13, -26],\n [-20, -6],\n [-6, 20],\n [2, 36],\n [-16, 56],\n [-8, 9]\n ],\n [\n [5552, 3594],\n [0, 173],\n [27, 2],\n [1, 210],\n [21, 2],\n [43, 21],\n [10, -24],\n [18, 23],\n [9, 0],\n [15, 13]\n ],\n [\n [5696, 4014],\n [5, -4]\n ],\n [\n [5701, 4010],\n [11, -48],\n [5, -10],\n [9, -34],\n [32, -65],\n [12, -7],\n [0, -20],\n [8, -38],\n [21, -9],\n [18, -27]\n ],\n [\n [5424, 5496],\n [23, 4],\n [5, 16],\n [5, -2],\n [7, -13],\n [34, 23],\n [12, 23],\n [15, 20],\n [-3, 21],\n [8, 6],\n [27, -4],\n [26, 27],\n [20, 65],\n [14, 24],\n [18, 10]\n ],\n [\n [5635, 5716],\n [3, -26],\n [16, -36],\n [0, -25],\n [-5, -24],\n [2, -18],\n [10, -18]\n ],\n [\n [5661, 5569],\n [21, -25]\n ],\n [\n [5682, 5544],\n [15, -24],\n [0, -19],\n [19, -31],\n [12, -26],\n [7, -35],\n [20, -24],\n [5, -18]\n ],\n [\n [5760, 5367],\n [-9, -7],\n [-18, 2],\n [-21, 6],\n [-10, -5],\n [-5, -14],\n [-9, -2],\n [-10, 12],\n [-31, -29],\n [-13, 6],\n [-4, -5],\n [-8, -35],\n [-21, 11],\n [-20, 6],\n [-18, 22],\n [-23, 20],\n [-15, -19],\n [-10, -30],\n [-3, -41]\n ],\n [\n [5512, 5265],\n [-18, 3],\n [-19, 10],\n [-16, -32],\n [-15, -55]\n ],\n [\n [5444, 5191],\n [-3, 18],\n [-1, 27],\n [-13, 19],\n [-10, 30],\n [-2, 21],\n [-13, 31],\n [2, 18],\n [-3, 25],\n [2, 45],\n [7, 11],\n [14, 60]\n ],\n [\n [3231, 7808],\n [20, -8],\n [26, 1],\n [-14, -24],\n [-10, -4],\n [-35, 25],\n [-7, 20],\n [10, 18],\n [10, -28]\n ],\n [\n [3283, 7958],\n [-14, -1],\n [-36, 19],\n [-26, 28],\n [10, 5],\n [37, -15],\n [28, -25],\n [1, -11]\n ],\n [\n [1569, 7923],\n [-14, -8],\n [-46, 27],\n [-8, 21],\n [-25, 21],\n [-5, 16],\n [-28, 11],\n [-11, 32],\n [2, 14],\n [30, -13],\n [17, -9],\n [26, -6],\n [9, -21],\n [14, -28],\n [28, -24],\n [11, -33]\n ],\n [\n [3440, 8052],\n [-18, -52],\n [18, 20],\n [19, -12],\n [-10, -21],\n [25, -16],\n [12, 14],\n [28, -18],\n [-8, -43],\n [19, 10],\n [4, -32],\n [8, -36],\n [-11, -52],\n [-13, -2],\n [-18, 11],\n [6, 48],\n [-8, 8],\n [-32, -52],\n [-17, 2],\n [20, 28],\n [-27, 14],\n [-30, -3],\n [-54, 2],\n [-4, 17],\n [17, 21],\n [-12, 16],\n [24, 36],\n [28, 94],\n [18, 33],\n [24, 21],\n [13, -3],\n [-6, -16],\n [-15, -37]\n ],\n [\n [1313, 8250],\n [27, 5],\n [-8, -67],\n [24, -48],\n [-11, 0],\n [-17, 27],\n [-10, 27],\n [-14, 19],\n [-5, 26],\n [1, 19],\n [13, -8]\n ],\n [\n [2798, 8730],\n [-11, -31],\n [-12, 5],\n [-8, 17],\n [2, 4],\n [10, 18],\n [12, -1],\n [7, -12]\n ],\n [\n [2725, 8762],\n [-33, -32],\n [-19, 1],\n [-6, 16],\n [20, 27],\n [38, 0],\n [0, -12]\n ],\n [\n [2634, 8936],\n [5, -26],\n [15, 9],\n [16, -15],\n [30, -20],\n [32, -19],\n [2, -28],\n [21, 5],\n [20, -20],\n [-25, -18],\n [-43, 14],\n [-16, 26],\n [-27, -31],\n [-40, -31],\n [-9, 35],\n [-38, -6],\n [24, 30],\n [4, 46],\n [9, 54],\n [20, -5]\n ],\n [\n [2892, 9024],\n [-31, -3],\n [-7, 29],\n [12, 34],\n [26, 8],\n [21, -17],\n [1, -25],\n [-4, -8],\n [-18, -18]\n ],\n [\n [2343, 9140],\n [-17, -21],\n [-38, 18],\n [-22, -6],\n [-38, 26],\n [24, 19],\n [19, 25],\n [30, -16],\n [17, -11],\n [8, -11],\n [17, -23]\n ],\n [\n [3135, 7724],\n [-18, 33],\n [0, 81],\n [-13, 17],\n [-18, -10],\n [-10, 16],\n [-21, -45],\n [-8, -46],\n [-10, -27],\n [-12, -9],\n [-9, -3],\n [-3, -15],\n [-51, 0],\n [-42, 0],\n [-12, -11],\n [-30, -42],\n [-3, -5],\n [-9, -23],\n [-26, 0],\n [-27, 0],\n [-12, -10],\n [4, -11],\n [2, -18],\n [0, -6],\n [-36, -30],\n [-29, -9],\n [-32, -31],\n [-7, 0],\n [-10, 9],\n [-3, 8],\n [1, 6],\n [6, 21],\n [13, 33],\n [8, 35],\n [-5, 51],\n [-6, 53],\n [-29, 28],\n [3, 11],\n [-4, 7],\n [-8, 0],\n [-5, 9],\n [-2, 14],\n [-5, -6],\n [-7, 2],\n [1, 6],\n [-6, 6],\n [-3, 15],\n [-21, 19],\n [-23, 20],\n [-27, 23],\n [-26, 21],\n [-25, -17],\n [-9, 0],\n [-34, 15],\n [-23, -8],\n [-27, 19],\n [-28, 9],\n [-19, 4],\n [-9, 10],\n [-5, 32],\n [-9, 0],\n [-1, -23],\n [-57, 0],\n [-95, 0],\n [-94, 0],\n [-84, 0],\n [-83, 0],\n [-82, 0],\n [-85, 0],\n [-27, 0],\n [-82, 0],\n [-79, 0]\n ],\n [\n [1588, 7952],\n [-4, 0],\n [-54, 58],\n [-20, 26],\n [-50, 24],\n [-15, 53],\n [3, 36],\n [-35, 25],\n [-5, 48],\n [-34, 43],\n [0, 30]\n ],\n [\n [1374, 8295],\n [15, 29],\n [0, 37],\n [-48, 37],\n [-28, 68],\n [-17, 42],\n [-26, 27],\n [-19, 24],\n [-14, 31],\n [-28, -20],\n [-27, -33],\n [-25, 39],\n [-19, 26],\n [-27, 16],\n [-28, 2],\n [0, 337],\n [1, 219]\n ],\n [\n [1084, 9176],\n [51, -14],\n [44, -29],\n [29, -5],\n [24, 24],\n [34, 19],\n [41, -7],\n [42, 26],\n [45, 14],\n [20, -24],\n [20, 14],\n [6, 27],\n [20, -6],\n [47, -53],\n [37, 40],\n [3, -45],\n [34, 10],\n [11, 17],\n [34, -3],\n [42, -25],\n [65, -22],\n [38, -10],\n [28, 4],\n [37, -30],\n [-39, -29],\n [50, -13],\n [75, 7],\n [24, 11],\n [29, -36],\n [31, 30],\n [-29, 25],\n [18, 20],\n [34, 3],\n [22, 6],\n [23, -14],\n [28, -32],\n [31, 5],\n [49, -27],\n [43, 9],\n [40, -1],\n [-3, 37],\n [25, 10],\n [43, -20],\n [0, -56],\n [17, 47],\n [23, -1],\n [12, 59],\n [-30, 36],\n [-32, 24],\n [2, 65],\n [33, 43],\n [37, -9],\n [28, -26],\n [38, -67],\n [-25, -29],\n [52, -12],\n [-1, -60],\n [38, 46],\n [33, -38],\n [-9, -44],\n [27, -40],\n [29, 43],\n [21, 51],\n [1, 65],\n [40, -5],\n [41, -8],\n [37, -30],\n [2, -29],\n [-21, -31],\n [20, -32],\n [-4, -29],\n [-54, -41],\n [-39, -9],\n [-29, 18],\n [-8, -30],\n [-27, -50],\n [-8, -26],\n [-32, -40],\n [-40, -4],\n [-22, -25],\n [-2, -38],\n [-32, -7],\n [-34, -48],\n [-30, -67],\n [-11, -46],\n [-1, -69],\n [40, -10],\n [13, -55],\n [13, -45],\n [39, 12],\n [51, -26],\n [28, -22],\n [20, -28],\n [35, -17],\n [29, -24],\n [46, -4],\n [30, -6],\n [-4, -51],\n [8, -59],\n [21, -66],\n [41, -56],\n [21, 19],\n [15, 61],\n [-14, 93],\n [-20, 31],\n [45, 28],\n [31, 41],\n [16, 41],\n [-3, 40],\n [-19, 50],\n [-33, 44],\n [32, 62],\n [-12, 54],\n [-9, 92],\n [19, 14],\n [48, -16],\n [29, -6],\n [23, 15],\n [25, -20],\n [35, -34],\n [8, -23],\n [50, -4],\n [-1, -50],\n [9, -74],\n [25, -10],\n [21, -35],\n [40, 33],\n [26, 65],\n [19, 28],\n [21, -53],\n [36, -75],\n [31, -71],\n [-11, -37],\n [37, -33],\n [25, -34],\n [44, -15],\n [18, -19],\n [11, -50],\n [22, -8],\n [11, -22],\n [2, -67],\n [-20, -22],\n [-20, -21],\n [-46, -21],\n [-35, -48],\n [-47, -10],\n [-59, 13],\n [-42, 0],\n [-29, -4],\n [-23, -43],\n [-35, -26],\n [-40, -78],\n [-32, -54],\n [23, 9],\n [45, 78],\n [58, 49],\n [42, 6],\n [24, -29],\n [-26, -40],\n [9, -63],\n [9, -45],\n [36, -29],\n [46, 8],\n [28, 67],\n [2, -43],\n [17, -22],\n [-34, -38],\n [-61, -36],\n [-28, -23],\n [-31, -43],\n [-21, 4],\n [-1, 50],\n [48, 49],\n [-44, -2],\n [-31, -7]\n ],\n [\n [1829, 9377],\n [-14, -27],\n [61, 17],\n [39, -29],\n [31, 30],\n [26, -20],\n [23, -58],\n [14, 25],\n [-20, 60],\n [24, 9],\n [28, -9],\n [31, -24],\n [17, -58],\n [9, -41],\n [47, -30],\n [50, -28],\n [-3, -26],\n [-46, -4],\n [18, -23],\n [-9, -22],\n [-51, 9],\n [-48, 16],\n [-32, -3],\n [-52, -20],\n [-70, -9],\n [-50, -6],\n [-15, 28],\n [-38, 16],\n [-24, -6],\n [-35, 47],\n [19, 6],\n [43, 10],\n [39, -3],\n [36, 11],\n [-54, 13],\n [-59, -4],\n [-39, 1],\n [-15, 22],\n [64, 23],\n [-42, -1],\n [-49, 16],\n [23, 44],\n [20, 24],\n [74, 36],\n [29, -12]\n ],\n [\n [2097, 9395],\n [-24, -39],\n [-44, 41],\n [10, 9],\n [37, 2],\n [21, -13]\n ],\n [\n [2879, 9376],\n [3, -16],\n [-30, 2],\n [-30, 1],\n [-30, -8],\n [-8, 3],\n [-31, 32],\n [1, 21],\n [14, 4],\n [63, -6],\n [48, -33]\n ],\n [\n [2595, 9379],\n [22, -36],\n [26, 47],\n [70, 24],\n [48, -61],\n [-4, -38],\n [55, 17],\n [26, 23],\n [62, -30],\n [38, -28],\n [3, -25],\n [52, 13],\n [29, -38],\n [67, -23],\n [24, -24],\n [26, -55],\n [-51, -28],\n [66, -38],\n [44, -13],\n [40, -55],\n [44, -3],\n [-9, -42],\n [-49, -69],\n [-34, 26],\n [-44, 57],\n [-36, -8],\n [-3, -34],\n [29, -34],\n [38, -27],\n [11, -16],\n [18, -58],\n [-9, -43],\n [-35, 16],\n [-70, 47],\n [39, -51],\n [29, -35],\n [5, -21],\n [-76, 24],\n [-59, 34],\n [-34, 29],\n [10, 17],\n [-42, 30],\n [-40, 29],\n [0, -18],\n [-80, -9],\n [-23, 20],\n [18, 44],\n [52, 1],\n [57, 7],\n [-9, 21],\n [10, 30],\n [36, 57],\n [-8, 27],\n [-11, 20],\n [-42, 29],\n [-57, 20],\n [18, 15],\n [-29, 36],\n [-25, 4],\n [-22, 20],\n [-14, -18],\n [-51, -7],\n [-101, 13],\n [-59, 17],\n [-45, 9],\n [-23, 21],\n [29, 27],\n [-39, 0],\n [-9, 60],\n [21, 53],\n [29, 24],\n [72, 16],\n [-21, -39]\n ],\n [\n [2212, 9420],\n [33, -12],\n [50, 7],\n [7, -17],\n [-26, -28],\n [42, -26],\n [-5, -53],\n [-45, -23],\n [-27, 5],\n [-19, 23],\n [-69, 45],\n [0, 19],\n [57, -7],\n [-31, 38],\n [33, 29]\n ],\n [\n [2411, 9357],\n [-30, -45],\n [-32, 3],\n [-17, 52],\n [1, 29],\n [14, 25],\n [28, 16],\n [58, -2],\n [53, -14],\n [-42, -53],\n [-33, -11]\n ],\n [\n [1654, 9275],\n [-73, -29],\n [-15, 26],\n [-64, 31],\n [12, 25],\n [19, 43],\n [24, 39],\n [-27, 36],\n [94, 10],\n [39, -13],\n [71, -3],\n [27, -17],\n [30, -25],\n [-35, -15],\n [-68, -41],\n [-34, -42],\n [0, -25]\n ],\n [\n [2399, 9487],\n [-15, -23],\n [-40, 5],\n [-34, 15],\n [15, 27],\n [40, 16],\n [24, -21],\n [10, -19]\n ],\n [\n [2264, 9590],\n [21, -27],\n [1, -31],\n [-13, -44],\n [-46, -6],\n [-30, 10],\n [1, 34],\n [-45, -4],\n [-2, 45],\n [30, -2],\n [41, 21],\n [40, -4],\n [2, 8]\n ],\n [\n [1994, 9559],\n [11, -21],\n [25, 10],\n [29, -2],\n [5, -29],\n [-17, -28],\n [-94, -10],\n [-70, -25],\n [-43, -2],\n [-3, 20],\n [57, 26],\n [-125, -7],\n [-39, 10],\n [38, 58],\n [26, 17],\n [78, -20],\n [50, -35],\n [48, -5],\n [-40, 57],\n [26, 21],\n [29, -7],\n [9, -28]\n ],\n [\n [2370, 9612],\n [30, -19],\n [55, 0],\n [24, -19],\n [-6, -22],\n [32, -14],\n [17, -14],\n [38, -2],\n [40, -5],\n [44, 13],\n [57, 5],\n [45, -5],\n [30, -22],\n [6, -24],\n [-17, -16],\n [-42, -13],\n [-35, 8],\n [-80, -10],\n [-57, -1],\n [-45, 8],\n [-74, 19],\n [-9, 32],\n [-4, 29],\n [-27, 26],\n [-58, 7],\n [-32, 19],\n [10, 24],\n [58, -4]\n ],\n [\n [1772, 9645],\n [-4, -46],\n [-21, -20],\n [-26, -3],\n [-52, -26],\n [-44, -9],\n [-38, 13],\n [47, 44],\n [57, 39],\n [43, -1],\n [38, 9]\n ],\n [\n [2393, 9637],\n [-13, -2],\n [-52, 4],\n [-7, 17],\n [56, -1],\n [19, -11],\n [-3, -7]\n ],\n [\n [1939, 9648],\n [-52, -17],\n [-41, 19],\n [23, 19],\n [40, 6],\n [39, -10],\n [-9, -17]\n ],\n [\n [1954, 9701],\n [-34, -11],\n [-46, 0],\n [0, 8],\n [29, 18],\n [14, -3],\n [37, -12]\n ],\n [\n [2338, 9669],\n [-41, -12],\n [-23, 13],\n [-12, 23],\n [-2, 24],\n [36, -2],\n [16, -4],\n [33, -21],\n [-7, -21]\n ],\n [\n [2220, 9685],\n [11, -25],\n [-45, 7],\n [-46, 19],\n [-62, 2],\n [27, 18],\n [-34, 14],\n [-2, 22],\n [55, -8],\n [75, -21],\n [21, -28]\n ],\n [\n [2583, 9764],\n [33, -20],\n [-38, -17],\n [-51, -45],\n [-50, -4],\n [-57, 8],\n [-30, 24],\n [0, 21],\n [22, 16],\n [-50, 0],\n [-31, 19],\n [-18, 27],\n [20, 26],\n [19, 18],\n [28, 4],\n [-12, 14],\n [65, 3],\n [35, -32],\n [47, -12],\n [46, -11],\n [22, -39]\n ],\n [\n [3097, 9967],\n [74, -4],\n [60, -8],\n [51, -16],\n [-2, -16],\n [-67, -25],\n [-68, -12],\n [-25, -14],\n [61, 1],\n [-66, -36],\n [-45, -17],\n [-48, -48],\n [-57, -10],\n [-18, -12],\n [-84, -6],\n [39, -8],\n [-20, -10],\n [23, -29],\n [-26, -21],\n [-43, -16],\n [-13, -24],\n [-39, -17],\n [4, -14],\n [48, 3],\n [0, -15],\n [-74, -35],\n [-73, 16],\n [-81, -9],\n [-42, 7],\n [-52, 3],\n [-4, 29],\n [52, 13],\n [-14, 43],\n [17, 4],\n [74, -26],\n [-38, 38],\n [-45, 11],\n [23, 23],\n [49, 14],\n [8, 21],\n [-39, 23],\n [-12, 31],\n [76, -3],\n [22, -6],\n [43, 21],\n [-62, 7],\n [-98, -4],\n [-49, 20],\n [-23, 24],\n [-32, 17],\n [-6, 21],\n [41, 11],\n [32, 2],\n [55, 9],\n [41, 22],\n [34, -3],\n [30, -16],\n [21, 32],\n [37, 9],\n [50, 7],\n [85, 2],\n [14, -6],\n [81, 10],\n [60, -4],\n [60, -4]\n ],\n [\n [5290, 7828],\n [-3, -24],\n [-12, -10],\n [-20, 7],\n [-6, -24],\n [-14, -2],\n [-5, 10],\n [-15, -20],\n [-13, -3],\n [-12, 13]\n ],\n [\n [5190, 7775],\n [-10, 25],\n [-13, -9],\n [0, 27],\n [21, 33],\n [-1, 15],\n [12, -5],\n [8, 10]\n ],\n [\n [5207, 7871],\n [24, -1],\n [5, 13],\n [30, -18]\n ],\n [\n [3140, 1814],\n [-10, -24],\n [-23, -18],\n [-14, 2],\n [-16, 5],\n [-21, 18],\n [-29, 8],\n [-35, 33],\n [-28, 32],\n [-38, 66],\n [23, -12],\n [39, -40],\n [36, -21],\n [15, 27],\n [9, 41],\n [25, 24],\n [20, -7]\n ],\n [\n [3095, 1968],\n [-25, 0],\n [-13, -14],\n [-25, -22],\n [-5, -55],\n [-11, -1],\n [-32, 19],\n [-32, 41],\n [-34, 34],\n [-9, 37],\n [8, 35],\n [-14, 39],\n [-4, 101],\n [12, 57],\n [30, 45],\n [-43, 18],\n [27, 52],\n [9, 98],\n [31, -21],\n [15, 123],\n [-19, 15],\n [-9, -73],\n [-17, 8],\n [9, 84],\n [9, 110],\n [13, 40],\n [-8, 58],\n [-2, 66],\n [11, 2],\n [17, 96],\n [20, 94],\n [11, 88],\n [-6, 89],\n [8, 49],\n [-3, 72],\n [16, 73],\n [5, 114],\n [9, 123],\n [9, 132],\n [-2, 96],\n [-6, 84]\n ],\n [\n [3045, 3974],\n [14, 15],\n [8, 30]\n ],\n [\n [8064, 6161],\n [-24, -28],\n [-23, 18],\n [0, 51],\n [13, 26],\n [31, 17],\n [16, -1],\n [6, -23],\n [-12, -26],\n [-7, -34]\n ],\n [\n [8628, 7562],\n [-18, 35],\n [-11, -33],\n [-43, -26],\n [4, -31],\n [-24, 2],\n [-13, 19],\n [-19, -42],\n [-30, -32],\n [-23, -38]\n ],\n [\n [8451, 7416],\n [-39, -17],\n [-20, -27],\n [-30, -17],\n [15, 28],\n [-6, 23],\n [22, 40],\n [-15, 30],\n [-24, -20],\n [-32, -41],\n [-17, -39],\n [-27, -2],\n [-14, -28],\n [15, -40],\n [22, -10],\n [1, -26],\n [22, -17],\n [31, 42],\n [25, -23],\n [18, -2],\n [4, -31],\n [-39, -16],\n [-13, -32],\n [-27, -30],\n [-14, -41],\n [30, -33],\n [11, -58],\n [17, -54],\n [18, -45],\n [0, -44],\n [-17, -16],\n [6, -32],\n [17, -18],\n [-5, -48],\n [-7, -47],\n [-15, -5],\n [-21, -64],\n [-22, -78],\n [-26, -70],\n [-38, -55],\n [-39, -50],\n [-31, -6],\n [-17, -27],\n [-10, 20],\n [-15, -30],\n [-39, -29],\n [-29, -9],\n [-10, -63],\n [-15, -3],\n [-8, 43],\n [7, 22],\n [-37, 19],\n [-13, -9]\n ],\n [\n [8001, 6331],\n [-28, 15],\n [-14, 24],\n [5, 34],\n [-26, 11],\n [-13, 22],\n [-24, -31],\n [-27, -7],\n [-22, 0],\n [-15, -14]\n ],\n [\n [7837, 6385],\n [-14, -9],\n [4, -68],\n [-15, 2],\n [-2, 14]\n ],\n [\n [7810, 6324],\n [-1, 24],\n [-20, -17],\n [-12, 11],\n [-21, 22],\n [8, 49],\n [-18, 12],\n [-6, 54],\n [-30, -10],\n [4, 70],\n [26, 50],\n [1, 48],\n [-1, 46],\n [-12, 14],\n [-9, 35],\n [-16, -5]\n ],\n [\n [7703, 6727],\n [-30, 9],\n [9, 25],\n [-13, 36],\n [-20, -24],\n [-23, 14],\n [-32, -37],\n [-25, -44],\n [-23, -8]\n ],\n [\n [7466, 6670],\n [-2, 47],\n [-17, -13]\n ],\n [\n [7447, 6704],\n [-32, 6],\n [-32, 14],\n [-22, 26],\n [-22, 11],\n [-9, 29],\n [-16, 8],\n [-28, 39],\n [-22, 18],\n [-12, -14]\n ],\n [\n [7252, 6841],\n [-38, 41],\n [-28, 37],\n [-7, 65],\n [20, -7],\n [1, 30],\n [-12, 30],\n [3, 48],\n [-30, 69]\n ],\n [\n [7161, 7154],\n [-45, 24],\n [-8, 46],\n [-21, 27]\n ],\n [\n [7082, 7268],\n [-4, 34],\n [1, 23],\n [-17, 13],\n [-9, -6],\n [-7, 55]\n ],\n [\n [7046, 7387],\n [8, 13],\n [-4, 14],\n [26, 28],\n [20, 12],\n [29, -8],\n [11, 38],\n [35, 7],\n [10, 23],\n [44, 32],\n [4, 13]\n ],\n [\n [7229, 7559],\n [-2, 34],\n [19, 15],\n [-25, 103],\n [55, 24],\n [14, 13],\n [20, 106],\n [55, -20],\n [15, 27],\n [2, 59],\n [23, 6],\n [21, 39]\n ],\n [\n [7426, 7965],\n [11, 5]\n ],\n [\n [7437, 7970],\n [7, -41],\n [23, -32],\n [40, -22],\n [19, -47],\n [-10, -70],\n [10, -25],\n [33, -10],\n [37, -8],\n [33, -37],\n [18, -7],\n [12, -54],\n [17, -35],\n [30, 1],\n [58, -13],\n [36, 8],\n [28, -9],\n [41, -36],\n [34, 0],\n [12, -18],\n [32, 32],\n [45, 20],\n [42, 2],\n [32, 21],\n [20, 32],\n [20, 20],\n [-5, 19],\n [-9, 23],\n [15, 38],\n [15, -5],\n [29, -12],\n [28, 31],\n [42, 23],\n [20, 39],\n [20, 17],\n [40, 8],\n [22, -7],\n [3, 21],\n [-25, 41],\n [-22, 19],\n [-22, -22],\n [-27, 10],\n [-16, -8],\n [-7, 24],\n [20, 59],\n [13, 45]\n ],\n [\n [8240, 8005],\n [34, -23],\n [39, 38],\n [-1, 26],\n [26, 62],\n [15, 19],\n [0, 33],\n [-16, 14],\n [23, 29],\n [35, 11],\n [37, 2],\n [41, -18],\n [25, -22],\n [17, -59],\n [10, -26],\n [10, -36],\n [10, -58],\n [49, -19],\n [32, -42],\n [12, -55],\n [42, 0],\n [24, 23],\n [46, 17],\n [-15, -53],\n [-11, -21],\n [-9, -65],\n [-19, -58],\n [-33, 11],\n [-24, -21],\n [7, -51],\n [-4, -69],\n [-14, -2],\n [0, -30]\n ],\n [\n [4920, 5353],\n [-12, -1],\n [-20, 12],\n [-18, -1],\n [-33, -10],\n [-19, -18],\n [-27, -21],\n [-6, 1]\n ],\n [\n [4785, 5315],\n [2, 49],\n [3, 7],\n [-1, 24],\n [-12, 24],\n [-8, 4],\n [-8, 17],\n [6, 26],\n [-3, 28],\n [1, 18]\n ],\n [\n [4765, 5512],\n [5, 0],\n [1, 25],\n [-2, 12],\n [3, 8],\n [10, 7],\n [-7, 47],\n [-6, 25],\n [2, 20],\n [5, 4]\n ],\n [\n [4776, 5660],\n [4, 6],\n [8, -9],\n [21, -1],\n [5, 18],\n [5, -1],\n [8, 6],\n [4, -25],\n [7, 7],\n [11, 9]\n ],\n [\n [4921, 5627],\n [7, -84],\n [-11, -50],\n [-8, -66],\n [12, -51],\n [-1, -23]\n ],\n [\n [5363, 5191],\n [-4, 4],\n [-16, -8],\n [-17, 8],\n [-13, -4]\n ],\n [\n [5313, 5191],\n [-45, 1]\n ],\n [\n [5268, 5192],\n [4, 47],\n [-11, 39],\n [-13, 10],\n [-6, 27],\n [-7, 8],\n [1, 16]\n ],\n [\n [5236, 5339],\n [7, 42],\n [13, 57],\n [8, 1],\n [17, 34],\n [10, 1],\n [16, -24],\n [19, 20],\n [2, 25],\n [7, 23],\n [4, 30],\n [15, 25],\n [5, 41],\n [6, 13],\n [4, 31],\n [7, 37],\n [24, 46],\n [1, 20],\n [3, 10],\n [-11, 24]\n ],\n [\n [5393, 5795],\n [1, 19],\n [8, 3]\n ],\n [\n [5402, 5817],\n [11, -38],\n [2, -39],\n [-1, -39],\n [15, -54],\n [-15, 1],\n [-8, -4],\n [-13, 6],\n [-6, -28],\n [16, -35],\n [13, -10],\n [3, -24],\n [9, -41],\n [-4, -16]\n ],\n [\n [5444, 5191],\n [-2, -31],\n [-22, 14],\n [-22, 15],\n [-35, 2]\n ],\n [\n [5856, 5265],\n [-2, -69],\n [11, -8],\n [-9, -21],\n [-10, -16],\n [-11, -31],\n [-6, -27],\n [-1, -48],\n [-7, -22],\n [0, -45]\n ],\n [\n [5821, 4978],\n [-8, -16],\n [-1, -35],\n [-4, -5],\n [-2, -32]\n ],\n [\n [5814, 4792],\n [5, -55],\n [-2, -30],\n [5, -35],\n [16, -33],\n [15, -74]\n ],\n [\n [5853, 4565],\n [-11, 6],\n [-37, -10],\n [-7, -7],\n [-8, -38],\n [6, -26],\n [-5, -70],\n [-3, -59],\n [7, -11],\n [19, -23],\n [8, 11],\n [2, -64],\n [-21, 1],\n [-11, 32],\n [-10, 25],\n [-22, 9],\n [-6, 31],\n [-17, -19],\n [-22, 8],\n [-10, 27],\n [-17, 6],\n [-13, -2],\n [-2, 19],\n [-9, 1]\n ],\n [\n [5342, 4697],\n [-4, 18]\n ],\n [\n [5360, 4775],\n [8, -6],\n [9, 23],\n [15, -1],\n [2, -17],\n [11, -10],\n [16, 37],\n [16, 29],\n [7, 19],\n [-1, 48],\n [12, 58],\n [13, 30],\n [18, 29],\n [3, 18],\n [1, 22],\n [5, 21],\n [-2, 33],\n [4, 52],\n [5, 37],\n [8, 32],\n [2, 36]\n ],\n [\n [5760, 5367],\n [17, -49],\n [12, -7],\n [8, 10],\n [12, -4],\n [16, 12],\n [6, -25],\n [25, -39]\n ],\n [\n [5330, 4760],\n [-22, 62]\n ],\n [\n [5308, 4822],\n [21, 33],\n [-11, 39],\n [10, 15],\n [19, 7],\n [2, 26],\n [15, -28],\n [24, -2],\n [9, 27],\n [3, 40],\n [-3, 46],\n [-13, 35],\n [12, 68],\n [-7, 12],\n [-21, -5],\n [-7, 31],\n [2, 25]\n ],\n [\n [2906, 5049],\n [-12, 14],\n [-14, 19],\n [-7, -9],\n [-24, 8],\n [-7, 25],\n [-5, -1],\n [-28, 34]\n ],\n [\n [2809, 5139],\n [-3, 18],\n [10, 5],\n [-1, 29],\n [6, 22],\n [14, 4],\n [12, 37],\n [10, 31],\n [-10, 14],\n [5, 34],\n [-6, 54],\n [6, 16],\n [-4, 50],\n [-12, 31]\n ],\n [\n [2836, 5484],\n [4, 29],\n [9, -4],\n [5, 17],\n [-6, 35],\n [3, 9]\n ],\n [\n [2851, 5570],\n [14, -2],\n [21, 41],\n [12, 6],\n [0, 20],\n [5, 50],\n [16, 27],\n [17, 1],\n [3, 13],\n [21, -5],\n [22, 30],\n [11, 13],\n [14, 28],\n [9, -3],\n [8, -16],\n [-6, -20]\n ],\n [\n [3018, 5753],\n [-18, -10],\n [-7, -29],\n [-10, -17],\n [-8, -22],\n [-4, -42],\n [-8, -35],\n [15, -4],\n [3, -27],\n [6, -13],\n [3, -24],\n [-4, -22],\n [1, -12],\n [7, -5],\n [7, -20],\n [36, 5],\n [16, -7],\n [19, -51],\n [11, 6],\n [20, -3],\n [16, 7],\n [10, -10],\n [-5, -32],\n [-6, -20],\n [-2, -42],\n [5, -40],\n [8, -17],\n [1, -13],\n [-14, -30],\n [10, -13],\n [8, -21],\n [8, -58]\n ],\n [\n [3058, 4804],\n [-14, 31],\n [-8, 1],\n [18, 61],\n [-21, 27],\n [-17, -5],\n [-10, 10],\n [-15, -15],\n [-21, 7],\n [-16, 62],\n [-13, 15],\n [-9, 28],\n [-19, 28],\n [-7, -5]\n ],\n [\n [2695, 5543],\n [-15, 14],\n [-6, 12],\n [4, 10],\n [-1, 13],\n [-8, 14],\n [-11, 12],\n [-10, 8],\n [-1, 17],\n [-8, 10],\n [2, -17],\n [-5, -14],\n [-7, 17],\n [-9, 5],\n [-4, 12],\n [1, 18],\n [3, 19],\n [-8, 8],\n [7, 12]\n ],\n [\n [2619, 5713],\n [4, 7],\n [18, -15],\n [7, 7],\n [9, -5],\n [4, -12],\n [8, -4],\n [7, 13]\n ],\n [\n [2676, 5704],\n [7, -32],\n [11, -24],\n [13, -25]\n ],\n [\n [2707, 5623],\n [-11, -6],\n [0, -23],\n [6, -9],\n [-4, -7],\n [1, -11],\n [-2, -12],\n [-2, -12]\n ],\n [\n [2715, 6427],\n [23, -4],\n [22, 0],\n [26, -21],\n [11, -21],\n [26, 6],\n [10, -13],\n [24, -37],\n [17, -27],\n [9, 1],\n [17, -12],\n [-2, -17],\n [20, -2],\n [21, -24],\n [-3, -14],\n [-19, -7],\n [-18, -3],\n [-19, 4],\n [-40, -5],\n [18, 32],\n [-11, 16],\n [-18, 4],\n [-9, 17],\n [-7, 33],\n [-16, -2],\n [-26, 16],\n [-8, 12],\n [-36, 10],\n [-10, 11],\n [11, 15],\n [-28, 3],\n [-20, -31],\n [-11, -1],\n [-4, -14],\n [-14, -7],\n [-12, 6],\n [15, 18],\n [6, 22],\n [13, 13],\n [14, 11],\n [21, 6],\n [7, 6]\n ],\n [\n [5909, 7133],\n [2, 1],\n [4, 14],\n [20, -1],\n [25, 18],\n [-19, -25],\n [2, -11]\n ],\n [\n [5943, 7129],\n [-3, 2],\n [-5, -5],\n [-4, 1],\n [-2, -2],\n [0, 6],\n [-2, 4],\n [-6, 0],\n [-7, -5],\n [-5, 3]\n ],\n [\n [5943, 7129],\n [1, -5],\n [-28, -24],\n [-14, 8],\n [-7, 23],\n [14, 2]\n ],\n [\n [5377, 7945],\n [-16, 25],\n [-14, 15],\n [-3, 25],\n [-5, 17],\n [21, 13],\n [10, 15],\n [20, 11],\n [7, 11],\n [7, -6],\n [13, 6]\n ],\n [\n [5417, 8077],\n [13, -19],\n [21, -5],\n [-2, -17],\n [15, -12],\n [4, 15],\n [19, -6],\n [3, -19],\n [20, -3],\n [13, -29]\n ],\n [\n [5523, 7982],\n [-8, 0],\n [-4, -11],\n [-7, -3],\n [-2, -13],\n [-5, -3],\n [-1, -5],\n [-9, -7],\n [-12, 1],\n [-4, -13]\n ],\n [\n [5275, 8306],\n [1, -23],\n [28, -14],\n [-1, -21],\n [29, 11],\n [15, 16],\n [32, -23],\n [13, -19]\n ],\n [\n [5392, 8233],\n [6, -30],\n [-8, -16],\n [11, -21],\n [6, -31],\n [-2, -21],\n [12, -37]\n ],\n [\n [5207, 7871],\n [3, 42],\n [14, 40],\n [-40, 11],\n [-13, 16]\n ],\n [\n [5171, 7980],\n [2, 26],\n [-6, 13]\n ],\n [\n [5171, 8059],\n [-5, 62],\n [17, 0],\n [7, 22],\n [6, 54],\n [-5, 20]\n ],\n [\n [5191, 8217],\n [6, 13],\n [23, 3],\n [5, -13],\n [19, 29],\n [-6, 22],\n [-2, 34]\n ],\n [\n [5236, 8305],\n [21, -8],\n [18, 9]\n ],\n [\n [6196, 5808],\n [7, -19],\n [-1, -24],\n [-16, -14],\n [12, -16]\n ],\n [\n [6198, 5735],\n [-10, -32]\n ],\n [\n [6188, 5703],\n [-7, 11],\n [-6, -5],\n [-16, 1],\n [0, 18],\n [-2, 17],\n [9, 27],\n [10, 26]\n ],\n [\n [6176, 5798],\n [12, -5],\n [8, 15]\n ],\n [\n [5352, 8343],\n [-17, -48],\n [-29, 33],\n [-4, 25],\n [41, 19],\n [9, -29]\n ],\n [\n [5236, 8305],\n [-11, 32],\n [-1, 61],\n [5, 16],\n [8, 17],\n [24, 4],\n [10, 16],\n [22, 17],\n [-1, -30],\n [-8, -20],\n [4, -16],\n [15, -9],\n [-7, -22],\n [-8, 6],\n [-20, -42],\n [7, -29]\n ],\n [\n [3008, 6222],\n [3, 10],\n [22, 0],\n [16, -15],\n [8, 1],\n [5, -21],\n [15, 1],\n [-1, -17],\n [12, -2],\n [14, -22],\n [-10, -24],\n [-14, 13],\n [-12, -3],\n [-9, 3],\n [-5, -11],\n [-11, -3],\n [-4, 14],\n [-10, -8],\n [-11, -41],\n [-7, 10],\n [-1, 17]\n ],\n [\n [3008, 6124],\n [0, 16],\n [-7, 17],\n [7, 10],\n [2, 23],\n [-2, 32]\n ],\n [\n [5333, 6444],\n [-95, -112],\n [-81, -117],\n [-39, -26]\n ],\n [\n [5118, 6189],\n [-31, -6],\n [0, 38],\n [-13, 10],\n [-17, 16],\n [-7, 28],\n [-94, 129],\n [-93, 129]\n ],\n [\n [4863, 6533],\n [-105, 143]\n ],\n [\n [4758, 6676],\n [1, 11],\n [0, 4]\n ],\n [\n [4759, 6691],\n [0, 70],\n [44, 44],\n [28, 9],\n [23, 16],\n [11, 29],\n [32, 24],\n [1, 44],\n [16, 5],\n [13, 22],\n [36, 9],\n [5, 23],\n [-7, 13],\n [-10, 62],\n [-1, 36],\n [-11, 38]\n ],\n [\n [4939, 7135],\n [27, 32],\n [30, 11],\n [17, 24],\n [27, 18],\n [47, 11],\n [46, 4],\n [14, -8],\n [26, 23],\n [30, 0],\n [11, -13],\n [19, 3]\n ],\n [\n [5233, 7240],\n [-5, -30],\n [4, -56],\n [-6, -49],\n [-18, -33],\n [3, -45],\n [23, -35],\n [0, -14],\n [17, -24],\n [12, -106]\n ],\n [\n [5263, 6848],\n [9, -52],\n [1, -28],\n [-5, -48],\n [2, -27],\n [-3, -32],\n [2, -37],\n [-11, -25],\n [17, -43],\n [1, -25],\n [10, -33],\n [13, 11],\n [22, -28],\n [12, -37]\n ],\n [\n [2769, 4856],\n [15, 45],\n [-6, 25],\n [-11, -27],\n [-16, 26],\n [5, 16],\n [-4, 54],\n [9, 9],\n [5, 37],\n [11, 38],\n [-2, 24],\n [15, 13],\n [19, 23]\n ],\n [\n [2906, 5049],\n [4, -45],\n [-9, -39],\n [-30, -62],\n [-33, -23],\n [-17, -51],\n [-6, -40],\n [-15, -24],\n [-12, 29],\n [-11, 7],\n [-12, -5],\n [-1, 22],\n [8, 14],\n [-3, 24]\n ],\n [\n [5969, 6800],\n [-7, -23],\n [-6, -45],\n [-8, -31],\n [-6, -10],\n [-10, 19],\n [-12, 26],\n [-20, 85],\n [-3, -5],\n [12, -63],\n [17, -59],\n [21, -92],\n [10, -32],\n [9, -34],\n [25, -65],\n [-6, -10],\n [1, -39],\n [33, -53],\n [4, -12]\n ],\n [\n [6023, 6357],\n [-110, 0],\n [-107, 0],\n [-112, 0]\n ],\n [\n [5694, 6357],\n [0, 218],\n [0, 210],\n [-8, 47],\n [7, 37],\n [-5, 25],\n [10, 29]\n ],\n [\n [5698, 6923],\n [37, 0],\n [27, -15],\n [28, -18],\n [13, -9],\n [21, 19],\n [11, 17],\n [25, 5],\n [20, -8],\n [7, -29],\n [7, 19],\n [22, -14],\n [22, -3],\n [13, 15]\n ],\n [\n [5951, 6902],\n [18, -102]\n ],\n [\n [6176, 5798],\n [-10, 20],\n [-11, 34],\n [-12, 19],\n [-8, 21],\n [-24, 23],\n [-19, 1],\n [-7, 12],\n [-16, -14],\n [-17, 27],\n [-8, -44],\n [-33, 13]\n ],\n [\n [6011, 5910],\n [-3, 23],\n [12, 87],\n [3, 39],\n [9, 18],\n [20, 10],\n [14, 34]\n ],\n [\n [6066, 6121],\n [16, -69],\n [8, -54],\n [15, -29],\n [38, -55],\n [16, -34],\n [15, -34],\n [8, -20],\n [14, -18]\n ],\n [\n [4749, 7532],\n [1, 42],\n [-11, 25],\n [39, 43],\n [34, -11],\n [37, 1],\n [30, -10],\n [23, 3],\n [45, -2]\n ],\n [\n [4947, 7623],\n [11, -23],\n [51, -27],\n [10, 13],\n [31, -27],\n [32, 8]\n ],\n [\n [5082, 7567],\n [2, -35],\n [-26, -39],\n [-36, -12],\n [-2, -20],\n [-18, -33],\n [-10, -48],\n [11, -34],\n [-16, -26],\n [-6, -39],\n [-21, -11],\n [-20, -46],\n [-35, -1],\n [-27, 1],\n [-17, -21],\n [-11, -22],\n [-13, 5],\n [-11, 20],\n [-8, 34],\n [-26, 9]\n ],\n [\n [4792, 7249],\n [-2, 20],\n [10, 22],\n [4, 16],\n [-9, 17],\n [7, 39],\n [-11, 36],\n [12, 5],\n [1, 27],\n [5, 9],\n [0, 46],\n [13, 16],\n [-8, 30],\n [-16, 2],\n [-5, -8],\n [-16, 0],\n [-7, 29],\n [-11, -8],\n [-10, -15]\n ],\n [\n [5675, 8472],\n [3, 35],\n [-10, -8],\n [-18, 21],\n [-2, 34],\n [35, 17],\n [35, 8],\n [30, -10],\n [29, 2]\n ],\n [\n [5777, 8571],\n [4, -10],\n [-20, -34],\n [8, -55],\n [-12, -19]\n ],\n [\n [5757, 8453],\n [-22, 0],\n [-24, 22],\n [-13, 7],\n [-23, -10]\n ],\n [\n [6188, 5703],\n [-6, -21],\n [10, -32],\n [10, -29],\n [11, -21],\n [90, -70],\n [24, 0]\n ],\n [\n [6327, 5530],\n [-79, -177],\n [-36, -3],\n [-25, -41],\n [-17, -1],\n [-8, -19]\n ],\n [\n [6162, 5289],\n [-19, 0],\n [-11, 20],\n [-26, -25],\n [-8, -24],\n [-18, 4],\n [-6, 7],\n [-7, -1],\n [-9, 0],\n [-35, 50],\n [-19, 0],\n [-10, 20],\n [0, 33],\n [-14, 10]\n ],\n [\n [5980, 5383],\n [-17, 64],\n [-12, 14],\n [-5, 23],\n [-14, 29],\n [-17, 4],\n [9, 34],\n [15, 2],\n [4, 18]\n ],\n [\n [5943, 5571],\n [0, 53]\n ],\n [\n [5943, 5624],\n [8, 62],\n [13, 16],\n [3, 24],\n [12, 45],\n [17, 30],\n [11, 58],\n [4, 51]\n ],\n [\n [5794, 9138],\n [-4, -42],\n [42, -39],\n [-26, -45],\n [33, -67],\n [-19, -51],\n [25, -43],\n [-11, -39],\n [41, -40],\n [-11, -31],\n [-25, -34],\n [-60, -75]\n ],\n [\n [5779, 8632],\n [-50, -5],\n [-49, -21],\n [-45, -13],\n [-16, 32],\n [-27, 20],\n [6, 58],\n [-14, 53],\n [14, 35],\n [25, 37],\n [63, 64],\n [19, 12],\n [-3, 25],\n [-39, 28]\n ],\n [\n [5663, 8957],\n [-9, 23],\n [-1, 91],\n [-43, 40],\n [-37, 29]\n ],\n [\n [5573, 9140],\n [17, 16],\n [30, -32],\n [37, 3],\n [30, -14],\n [26, 26],\n [14, 44],\n [43, 20],\n [35, -24],\n [-11, -41]\n ],\n [\n [9954, 4033],\n [9, -17],\n [-4, -31],\n [-17, -8],\n [-16, 7],\n [-2, 26],\n [10, 21],\n [13, -8],\n [7, 10]\n ],\n [\n [0, 4079],\n [9981, -14],\n [-17, -13],\n [-4, 23],\n [14, 12],\n [9, 3],\n [-9983, 18]\n ],\n [\n [0, 4108],\n [0, -29]\n ],\n [\n [0, 4108],\n [6, 3],\n [-4, -28],\n [-2, -4]\n ],\n [\n [3300, 1994],\n [33, 36],\n [24, -15],\n [16, 24],\n [22, -27],\n [-8, -21],\n [-37, -17],\n [-13, 20],\n [-23, -26],\n [-14, 26]\n ],\n [\n [5265, 7548],\n [-9, -46],\n [-13, 12],\n [-6, 40],\n [5, 22],\n [18, 22],\n [5, -50]\n ],\n [\n [5157, 7984],\n [6, -6],\n [8, 2]\n ],\n [\n [5190, 7775],\n [-2, -17],\n [9, -22],\n [-10, -18],\n [7, -46],\n [15, -8],\n [-3, -25]\n ],\n [\n [5206, 7639],\n [-25, -34],\n [-55, 16],\n [-40, -19],\n [-4, -35]\n ],\n [\n [4947, 7623],\n [14, 35],\n [5, 118],\n [-28, 62],\n [-21, 30],\n [-42, 23],\n [-3, 43],\n [36, 12],\n [47, -15],\n [-9, 67],\n [26, -25],\n [65, 46],\n [8, 48],\n [24, 12]\n ],\n [\n [3485, 5194],\n [7, 25],\n [3, 27]\n ],\n [\n [3495, 5246],\n [4, 26],\n [-10, 34]\n ],\n [\n [3489, 5306],\n [-3, 41],\n [15, 51]\n ],\n [\n [3501, 5398],\n [9, -7],\n [21, -14],\n [29, -50],\n [5, -24]\n ],\n [\n [5308, 4822],\n [-29, 60],\n [-18, 49],\n [-17, 61],\n [1, 19],\n [6, 19],\n [7, 43],\n [5, 44]\n ],\n [\n [5263, 5117],\n [10, 4],\n [40, -1],\n [0, 71]\n ],\n [\n [4827, 8240],\n [-21, 12],\n [-17, -1],\n [6, 32],\n [-6, 32]\n ],\n [\n [4789, 8315],\n [23, 2],\n [30, -37],\n [-15, -40]\n ],\n [\n [4916, 8521],\n [-30, -63],\n [29, 8],\n [30, -1],\n [-7, -48],\n [-25, -53],\n [29, -4],\n [2, -6],\n [25, -69],\n [19, -10],\n [17, -67],\n [8, -24],\n [33, -11],\n [-3, -38],\n [-14, -17],\n [11, -30],\n [-25, -31],\n [-37, 0],\n [-48, -16],\n [-13, 12],\n [-18, -28],\n [-26, 7],\n [-19, -23],\n [-15, 12],\n [41, 62],\n [25, 13],\n [-1, 0],\n [-43, 9],\n [-8, 24],\n [29, 18],\n [-15, 32],\n [5, 39],\n [42, -6],\n [4, 35],\n [-19, 36],\n [0, 1],\n [-34, 10],\n [-7, 16],\n [10, 27],\n [-9, 16],\n [-15, -28],\n [-1, 57],\n [-14, 30],\n [10, 61],\n [21, 48],\n [23, -4],\n [33, 4]\n ],\n [\n [6154, 7511],\n [4, 26],\n [-7, 40],\n [-16, 22],\n [-16, 6],\n [-10, 19]\n ],\n [\n [6109, 7624],\n [4, 6],\n [23, -10],\n [41, -9],\n [38, -28],\n [5, -11],\n [17, 9],\n [25, -13],\n [9, -24],\n [17, -13]\n ],\n [\n [6210, 7485],\n [-27, 29],\n [-29, -3]\n ],\n [\n [5029, 5408],\n [-44, -35],\n [-15, -20],\n [-25, -17],\n [-25, 17]\n ],\n [\n [5000, 5708],\n [-2, -18],\n [12, -30],\n [0, -43],\n [2, -47],\n [7, -21],\n [-6, -54],\n [2, -29],\n [8, -37],\n [6, -21]\n ],\n [\n [4765, 5512],\n [-8, 1],\n [-5, -24],\n [-8, 1],\n [-6, 12],\n [2, 24],\n [-11, 36],\n [-8, -7],\n [-6, -1]\n ],\n [\n [4715, 5554],\n [-7, -3],\n [0, 21],\n [-4, 16],\n [0, 17],\n [-6, 25],\n [-7, 21],\n [-23, 0],\n [-6, -11],\n [-8, -1],\n [-4, -13],\n [-4, -17],\n [-14, -26]\n ],\n [\n [4632, 5583],\n [-13, 35],\n [-10, 24],\n [-8, 7],\n [-6, 12],\n [-4, 26],\n [-4, 13],\n [-8, 10]\n ],\n [\n [4579, 5710],\n [13, 29],\n [8, -2],\n [7, 10],\n [6, 0],\n [5, 8],\n [-3, 20],\n [3, 6],\n [1, 20]\n ],\n [\n [4619, 5801],\n [13, -1],\n [20, -14],\n [6, 1],\n [3, 7],\n [15, -5],\n [4, 4]\n ],\n [\n [4680, 5793],\n [1, -22],\n [5, 0],\n [7, 8],\n [5, -2],\n [7, -15],\n [12, -5],\n [8, 13],\n [9, 8],\n [6, 8],\n [6, -1],\n [6, -13],\n [3, -17],\n [12, -24],\n [-6, -16],\n [-1, -19],\n [6, 6],\n [3, -7],\n [-1, -17],\n [8, -18]\n ],\n [\n [4532, 5834],\n [3, 27]\n ],\n [\n [4535, 5861],\n [31, 1],\n [6, 14],\n [9, 1],\n [11, -14],\n [8, -1],\n [9, 10],\n [6, -17],\n [-12, -13],\n [-12, 1],\n [-12, 13],\n [-10, -14],\n [-5, -1],\n [-7, -8],\n [-25, 1]\n ],\n [\n [4579, 5710],\n [-15, 24],\n [-11, 4],\n [-7, 17],\n [1, 9],\n [-9, 13],\n [-2, 12]\n ],\n [\n [4536, 5789],\n [15, 10],\n [9, -2],\n [8, 7],\n [51, -3]\n ],\n [\n [5263, 5117],\n [-5, 9],\n [10, 66]\n ],\n [\n [5658, 7167],\n [15, -20],\n [22, 3],\n [20, -4],\n [0, -10],\n [15, 7],\n [-4, -18],\n [-40, -5],\n [1, 10],\n [-34, 12],\n [5, 25]\n ],\n [\n [5723, 7469],\n [-17, 2],\n [-14, 6],\n [-34, -16],\n [19, -33],\n [-14, -10],\n [-15, 0],\n [-15, 31],\n [-5, -13],\n [6, -36],\n [14, -27],\n [-10, -13],\n [15, -27],\n [14, -18],\n [0, -33],\n [-25, 16],\n [8, -30],\n [-18, -7],\n [11, -52],\n [-19, -1],\n [-23, 26],\n [-10, 47],\n [-5, 40],\n [-11, 27],\n [-14, 34],\n [-2, 16]\n ],\n [\n [5583, 7470],\n [18, 6],\n [11, 13],\n [15, -2],\n [5, 11],\n [5, 2]\n ],\n [\n [5725, 7529],\n [13, -16],\n [-8, -37],\n [-7, -7]\n ],\n [\n [3701, 9939],\n [93, 35],\n [97, -2],\n [36, 21],\n [98, 6],\n [222, -7],\n [174, -47],\n [-52, -23],\n [-106, -3],\n [-150, -5],\n [14, -11],\n [99, 7],\n [83, -21],\n [54, 18],\n [23, -21],\n [-30, -34],\n [71, 22],\n [135, 23],\n [83, -12],\n [15, -25],\n [-113, -42],\n [-16, -14],\n [-88, -10],\n [64, -3],\n [-32, -43],\n [-23, -38],\n [1, -66],\n [33, -38],\n [-43, -3],\n [-46, -19],\n [52, -31],\n [6, -50],\n [-30, -6],\n [36, -50],\n [-61, -5],\n [32, -24],\n [-9, -20],\n [-39, -10],\n [-39, 0],\n [35, -40],\n [0, -26],\n [-55, 24],\n [-14, -15],\n [37, -15],\n [37, -36],\n [10, -48],\n [-49, -11],\n [-22, 22],\n [-34, 34],\n [10, -40],\n [-33, -31],\n [73, -2],\n [39, -3],\n [-75, -52],\n [-75, -46],\n [-81, -21],\n [-31, 0],\n [-29, -23],\n [-38, -62],\n [-60, -42],\n [-19, -2],\n [-37, -15],\n [-40, -13],\n [-24, -37],\n [0, -41],\n [-15, -39],\n [-45, -47],\n [11, -47],\n [-12, -48],\n [-14, -58],\n [-39, -4],\n [-41, 49],\n [-56, 0],\n [-27, 32],\n [-18, 58],\n [-49, 73],\n [-14, 39],\n [-3, 53],\n [-39, 54],\n [10, 44],\n [-18, 21],\n [27, 69],\n [42, 22],\n [11, 25],\n [6, 46],\n [-32, -21],\n [-15, -9],\n [-25, -8],\n [-34, 19],\n [-2, 40],\n [11, 31],\n [25, 1],\n [57, -15],\n [-48, 37],\n [-24, 20],\n [-28, -8],\n [-23, 15],\n [31, 55],\n [-17, 22],\n [-22, 41],\n [-34, 62],\n [-35, 23],\n [0, 25],\n [-74, 34],\n [-59, 5],\n [-74, -3],\n [-68, -4],\n [-32, 19],\n [-49, 37],\n [73, 19],\n [56, 3],\n [-119, 15],\n [-62, 24],\n [3, 23],\n [106, 28],\n [101, 29],\n [11, 21],\n [-75, 22],\n [24, 23],\n [97, 41],\n [40, 7],\n [-12, 26],\n [66, 16],\n [86, 9],\n [85, 1],\n [30, -19],\n [74, 33],\n [66, -22],\n [39, -5],\n [58, -19],\n [-66, 32],\n [4, 25]\n ],\n [\n [2497, 5869],\n [-14, 10],\n [-17, 1],\n [-13, 12],\n [-15, 24]\n ],\n [\n [2438, 5916],\n [1, 18],\n [3, 13],\n [-4, 12],\n [13, 48],\n [36, 0],\n [1, 20],\n [-5, 4],\n [-3, 12],\n [-10, 14],\n [-11, 20],\n [13, 0],\n [0, 33],\n [26, 0],\n [26, 0]\n ],\n [\n [2529, 5996],\n [10, -11],\n [2, 9],\n [8, -7]\n ],\n [\n [2549, 5987],\n [-13, -23],\n [-13, -16],\n [-2, -12],\n [2, -11],\n [-5, -15]\n ],\n [\n [2518, 5910],\n [-7, -4],\n [2, -7],\n [-6, -6],\n [-9, -15],\n [-1, -9]\n ],\n [\n [3340, 5552],\n [18, -22],\n [17, -38],\n [1, -31],\n [10, -1],\n [15, -29],\n [11, -21]\n ],\n [\n [3412, 5410],\n [-4, -53],\n [-17, -15],\n [1, -14],\n [-5, -31],\n [13, -42],\n [9, -1],\n [3, -33],\n [17, -51]\n ],\n [\n [3313, 5365],\n [-19, 45],\n [7, 16],\n [0, 27],\n [17, 10],\n [7, 11],\n [-10, 22],\n [3, 21],\n [22, 35]\n ],\n [\n [2574, 5825],\n [-5, 18],\n [-8, 5]\n ],\n [\n [2561, 5848],\n [2, 24],\n [-4, 6],\n [-6, 4],\n [-12, -7],\n [-1, 8],\n [-8, 10],\n [-6, 12],\n [-8, 5]\n ],\n [\n [2549, 5987],\n [3, -3],\n [6, 11],\n [8, 1],\n [3, -5],\n [4, 3],\n [13, -6],\n [13, 2],\n [9, 6],\n [3, 7],\n [9, -3],\n [6, -4],\n [8, 1],\n [5, 5],\n [13, -8],\n [4, -1],\n [9, -11],\n [8, -13],\n [10, -9],\n [7, -17]\n ],\n [\n [2690, 5943],\n [-9, 2],\n [-4, -8],\n [-10, -8],\n [-7, 0],\n [-6, -8],\n [-6, 3],\n [-4, 9],\n [-3, -2],\n [-4, -14],\n [-3, 1],\n [0, -12],\n [-10, -17],\n [-5, -7],\n [-3, -7],\n [-8, 12],\n [-6, -16],\n [-6, 1],\n [-6, -2],\n [0, -29],\n [-4, 0],\n [-3, -14],\n [-9, -2]\n ],\n [\n [5522, 7770],\n [7, -23],\n [9, -17],\n [-11, -22]\n ],\n [\n [5515, 7577],\n [-3, -10]\n ],\n [\n [5512, 7567],\n [-26, 22],\n [-16, 21],\n [-26, 18],\n [-23, 43],\n [6, 5],\n [-13, 25],\n [-1, 19],\n [-17, 10],\n [-9, -26],\n [-8, 20],\n [0, 21],\n [1, 1]\n ],\n [\n [5380, 7746],\n [20, -2],\n [5, 9],\n [9, -9],\n [11, -1],\n [0, 16],\n [10, 6],\n [2, 24],\n [23, 16]\n ],\n [\n [5460, 7805],\n [8, -7],\n [21, -26],\n [23, -11],\n [10, 9]\n ],\n [\n [3008, 6124],\n [-19, 10],\n [-13, -5],\n [-17, 5],\n [-13, -11],\n [-15, 18],\n [3, 19],\n [25, -8],\n [21, -5],\n [10, 13],\n [-12, 26],\n [0, 23],\n [-18, 9],\n [7, 16],\n [17, -3],\n [24, -9]\n ],\n [\n [5471, 7900],\n [14, -15],\n [10, -6],\n [24, 7],\n [2, 12],\n [11, 2],\n [14, 9],\n [3, -4],\n [13, 8],\n [6, 13],\n [9, 4],\n [30, -18],\n [6, 6]\n ],\n [\n [5613, 7918],\n [15, -16],\n [2, -16]\n ],\n [\n [5630, 7886],\n [-17, -12],\n [-13, -40],\n [-17, -40],\n [-22, -11]\n ],\n [\n [5561, 7783],\n [-17, 2],\n [-22, -15]\n ],\n [\n [5460, 7805],\n [-6, 20],\n [-4, 0]\n ],\n [\n [8352, 4453],\n [-11, -2],\n [-37, 42],\n [26, 11],\n [14, -18],\n [10, -17],\n [-2, -16]\n ],\n [\n [8471, 4532],\n [2, -11],\n [1, -18]\n ],\n [\n [8474, 4503],\n [-18, -45],\n [-24, -13],\n [-3, 8],\n [2, 20],\n [12, 36],\n [28, 23]\n ],\n [\n [8274, 4579],\n [10, -16],\n [17, 5],\n [7, -25],\n [-32, -12],\n [-19, -8],\n [-15, 1],\n [10, 34],\n [15, 0],\n [7, 21]\n ],\n [\n [8413, 4579],\n [-4, -32],\n [-42, -17],\n [-37, 7],\n [0, 22],\n [22, 12],\n [18, -18],\n [18, 5],\n [25, 21]\n ],\n [\n [8017, 4657],\n [53, -6],\n [6, 25],\n [51, -29],\n [10, -38],\n [42, -11],\n [34, -35],\n [-31, -23],\n [-31, 24],\n [-25, -1],\n [-29, 4],\n [-26, 11],\n [-32, 22],\n [-21, 6],\n [-11, -7],\n [-51, 24],\n [-5, 25],\n [-25, 5],\n [19, 56],\n [34, -3],\n [22, -23],\n [12, -5],\n [4, -21]\n ],\n [\n [8741, 4690],\n [-14, -40],\n [-3, 45],\n [5, 21],\n [6, 20],\n [7, -17],\n [-1, -29]\n ],\n [\n [8534, 4853],\n [-11, -19],\n [-19, 10],\n [-5, 26],\n [28, 3],\n [7, -20]\n ],\n [\n [8623, 4875],\n [10, -45],\n [-23, 24],\n [-23, 5],\n [-16, -4],\n [-19, 2],\n [6, 33],\n [35, 2],\n [30, -17]\n ],\n [\n [8916, 4904],\n [0, -193],\n [1, -192]\n ],\n [\n [8917, 4519],\n [-25, 48],\n [-28, 12],\n [-7, -17],\n [-35, -1],\n [12, 48],\n [17, 16],\n [-7, 64],\n [-14, 50],\n [-53, 50],\n [-23, 5],\n [-42, 54],\n [-8, -28],\n [-11, -5],\n [-6, 21],\n [0, 26],\n [-21, 29],\n [29, 21],\n [20, -1],\n [-2, 16],\n [-41, 0],\n [-11, 35],\n [-25, 11],\n [-11, 29],\n [37, 14],\n [14, 20],\n [45, -25],\n [4, -22],\n [8, -95],\n [29, -35],\n [23, 62],\n [32, 36],\n [25, 0],\n [23, -21],\n [21, -21],\n [30, -11]\n ],\n [\n [8478, 5141],\n [-22, -58],\n [-21, -12],\n [-27, 12],\n [-46, -3],\n [-24, -8],\n [-4, -45],\n [24, -53],\n [15, 27],\n [52, 20],\n [-2, -27],\n [-12, 9],\n [-12, -35],\n [-25, -23],\n [27, -76],\n [-5, -20],\n [25, -68],\n [-1, -39],\n [-14, -17],\n [-11, 20],\n [13, 49],\n [-27, -23],\n [-7, 16],\n [3, 23],\n [-20, 35],\n [3, 57],\n [-19, -18],\n [2, -69],\n [1, -84],\n [-17, -9],\n [-12, 18],\n [8, 54],\n [-4, 57],\n [-12, 1],\n [-9, 40],\n [12, 39],\n [4, 47],\n [14, 89],\n [5, 24],\n [24, 44],\n [22, -18],\n [35, -8],\n [32, 3],\n [27, 43],\n [5, -14]\n ],\n [\n [8574, 5124],\n [-2, -51],\n [-14, 6],\n [-4, -36],\n [11, -32],\n [-8, -7],\n [-11, 38],\n [-8, 75],\n [6, 47],\n [9, 22],\n [2, -32],\n [16, -5],\n [3, -25]\n ],\n [\n [8045, 5176],\n [5, -39],\n [19, -34],\n [18, 12],\n [18, -4],\n [16, 30],\n [13, 5],\n [26, -17],\n [23, 13],\n [14, 82],\n [11, 21],\n [10, 67],\n [32, 0],\n [24, -10]\n ],\n [\n [8274, 5302],\n [-16, -53],\n [20, -56],\n [-5, -28],\n [32, -54],\n [-33, -7],\n [-10, -40],\n [2, -54],\n [-27, -40],\n [-1, -59],\n [-10, -91],\n [-5, 21],\n [-31, -26],\n [-11, 36],\n [-20, 3],\n [-14, 19],\n [-33, -21],\n [-10, 29],\n [-18, -4],\n [-23, 7],\n [-4, 79],\n [-14, 17],\n [-13, 50],\n [-4, 52],\n [3, 55],\n [16, 39]\n ],\n [\n [7939, 4712],\n [-31, -1],\n [-24, 49],\n [-35, 48],\n [-12, 36],\n [-21, 48],\n [-14, 44],\n [-21, 83],\n [-24, 49],\n [-9, 51],\n [-10, 46],\n [-25, 37],\n [-14, 51],\n [-21, 33],\n [-29, 65],\n [-3, 30],\n [18, -2],\n [43, -12],\n [25, -57],\n [21, -40],\n [16, -25],\n [26, -63],\n [28, -1],\n [23, -41],\n [16, -49],\n [22, -27],\n [-12, -49],\n [16, -20],\n [10, -2],\n [5, -41],\n [10, -33],\n [20, -5],\n [14, -37],\n [-7, -74],\n [-1, -91]\n ],\n [\n [7252, 6841],\n [-17, -27],\n [-11, -55],\n [27, -23],\n [26, -29],\n [36, -33],\n [38, -8],\n [16, -30],\n [22, -5],\n [33, -14],\n [23, 1],\n [4, 23],\n [-4, 38],\n [2, 25]\n ],\n [\n [7703, 6727],\n [2, -22],\n [-10, -11],\n [2, -36],\n [-19, 10],\n [-36, -41],\n [0, -33],\n [-15, -50],\n [-1, -29],\n [-13, -48],\n [-21, 13],\n [-1, -61],\n [-7, -20],\n [3, -25],\n [-14, -14]\n ],\n [\n [7472, 6360],\n [-4, -21],\n [-19, 1],\n [-34, -13],\n [2, -44],\n [-15, -35],\n [-40, -40],\n [-31, -69],\n [-21, -38],\n [-28, -38],\n [0, -27],\n [-13, -15],\n [-26, -21],\n [-12, -3],\n [-9, -45],\n [6, -77],\n [1, -49],\n [-11, -56],\n [0, -101],\n [-15, -2],\n [-12, -46],\n [8, -19],\n [-25, -17],\n [-10, -40],\n [-11, -17],\n [-26, 55],\n [-13, 83],\n [-11, 60],\n [-9, 28],\n [-15, 56],\n [-7, 74],\n [-5, 37],\n [-25, 81],\n [-12, 115],\n [-8, 75],\n [0, 72],\n [-5, 55],\n [-41, -35],\n [-19, 7],\n [-36, 71],\n [13, 22],\n [-8, 23],\n [-33, 50]\n ],\n [\n [6893, 6457],\n [19, 40],\n [61, -1],\n [-6, 51],\n [-15, 30],\n [-4, 46],\n [-18, 26],\n [31, 62],\n [32, -4],\n [29, 61],\n [18, 60],\n [27, 60],\n [-1, 42],\n [24, 34],\n [-23, 29],\n [-9, 40],\n [-10, 52],\n [14, 25],\n [42, -14],\n [31, 9],\n [26, 49]\n ],\n [\n [4827, 8240],\n [5, -42],\n [-21, -53],\n [-49, -35],\n [-40, 9],\n [23, 62],\n [-15, 60],\n [38, 46],\n [21, 28]\n ],\n [\n [6497, 7255],\n [25, 12],\n [19, 33],\n [19, -1],\n [12, 11],\n [20, -6],\n [31, -30],\n [22, -6],\n [31, -53],\n [21, -2],\n [3, -49]\n ],\n [\n [6690, 6820],\n [14, -31],\n [11, -36],\n [27, -26],\n [1, -52],\n [13, -10],\n [2, -27],\n [-40, -30],\n [-10, -69]\n ],\n [\n [6708, 6539],\n [-53, 18],\n [-30, 13],\n [-31, 8],\n [-12, 73],\n [-13, 10],\n [-22, -11],\n [-28, -28],\n [-34, 20],\n [-28, 45],\n [-27, 17],\n [-18, 56],\n [-21, 79],\n [-15, -10],\n [-17, 20],\n [-11, -24]\n ],\n [\n [6348, 6825],\n [-15, 32],\n [0, 31],\n [-9, 0],\n [5, 43],\n [-15, 45],\n [-34, 32],\n [-19, 56],\n [6, 46],\n [14, 21],\n [-2, 34],\n [-18, 18],\n [-18, 70]\n ],\n [\n [6243, 7253],\n [-15, 48],\n [5, 18],\n [-8, 68],\n [19, 17]\n ],\n [\n [6357, 7321],\n [9, -43],\n [26, -13],\n [20, -29],\n [39, -10],\n [44, 15],\n [2, 14]\n ],\n [\n [6348, 6825],\n [-16, 3]\n ],\n [\n [6332, 6828],\n [-19, 5],\n [-20, -56]\n ],\n [\n [6293, 6777],\n [-52, 4],\n [-78, 119],\n [-41, 41],\n [-34, 16]\n ],\n [\n [6088, 6957],\n [-11, 72]\n ],\n [\n [6077, 7029],\n [61, 62],\n [11, 71],\n [-3, 43],\n [16, 15],\n [14, 37]\n ],\n [\n [6176, 7257],\n [12, 9],\n [32, -8],\n [10, -15],\n [13, 10]\n ],\n [\n [4597, 8984],\n [-7, -39],\n [31, -40],\n [-36, -45],\n [-80, -41],\n [-24, -10],\n [-36, 8],\n [-78, 19],\n [28, 26],\n [-61, 29],\n [49, 12],\n [-1, 17],\n [-58, 14],\n [19, 38],\n [42, 9],\n [43, -40],\n [42, 32],\n [35, -17],\n [45, 32],\n [47, -4]\n ],\n [\n [5992, 6990],\n [-5, -19]\n ],\n [\n [5987, 6971],\n [-10, 8],\n [-6, -39],\n [7, -7],\n [-7, -8],\n [-1, -15],\n [13, 8]\n ],\n [\n [5983, 6918],\n [0, -23],\n [-14, -95]\n ],\n [\n [5951, 6902],\n [8, 19],\n [-2, 4],\n [8, 27],\n [5, 45],\n [4, 15],\n [1, 0]\n ],\n [\n [5975, 7012],\n [9, 0],\n [3, 11],\n [7, 0]\n ],\n [\n [5994, 7023],\n [1, -24],\n [-4, -9],\n [1, 0]\n ],\n [\n [5431, 7316],\n [-10, -46],\n [4, -19],\n [-6, -30],\n [-21, 22],\n [-14, 7],\n [-39, 30],\n [4, 30],\n [32, -6],\n [28, 7],\n [22, 5]\n ],\n [\n [5255, 7492],\n [17, -42],\n [-4, -78],\n [-13, 4],\n [-11, -20],\n [-10, 16],\n [-2, 71],\n [-6, 34],\n [15, -3],\n [14, 18]\n ],\n [\n [5383, 7805],\n [-3, -29],\n [7, -25]\n ],\n [\n [5387, 7751],\n [-22, 8],\n [-23, -20],\n [1, -30],\n [-3, -17],\n [9, -30],\n [26, -29],\n [14, -49],\n [31, -48],\n [22, 0],\n [7, -13],\n [-8, -11],\n [25, -22],\n [20, -18],\n [24, -30],\n [3, -11],\n [-5, -22],\n [-16, 28],\n [-24, 10],\n [-12, -39],\n [20, -21],\n [-3, -31],\n [-11, -4],\n [-15, -50],\n [-12, -5],\n [0, 18],\n [6, 32],\n [6, 12],\n [-11, 35],\n [-8, 29],\n [-12, 8],\n [-8, 25],\n [-18, 11],\n [-12, 24],\n [-21, 4],\n [-21, 26],\n [-26, 39],\n [-19, 34],\n [-8, 58],\n [-14, 7],\n [-23, 20],\n [-12, -8],\n [-16, -28],\n [-12, -4]\n ],\n [\n [2845, 6150],\n [19, -5],\n [14, -15],\n [5, -16],\n [-19, -1],\n [-9, -10],\n [-15, 10],\n [-16, 21],\n [3, 14],\n [12, 4],\n [6, -2]\n ],\n [\n [5992, 6990],\n [31, -24],\n [54, 63]\n ],\n [\n [6088, 6957],\n [-5, -8],\n [-56, -30],\n [28, -59],\n [-9, -10],\n [-5, -20],\n [-21, -8],\n [-7, -21],\n [-12, -19],\n [-31, 10]\n ],\n [\n [5970, 6792],\n [-1, 8]\n ],\n [\n [5983, 6918],\n [4, 17],\n [0, 36]\n ],\n [\n [8739, 7075],\n [4, -20],\n [-16, -36],\n [-11, 19],\n [-15, -14],\n [-7, -34],\n [-18, 16],\n [0, 28],\n [15, 36],\n [16, -7],\n [12, 25],\n [20, -13]\n ],\n [\n [8915, 7252],\n [-10, -47],\n [4, -30],\n [-14, -42],\n [-35, -27],\n [-49, -4],\n [-40, -67],\n [-19, 22],\n [-1, 44],\n [-48, -13],\n [-33, -27],\n [-32, -2],\n [28, -43],\n [-19, -101],\n [-18, -24],\n [-13, 23],\n [7, 53],\n [-18, 17],\n [-11, 41],\n [26, 18],\n [15, 37],\n [28, 30],\n [20, 41],\n [55, 17],\n [30, -12],\n [29, 105],\n [19, -28],\n [40, 59],\n [16, 23],\n [18, 72],\n [-5, 67],\n [11, 37],\n [30, 11],\n [15, -82],\n [-1, -48],\n [-25, -59],\n [0, -61]\n ],\n [\n [8997, 7667],\n [19, -12],\n [20, 25],\n [6, -67],\n [-41, -16],\n [-25, -59],\n [-43, 41],\n [-15, -65],\n [-31, -1],\n [-4, 59],\n [14, 46],\n [29, 3],\n [8, 82],\n [9, 46],\n [32, -62],\n [22, -20]\n ],\n [\n [6970, 7554],\n [-15, -10],\n [-37, -42],\n [-12, -42],\n [-11, 0],\n [-7, 28],\n [-36, 2],\n [-5, 48],\n [-14, 0],\n [2, 60],\n [-33, 43],\n [-48, -5],\n [-32, -8],\n [-27, 53],\n [-22, 22],\n [-43, 43],\n [-6, 5],\n [-71, -35],\n [1, -218]\n ],\n [\n [6554, 7498],\n [-14, -3],\n [-20, 46],\n [-18, 17],\n [-32, -12],\n [-12, -20]\n ],\n [\n [6458, 7526],\n [-2, 14],\n [7, 25],\n [-5, 21],\n [-32, 20],\n [-13, 53],\n [-15, 15],\n [-1, 19],\n [27, -6],\n [1, 44],\n [23, 9],\n [25, -9],\n [5, 58],\n [-5, 36],\n [-28, -2],\n [-24, 14],\n [-32, -26],\n [-26, -12]\n ],\n [\n [6363, 7799],\n [-14, 9],\n [3, 31],\n [-18, 39],\n [-20, -2],\n [-24, 40],\n [16, 45],\n [-8, 12],\n [22, 65],\n [29, -34],\n [3, 43],\n [58, 64],\n [43, 2],\n [61, -41],\n [33, -24],\n [30, 25],\n [44, 1],\n [35, -30],\n [8, 17],\n [39, -2],\n [7, 28],\n [-45, 40],\n [27, 29],\n [-5, 16],\n [26, 15],\n [-20, 41],\n [13, 20],\n [104, 21],\n [13, 14],\n [70, 22],\n [25, 24],\n [50, -12],\n [9, -61],\n [29, 14],\n [35, -20],\n [-2, -32],\n [27, 3],\n [69, 56],\n [-10, -19],\n [35, -46],\n [62, -150],\n [15, 31],\n [39, -34],\n [39, 16],\n [16, -11],\n [13, -34],\n [20, -12],\n [11, -25],\n [36, 8],\n [15, -36]\n ],\n [\n [7229, 7559],\n [-17, 9],\n [-14, 21],\n [-42, 6],\n [-46, 2],\n [-10, -6],\n [-39, 24],\n [-16, -12],\n [-4, -35],\n [-46, 21],\n [-18, -9],\n [-7, -26]\n ],\n [\n [6155, 4958],\n [-20, -24],\n [-7, -24],\n [-10, -4],\n [-4, -42],\n [-9, -24],\n [-5, -39],\n [-12, -20]\n ],\n [\n [6088, 4781],\n [-40, 59],\n [-1, 35],\n [-101, 120],\n [-5, 6]\n ],\n [\n [5941, 5001],\n [0, 63],\n [8, 24],\n [14, 39],\n [10, 43],\n [-13, 68],\n [-3, 30],\n [-13, 41]\n ],\n [\n [5944, 5309],\n [17, 35],\n [19, 39]\n ],\n [\n [6162, 5289],\n [-24, -67],\n [0, -215],\n [17, -49]\n ],\n [\n [7046, 7387],\n [-53, -9],\n [-34, 19],\n [-30, -4],\n [3, 34],\n [30, -10],\n [10, 18]\n ],\n [\n [6972, 7435],\n [21, -6],\n [36, 43],\n [-33, 31],\n [-20, -15],\n [-21, 22],\n [24, 39],\n [-9, 5]\n ],\n [\n [7849, 5777],\n [-7, 72],\n [18, 49],\n [36, 11],\n [26, -8]\n ],\n [\n [7922, 5901],\n [23, -23],\n [12, 40],\n [25, -21]\n ],\n [\n [7982, 5897],\n [6, -40],\n [-3, -71],\n [-47, -45],\n [13, -36],\n [-30, -4],\n [-24, -24]\n ],\n [\n [7897, 5677],\n [-23, 9],\n [-11, 30],\n [-14, 61]\n ],\n [\n [8564, 7339],\n [24, -70],\n [7, -38],\n [0, -68],\n [-10, -33],\n [-25, -11],\n [-22, -25],\n [-25, -5],\n [-3, 32],\n [5, 45],\n [-13, 61],\n [21, 10],\n [-19, 51]\n ],\n [\n [8504, 7288],\n [2, 5],\n [12, -2],\n [11, 27],\n [20, 2],\n [11, 4],\n [4, 15]\n ],\n [\n [5557, 7574],\n [5, 13]\n ],\n [\n [5562, 7587],\n [7, 4],\n [4, 20],\n [5, 3],\n [4, -8],\n [5, -4],\n [3, -10],\n [5, -2],\n [5, -11],\n [4, 0],\n [-3, -14],\n [-3, -7],\n [1, -5]\n ],\n [\n [5599, 7553],\n [-6, -2],\n [-17, -9],\n [-1, -12],\n [-4, 0]\n ],\n [\n [6332, 6828],\n [6, -26],\n [-3, -13],\n [9, -45]\n ],\n [\n [6344, 6744],\n [-19, -1],\n [-7, 28],\n [-25, 6]\n ],\n [\n [7922, 5901],\n [9, 26],\n [1, 50],\n [-22, 52],\n [-2, 58],\n [-21, 48],\n [-21, 4],\n [-6, -20],\n [-16, -2],\n [-8, 10],\n [-30, -35],\n [0, 53],\n [7, 62],\n [-19, 3],\n [-2, 36],\n [-12, 18]\n ],\n [\n [7780, 6264],\n [6, 21],\n [24, 39]\n ],\n [\n [7837, 6385],\n [17, -47],\n [12, -54],\n [34, 0],\n [11, -52],\n [-18, -15],\n [-8, -21],\n [34, -36],\n [23, -70],\n [17, -52],\n [21, -41],\n [7, -41],\n [-5, -59]\n ],\n [\n [5975, 7012],\n [10, 49],\n [14, 41],\n [0, 2]\n ],\n [\n [5999, 7104],\n [13, -3],\n [4, -23],\n [-15, -22],\n [-7, -33]\n ],\n [\n [4785, 5315],\n [-7, 0],\n [-29, 28],\n [-25, 45],\n [-24, 32],\n [-18, 38]\n ],\n [\n [4682, 5458],\n [6, 19],\n [2, 17],\n [12, 33],\n [13, 27]\n ],\n [\n [5412, 6408],\n [-20, -22],\n [-15, 33],\n [-44, 25]\n ],\n [\n [5263, 6848],\n [13, 14],\n [3, 25],\n [-3, 24],\n [19, 23],\n [8, 19],\n [14, 17],\n [2, 45]\n ],\n [\n [5319, 7015],\n [32, -20],\n [12, 5],\n [23, -10],\n [37, -26],\n [13, -53],\n [25, -11],\n [39, -25],\n [30, -29],\n [13, 15],\n [13, 27],\n [-6, 45],\n [9, 29],\n [20, 28],\n [19, 8],\n [37, -12],\n [10, -27],\n [10, 0],\n [9, -10],\n [28, -7],\n [6, -19]\n ],\n [\n [5694, 6357],\n [0, -118],\n [-32, 0],\n [0, -25]\n ],\n [\n [5662, 6214],\n [-111, 113],\n [-111, 113],\n [-28, -32]\n ],\n [\n [7271, 5502],\n [-4, -62],\n [-12, -16],\n [-24, -14],\n [-13, 47],\n [-5, 85],\n [13, 96],\n [19, -33],\n [13, -42],\n [13, -61]\n ],\n [\n [5804, 3347],\n [10, -18],\n [-9, -29],\n [-4, -19],\n [-16, -9],\n [-5, -19],\n [-10, -6],\n [-21, 46],\n [15, 37],\n [15, 23],\n [13, 12],\n [12, -18]\n ],\n [\n [5631, 8267],\n [-2, 15],\n [3, 16],\n [-13, 10],\n [-29, 10]\n ],\n [\n [5590, 8318],\n [-6, 50]\n ],\n [\n [5584, 8368],\n [32, 18],\n [47, -4],\n [27, 6],\n [4, -12],\n [15, -4],\n [26, -29]\n ],\n [\n [5652, 8242],\n [-7, 19],\n [-14, 6]\n ],\n [\n [5584, 8368],\n [1, 44],\n [14, 37],\n [26, 20],\n [22, -44],\n [22, 1],\n [6, 46]\n ],\n [\n [5757, 8453],\n [14, -14],\n [2, -28],\n [9, -35]\n ],\n [\n [4759, 6691],\n [-4, 0],\n [0, -31],\n [-17, -2],\n [-9, -14],\n [-13, 0],\n [-10, 8],\n [-23, -6],\n [-9, -46],\n [-9, -5],\n [-13, -74],\n [-38, -64],\n [-9, -81],\n [-12, -27],\n [-3, -21],\n [-63, -5]\n ],\n [\n [4527, 6323],\n [1, 27],\n [11, 17],\n [9, 30],\n [-2, 20],\n [10, 42],\n [15, 38],\n [9, 9],\n [8, 35],\n [0, 31],\n [10, 37],\n [19, 21],\n [18, 60],\n [0, 1],\n [14, 23],\n [26, 6],\n [22, 41],\n [14, 16],\n [23, 49],\n [-7, 73],\n [10, 51],\n [4, 31],\n [18, 40],\n [28, 27],\n [21, 25],\n [18, 61],\n [9, 36],\n [20, 0],\n [17, -25],\n [26, 4],\n [29, -13],\n [12, -1]\n ],\n [\n [5739, 7906],\n [6, 9],\n [19, 6],\n [20, -19],\n [12, -2],\n [12, -16],\n [-2, -20],\n [11, -9],\n [4, -25],\n [9, -15],\n [-2, -9],\n [5, -6],\n [-7, -4],\n [-16, 1],\n [-3, 9],\n [-6, -5],\n [2, -11],\n [-7, -19],\n [-5, -20],\n [-7, -6]\n ],\n [\n [5784, 7745],\n [-5, 27],\n [3, 25],\n [-1, 26],\n [-16, 35],\n [-9, 25],\n [-9, 17],\n [-8, 6]\n ],\n [\n [6376, 4321],\n [7, -25],\n [7, -39],\n [4, -71],\n [7, -28],\n [-2, -28],\n [-5, -18],\n [-10, 35],\n [-5, -18],\n [5, -43],\n [-2, -25],\n [-8, -14],\n [-1, -50],\n [-11, -69],\n [-14, -81],\n [-17, -112],\n [-11, -82],\n [-12, -69],\n [-23, -14],\n [-24, -25],\n [-16, 15],\n [-22, 21],\n [-8, 31],\n [-2, 53],\n [-10, 47],\n [-2, 42],\n [5, 43],\n [13, 10],\n [0, 20],\n [13, 45],\n [2, 37],\n [-6, 28],\n [-5, 38],\n [-2, 54],\n [9, 33],\n [4, 38],\n [14, 2],\n [15, 12],\n [11, 10],\n [12, 1],\n [16, 34],\n [23, 36],\n [8, 30],\n [-4, 25],\n [12, -7],\n [15, 41],\n [1, 36],\n [9, 26],\n [10, -25]\n ],\n [\n [2301, 6586],\n [-10, -52],\n [-5, -43],\n [-2, -79],\n [-3, -29],\n [5, -32],\n [9, -29],\n [5, -45],\n [19, -44],\n [6, -34],\n [11, -29],\n [29, -16],\n [12, -25],\n [24, 17],\n [21, 6],\n [21, 11],\n [18, 10],\n [17, 24],\n [7, 34],\n [2, 50],\n [5, 17],\n [19, 16],\n [29, 13],\n [25, -2],\n [17, 5],\n [6, -12],\n [-1, -29],\n [-15, -35],\n [-6, -36],\n [5, -10],\n [-4, -26],\n [-7, -46],\n [-7, 15],\n [-6, -1]\n ],\n [\n [2438, 5916],\n [-32, 64],\n [-14, 19],\n [-23, 16],\n [-15, -5],\n [-22, -22],\n [-14, -6],\n [-20, 16],\n [-21, 11],\n [-26, 27],\n [-21, 8],\n [-31, 28],\n [-23, 28],\n [-7, 16],\n [-16, 3],\n [-28, 19],\n [-12, 27],\n [-30, 34],\n [-14, 37],\n [-6, 29],\n [9, 5],\n [-3, 17],\n [7, 16],\n [0, 20],\n [-10, 27],\n [-2, 23],\n [-9, 30],\n [-25, 59],\n [-28, 46],\n [-13, 37],\n [-24, 24],\n [-5, 14],\n [4, 37],\n [-14, 13],\n [-17, 29],\n [-7, 41],\n [-14, 5],\n [-17, 31],\n [-13, 29],\n [-1, 19],\n [-15, 44],\n [-10, 45],\n [1, 23],\n [-20, 23],\n [-10, -2],\n [-15, 16],\n [-5, -24],\n [5, -28],\n [2, -45],\n [10, -24],\n [21, -41],\n [4, -14],\n [4, -4],\n [4, -20],\n [5, 1],\n [6, -38],\n [8, -15],\n [6, -21],\n [17, -30],\n [10, -55],\n [8, -26],\n [8, -28],\n [1, -31],\n [13, -2],\n [12, -27],\n [10, -26],\n [-1, -11],\n [-12, -21],\n [-5, 0],\n [-7, 36],\n [-18, 33],\n [-20, 29],\n [-14, 15],\n [1, 43],\n [-5, 32],\n [-13, 19],\n [-19, 26],\n [-4, -8],\n [-7, 16],\n [-17, 14],\n [-16, 34],\n [2, 5],\n [11, -4],\n [11, 22],\n [1, 27],\n [-22, 42],\n [-16, 17],\n [-10, 36],\n [-11, 39],\n [-12, 47],\n [-12, 54]\n ],\n [\n [1746, 6980],\n [32, 4],\n [35, 7],\n [-2, -12],\n [41, -29],\n [64, -41],\n [55, 0],\n [22, 0],\n [0, 24],\n [48, 0],\n [10, -20],\n [15, -19],\n [16, -26],\n [9, -31],\n [7, -32],\n [15, -18],\n [23, -18],\n [17, 47],\n [23, 1],\n [19, -24],\n [14, -40],\n [10, -35],\n [16, -34],\n [6, -41],\n [8, -28],\n [22, -18],\n [20, -13],\n [10, 2]\n ],\n [\n [5599, 7553],\n [9, 4],\n [13, 1]\n ],\n [\n [4661, 5921],\n [10, 11],\n [4, 35],\n [9, 1],\n [20, -16],\n [15, 11],\n [11, -4],\n [4, 13],\n [112, 1],\n [6, 42],\n [-5, 7],\n [-13, 255],\n [-14, 255],\n [43, 1]\n ],\n [\n [5118, 6189],\n [0, -136],\n [-15, -39],\n [-2, -37],\n [-25, -9],\n [-38, -5],\n [-10, -21],\n [-18, -3]\n ],\n [\n [4680, 5793],\n [1, 18],\n [-2, 23],\n [-11, 16],\n [-5, 34],\n [-2, 37]\n ],\n [\n [7737, 5644],\n [-3, 44],\n [9, 45],\n [-10, 35],\n [3, 65],\n [-12, 30],\n [-9, 71],\n [-5, 75],\n [-12, 49],\n [-18, -30],\n [-32, -42],\n [-15, 5],\n [-17, 14],\n [9, 73],\n [-6, 56],\n [-21, 68],\n [3, 21],\n [-16, 7],\n [-20, 49]\n ],\n [\n [7780, 6264],\n [-16, -14],\n [-16, -26],\n [-20, -2],\n [-12, -64],\n [-12, -11],\n [14, -52],\n [17, -43],\n [12, -39],\n [-11, -51],\n [-9, -11],\n [6, -30],\n [19, -47],\n [3, -33],\n [0, -27],\n [11, -54],\n [-16, -55],\n [-13, -61]\n ],\n [\n [5538, 7532],\n [-6, 4],\n [-8, 19],\n [-12, 12]\n ],\n [\n [5533, 7629],\n [8, -10],\n [4, -9],\n [9, -6],\n [10, -12],\n [-2, -5]\n ],\n [\n [7437, 7970],\n [29, 10],\n [53, 51],\n [42, 28],\n [24, -18],\n [29, -1],\n [19, -28],\n [28, -2],\n [40, -15],\n [27, 41],\n [-11, 35],\n [28, 61],\n [31, -24],\n [26, -7],\n [32, -15],\n [6, -44],\n [39, -25],\n [26, 11],\n [36, 7],\n [27, -7],\n [28, -29],\n [16, -30],\n [26, 1],\n [35, -10],\n [26, 15],\n [36, 9],\n [41, 42],\n [17, -6],\n [14, -20],\n [33, 5]\n ],\n [\n [5959, 4377],\n [21, 5],\n [34, -17],\n [7, 8],\n [19, 1],\n [10, 18],\n [17, -1],\n [30, 23],\n [22, 34]\n ],\n [\n [6119, 4448],\n [5, -26],\n [-1, -59],\n [3, -52],\n [1, -92],\n [5, -29],\n [-8, -43],\n [-11, -41],\n [-18, -36],\n [-25, -23],\n [-31, -28],\n [-32, -64],\n [-10, -11],\n [-20, -42],\n [-11, -13],\n [-3, -42],\n [14, -45],\n [5, -35],\n [0, -17],\n [5, 3],\n [-1, -58],\n [-4, -28],\n [6, -10],\n [-4, -25],\n [-11, -21],\n [-23, -20],\n [-34, -32],\n [-12, -21],\n [3, -25],\n [7, -4],\n [-3, -31]\n ],\n [\n [5911, 3478],\n [-21, 0]\n ],\n [\n [5890, 3478],\n [-2, 26],\n [-4, 27]\n ],\n [\n [5884, 3531],\n [-3, 21],\n [5, 66],\n [-7, 42],\n [-13, 83]\n ],\n [\n [5866, 3743],\n [29, 67],\n [7, 43],\n [5, 5],\n [3, 35],\n [-5, 17],\n [1, 44],\n [6, 41],\n [0, 75],\n [-15, 19],\n [-13, 4],\n [-6, 15],\n [-13, 12],\n [-23, -1],\n [-2, 22]\n ],\n [\n [5840, 4141],\n [-2, 42],\n [84, 49]\n ],\n [\n [5922, 4232],\n [16, -28],\n [8, 5],\n [11, -15],\n [1, -23],\n [-6, -28],\n [2, -42],\n [19, -36],\n [8, 41],\n [12, 12],\n [-2, 76],\n [-12, 43],\n [-10, 19],\n [-10, -1],\n [-7, 77],\n [7, 45]\n ],\n [\n [4661, 5921],\n [-18, 41],\n [-17, 43],\n [-18, 16],\n [-13, 17],\n [-16, -1],\n [-13, -12],\n [-14, 5],\n [-10, -19]\n ],\n [\n [4542, 6011],\n [-2, 32],\n [8, 29],\n [3, 55],\n [-3, 59],\n [-3, 29],\n [2, 30],\n [-7, 28],\n [-14, 25]\n ],\n [\n [4526, 6298],\n [6, 20],\n [108, -1],\n [-5, 86],\n [7, 30],\n [26, 5],\n [-1, 152],\n [91, -4],\n [0, 90]\n ],\n [\n [5922, 4232],\n [-15, 15],\n [9, 55],\n [9, 21],\n [-6, 49],\n [6, 48],\n [5, 16],\n [-7, 50],\n [-14, 26]\n ],\n [\n [5909, 4512],\n [28, -11],\n [5, -16],\n [10, -28],\n [7, -80]\n ],\n [\n [7836, 5425],\n [7, -5],\n [16, -36],\n [12, -40],\n [2, -39],\n [-3, -27],\n [2, -21],\n [2, -35],\n [10, -16],\n [11, -52],\n [-1, -20],\n [-19, -4],\n [-27, 44],\n [-32, 47],\n [-4, 30],\n [-16, 39],\n [-4, 49],\n [-10, 32],\n [4, 43],\n [-7, 25]\n ],\n [\n [7779, 5439],\n [5, 11],\n [23, -26],\n [2, -30],\n [18, 7],\n [9, 24]\n ],\n [\n [8045, 5176],\n [21, -20],\n [21, 11],\n [6, 50],\n [12, 11],\n [33, 13],\n [20, 47],\n [14, 37]\n ],\n [\n [8206, 5379],\n [22, 41],\n [14, 47],\n [11, 0],\n [14, -30],\n [1, -26],\n [19, -16],\n [23, -18],\n [-2, -23],\n [-19, -3],\n [5, -29],\n [-20, -20]\n ],\n [\n [5453, 3369],\n [-20, 45],\n [-11, 43],\n [-6, 58],\n [-7, 42],\n [-9, 91],\n [-1, 71],\n [-3, 32],\n [-11, 25],\n [-15, 48],\n [-14, 71],\n [-6, 37],\n [-23, 58],\n [-2, 45]\n ],\n [\n [5644, 4022],\n [23, 14],\n [18, -4],\n [11, -13],\n [0, -5]\n ],\n [\n [5552, 3594],\n [0, -218],\n [-25, -30],\n [-15, -4],\n [-17, 11],\n [-13, 4],\n [-4, 25],\n [-11, 17],\n [-14, -30]\n ],\n [\n [9604, 3812],\n [23, -36],\n [14, -28],\n [-10, -14],\n [-16, 16],\n [-19, 27],\n [-18, 31],\n [-19, 42],\n [-4, 20],\n [12, -1],\n [16, -20],\n [12, -20],\n [9, -17]\n ],\n [\n [5412, 6408],\n [7, -92],\n [10, -15],\n [1, -19],\n [11, -20],\n [-6, -25],\n [-11, -120],\n [-1, -77],\n [-35, -56],\n [-12, -78],\n [11, -22],\n [0, -38],\n [18, -1],\n [-3, -28]\n ],\n [\n [5393, 5795],\n [-5, -1],\n [-19, 64],\n [-6, 3],\n [-22, -33],\n [-21, 17],\n [-15, 3],\n [-8, -8],\n [-17, 2],\n [-16, -25],\n [-14, -2],\n [-34, 31],\n [-13, -15],\n [-14, 1],\n [-10, 23],\n [-28, 22],\n [-30, -7],\n [-7, -13],\n [-4, -34],\n [-8, -24],\n [-2, -53]\n ],\n [\n [5236, 5339],\n [-29, -21],\n [-11, 3],\n [-10, -13],\n [-23, 1],\n [-15, 37],\n [-9, 43],\n [-19, 39],\n [-21, -1],\n [-25, 0]\n ],\n [\n [2619, 5713],\n [-10, 18],\n [-13, 24],\n [-6, 20],\n [-12, 19],\n [-13, 26],\n [3, 9],\n [4, -9],\n [2, 5]\n ],\n [\n [2690, 5943],\n [-2, -5],\n [-2, -13],\n [3, -22],\n [-6, -20],\n [-3, -24],\n [-1, -26],\n [1, -15],\n [1, -27],\n [-4, -6],\n [-3, -25],\n [2, -15],\n [-6, -16],\n [2, -16],\n [4, -9]\n ],\n [\n [5092, 8091],\n [14, 16],\n [24, 87],\n [38, 25],\n [23, -2]\n ],\n [\n [5863, 9167],\n [-47, -24],\n [-22, -5]\n ],\n [\n [5573, 9140],\n [-17, -2],\n [-4, -39],\n [-53, 9],\n [-7, -33],\n [-27, 1],\n [-18, -42],\n [-28, -66],\n [-43, -83],\n [10, -20],\n [-10, -24],\n [-27, 1],\n [-18, -55],\n [2, -79],\n [17, -29],\n [-9, -70],\n [-23, -40],\n [-12, -34]\n ],\n [\n [5306, 8535],\n [-19, 36],\n [-55, -69],\n [-37, -13],\n [-38, 30],\n [-10, 63],\n [-9, 137],\n [26, 38],\n [73, 49],\n [55, 61],\n [51, 82],\n [66, 115],\n [47, 44],\n [76, 74],\n [61, 26],\n [46, -3],\n [42, 49],\n [51, -3],\n [50, 12],\n [87, -43],\n [-36, -16],\n [30, -37]\n ],\n [\n [5686, 9657],\n [-62, -24],\n [-49, 13],\n [19, 16],\n [-16, 19],\n [57, 11],\n [11, -22],\n [40, -13]\n ],\n [\n [5506, 9766],\n [92, -44],\n [-70, -23],\n [-15, -44],\n [-25, -11],\n [-13, -49],\n [-34, -2],\n [-59, 36],\n [25, 21],\n [-42, 17],\n [-54, 50],\n [-21, 46],\n [75, 21],\n [16, -20],\n [39, 0],\n [11, 21],\n [40, 2],\n [35, -21]\n ],\n [\n [5706, 9808],\n [55, -21],\n [-41, -32],\n [-81, -7],\n [-82, 10],\n [-5, 16],\n [-40, 1],\n [-30, 27],\n [86, 17],\n [40, -14],\n [28, 17],\n [70, -14]\n ],\n [\n [9805, 2640],\n [6, -24],\n [20, 24],\n [8, -25],\n [0, -25],\n [-10, -27],\n [-18, -44],\n [-14, -24],\n [10, -28],\n [-22, -1],\n [-23, -22],\n [-8, -39],\n [-16, -60],\n [-21, -26],\n [-14, -17],\n [-26, 1],\n [-18, 20],\n [-30, 4],\n [-5, 22],\n [15, 43],\n [35, 59],\n [18, 11],\n [20, 22],\n [24, 31],\n [16, 31],\n [13, 44],\n [10, 15],\n [5, 33],\n [19, 27],\n [6, -25]\n ],\n [\n [9849, 2922],\n [20, -63],\n [1, 41],\n [13, -16],\n [4, -45],\n [22, -19],\n [19, -5],\n [16, 22],\n [14, -6],\n [-7, -53],\n [-8, -34],\n [-22, 1],\n [-7, -18],\n [3, -25],\n [-4, -11],\n [-11, -32],\n [-14, -41],\n [-21, -23],\n [-5, 15],\n [-12, 9],\n [16, 48],\n [-9, 33],\n [-30, 23],\n [1, 22],\n [20, 20],\n [5, 46],\n [-1, 38],\n [-12, 40],\n [1, 10],\n [-13, 25],\n [-22, 52],\n [-12, 42],\n [11, 4],\n [15, -33],\n [21, -15],\n [8, -52]\n ],\n [\n [6475, 6041],\n [-9, 41],\n [-22, 98]\n ],\n [\n [6444, 6180],\n [83, 59],\n [19, 118],\n [-13, 42]\n ],\n [\n [6566, 6530],\n [12, -40],\n [16, -22],\n [20, -8],\n [17, -10],\n [12, -34],\n [8, -20],\n [10, -7],\n [0, -13],\n [-10, -36],\n [-5, -16],\n [-12, -19],\n [-10, -41],\n [-13, 3],\n [-5, -14],\n [-5, -30],\n [4, -39],\n [-3, -7],\n [-13, 0],\n [-17, -22],\n [-3, -29],\n [-6, -12],\n [-18, 0],\n [-10, -15],\n [0, -24],\n [-14, -16],\n [-15, 5],\n [-19, -19],\n [-12, -4]\n ],\n [\n [6557, 6597],\n [8, 20],\n [3, -5],\n [-2, -25],\n [-4, -10]\n ],\n [\n [6893, 6457],\n [-20, 15],\n [-9, 43],\n [-21, 45],\n [-51, -12],\n [-45, -1],\n [-39, -8]\n ],\n [\n [2836, 5484],\n [-9, 17],\n [-6, 32],\n [7, 16],\n [-7, 4],\n [-5, 20],\n [-14, 16],\n [-12, -4],\n [-6, -20],\n [-11, -15],\n [-6, -2],\n [-3, -13],\n [13, -32],\n [-7, -7],\n [-4, -9],\n [-13, -3],\n [-5, 35],\n [-4, -10],\n [-9, 4],\n [-5, 24],\n [-12, 3],\n [-7, 7],\n [-12, 0],\n [-1, -13],\n [-3, 9]\n ],\n [\n [2707, 5623],\n [10, -22],\n [-1, -12],\n [11, -3],\n [3, 5],\n [8, -14],\n [13, 4],\n [12, 15],\n [17, 12],\n [9, 17],\n [16, -3],\n [-1, -6],\n [15, -2],\n [12, -10],\n [10, -18],\n [10, -16]\n ],\n [\n [3045, 3974],\n [-28, 33],\n [-2, 25],\n [-55, 59],\n [-50, 65],\n [-22, 36],\n [-11, 49],\n [4, 17],\n [-23, 77],\n [-28, 109],\n [-26, 118],\n [-11, 27],\n [-9, 43],\n [-21, 39],\n [-20, 24],\n [9, 26],\n [-14, 57],\n [9, 41],\n [22, 37]\n ],\n [\n [8510, 5555],\n [2, -40],\n [2, -33],\n [-9, -54],\n [-11, 60],\n [-13, -30],\n [9, -43],\n [-8, -28],\n [-32, 35],\n [-8, 42],\n [8, 28],\n [-17, 28],\n [-9, -24],\n [-13, 2],\n [-21, -33],\n [-4, 17],\n [11, 50],\n [17, 17],\n [15, 22],\n [10, -27],\n [21, 17],\n [5, 26],\n [19, 1],\n [-1, 46],\n [22, -28],\n [3, -30],\n [2, -21]\n ],\n [\n [8443, 5665],\n [-10, -20],\n [-9, -37],\n [-8, -17],\n [-17, 40],\n [5, 16],\n [7, 17],\n [3, 36],\n [16, 4],\n [-5, -40],\n [21, 57],\n [-3, -56]\n ],\n [\n [8291, 5608],\n [-37, -56],\n [14, 41],\n [20, 37],\n [16, 41],\n [15, 58],\n [5, -48],\n [-18, -33],\n [-15, -40]\n ],\n [\n [8385, 5760],\n [16, -18],\n [18, 0],\n [0, -25],\n [-13, -25],\n [-18, -18],\n [-1, 28],\n [2, 30],\n [-4, 28]\n ],\n [\n [8485, 5776],\n [8, -66],\n [-21, 16],\n [0, -20],\n [7, -37],\n [-13, -13],\n [-1, 42],\n [-9, 3],\n [-4, 36],\n [16, -5],\n [0, 22],\n [-17, 45],\n [27, -1],\n [7, -22]\n ],\n [\n [8375, 5830],\n [-7, -51],\n [-12, 29],\n [-15, 45],\n [24, -2],\n [10, -21]\n ],\n [\n [8369, 6151],\n [17, -17],\n [9, 15],\n [2, -15],\n [-4, -24],\n [9, -43],\n [-7, -49],\n [-16, -19],\n [-5, -48],\n [7, -47],\n [14, -7],\n [13, 7],\n [34, -32],\n [-2, -32],\n [9, -15],\n [-3, -27],\n [-22, 29],\n [-10, 31],\n [-7, -22],\n [-18, 36],\n [-25, -9],\n [-14, 13],\n [1, 25],\n [9, 15],\n [-8, 13],\n [-4, -21],\n [-14, 34],\n [-4, 26],\n [-1, 56],\n [11, -19],\n [3, 92],\n [9, 54],\n [17, 0]\n ],\n [\n [9329, 4655],\n [-8, -6],\n [-12, 22],\n [-12, 38],\n [-6, 45],\n [4, 6],\n [3, -18],\n [8, -13],\n [14, -38],\n [13, -20],\n [-4, -16]\n ],\n [\n [9221, 4734],\n [-15, -5],\n [-4, -17],\n [-15, -14],\n [-15, -14],\n [-14, 0],\n [-23, 18],\n [-16, 16],\n [2, 18],\n [25, -8],\n [15, 4],\n [5, 29],\n [4, 1],\n [2, -31],\n [16, 4],\n [8, 20],\n [16, 21],\n [-4, 35],\n [17, 1],\n [6, -9],\n [-1, -33],\n [-9, -36]\n ],\n [\n [8916, 4904],\n [48, -41],\n [51, -34],\n [19, -30],\n [16, -30],\n [4, -34],\n [46, -37],\n [7, -31],\n [-25, -7],\n [6, -39],\n [25, -39],\n [18, -62],\n [15, 2],\n [-1, -27],\n [22, -10],\n [-9, -11],\n [30, -25],\n [-3, -17],\n [-18, -4],\n [-7, 16],\n [-24, 6],\n [-28, 9],\n [-22, 38],\n [-16, 32],\n [-14, 52],\n [-36, 26],\n [-24, -17],\n [-17, -20],\n [4, -43],\n [-22, -20],\n [-16, 9],\n [-28, 3]\n ],\n [\n [9253, 4792],\n [-9, -16],\n [-5, 35],\n [-6, 23],\n [-13, 19],\n [-16, 25],\n [-20, 18],\n [8, 14],\n [15, -17],\n [9, -13],\n [12, -14],\n [11, -25],\n [11, -19],\n [3, -30]\n ],\n [\n [5392, 8233],\n [19, 18],\n [43, 27],\n [35, 20],\n [28, -10],\n [2, -14],\n [27, -1]\n ],\n [\n [5546, 8273],\n [34, -7],\n [51, 1]\n ],\n [\n [5653, 8105],\n [14, -52],\n [-3, -17],\n [-14, -6],\n [-25, -50],\n [7, -26],\n [-6, 3]\n ],\n [\n [5626, 7957],\n [-26, 23],\n [-20, -8],\n [-13, 6],\n [-17, -13],\n [-14, 21],\n [-11, -8],\n [-2, 4]\n ],\n [\n [3159, 6151],\n [14, -5],\n [5, -12],\n [-7, -15],\n [-21, 1],\n [-17, -2],\n [-1, 25],\n [4, 9],\n [23, -1]\n ],\n [\n [8628, 7562],\n [4, -10]\n ],\n [\n [8632, 7552],\n [-11, 3],\n [-12, -20],\n [-8, -20],\n [1, -42],\n [-14, -13],\n [-5, -11],\n [-11, -17],\n [-18, -10],\n [-12, -16],\n [-1, -25],\n [-3, -7],\n [11, -9],\n [15, -26]\n ],\n [\n [8504, 7288],\n [-13, 11],\n [-4, -11],\n [-8, -5],\n [-1, 11],\n [-7, 5],\n [-8, 10],\n [8, 26],\n [7, 7],\n [-3, 11],\n [7, 31],\n [-2, 10],\n [-16, 7],\n [-13, 15]\n ],\n [\n [4792, 7249],\n [-11, -15],\n [-14, 8],\n [-15, -6],\n [5, 46],\n [-3, 36],\n [-12, 6],\n [-7, 22],\n [2, 39],\n [11, 21],\n [2, 24],\n [6, 36],\n [-1, 25],\n [-5, 21],\n [-1, 20]\n ],\n [\n [6411, 6520],\n [-2, 43],\n [7, 31],\n [8, 6],\n [8, -18],\n [1, -35],\n [-6, -35]\n ],\n [\n [6427, 6512],\n [-8, -4],\n [-8, 12]\n ],\n [\n [5630, 7886],\n [12, 13],\n [17, -7],\n [18, 0],\n [13, -14],\n [10, 9],\n [20, 5],\n [7, 14],\n [12, 0]\n ],\n [\n [5784, 7745],\n [12, -11],\n [13, 9],\n [13, -10]\n ],\n [\n [5822, 7733],\n [0, -15],\n [-13, -13],\n [-9, 6],\n [-7, -71]\n ],\n [\n [5629, 7671],\n [-5, 10],\n [6, 10],\n [-7, 7],\n [-8, -13],\n [-17, 17],\n [-2, 25],\n [-17, 14],\n [-3, 18],\n [-15, 24]\n ],\n [\n [8989, 8056],\n [28, -105],\n [-41, 19],\n [-17, -85],\n [27, -61],\n [-1, -41],\n [-21, 36],\n [-18, -46],\n [-5, 50],\n [3, 57],\n [-3, 64],\n [6, 45],\n [2, 79],\n [-17, 58],\n [3, 80],\n [25, 28],\n [-11, 27],\n [13, 8],\n [7, -39],\n [10, -57],\n [-1, -58],\n [11, -59]\n ],\n [\n [5546, 8273],\n [6, 26],\n [38, 19]\n ],\n [\n [0, 9132],\n [68, -45],\n [73, -59],\n [-3, -37],\n [19, -15],\n [-6, 43],\n [75, -8],\n [55, -56],\n [-28, -26],\n [-46, -6],\n [0, -57],\n [-11, -13],\n [-26, 2],\n [-22, 21],\n [-36, 17],\n [-7, 26],\n [-28, 9],\n [-31, -7],\n [-16, 20],\n [6, 22],\n [-33, -14],\n [13, -28],\n [-16, -25]\n ],\n [\n [0, 8896],\n [0, 236]\n ],\n [\n [0, 9282],\n [9999, -40],\n [-30, -3],\n [-5, 19],\n [-9964, 24]\n ],\n [\n [0, 9282],\n [4, 3],\n [23, 0],\n [40, -17],\n [-2, -8],\n [-29, -14],\n [-36, -4],\n [0, 40]\n ],\n [\n [8988, 9383],\n [-42, -1],\n [-57, 7],\n [-5, 3],\n [27, 23],\n [34, 6],\n [40, -23],\n [3, -15]\n ],\n [\n [9186, 9493],\n [-32, -23],\n [-44, 5],\n [-52, 23],\n [7, 20],\n [51, -9],\n [70, -16]\n ],\n [\n [9029, 9522],\n [-22, -44],\n [-102, 1],\n [-46, -14],\n [-55, 39],\n [15, 40],\n [37, 11],\n [73, -2],\n [100, -31]\n ],\n [\n [6598, 9235],\n [-17, -5],\n [-91, 8],\n [-7, 26],\n [-50, 16],\n [-4, 32],\n [28, 13],\n [-1, 32],\n [55, 50],\n [-25, 7],\n [66, 52],\n [-7, 27],\n [62, 31],\n [91, 38],\n [93, 11],\n [48, 22],\n [54, 8],\n [19, -23],\n [-19, -19],\n [-98, -29],\n [-85, -28],\n [-86, -57],\n [-42, -57],\n [-43, -57],\n [5, -49],\n [54, -49]\n ],\n [\n [0, 8896],\n [9963, -26],\n [-36, 4],\n [25, -31],\n [17, -49],\n [13, -16],\n [3, -24],\n [-7, -16],\n [-52, 13],\n [-78, -44],\n [-25, -7],\n [-42, -42],\n [-40, -36],\n [-11, -27],\n [-39, 41],\n [-73, -46],\n [-12, 22],\n [-27, -26],\n [-37, 8],\n [-9, -38],\n [-33, -58],\n [1, -24],\n [31, -13],\n [-4, -86],\n [-25, -2],\n [-12, -49],\n [11, -26],\n [-48, -30],\n [-10, -67],\n [-41, -15],\n [-9, -60],\n [-40, -55],\n [-10, 41],\n [-12, 86],\n [-15, 131],\n [13, 82],\n [23, 35],\n [2, 28],\n [43, 13],\n [50, 75],\n [47, 60],\n [50, 48],\n [23, 83],\n [-34, -5],\n [-17, -49],\n [-70, -65],\n [-23, 73],\n [-72, -20],\n [-69, -99],\n [23, -36],\n [-62, -16],\n [-43, -6],\n [2, 43],\n [-43, 9],\n [-35, -29],\n [-85, 10],\n [-91, -18],\n [-90, -115],\n [-106, -139],\n [43, -8],\n [14, -37],\n [27, -13],\n [18, 30],\n [30, -4],\n [40, -65],\n [1, -50],\n [-21, -59],\n [-3, -71],\n [-12, -94],\n [-42, -86],\n [-9, -41],\n [-38, -69],\n [-38, -68],\n [-18, -35],\n [-37, -34],\n [-17, -1],\n [-17, 29],\n [-38, -44],\n [-4, -19]\n ],\n [\n [6363, 7799],\n [-12, -35],\n [-27, -10],\n [-28, -61],\n [25, -56],\n [-2, -40],\n [30, -70]\n ],\n [\n [6109, 7624],\n [-35, 49],\n [-32, 23],\n [-24, 34],\n [20, 10],\n [23, 49],\n [-15, 24],\n [41, 24],\n [-1, 13],\n [-25, -10]\n ],\n [\n [6061, 7840],\n [1, 26],\n [14, 17],\n [27, 4],\n [5, 20],\n [-7, 33],\n [12, 30],\n [-1, 18],\n [-41, 19],\n [-16, -1],\n [-17, 28],\n [-21, -9],\n [-35, 20],\n [0, 12],\n [-10, 26],\n [-22, 3],\n [-2, 18],\n [7, 12],\n [-18, 33],\n [-29, -5],\n [-8, 3],\n [-7, -14],\n [-11, 3]\n ],\n [\n [5777, 8571],\n [31, 33],\n [-29, 28]\n ],\n [\n [5863, 9167],\n [29, 20],\n [46, -35],\n [76, -14],\n [105, -67],\n [21, -28],\n [2, -40],\n [-31, -31],\n [-45, -15],\n [-124, 44],\n [-21, -7],\n [45, -43],\n [2, -28],\n [2, -60],\n [36, -18],\n [22, -15],\n [3, 28],\n [-17, 26],\n [18, 22],\n [67, -37],\n [24, 15],\n [-19, 43],\n [65, 58],\n [25, -4],\n [26, -20],\n [16, 40],\n [-23, 35],\n [14, 36],\n [-21, 36],\n [78, -18],\n [16, -34],\n [-35, -7],\n [0, -33],\n [22, -20],\n [43, 13],\n [7, 38],\n [58, 28],\n [97, 50],\n [20, -3],\n [-27, -35],\n [35, -7],\n [19, 21],\n [52, 1],\n [42, 25],\n [31, -36],\n [32, 39],\n [-29, 35],\n [14, 19],\n [82, -18],\n [39, -18],\n [100, -68],\n [19, 31],\n [-28, 31],\n [-1, 13],\n [-34, 6],\n [10, 28],\n [-15, 46],\n [-1, 19],\n [51, 53],\n [18, 54],\n [21, 11],\n [74, -15],\n [5, -33],\n [-26, -48],\n [17, -19],\n [9, -41],\n [-6, -81],\n [31, -36],\n [-12, -40],\n [-55, -84],\n [32, -8],\n [11, 21],\n [31, 15],\n [7, 29],\n [24, 29],\n [-16, 33],\n [13, 39],\n [-31, 5],\n [-6, 33],\n [22, 59],\n [-36, 48],\n [50, 40],\n [-7, 42],\n [14, 2],\n [15, -33],\n [-11, -57],\n [29, -11],\n [-12, 43],\n [46, 23],\n [58, 3],\n [51, -34],\n [-25, 49],\n [-2, 63],\n [48, 12],\n [67, -2],\n [60, 7],\n [-23, 31],\n [33, 39],\n [31, 2],\n [54, 29],\n [74, 8],\n [9, 16],\n [73, 6],\n [23, -14],\n [62, 32],\n [51, -1],\n [8, 25],\n [26, 25],\n [66, 25],\n [48, -19],\n [-38, -15],\n [63, -9],\n [7, -29],\n [25, 14],\n [82, -1],\n [62, -29],\n [23, -22],\n [-7, -30],\n [-31, -18],\n [-73, -33],\n [-21, -17],\n [35, -8],\n [41, -15],\n [25, 11],\n [14, -38],\n [12, 15],\n [44, 10],\n [90, -10],\n [6, -28],\n [116, -9],\n [2, 46],\n [59, -11],\n [44, 1],\n [45, -32],\n [13, -37],\n [-17, -25],\n [35, -47],\n [44, -24],\n [27, 62],\n [44, -26],\n [48, 16],\n [53, -18],\n [21, 16],\n [45, -8],\n [-20, 55],\n [37, 25],\n [251, -38],\n [24, -35],\n [72, -45],\n [112, 11],\n [56, -10],\n [23, -24],\n [-4, -44],\n [35, -16],\n [37, 12],\n [49, 1],\n [52, -11],\n [53, 6],\n [49, -52],\n [34, 19],\n [-23, 37],\n [13, 27],\n [88, -17],\n [58, 4],\n [80, -29],\n [-9960, -25]\n ],\n [\n [7918, 9684],\n [-157, -23],\n [51, 77],\n [23, 7],\n [21, -4],\n [70, -33],\n [-8, -24]\n ],\n [\n [6420, 9816],\n [-37, -8],\n [-25, -4],\n [-4, -10],\n [-33, -10],\n [-30, 14],\n [16, 19],\n [-62, 2],\n [54, 10],\n [43, 1],\n [5, -16],\n [16, 14],\n [26, 10],\n [42, -13],\n [-11, -9]\n ],\n [\n [7775, 9718],\n [-60, -8],\n [-78, 17],\n [-46, 23],\n [-21, 42],\n [-38, 12],\n [72, 40],\n [60, 14],\n [54, -30],\n [64, -57],\n [-7, -53]\n ],\n [\n [5844, 4990],\n [11, -33],\n [-1, -35],\n [-8, -7]\n ],\n [\n [5821, 4978],\n [7, -6],\n [16, 18]\n ],\n [\n [4526, 6298],\n [1, 25]\n ],\n [\n [6188, 6023],\n [-4, 26],\n [-8, 17],\n [-2, 24],\n [-15, 21],\n [-15, 50],\n [-7, 48],\n [-20, 40],\n [-12, 10],\n [-18, 56],\n [-4, 41],\n [2, 35],\n [-16, 66],\n [-13, 23],\n [-15, 12],\n [-10, 34],\n [2, 13],\n [-8, 31],\n [-8, 13],\n [-11, 44],\n [-17, 48],\n [-14, 40],\n [-14, 0],\n [5, 33],\n [1, 20],\n [3, 24]\n ],\n [\n [6344, 6744],\n [11, -51],\n [14, -13],\n [5, -21],\n [18, -25],\n [2, -24],\n [-3, -20],\n [4, -20],\n [8, -16],\n [4, -20],\n [4, -14]\n ],\n [\n [6427, 6512],\n [5, -22]\n ],\n [\n [6444, 6180],\n [-80, -23],\n [-26, -26],\n [-20, -62],\n [-13, -10],\n [-7, 20],\n [-11, -3],\n [-27, 6],\n [-5, 5],\n [-32, -1],\n [-7, -5],\n [-12, 15],\n [-7, -29],\n [3, -25],\n [-12, -19]\n ],\n [\n [5943, 5617],\n [-4, 1],\n [0, 29],\n [-3, 20],\n [-14, 24],\n [-4, 42],\n [4, 44],\n [-13, 4],\n [-2, -13],\n [-17, -3],\n [7, -17],\n [2, -36],\n [-15, -32],\n [-14, -43],\n [-14, -6],\n [-23, 34],\n [-11, -12],\n [-3, -17],\n [-14, -11],\n [-1, -12],\n [-28, 0],\n [-3, 12],\n [-20, 2],\n [-10, -10],\n [-8, 5],\n [-14, 34],\n [-5, 17],\n [-20, -9],\n [-8, -27],\n [-7, -53],\n [-10, -11],\n [-8, -6]\n ],\n [\n [5663, 5567],\n [-2, 2]\n ],\n [\n [5635, 5716],\n [0, 14],\n [-10, 17],\n [-1, 35],\n [-5, 23],\n [-10, -4],\n [3, 22],\n [7, 25],\n [-3, 24],\n [9, 18],\n [-6, 14],\n [7, 36],\n [13, 44],\n [24, -4],\n [-1, 234]\n ],\n [\n [6023, 6357],\n [9, -58],\n [-6, -10],\n [4, -61],\n [11, -71],\n [10, -14],\n [15, -22]\n ],\n [\n [5943, 5624],\n [0, -7]\n ],\n [\n [5943, 5617],\n [0, -46]\n ],\n [\n [5944, 5309],\n [-17, -28],\n [-20, 1],\n [-22, -14],\n [-18, 13],\n [-11, -16]\n ],\n [\n [5682, 5544],\n [-19, 23]\n ],\n [\n [4535, 5861],\n [-11, 46],\n [-14, 21],\n [12, 11],\n [14, 41],\n [6, 31]\n ],\n [\n [4536, 5789],\n [-4, 45]\n ],\n [\n [9502, 4438],\n [8, -20],\n [-19, 0],\n [-11, 37],\n [17, -15],\n [5, -2]\n ],\n [\n [9467, 4474],\n [-11, -1],\n [-17, 6],\n [-5, 9],\n [1, 23],\n [19, -9],\n [9, -12],\n [4, -16]\n ],\n [\n [9490, 4490],\n [-4, -11],\n [-21, 52],\n [-5, 35],\n [9, 0],\n [10, -47],\n [11, -29]\n ],\n [\n [9440, 4565],\n [1, -12],\n [-22, 25],\n [-15, 21],\n [-10, 20],\n [4, 6],\n [13, -14],\n [23, -27],\n [6, -19]\n ],\n [\n [9375, 4623],\n [-5, -3],\n [-13, 14],\n [-11, 24],\n [1, 10],\n [17, -25],\n [11, -20]\n ],\n [\n [4682, 5458],\n [-8, 5],\n [-20, 24],\n [-14, 31],\n [-5, 22],\n [-3, 43]\n ],\n [\n [2561, 5848],\n [-3, -14],\n [-16, 1],\n [-10, 6],\n [-12, 12],\n [-15, 3],\n [-8, 13]\n ],\n [\n [6198, 5735],\n [9, -11],\n [5, -25],\n [13, -24],\n [14, -1],\n [26, 16],\n [30, 7],\n [25, 18],\n [13, 4],\n [10, 11],\n [16, 2]\n ],\n [\n [6359, 5732],\n [0, -1],\n [0, -25],\n [0, -59],\n [0, -31],\n [-13, -36],\n [-19, -50]\n ],\n [\n [6359, 5732],\n [9, 1],\n [13, 9],\n [14, 6],\n [14, 20],\n [10, 0],\n [1, -16],\n [-3, -35],\n [0, -31],\n [-6, -21],\n [-7, -64],\n [-14, -66],\n [-17, -75],\n [-24, -87],\n [-23, -66],\n [-33, -81],\n [-28, -48],\n [-42, -58],\n [-25, -45],\n [-31, -72],\n [-6, -31],\n [-6, -14]\n ],\n [\n [3412, 5410],\n [34, -11],\n [2, 10],\n [23, 4],\n [30, -15]\n ],\n [\n [3489, 5306],\n [10, -35],\n [-4, -25]\n ],\n [\n [5626, 7957],\n [-8, -15],\n [-5, -24]\n ],\n [\n [5380, 7746],\n [7, 5]\n ],\n [\n [5663, 8957],\n [-47, -17],\n [-27, -41],\n [4, -36],\n [-44, -48],\n [-54, -50],\n [-20, -84],\n [20, -41],\n [26, -33],\n [-25, -67],\n [-29, -14],\n [-11, -99],\n [-15, -55],\n [-34, 6],\n [-16, -47],\n [-32, -3],\n [-9, 56],\n [-23, 67],\n [-21, 84]\n ],\n [\n [5890, 3478],\n [-5, -26],\n [-17, -6],\n [-16, 32],\n [0, 20],\n [7, 22],\n [3, 17],\n [8, 5],\n [14, -11]\n ],\n [\n [5999, 7104],\n [-2, 45],\n [7, 25]\n ],\n [\n [6004, 7174],\n [7, 13],\n [7, 13],\n [2, 33],\n [9, -12],\n [31, 17],\n [14, -12],\n [23, 1],\n [32, 22],\n [15, -1],\n [32, 9]\n ],\n [\n [5051, 5420],\n [-22, -12]\n ],\n [\n [7849, 5777],\n [-25, 28],\n [-24, -2],\n [4, 47],\n [-24, 0],\n [-2, -65],\n [-15, -87],\n [-10, -52],\n [2, -43],\n [18, -2],\n [12, -53],\n [5, -52],\n [15, -33],\n [17, -7],\n [14, -31]\n ],\n [\n [7779, 5439],\n [-11, 23],\n [-4, 29],\n [-15, 34],\n [-14, 28],\n [-4, -35],\n [-5, 33],\n [3, 37],\n [8, 56]\n ],\n [\n [6883, 7252],\n [16, 60],\n [-6, 44],\n [-20, 14],\n [7, 26],\n [23, -3],\n [13, 33],\n [9, 38],\n [37, 13],\n [-6, -27],\n [4, -17],\n [12, 2]\n ],\n [\n [6497, 7255],\n [-5, 42],\n [4, 62],\n [-22, 20],\n [8, 40],\n [-19, 4],\n [6, 49],\n [26, -14],\n [25, 19],\n [-20, 35],\n [-8, 34],\n [-23, -15],\n [-3, -43],\n [-8, 38]\n ],\n [\n [6554, 7498],\n [31, 1],\n [-4, 29],\n [24, 21],\n [23, 34],\n [37, -31],\n [3, -47],\n [11, -12],\n [30, 2],\n [9, -10],\n [14, -61],\n [32, -41],\n [18, -28],\n [29, -29],\n [37, -25],\n [-1, -36]\n ],\n [\n [8471, 4532],\n [3, 14],\n [24, 13],\n [19, 2],\n [9, 8],\n [10, -8],\n [-10, -16],\n [-29, -25],\n [-23, -17]\n ],\n [\n [3286, 5693],\n [16, 8],\n [6, -2],\n [-1, -44],\n [-23, -7],\n [-5, 6],\n [8, 16],\n [-1, 23]\n ],\n [\n [5233, 7240],\n [31, 24],\n [19, -7],\n [-1, -30],\n [24, 22],\n [2, -12],\n [-14, -29],\n [0, -27],\n [9, -15],\n [-3, -51],\n [-19, -29],\n [6, -33],\n [14, -1],\n [7, -28],\n [11, -9]\n ],\n [\n [6004, 7174],\n [-11, 27],\n [11, 22],\n [-17, -5],\n [-23, 13],\n [-19, -34],\n [-43, -6],\n [-22, 31],\n [-30, 2],\n [-6, -24],\n [-20, -7],\n [-26, 31],\n [-31, -1],\n [-16, 59],\n [-21, 33],\n [14, 46],\n [-18, 28],\n [31, 56],\n [43, 3],\n [12, 45],\n [53, -8],\n [33, 38],\n [32, 17],\n [46, 1],\n [49, -42],\n [40, -22],\n [32, 9],\n [24, -6],\n [33, 31]\n ],\n [\n [5777, 7539],\n [3, -23],\n [25, -19],\n [-5, -14],\n [-33, -3],\n [-12, -19],\n [-23, -31],\n [-9, 27],\n [0, 12]\n ],\n [\n [8382, 6499],\n [-17, -95],\n [-12, -49],\n [-14, 50],\n [-4, 44],\n [17, 58],\n [22, 45],\n [13, -18],\n [-5, -35]\n ],\n [\n [6088, 4781],\n [-12, -73],\n [1, -33],\n [18, -22],\n [1, -15],\n [-8, -36],\n [2, -18],\n [-2, -28],\n [10, -37],\n [11, -58],\n [10, -13]\n ],\n [\n [5909, 4512],\n [-15, 18],\n [-18, 10],\n [-11, 10],\n [-12, 15]\n ],\n [\n [5844, 4990],\n [10, 8],\n [31, -1],\n [56, 4]\n ],\n [\n [6061, 7840],\n [-22, -5],\n [-18, -19],\n [-26, -3],\n [-24, -22],\n [1, -37],\n [14, -14],\n [28, 4],\n [-5, -21],\n [-31, -11],\n [-37, -34],\n [-16, 12],\n [6, 28],\n [-30, 17],\n [5, 12],\n [26, 19],\n [-8, 14],\n [-43, 15],\n [-2, 22],\n [-25, -8],\n [-11, -32],\n [-21, -44]\n ],\n [\n [3517, 3063],\n [-12, -38],\n [-31, -32],\n [-21, 11],\n [-15, -6],\n [-26, 25],\n [-18, -1],\n [-17, 32]\n ],\n [\n [679, 6185],\n [-4, -10],\n [-7, 8],\n [1, 17],\n [-4, 21],\n [1, 7],\n [5, 10],\n [-2, 11],\n [1, 6],\n [3, -1],\n [10, -10],\n [5, -5],\n [5, -8],\n [7, -21],\n [-1, -3],\n [-11, -13],\n [-9, -9]\n ],\n [\n [664, 6277],\n [-9, -4],\n [-5, 12],\n [-3, 5],\n [0, 4],\n [3, 5],\n [9, -6],\n [8, -9],\n [-3, -7]\n ],\n [\n [646, 6309],\n [-1, -7],\n [-15, 2],\n [2, 7],\n [14, -2]\n ],\n [\n [621, 6317],\n [-2, -3],\n [-2, 1],\n [-9, 2],\n [-4, 13],\n [-1, 2],\n [7, 8],\n [3, -3],\n [8, -20]\n ],\n [\n [574, 6356],\n [-4, -6],\n [-9, 11],\n [1, 4],\n [5, 6],\n [6, -1],\n [1, -14]\n ],\n [\n [3135, 7724],\n [5, -19],\n [-30, -29],\n [-29, -20],\n [-29, -18],\n [-15, -35],\n [-4, -13],\n [-1, -31],\n [10, -32],\n [11, -1],\n [-3, 21],\n [8, -13],\n [-2, -17],\n [-19, -9],\n [-13, 1],\n [-20, -10],\n [-12, -3],\n [-17, -3],\n [-23, -17],\n [41, 11],\n [8, -11],\n [-39, -18],\n [-17, 0],\n [0, 7],\n [-8, -16],\n [8, -3],\n [-6, -43],\n [-20, -45],\n [-2, 15],\n [-6, 3],\n [-9, 15],\n [5, -32],\n [7, -10],\n [1, -23],\n [-9, -23],\n [-16, -47],\n [-2, 3],\n [8, 40],\n [-14, 22],\n [-3, 49],\n [-5, -25],\n [5, -38],\n [-18, 10],\n [19, -19],\n [1, -57],\n [8, -4],\n [3, -20],\n [4, -59],\n [-17, -44],\n [-29, -18],\n [-18, -34],\n [-14, -4],\n [-14, -22],\n [-4, -20],\n [-31, -38],\n [-16, -28],\n [-13, -35],\n [-4, -42],\n [5, -41],\n [9, -51],\n [13, -41],\n [0, -26],\n [13, -69],\n [-1, -39],\n [-1, -23],\n [-7, -36],\n [-8, -8],\n [-14, 7],\n [-4, 26],\n [-11, 14],\n [-15, 51],\n [-13, 45],\n [-4, 23],\n [6, 39],\n [-8, 33],\n [-22, 49],\n [-10, 9],\n [-28, -27],\n [-5, 3],\n [-14, 28],\n [-17, 14],\n [-32, -7],\n [-24, 7],\n [-21, -5],\n [-12, -9],\n [5, -15],\n [0, -24],\n [5, -12],\n [-5, -8],\n [-10, 9],\n [-11, -11],\n [-20, 2],\n [-20, 31],\n [-25, -8],\n [-20, 14],\n [-17, -4],\n [-24, -14],\n [-25, -44],\n [-27, -25],\n [-16, -28],\n [-6, -27],\n [0, -41],\n [1, -28],\n [5, -20]\n ],\n [\n [1746, 6980],\n [-4, 30],\n [-18, 34],\n [-13, 7],\n [-3, 17],\n [-16, 3],\n [-10, 16],\n [-26, 6],\n [-7, 9],\n [-3, 32],\n [-27, 60],\n [-23, 82],\n [1, 14],\n [-13, 19],\n [-21, 50],\n [-4, 48],\n [-15, 32],\n [6, 49],\n [-1, 51],\n [-8, 45],\n [10, 56],\n [4, 53],\n [3, 54],\n [-5, 79],\n [-9, 51],\n [-8, 27],\n [4, 12],\n [40, -20],\n [15, -56],\n [7, 15],\n [-5, 49],\n [-9, 48]\n ],\n [\n [750, 8432],\n [-28, -23],\n [-14, 15],\n [-4, 28],\n [25, 21],\n [15, 9],\n [18, -4],\n [12, -18],\n [-24, -28]\n ],\n [\n [401, 8597],\n [-18, -9],\n [-18, 11],\n [-17, 16],\n [28, 10],\n [22, -6],\n [3, -22]\n ],\n [\n [230, 8826],\n [17, -12],\n [17, 6],\n [23, -15],\n [27, -8],\n [-2, -7],\n [-21, -12],\n [-21, 13],\n [-11, 11],\n [-24, -4],\n [-7, 5],\n [2, 23]\n ],\n [\n [1374, 8295],\n [-15, 22],\n [-25, 19],\n [-8, 52],\n [-36, 47],\n [-15, 56],\n [-26, 4],\n [-44, 2],\n [-33, 17],\n [-57, 61],\n [-27, 11],\n [-49, 21],\n [-38, -5],\n [-55, 27],\n [-33, 25],\n [-30, -12],\n [5, -41],\n [-15, -4],\n [-32, -12],\n [-25, -20],\n [-30, -13],\n [-4, 35],\n [12, 58],\n [30, 18],\n [-8, 15],\n [-35, -33],\n [-19, -39],\n [-40, -42],\n [20, -29],\n [-26, -42],\n [-30, -25],\n [-28, -18],\n [-7, -26],\n [-43, -31],\n [-9, -28],\n [-32, -25],\n [-20, 5],\n [-25, -17],\n [-29, -20],\n [-23, -20],\n [-47, -16],\n [-5, 9],\n [31, 28],\n [27, 18],\n [29, 33],\n [35, 6],\n [14, 25],\n [38, 35],\n [6, 12],\n [21, 21],\n [5, 44],\n [14, 35],\n [-32, -18],\n [-9, 11],\n [-15, -22],\n [-18, 30],\n [-8, -21],\n [-10, 29],\n [-28, -23],\n [-17, 0],\n [-3, 35],\n [5, 21],\n [-17, 22],\n [-37, -12],\n [-23, 28],\n [-19, 14],\n [0, 34],\n [-22, 25],\n [11, 34],\n [23, 33],\n [10, 30],\n [22, 4],\n [19, -9],\n [23, 28],\n [20, -5],\n [21, 19],\n [-5, 27],\n [-16, 10],\n [21, 23],\n [-17, -1],\n [-30, -13],\n [-8, -13],\n [-22, 13],\n [-39, -6],\n [-41, 14],\n [-12, 24],\n [-35, 34],\n [39, 25],\n [62, 29],\n [23, 0],\n [-4, -30],\n [59, 2],\n [-23, 37],\n [-34, 23],\n [-20, 29],\n [-26, 25],\n [-38, 19],\n [15, 31],\n [49, 2],\n [35, 27],\n [7, 29],\n [28, 28],\n [28, 6],\n [52, 27],\n [26, -4],\n [42, 31],\n [42, -12],\n [21, -27],\n [12, 11],\n [47, -3],\n [-2, -14],\n [43, -10],\n [28, 6],\n [59, -18],\n [53, -6],\n [21, -8],\n [37, 10],\n [42, -18],\n [31, -8]\n ],\n [\n [3018, 5753],\n [-1, -14],\n [-16, -7],\n [9, -26],\n [0, -31],\n [-12, -35],\n [10, -47],\n [12, 4],\n [6, 43],\n [-8, 21],\n [-2, 45],\n [35, 24],\n [-4, 27],\n [10, 19],\n [10, -41],\n [19, -1],\n [18, -33],\n [1, -20],\n [25, 0],\n [30, 6],\n [16, -27],\n [21, -7],\n [16, 18],\n [0, 15],\n [34, 4],\n [34, 1],\n [-24, -18],\n [10, -28],\n [22, -4],\n [21, -29],\n [4, -48],\n [15, 2],\n [11, -14]\n ],\n [\n [8001, 6331],\n [-37, -51],\n [-24, -56],\n [-6, -41],\n [22, -62],\n [25, -77],\n [26, -37],\n [17, -47],\n [12, -109],\n [-3, -104],\n [-24, -39],\n [-31, -38],\n [-23, -49],\n [-35, -55],\n [-10, 37],\n [8, 40],\n [-21, 34]\n ],\n [\n [9661, 4085],\n [-9, -8],\n [-9, 26],\n [1, 16],\n [17, -34]\n ],\n [\n [9641, 4175],\n [4, -47],\n [-7, 7],\n [-6, -3],\n [-4, 16],\n [0, 45],\n [13, -18]\n ],\n [\n [6475, 6041],\n [-21, -16],\n [-5, -26],\n [-1, -20],\n [-27, -25],\n [-45, -28],\n [-24, -41],\n [-13, -3],\n [-8, 3],\n [-16, -25],\n [-18, -11],\n [-23, -3],\n [-7, -3],\n [-6, -16],\n [-8, -4],\n [-4, -15],\n [-14, 1],\n [-9, -8],\n [-19, 3],\n [-7, 35],\n [1, 32],\n [-5, 17],\n [-5, 44],\n [-8, 24],\n [5, 3],\n [-2, 27],\n [3, 12],\n [-1, 25]\n ],\n [\n [5817, 3752],\n [11, 0],\n [14, -10],\n [9, 7],\n [15, -6]\n ],\n [\n [5911, 3478],\n [-7, -43],\n [-3, -49],\n [-7, -27],\n [-19, -30],\n [-5, -8],\n [-12, -30],\n [-8, -31],\n [-16, -42],\n [-31, -61],\n [-20, -36],\n [-21, -26],\n [-29, -23],\n [-14, -3],\n [-3, -17],\n [-17, 9],\n [-14, -11],\n [-30, 11],\n [-17, -7],\n [-12, 3],\n [-28, -23],\n [-24, -10],\n [-17, -22],\n [-13, -1],\n [-11, 21],\n [-10, 1],\n [-12, 26],\n [-1, -8],\n [-4, 16],\n [0, 34],\n [-9, 40],\n [9, 11],\n [0, 45],\n [-19, 55],\n [-14, 50],\n [0, 1],\n [-20, 76]\n ],\n [\n [5840, 4141],\n [-21, -8],\n [-15, -23],\n [-4, -21],\n [-10, -4],\n [-24, -49],\n [-15, -38],\n [-10, -2],\n [-9, 7],\n [-31, 7]\n ]\n ],\n \"transform\": {\n \"scale\": [0.036003600360036005, 0.016927109510951093],\n \"translate\": [-180, -85.609038]\n }\n}\n;\n Datamap.prototype.abwTopo = '__ABW__';\n Datamap.prototype.afgTopo = '__AFG__';\n Datamap.prototype.agoTopo = '__AGO__';\n Datamap.prototype.aiaTopo = '__AIA__';\n Datamap.prototype.albTopo = '__ALB__';\n Datamap.prototype.aldTopo = '__ALD__';\n Datamap.prototype.andTopo = '__AND__';\n Datamap.prototype.areTopo = '__ARE__';\n Datamap.prototype.argTopo = '__ARG__';\n Datamap.prototype.armTopo = '__ARM__';\n Datamap.prototype.asmTopo = '__ASM__';\n Datamap.prototype.ataTopo = '__ATA__';\n Datamap.prototype.atcTopo = '__ATC__';\n Datamap.prototype.atfTopo = '__ATF__';\n Datamap.prototype.atgTopo = '__ATG__';\n Datamap.prototype.ausTopo = '__AUS__';\n Datamap.prototype.autTopo = '__AUT__';\n Datamap.prototype.azeTopo = '__AZE__';\n Datamap.prototype.bdiTopo = '__BDI__';\n Datamap.prototype.belTopo = '__BEL__';\n Datamap.prototype.benTopo = '__BEN__';\n Datamap.prototype.bfaTopo = '__BFA__';\n Datamap.prototype.bgdTopo = '__BGD__';\n Datamap.prototype.bgrTopo = '__BGR__';\n Datamap.prototype.bhrTopo = '__BHR__';\n Datamap.prototype.bhsTopo = '__BHS__';\n Datamap.prototype.bihTopo = '__BIH__';\n Datamap.prototype.bjnTopo = '__BJN__';\n Datamap.prototype.blmTopo = '__BLM__';\n Datamap.prototype.blrTopo = '__BLR__';\n Datamap.prototype.blzTopo = '__BLZ__';\n Datamap.prototype.bmuTopo = '__BMU__';\n Datamap.prototype.bolTopo = '__BOL__';\n Datamap.prototype.braTopo = '__BRA__';\n Datamap.prototype.brbTopo = '__BRB__';\n Datamap.prototype.brnTopo = '__BRN__';\n Datamap.prototype.btnTopo = '__BTN__';\n Datamap.prototype.norTopo = '__NOR__';\n Datamap.prototype.bwaTopo = '__BWA__';\n Datamap.prototype.cafTopo = '__CAF__';\n Datamap.prototype.canTopo = '__CAN__';\n Datamap.prototype.cheTopo = '__CHE__';\n Datamap.prototype.chlTopo = '__CHL__';\n Datamap.prototype.chnTopo = '__CHN__';\n Datamap.prototype.civTopo = '__CIV__';\n Datamap.prototype.clpTopo = '__CLP__';\n Datamap.prototype.cmrTopo = '__CMR__';\n Datamap.prototype.codTopo = '__COD__';\n Datamap.prototype.cogTopo = '__COG__';\n Datamap.prototype.cokTopo = '__COK__';\n Datamap.prototype.colTopo = '__COL__';\n Datamap.prototype.comTopo = '__COM__';\n Datamap.prototype.cpvTopo = '__CPV__';\n Datamap.prototype.criTopo = '__CRI__';\n Datamap.prototype.csiTopo = '__CSI__';\n Datamap.prototype.cubTopo = '__CUB__';\n Datamap.prototype.cuwTopo = '__CUW__';\n Datamap.prototype.cymTopo = '__CYM__';\n Datamap.prototype.cynTopo = '__CYN__';\n Datamap.prototype.cypTopo = '__CYP__';\n Datamap.prototype.czeTopo = '__CZE__';\n Datamap.prototype.deuTopo = '__DEU__';\n Datamap.prototype.djiTopo = '__DJI__';\n Datamap.prototype.dmaTopo = '__DMA__';\n Datamap.prototype.dnkTopo = '__DNK__';\n Datamap.prototype.domTopo = '__DOM__';\n Datamap.prototype.dzaTopo = '__DZA__';\n Datamap.prototype.ecuTopo = '__ECU__';\n Datamap.prototype.egyTopo = '__EGY__';\n Datamap.prototype.eriTopo = '__ERI__';\n Datamap.prototype.esbTopo = '__ESB__';\n Datamap.prototype.espTopo = '__ESP__';\n Datamap.prototype.estTopo = '__EST__';\n Datamap.prototype.ethTopo = '__ETH__';\n Datamap.prototype.finTopo = '__FIN__';\n Datamap.prototype.fjiTopo = '__FJI__';\n Datamap.prototype.flkTopo = '__FLK__';\n Datamap.prototype.fraTopo = '__FRA__';\n Datamap.prototype.froTopo = '__FRO__';\n Datamap.prototype.fsmTopo = '__FSM__';\n Datamap.prototype.gabTopo = '__GAB__';\n Datamap.prototype.psxTopo = '__PSX__';\n Datamap.prototype.gbrTopo = '__GBR__';\n Datamap.prototype.geoTopo = '__GEO__';\n Datamap.prototype.ggyTopo = '__GGY__';\n Datamap.prototype.ghaTopo = '__GHA__';\n Datamap.prototype.gibTopo = '__GIB__';\n Datamap.prototype.ginTopo = '__GIN__';\n Datamap.prototype.gmbTopo = '__GMB__';\n Datamap.prototype.gnbTopo = '__GNB__';\n Datamap.prototype.gnqTopo = '__GNQ__';\n Datamap.prototype.grcTopo = '__GRC__';\n Datamap.prototype.grdTopo = '__GRD__';\n Datamap.prototype.grlTopo = '__GRL__';\n Datamap.prototype.gtmTopo = '__GTM__';\n Datamap.prototype.gumTopo = '__GUM__';\n Datamap.prototype.guyTopo = '__GUY__';\n Datamap.prototype.hkgTopo = '__HKG__';\n Datamap.prototype.hmdTopo = '__HMD__';\n Datamap.prototype.hndTopo = '__HND__';\n Datamap.prototype.hrvTopo = '__HRV__';\n Datamap.prototype.htiTopo = '__HTI__';\n Datamap.prototype.hunTopo = '__HUN__';\n Datamap.prototype.idnTopo = '__IDN__';\n Datamap.prototype.imnTopo = '__IMN__';\n Datamap.prototype.indTopo = '__IND__';\n Datamap.prototype.ioaTopo = '__IOA__';\n Datamap.prototype.iotTopo = '__IOT__';\n Datamap.prototype.irlTopo = '__IRL__';\n Datamap.prototype.irnTopo = '__IRN__';\n Datamap.prototype.irqTopo = '__IRQ__';\n Datamap.prototype.islTopo = '__ISL__';\n Datamap.prototype.isrTopo = '__ISR__';\n Datamap.prototype.itaTopo = '__ITA__';\n Datamap.prototype.jamTopo = '__JAM__';\n Datamap.prototype.jeyTopo = '__JEY__';\n Datamap.prototype.jorTopo = '__JOR__';\n Datamap.prototype.jpnTopo = '__JPN__';\n Datamap.prototype.kabTopo = '__KAB__';\n Datamap.prototype.kasTopo = '__KAS__';\n Datamap.prototype.kazTopo = '__KAZ__';\n Datamap.prototype.kenTopo = '__KEN__';\n Datamap.prototype.kgzTopo = '__KGZ__';\n Datamap.prototype.khmTopo = '__KHM__';\n Datamap.prototype.kirTopo = '__KIR__';\n Datamap.prototype.knaTopo = '__KNA__';\n Datamap.prototype.korTopo = '__KOR__';\n Datamap.prototype.kosTopo = '__KOS__';\n Datamap.prototype.kwtTopo = '__KWT__';\n Datamap.prototype.laoTopo = '__LAO__';\n Datamap.prototype.lbnTopo = '__LBN__';\n Datamap.prototype.lbrTopo = '__LBR__';\n Datamap.prototype.lbyTopo = '__LBY__';\n Datamap.prototype.lcaTopo = '__LCA__';\n Datamap.prototype.lieTopo = '__LIE__';\n Datamap.prototype.lkaTopo = '__LKA__';\n Datamap.prototype.lsoTopo = '__LSO__';\n Datamap.prototype.ltuTopo = '__LTU__';\n Datamap.prototype.luxTopo = '__LUX__';\n Datamap.prototype.lvaTopo = '__LVA__';\n Datamap.prototype.macTopo = '__MAC__';\n Datamap.prototype.mafTopo = '__MAF__';\n Datamap.prototype.marTopo = '__MAR__';\n Datamap.prototype.mcoTopo = '__MCO__';\n Datamap.prototype.mdaTopo = '__MDA__';\n Datamap.prototype.mdgTopo = '__MDG__';\n Datamap.prototype.mdvTopo = '__MDV__';\n Datamap.prototype.mexTopo = '__MEX__';\n Datamap.prototype.mhlTopo = '__MHL__';\n Datamap.prototype.mkdTopo = '__MKD__';\n Datamap.prototype.mliTopo = '__MLI__';\n Datamap.prototype.mltTopo = '__MLT__';\n Datamap.prototype.mmrTopo = '__MMR__';\n Datamap.prototype.mneTopo = '__MNE__';\n Datamap.prototype.mngTopo = '__MNG__';\n Datamap.prototype.mnpTopo = '__MNP__';\n Datamap.prototype.mozTopo = '__MOZ__';\n Datamap.prototype.mrtTopo = '__MRT__';\n Datamap.prototype.msrTopo = '__MSR__';\n Datamap.prototype.musTopo = '__MUS__';\n Datamap.prototype.mwiTopo = '__MWI__';\n Datamap.prototype.mysTopo = '__MYS__';\n Datamap.prototype.namTopo = '__NAM__';\n Datamap.prototype.nclTopo = '__NCL__';\n Datamap.prototype.nerTopo = '__NER__';\n Datamap.prototype.nfkTopo = '__NFK__';\n Datamap.prototype.ngaTopo = '__NGA__';\n Datamap.prototype.nicTopo = '__NIC__';\n Datamap.prototype.niuTopo = '__NIU__';\n Datamap.prototype.nldTopo = '__NLD__';\n Datamap.prototype.nplTopo = '__NPL__';\n Datamap.prototype.nruTopo = '__NRU__';\n Datamap.prototype.nulTopo = '__NUL__';\n Datamap.prototype.nzlTopo = '__NZL__';\n Datamap.prototype.omnTopo = '__OMN__';\n Datamap.prototype.pakTopo = '__PAK__';\n Datamap.prototype.panTopo = '__PAN__';\n Datamap.prototype.pcnTopo = '__PCN__';\n Datamap.prototype.perTopo = '__PER__';\n Datamap.prototype.pgaTopo = '__PGA__';\n Datamap.prototype.phlTopo = '__PHL__';\n Datamap.prototype.plwTopo = '__PLW__';\n Datamap.prototype.pngTopo = '__PNG__';\n Datamap.prototype.polTopo = '__POL__';\n Datamap.prototype.priTopo = '__PRI__';\n Datamap.prototype.prkTopo = '__PRK__';\n Datamap.prototype.prtTopo = '__PRT__';\n Datamap.prototype.pryTopo = '__PRY__';\n Datamap.prototype.pyfTopo = '__PYF__';\n Datamap.prototype.qatTopo = '__QAT__';\n Datamap.prototype.rouTopo = '__ROU__';\n Datamap.prototype.rusTopo = '__RUS__';\n Datamap.prototype.rwaTopo = '__RWA__';\n Datamap.prototype.sahTopo = '__SAH__';\n Datamap.prototype.sauTopo = '__SAU__';\n Datamap.prototype.scrTopo = '__SCR__';\n Datamap.prototype.sdnTopo = '__SDN__';\n Datamap.prototype.sdsTopo = '__SDS__';\n Datamap.prototype.senTopo = '__SEN__';\n Datamap.prototype.serTopo = '__SER__';\n Datamap.prototype.sgpTopo = '__SGP__';\n Datamap.prototype.sgsTopo = '__SGS__';\n Datamap.prototype.shnTopo = '__SHN__';\n Datamap.prototype.slbTopo = '__SLB__';\n Datamap.prototype.sleTopo = '__SLE__';\n Datamap.prototype.slvTopo = '__SLV__';\n Datamap.prototype.smrTopo = '__SMR__';\n Datamap.prototype.solTopo = '__SOL__';\n Datamap.prototype.somTopo = '__SOM__';\n Datamap.prototype.spmTopo = '__SPM__';\n Datamap.prototype.srbTopo = '__SRB__';\n Datamap.prototype.stpTopo = '__STP__';\n Datamap.prototype.surTopo = '__SUR__';\n Datamap.prototype.svkTopo = '__SVK__';\n Datamap.prototype.svnTopo = '__SVN__';\n Datamap.prototype.sweTopo = '__SWE__';\n Datamap.prototype.swzTopo = '__SWZ__';\n Datamap.prototype.sxmTopo = '__SXM__';\n Datamap.prototype.sycTopo = '__SYC__';\n Datamap.prototype.syrTopo = '__SYR__';\n Datamap.prototype.tcaTopo = '__TCA__';\n Datamap.prototype.tcdTopo = '__TCD__';\n Datamap.prototype.tgoTopo = '__TGO__';\n Datamap.prototype.thaTopo = '__THA__';\n Datamap.prototype.tjkTopo = '__TJK__';\n Datamap.prototype.tkmTopo = '__TKM__';\n Datamap.prototype.tlsTopo = '__TLS__';\n Datamap.prototype.tonTopo = '__TON__';\n Datamap.prototype.ttoTopo = '__TTO__';\n Datamap.prototype.tunTopo = '__TUN__';\n Datamap.prototype.turTopo = '__TUR__';\n Datamap.prototype.tuvTopo = '__TUV__';\n Datamap.prototype.twnTopo = '__TWN__';\n Datamap.prototype.tzaTopo = '__TZA__';\n Datamap.prototype.ugaTopo = '__UGA__';\n Datamap.prototype.ukrTopo = '__UKR__';\n Datamap.prototype.umiTopo = '__UMI__';\n Datamap.prototype.uryTopo = '__URY__';\n Datamap.prototype.usaTopo = {\"type\":\"Topology\",\"transform\":{\"scale\":[0.03514630243024302,0.005240860686068607],\"translate\":[-178.123152,18.948267]},\"objects\":{\"usa\":{\"type\":\"GeometryCollection\",\"geometries\":[{\"type\":\"Polygon\",\"id\":\"AL\",\"arcs\":[[0,1,2,3,4]],\"properties\":{\"name\":\"Alabama\"}},{\"type\":\"MultiPolygon\",\"id\":\"AK\",\"arcs\":[[[5]],[[6]],[[7]],[[8]],[[9]],[[10]],[[11]],[[12]],[[13]],[[14]],[[15]],[[16]],[[17]],[[18]],[[19]],[[20]],[[21]],[[22]],[[23]],[[24]],[[25]],[[26]],[[27]],[[28]],[[29]],[[30]],[[31]],[[32]],[[33]],[[34]],[[35]],[[36]],[[37]],[[38]],[[39]],[[40]],[[41]],[[42]],[[43]]],\"properties\":{\"name\":\"Alaska\"}},{\"type\":\"Polygon\",\"id\":\"AZ\",\"arcs\":[[44,45,46,47,48]],\"properties\":{\"name\":\"Arizona\"}},{\"type\":\"Polygon\",\"id\":\"AR\",\"arcs\":[[49,50,51,52,53,54]],\"properties\":{\"name\":\"Arkansas\"}},{\"type\":\"Polygon\",\"id\":\"CA\",\"arcs\":[[55,-47,56,57]],\"properties\":{\"name\":\"California\"}},{\"type\":\"Polygon\",\"id\":\"CO\",\"arcs\":[[58,59,60,61,62,63]],\"properties\":{\"name\":\"Colorado\"}},{\"type\":\"Polygon\",\"id\":\"CT\",\"arcs\":[[64,65,66,67]],\"properties\":{\"name\":\"Connecticut\"}},{\"type\":\"Polygon\",\"id\":\"DE\",\"arcs\":[[68,69,70,71]],\"properties\":{\"name\":\"Delaware\"}},{\"type\":\"Polygon\",\"id\":\"DC\",\"arcs\":[[72,73]],\"properties\":{\"name\":\"District of Columbia\"}},{\"type\":\"Polygon\",\"id\":\"FL\",\"arcs\":[[74,75,-2]],\"properties\":{\"name\":\"Florida\"}},{\"type\":\"Polygon\",\"id\":\"GA\",\"arcs\":[[76,77,-75,-1,78,79]],\"properties\":{\"name\":\"Georgia\"}},{\"type\":\"MultiPolygon\",\"id\":\"HI\",\"arcs\":[[[80]],[[81]],[[82]],[[83]],[[84]]],\"properties\":{\"name\":\"Hawaii\"}},{\"type\":\"Polygon\",\"id\":\"ID\",\"arcs\":[[85,86,87,88,89,90,91]],\"properties\":{\"name\":\"Idaho\"}},{\"type\":\"Polygon\",\"id\":\"IL\",\"arcs\":[[92,93,94,95,96,97]],\"properties\":{\"name\":\"Illinois\"}},{\"type\":\"Polygon\",\"id\":\"IN\",\"arcs\":[[98,99,-95,100,101]],\"properties\":{\"name\":\"Indiana\"}},{\"type\":\"Polygon\",\"id\":\"IA\",\"arcs\":[[102,-98,103,104,105,106]],\"properties\":{\"name\":\"Iowa\"}},{\"type\":\"Polygon\",\"id\":\"KS\",\"arcs\":[[107,108,-60,109]],\"properties\":{\"name\":\"Kansas\"}},{\"type\":\"Polygon\",\"id\":\"KY\",\"arcs\":[[110,111,112,113,-96,-100,114]],\"properties\":{\"name\":\"Kentucky\"}},{\"type\":\"Polygon\",\"id\":\"LA\",\"arcs\":[[115,116,117,-52]],\"properties\":{\"name\":\"Louisiana\"}},{\"type\":\"Polygon\",\"id\":\"ME\",\"arcs\":[[118,119]],\"properties\":{\"name\":\"Maine\"}},{\"type\":\"MultiPolygon\",\"id\":\"MD\",\"arcs\":[[[120]],[[-71,121,122,123,124,-74,125,126,127]]],\"properties\":{\"name\":\"Maryland\"}},{\"type\":\"Polygon\",\"id\":\"MA\",\"arcs\":[[128,129,130,131,-68,132,133,134]],\"properties\":{\"name\":\"Massachusetts\"}},{\"type\":\"MultiPolygon\",\"id\":\"MI\",\"arcs\":[[[-102,135,136]],[[137]],[[138,139]],[[140]]],\"properties\":{\"name\":\"Michigan\"}},{\"type\":\"Polygon\",\"id\":\"MN\",\"arcs\":[[-107,141,142,143,144]],\"properties\":{\"name\":\"Minnesota\"}},{\"type\":\"Polygon\",\"id\":\"MS\",\"arcs\":[[-4,145,-116,-51,146]],\"properties\":{\"name\":\"Mississippi\"}},{\"type\":\"Polygon\",\"id\":\"MO\",\"arcs\":[[-97,-114,147,-55,148,-108,149,-104]],\"properties\":{\"name\":\"Missouri\"}},{\"type\":\"Polygon\",\"id\":\"MT\",\"arcs\":[[150,151,-92,152,153]],\"properties\":{\"name\":\"Montana\"}},{\"type\":\"Polygon\",\"id\":\"NE\",\"arcs\":[[-105,-150,-110,-59,154,155]],\"properties\":{\"name\":\"Nebraska\"}},{\"type\":\"Polygon\",\"id\":\"NV\",\"arcs\":[[156,-48,-56,157,-88]],\"properties\":{\"name\":\"Nevada\"}},{\"type\":\"Polygon\",\"id\":\"NH\",\"arcs\":[[-135,158,159,-120,160]],\"properties\":{\"name\":\"New Hampshire\"}},{\"type\":\"Polygon\",\"id\":\"NJ\",\"arcs\":[[161,-69,162,163]],\"properties\":{\"name\":\"New Jersey\"}},{\"type\":\"Polygon\",\"id\":\"NM\",\"arcs\":[[164,165,166,-45,-62]],\"properties\":{\"name\":\"New Mexico\"}},{\"type\":\"Polygon\",\"id\":\"NY\",\"arcs\":[[-133,-67,167,-164,168,169,170]],\"properties\":{\"name\":\"New York\"}},{\"type\":\"Polygon\",\"id\":\"NC\",\"arcs\":[[171,172,-80,173,174]],\"properties\":{\"name\":\"North Carolina\"}},{\"type\":\"Polygon\",\"id\":\"ND\",\"arcs\":[[175,-154,176,-143]],\"properties\":{\"name\":\"North Dakota\"}},{\"type\":\"Polygon\",\"id\":\"OH\",\"arcs\":[[177,-115,-99,-137,178,179]],\"properties\":{\"name\":\"Ohio\"}},{\"type\":\"Polygon\",\"id\":\"OK\",\"arcs\":[[-149,-54,180,-165,-61,-109]],\"properties\":{\"name\":\"Oklahoma\"}},{\"type\":\"Polygon\",\"id\":\"OR\",\"arcs\":[[-89,-158,-58,181,182]],\"properties\":{\"name\":\"Oregon\"}},{\"type\":\"Polygon\",\"id\":\"PA\",\"arcs\":[[-163,-72,-128,183,-180,184,-169]],\"properties\":{\"name\":\"Pennsylvania\"}},{\"type\":\"MultiPolygon\",\"id\":\"RI\",\"arcs\":[[[185,-130]],[[186,-65,-132]]],\"properties\":{\"name\":\"Rhode Island\"}},{\"type\":\"Polygon\",\"id\":\"SC\",\"arcs\":[[187,-77,-173]],\"properties\":{\"name\":\"South Carolina\"}},{\"type\":\"Polygon\",\"id\":\"SD\",\"arcs\":[[-142,-106,-156,188,-151,-176]],\"properties\":{\"name\":\"South Dakota\"}},{\"type\":\"Polygon\",\"id\":\"TN\",\"arcs\":[[189,-174,-79,-5,-147,-50,-148,-113]],\"properties\":{\"name\":\"Tennessee\"}},{\"type\":\"Polygon\",\"id\":\"TX\",\"arcs\":[[-53,-118,190,-166,-181]],\"properties\":{\"name\":\"Texas\"}},{\"type\":\"Polygon\",\"id\":\"UT\",\"arcs\":[[191,-63,-49,-157,-87]],\"properties\":{\"name\":\"Utah\"}},{\"type\":\"Polygon\",\"id\":\"VT\",\"arcs\":[[-134,-171,192,-159]],\"properties\":{\"name\":\"Vermont\"}},{\"type\":\"MultiPolygon\",\"id\":\"VA\",\"arcs\":[[[193,-123]],[[120]],[[-126,-73,-125,194,-175,-190,-112,195]]],\"properties\":{\"name\":\"Virginia\"}},{\"type\":\"MultiPolygon\",\"id\":\"WA\",\"arcs\":[[[-183,196,-90]],[[197]],[[198]]],\"properties\":{\"name\":\"Washington\"}},{\"type\":\"Polygon\",\"id\":\"WV\",\"arcs\":[[-184,-127,-196,-111,-178]],\"properties\":{\"name\":\"West Virginia\"}},{\"type\":\"Polygon\",\"id\":\"WI\",\"arcs\":[[199,-93,-103,-145,200,-140]],\"properties\":{\"name\":\"Wisconsin\"}},{\"type\":\"Polygon\",\"id\":\"WY\",\"arcs\":[[-189,-155,-64,-192,-86,-152]],\"properties\":{\"name\":\"Wyoming\"}}]}},\"arcs\":[[[2632,3060],[5,-164],[7,-242],[4,-53],[3,-30],[-2,-19],[4,-11],[-5,-25],[0,-24],[-2,-32],[2,-57],[-2,-51],[3,-52]],[[2649,2300],[-14,-1],[-59,0],[-1,-25],[6,-37],[-1,-31],[2,-16],[-4,-28]],[[2578,2162],[-4,-6],[-7,31],[-1,47],[-2,6],[-3,-36],[-1,-34],[-7,9]],[[2553,2179],[-2,291],[6,363],[4,209],[-3,20]],[[2558,3062],[24,1],[50,-3]],[[1324,6901],[1,32],[6,-19],[-1,-32],[-8,4],[2,15]],[[1317,6960],[5,-23],[-3,-33],[-2,11],[0,45]],[[1285,7153],[6,5],[3,-8],[-1,-28],[-6,-6],[-5,17],[3,20]],[[1267,7137],[12,-7],[3,-36],[13,-41],[4,-25],[0,-21],[3,-4],[1,-27],[5,-27],[0,-25],[3,8],[2,-19],[1,-74],[-3,-17],[-7,3],[-3,38],[-2,-3],[-6,28],[-2,-10],[-5,10],[1,-28],[5,7],[3,-10],[-2,-39],[-5,4],[-9,49],[-2,25],[1,26],[-7,-2],[0,20],[5,2],[5,18],[-2,31],[-6,7],[-1,50],[-2,25],[-4,-18],[-2,28],[4,14],[-3,32],[2,8]],[[1263,6985],[5,-12],[4,15],[4,-7],[-4,-28],[-6,8],[-3,24]],[[1258,7247],[-4,19],[5,13],[15,-18],[7,1],[5,-36],[9,-29],[-1,-22],[-5,-11],[-6,5],[-5,-14],[-6,9],[-7,-9],[-1,45],[0,30],[-5,1],[-1,16]],[[1252,7162],[-4,14],[-4,32],[0,24],[3,11],[4,-11],[0,20],[12,-35],[1,-33],[-4,-5],[-3,-37],[3,-11],[-3,-43],[-5,9],[0,-27],[-3,13],[-2,54],[5,25]],[[1207,7331],[8,38],[3,-16],[7,-13],[6,-2],[0,-30],[6,-99],[0,-85],[-1,-22],[-4,13],[-10,84],[-7,25],[3,20],[-3,48],[-8,39]],[[1235,7494],[10,-15],[5,2],[0,-14],[8,-52],[-5,8],[-2,-18],[6,-27],[2,-48],[-6,-13],[-2,-16],[-10,-35],[-3,1],[-1,37],[2,22],[-1,32],[-3,40],[0,21],[-2,51],[-4,22],[-1,38],[7,-36]],[[1203,7324],[4,0],[4,-35],[-2,-24],[-6,-5],[0,38],[0,26]],[[1207,7331],[-5,7],[-3,26],[-6,18],[-5,37],[-6,17],[1,30],[4,10],[1,26],[3,-11],[8,-1],[6,17],[8,-23],[-5,-26],[2,-9],[4,28],[10,-9],[5,-21],[-3,-38],[3,-3],[3,-50],[-7,-7],[-14,41],[0,-42],[-4,-17]],[[883,7871],[-12,-48],[-1,-19],[-9,-12],[2,29],[10,30],[7,34],[3,-14]],[[870,7943],[-2,-39],[-4,-41],[-6,14],[5,47],[7,19]],[[863,9788],[3,-8],[15,-9],[8,5],[10,0],[12,-7],[7,4],[7,-15],[12,-18],[16,-4],[5,10],[11,6],[4,14],[12,2],[0,-9],[7,5],[15,-15],[9,-24],[10,-11],[2,-11],[8,-2],[8,-18],[1,-11],[5,9],[6,-7],[0,-1783],[13,-16],[2,17],[14,-24],[8,30],[18,4],[-3,-52],[4,-17],[10,-17],[2,-27],[29,-101],[4,-63],[6,17],[12,31],[7,1],[3,23],[0,34],[5,0],[1,31],[9,7],[13,26],[13,-45],[-1,-27],[3,-27],[7,-7],[10,-40],[-1,-12],[4,-22],[12,-25],[19,-110],[3,-29],[6,-29],[8,-65],[9,-55],[-3,-23],[9,-9],[-2,-33],[7,-14],[1,-38],[7,2],[14,-40],[9,-7],[5,-19],[4,-5],[1,-19],[9,-5],[3,-23],[-4,-43],[1,-36],[4,-58],[-4,-15],[-6,-53],[-10,-39],[-3,20],[-4,-6],[-3,39],[1,17],[-3,20],[7,21],[-2,7],[-7,-26],[-3,17],[-4,-10],[-12,42],[4,46],[-8,-15],[0,-23],[-6,17],[-1,22],[4,24],[-1,24],[-6,-19],[-6,42],[-3,-8],[-2,36],[5,23],[6,0],[-2,28],[3,36],[-5,-1],[-9,32],[-6,37],[-15,27],[0,77],[-4,9],[1,31],[-5,9],[-8,42],[-2,22],[-12,7],[-14,56],[-6,132],[-3,-30],[1,-27],[6,-53],[-1,-8],[3,-43],[0,-28],[-6,6],[-4,31],[-6,6],[-8,-9],[0,45],[-5,38],[-5,-12],[-17,40],[-2,-11],[10,-13],[7,-31],[3,-1],[1,-25],[4,-30],[-10,-16],[-5,10],[0,-26],[-8,20],[-2,14],[-5,0],[-13,38],[-10,33],[-1,20],[-5,30],[-14,21],[-9,21],[-14,26],[-9,24],[1,26],[2,-9],[3,17],[-3,38],[4,21],[-2,9],[-7,-40],[-14,-26],[-18,10],[-14,24],[-1,18],[-7,-4],[-7,14],[-17,12],[-9,1],[-21,-10],[-8,-7],[-10,27],[-12,12],[-3,17],[-2,28],[-8,-2],[-3,-25],[-15,34],[-2,14],[-15,-27],[-7,-32],[-3,30],[3,17],[4,-5],[14,22],[-2,17],[-6,-8],[-3,22],[-6,3],[-6,55],[-3,-13],[-8,-8],[-3,8],[-3,-18],[-11,6],[-1,-20],[-7,-5],[-3,7],[2,36],[-3,-1],[-5,-38],[7,-12],[1,-27],[4,-30],[-3,-31],[-5,10],[-2,-15],[6,-7],[3,-41],[-8,-9],[-4,9],[-7,-12],[-3,10],[-9,-2],[0,16],[-4,-10],[-3,-20],[-3,18],[-5,-25],[2,-12],[-6,-15],[-6,-2],[-3,-20],[-6,-17],[-4,6],[-5,-21],[-4,1],[-8,-43],[-9,-3],[-3,14],[-5,-23],[-11,17],[2,33],[8,11],[4,-2],[2,13],[8,25],[0,21],[-11,-28],[-9,16],[-1,12],[5,48],[8,34],[1,29],[2,5],[1,30],[-4,34],[10,12],[19,48],[4,-19],[6,-5],[9,20],[-10,26],[-4,20],[-7,-2],[-5,9],[-2,-8],[-9,-14],[-4,-26],[-9,-6],[-9,-30],[-1,-20],[-7,-11],[-2,-22],[-5,-13],[-2,-39],[-10,-25],[5,-20],[-4,-29],[-9,-5],[-1,-38],[-8,-13],[-3,15],[-4,-29],[-5,-1],[1,-21],[-11,-13],[-2,-57],[12,-3],[10,-16],[3,-19],[-4,-30],[-7,-19],[-6,-1],[0,-17],[-4,-6],[1,-21],[-4,-31],[-9,-29],[-5,0],[-5,-11],[-5,2],[-4,-11],[2,-16],[-7,-8],[-2,-23],[-5,14],[-5,-45],[-9,4],[1,-24],[-6,6],[-3,-11],[0,-32],[-6,-50],[-10,-6],[-7,-23],[-2,-13],[-5,18],[-8,-48],[-2,13],[-5,-4],[-1,-27],[-5,-10],[-6,4],[-4,-27],[8,-9],[-9,-60],[-25,-20],[-6,-54],[-2,12],[1,33],[-5,6],[-6,-13],[-1,-14],[-10,-22],[-4,-25],[-1,18],[-2,-21],[-6,14],[-10,-33],[-8,2],[1,25],[-4,24],[-3,-20],[1,-21],[-11,-64],[-3,16],[-1,-24],[-8,4],[-1,38],[-4,8],[-2,-14],[4,-16],[-2,-27],[-5,-13],[-5,29],[-5,2],[-1,-11],[5,-17],[-9,-27],[6,-7],[0,-13],[-5,9],[-7,-25],[-15,1],[-7,-16],[0,-13],[-8,-15],[-6,6],[-2,35],[6,12],[4,43],[6,1],[13,28],[10,1],[4,-27],[3,20],[-1,23],[6,10],[7,0],[8,50],[10,45],[12,40],[15,18],[6,-9],[6,12],[1,-17],[-3,-19],[4,-14],[1,23],[7,2],[2,-15],[5,-5],[0,18],[-8,15],[0,11],[5,49],[6,28],[9,27],[15,24],[10,35],[5,-13],[4,5],[-1,22],[1,21],[8,44],[11,28],[8,38],[0,21],[7,148],[11,40],[-1,31],[-27,-45],[-8,6],[-2,18],[-5,9],[-1,21],[-4,-10],[-3,-32],[5,-41],[-6,-18],[-5,7],[-9,64],[-6,33],[-4,0],[-2,-24],[-3,-4],[-4,19],[-5,4],[-2,32],[-16,-37],[-13,-26],[-1,-14],[-11,-22],[-6,20],[5,23],[-1,54],[-4,57],[7,24],[-6,49],[-5,27],[-4,39],[-6,17],[-2,-34],[-7,-8],[-12,-22],[-14,-9],[-7,2],[-7,12],[-1,30],[-5,9],[-9,42],[-8,8],[-8,46],[6,21],[1,39],[-5,-8],[0,24],[2,19],[-6,18],[0,-19],[-7,8],[-1,32],[-6,4],[-3,22],[0,27],[-5,-12],[-1,26],[7,6],[-6,30],[10,2],[0,35],[2,24],[18,77],[4,23],[3,-5],[-2,33],[7,55],[6,22],[11,9],[8,-9],[12,-33],[8,4],[11,32],[11,49],[6,6],[1,-13],[13,0],[12,10],[11,52],[0,12],[-5,48],[-1,28],[-8,31],[-3,26],[8,-7],[8,22],[0,20],[-10,39],[-8,-30],[-7,5],[-6,-17],[-8,-4],[-2,-11],[-9,-17],[-2,-28],[-5,-12],[-2,34],[-5,7],[-4,-26],[-2,12],[-10,19],[-20,-1],[-14,-21],[-6,-3],[-11,13],[-22,14],[-6,12],[-3,19],[2,26],[-8,22],[2,24],[5,12],[-2,31],[-8,0],[-6,8],[-13,6],[-7,16],[-10,16],[-1,19],[16,27],[20,43],[15,27],[8,-15],[8,-3],[2,21],[-5,3],[-1,18],[20,29],[22,22],[12,2],[7,-7],[-4,-32],[2,-22],[-3,-15],[4,-26],[8,5],[10,-5],[11,6],[4,-10],[7,-2],[7,10],[8,-11],[9,42],[5,2],[5,-8],[2,24],[-12,11],[-11,-9],[1,31],[-8,34],[-10,10],[-2,30],[7,8],[9,-31],[-1,-24],[4,-18],[10,-22],[2,23],[-11,30],[5,54],[-4,10],[-11,-12],[-11,3],[-2,10],[-6,-10],[-24,23],[0,24],[-7,54],[-6,19],[-9,17],[-19,46],[-9,18],[-8,4],[-13,31],[-12,18],[-1,6],[9,10],[4,29],[1,59],[25,-4],[31,13],[8,11],[12,29],[12,45],[3,45],[5,38],[10,33],[5,24],[13,38],[2,-10],[11,-3],[16,20],[10,21],[24,64],[9,4],[1,-10],[9,7],[9,-2],[18,9],[17,28],[17,58],[7,13],[2,-10],[26,-24],[2,-17],[-9,-22],[-4,-1],[0,-29],[14,9],[0,16],[6,14],[2,-8],[5,33],[13,-30],[-2,-23],[8,-6],[5,-14],[7,22],[13,1],[7,7],[18,-7],[10,-8],[-5,-45],[17,-12],[2,-11],[16,-20],[1,9],[12,13],[11,-1],[0,-11],[7,-1],[7,15],[11,2],[9,-6],[11,-16],[5,3],[7,-22],[4,9],[7,-7],[5,-13]],[[717,7456],[-1,-8],[-9,13],[7,49],[6,4],[4,45],[5,-40],[4,14],[8,-22],[0,-31],[-11,-4],[-5,-13],[-8,-7]],[[688,7363],[8,25],[-8,6],[0,22],[6,14],[5,-10],[0,-22],[3,15],[0,32],[5,-15],[1,21],[5,-12],[5,0],[5,11],[7,-20],[0,-55],[9,4],[-6,-37],[-11,15],[4,-24],[-3,-20],[-6,10],[0,-38],[-8,-10],[-3,-16],[-5,15],[-6,-40],[-4,-4],[-5,-18],[-2,43],[-6,-23],[-1,13],[-6,14],[0,39],[-6,15],[4,45],[11,28],[7,-2],[1,-21]],[[671,7185],[-6,-39],[-2,6],[8,33]],[[640,7055],[4,-2],[-1,-40],[-8,6],[-1,13],[6,23]],[[519,6933],[-2,-41],[-9,-33],[5,51],[2,-5],[4,28]],[[501,6947],[5,0],[0,-20],[-5,-23],[-5,15],[-3,-14],[-2,35],[2,12],[8,-5]],[[451,6875],[1,-16],[-3,-11],[-3,18],[5,9]],[[447,8527],[-4,-19],[-2,16],[6,3]],[[436,6781],[6,-7],[-1,-16],[-5,1],[0,22]],[[358,6745],[2,-22],[-5,-10],[-1,23],[4,9]],[[352,6718],[-8,-21],[-2,14],[3,19],[7,-12]],[[335,7902],[6,7],[2,-14],[5,3],[6,-12],[1,-54],[-3,-18],[-7,-11],[-2,-18],[-11,20],[-5,-1],[-10,28],[-4,0],[-6,15],[-3,25],[4,7],[10,-7],[5,20],[5,2],[3,14],[4,-6]],[[334,6690],[5,-14],[-10,-36],[1,-6],[12,26],[0,-15],[-5,-17],[-8,-12],[-1,-18],[-8,-18],[-7,-1],[-5,-18],[-9,-16],[-5,17],[9,20],[3,-3],[8,16],[-2,19],[4,20],[6,-9],[1,12],[-7,4],[-4,14],[4,23],[11,13],[2,-26],[5,25]],[[266,6527],[10,37],[1,16],[4,17],[7,9],[3,-10],[1,-25],[-12,-27],[-6,-40],[-6,-13],[-2,36]],[[238,6477],[2,-19],[-8,-1],[-1,13],[7,7]],[[227,7303],[-4,-18],[-1,18],[5,0]],[[212,6440],[2,-18],[-5,-13],[-1,19],[4,12]],[[182,8542],[22,-28],[13,24],[6,-2],[5,-14],[2,-23],[11,-12],[4,-12],[15,-5],[8,-8],[-4,-28],[-7,6],[-8,-5],[-4,-13],[-4,-28],[-5,26],[-6,18],[-6,2],[-3,20],[-15,25],[-6,1],[-11,-22],[-7,11],[-4,23],[4,44]],[[162,6381],[0,-22],[-5,-4],[1,19],[4,7]],[[128,6335],[4,-8],[10,1],[1,-7],[-13,-9],[-2,23]],[[108,6360],[0,19],[4,7],[6,-19],[-2,-17],[-4,1],[1,-20],[-5,-2],[-12,-21],[-6,6],[2,15],[7,-2],[9,33]],[[47,6279],[5,3],[0,-24],[-6,3],[-8,-28],[-4,37],[4,1],[0,29],[5,1],[0,-21],[4,-1]],[[28,6296],[3,-9],[-2,-32],[-5,-10],[0,20],[4,31]],[[0,6291],[5,-1],[4,-23],[-4,-27],[-5,51]],[[9993,6496],[6,-13],[0,-19],[-11,-12],[-8,31],[0,15],[13,-2]],[[1966,3444],[-1,-1081]],[[1965,2363],[-57,0],[-34,71],[-73,150],[3,43]],[[1804,2627],[6,8],[1,16],[-1,36],[-4,1],[-2,71],[6,27],[0,28],[-1,45],[4,34],[4,12],[4,25],[-6,27],[-4,51],[-5,31],[0,24]],[[1806,3063],[2,26],[0,36],[-3,36],[-2,112],[11,7],[3,-23],[3,1],[3,33],[0,153]],[[1823,3444],[101,2],[42,-2]],[[2515,3253],[-1,-35],[-4,-11],[-1,-29],[-5,-31],[0,-46],[-3,-34],[-3,-5]],[[2498,3062],[2,-17],[-4,-14],[-2,-33],[-3,-8],[0,-38],[-5,-10],[0,-13],[-6,-31],[2,-21],[-5,-30],[-5,-59],[5,-25],[-2,-16],[1,-39],[-2,-26]],[[2474,2682],[-69,3],[-13,0]],[[2392,2685],[0,101],[-4,8],[-5,-9],[-3,18]],[[2380,2803],[1,335],[-5,211]],[[2376,3349],[4,0],[123,-1],[2,-36],[-4,-23],[-4,-36],[18,0]],[[1654,4398],[0,-331],[0,-241],[36,-171],[35,-169],[27,-137],[20,-101],[34,-185]],[[1804,2627],[-38,-18],[-30,-16],[-4,25],[0,40],[-2,47],[-4,33],[-9,46],[-12,43],[-2,-12],[-4,8],[1,18],[-5,39],[-7,-8],[-12,28],[-2,23],[-8,28],[-9,-1],[-7,13],[-10,-6],[-5,26],[1,53],[-1,8],[1,38],[-8,28],[0,39],[-3,2],[-4,33],[-4,8],[-1,20],[-11,79],[-5,23],[-1,61],[2,-5],[2,37],[-4,33],[-5,-4],[-7,30],[-2,24],[0,23],[-3,31],[0,50],[5,0],[-2,70],[-2,-7],[-1,-35],[-5,-7],[-7,26],[-1,45],[-4,35],[-6,22],[-3,25],[-9,50],[2,14],[-4,64],[2,35],[-3,54],[-7,52],[-7,29],[-2,35],[7,83],[2,29],[-2,22],[3,57],[-2,52],[-3,13],[1,42]],[[1534,4399],[28,1],[24,1],[38,-3],[30,0]],[[2107,4208],[57,0],[0,-191]],[[2164,4017],[1,-574]],[[2165,3443],[-28,1]],[[2137,3444],[-38,-1],[-72,0],[-15,1],[-46,0]],[[1966,3444],[0,223],[-1,21],[0,162],[0,357]],[[1965,4207],[32,1],[63,-1],[47,1]],[[3025,4400],[0,-113],[-2,-18]],[[3023,4269],[-2,3],[-12,-14],[-15,4],[-7,-26],[-7,-9],[-8,-22]],[[2972,4205],[-2,22],[7,21],[-2,16],[2,144]],[[2977,4408],[12,-2],[36,-3],[0,-3]],[[2922,3980],[-2,-23]],[[2920,3957],[-3,-13],[0,-30],[5,-29],[1,-47],[6,-49],[3,-2],[1,-66]],[[2933,3721],[-19,2],[-2,241]],[[2912,3964],[5,21],[5,-5]],[[2876,3786],[-2,27]],[[2874,3813],[2,12],[4,-19],[-4,-20]],[[2649,2300],[4,-55],[39,-13],[37,-14],[1,-41],[4,1],[1,39],[-1,35],[2,15],[7,-16],[8,-7]],[[2751,2244],[1,-83],[4,-93],[8,-122],[13,-131],[-2,-9],[1,-61],[5,-68],[8,-137],[2,-42],[0,-44],[-3,-158],[-3,-3],[-3,-49],[1,-16],[-5,-36],[-2,9],[-6,-15],[-9,-8],[-2,20],[1,29],[-7,85],[-5,15],[-4,-11],[-3,47],[-1,38],[-6,43],[-2,28],[1,41],[-3,8],[1,-24],[-3,-7],[-9,104],[-4,26],[9,76],[-6,-4],[-4,-24],[-3,38],[5,104],[1,87],[-4,21],[-1,28],[-5,6],[-7,46],[-5,19],[0,28],[-4,11],[-3,31],[-11,42],[-9,-10],[0,-29],[-3,5],[-12,-35],[-12,-9],[0,21],[-3,25],[-15,57],[-10,24],[-10,6],[-8,-4],[-17,-18]],[[2703,3063],[-6,-41],[0,-20],[9,-40],[3,3],[5,-42],[1,-22],[4,-40],[7,-24],[3,-35],[8,-33],[0,-22],[5,-35],[7,-29],[2,-32],[1,-40],[3,-14],[5,-51],[0,-33],[7,-16]],[[2767,2497],[-7,-65],[-2,-34],[-3,-29],[0,-30],[-3,-14],[-1,-81]],[[2632,3060],[37,1]],[[2669,3061],[20,-1],[14,3]],[[640,0],[-7,17],[-1,16],[1,43],[-5,73],[4,24],[2,34],[-2,22],[1,23],[8,-27],[9,-20],[5,-29],[0,-26],[8,-40],[-5,-34],[-8,-15],[-7,-25],[-3,-36]],[[613,397],[3,-26],[4,11],[9,-30],[-1,-27],[-9,-14],[-2,6],[-1,33],[-5,7],[-1,19],[3,21]],[[602,432],[-3,-20],[-7,0],[2,22],[8,-2]],[[574,525],[3,-45],[-2,-26],[-6,-5],[-4,54],[4,1],[5,21]],[[531,626],[3,-2],[2,-20],[-1,-28],[-4,-18],[-9,22],[1,31],[8,15]],[[1908,4871],[0,-472]],[[1908,4399],[-31,-1],[-54,0]],[[1823,4398],[-85,1]],[[1738,4399],[0,349],[4,62],[-2,16],[-6,3],[-2,26],[6,68],[3,6],[3,29],[-1,17],[4,23],[1,34],[6,56],[-2,26],[-7,14],[-4,32]],[[1741,5160],[0,34],[-3,33],[0,16],[0,255],[0,236]],[[1738,5734],[28,0]],[[1766,5734],[0,-195],[9,-54],[1,-52],[5,-23],[6,-8],[0,-14],[11,-51],[1,-21],[8,-20],[0,-12],[8,1],[-4,-71],[-1,-45],[3,-29],[-5,-21],[2,-20],[-1,-21],[6,-20],[7,26],[3,21],[5,-19],[-1,-15],[3,-37],[5,-39],[3,-13],[0,-37],[3,-16],[6,-2],[4,-61],[3,-11],[3,18],[9,-1],[7,17],[3,-10],[7,9],[2,-11],[5,8],[7,39],[4,-33],[5,-20]],[[2489,4496],[53,-3],[28,0]],[[2570,4493],[-1,-37],[4,-43],[5,-70]],[[2578,4343],[0,-450],[-3,-35],[3,-40],[1,-34],[-4,-27],[-1,-25],[-5,-41],[-3,-3],[0,-24],[-2,-9],[-1,-45],[0,-13]],[[2563,3597],[-3,-27],[2,-34],[-11,-17],[-1,-20],[2,-25],[-3,-16],[-11,29],[-3,-2],[-4,-33],[1,-11]],[[2532,3441],[-5,2],[-6,55],[2,12],[-2,37],[0,29],[-9,41],[-3,-4],[-3,25],[-9,38],[0,31],[5,49],[-1,18],[3,23],[-4,13],[-6,9],[-3,-18],[-3,11],[-1,63],[-10,41],[-9,49],[-3,58],[-1,39],[3,27]],[[2467,4089],[0,35],[8,21],[1,29],[4,19],[0,33],[-4,27],[2,34],[11,9],[9,24],[0,29],[4,13],[1,37],[0,24],[-7,18],[-1,20],[-6,35]],[[2655,4340],[0,-228],[0,-266]],[[2655,3846],[-2,-9],[2,-52],[-5,-1],[-5,-18],[-8,9],[1,-38],[-5,-16],[-2,-24],[-5,-9],[-3,-48],[-3,-13],[-6,18],[-1,22],[-7,-24],[1,-21],[-7,-7],[-1,19],[-8,-19],[-2,-20],[-7,28],[-4,-6],[-2,13],[-3,-13],[-7,-2],[-3,-18]],[[2578,4343],[3,-12],[8,0],[9,22]],[[2598,4353],[23,0],[34,0],[0,-13]],[[2473,4685],[0,-28],[4,-19],[-3,-23],[1,-43],[2,-30],[10,-22],[2,-24]],[[2467,4089],[-3,7],[-6,38],[-3,-1],[-40,-5],[-39,-2],[-33,3]],[[2343,4129],[-3,25],[2,49],[-3,43],[0,48],[-5,17],[-1,26],[2,23],[-2,33],[-4,13],[-5,86]],[[2324,4492],[-5,41],[2,29],[1,37],[2,14],[-3,19],[1,33],[-2,16],[4,4]],[[2324,4685],[144,0],[5,0]],[[2356,4017],[3,-18],[9,-14],[-6,-56],[4,-18],[4,-45],[6,-10],[0,-412]],[[2376,3444],[-156,0],[-55,-1]],[[2164,4017],[5,0],[187,0]],[[2718,3716],[-1,-57],[4,-37],[4,-28],[2,-22],[5,-22],[4,-3]],[[2736,3547],[-11,-51],[-11,-29],[0,-14],[-4,-13],[0,-16],[-6,-8],[-1,-21],[-16,-27]],[[2687,3368],[0,-3],[-24,2],[-22,6],[-5,-2],[-32,8],[-36,-5],[-6,9],[1,-35],[-36,2],[-3,-2]],[[2524,3348],[1,24],[5,-8],[2,77]],[[2655,3846],[11,0],[5,-40],[1,-17],[9,-7],[6,-26],[5,13],[10,-14],[4,19],[4,6],[1,-32],[3,-6],[4,-26]],[[2474,2682],[3,-22],[-2,-9],[-1,-38],[5,-24],[0,-57],[-3,-44],[-7,-27],[-2,-43],[-2,4],[-1,-70],[-3,-2],[2,-37],[-2,-14],[54,0],[-3,-63],[4,-41],[1,-32],[4,-20]],[[2521,2143],[-9,-26],[0,-19],[7,-12],[3,30],[6,-30],[-1,-24],[-3,-11],[-7,10],[1,-18],[-2,-27],[5,-24],[9,-7],[3,-29],[3,-4],[-5,-32],[-5,6],[-4,33],[-10,18],[0,33],[-6,-11],[1,-27],[-3,-25],[-3,-4],[-3,28],[-7,1],[-2,-29],[-4,-9],[-5,18],[-4,2],[-3,47],[-7,21],[-2,-3],[-3,40],[-7,-5],[0,24],[-8,-23],[1,-18],[-5,-17],[-9,8],[-10,27],[-7,11],[-16,-9],[-2,-8]],[[2398,2049],[-2,19],[6,68],[-2,37],[2,20],[-1,26],[3,19],[3,50],[0,40],[-8,78],[0,41],[-7,42],[0,196]],[[3046,5029],[12,26],[-2,13],[5,30],[4,13],[-1,12],[5,18],[-1,33],[2,50],[5,17],[1,53],[22,147],[6,-7],[0,-35],[4,-13],[9,21],[6,0],[4,14],[8,-31],[4,-25],[1,-214],[-1,-51],[10,-14],[-2,-22],[3,-21],[-2,-18],[4,-30],[5,7],[5,-68],[-6,-31],[-3,12],[-3,-21],[-4,5],[0,-18],[-6,2],[-8,-40],[-2,28],[-3,2],[1,-30],[-6,-15],[-2,24],[-3,-12],[-7,0],[0,28],[-5,-6],[1,-20],[-4,-42],[1,-12],[-6,-23],[-5,9],[-3,-24],[-4,-3],[-4,-20],[-4,4],[-1,21],[-7,-34],[2,-21],[-5,-7],[0,-18],[-5,-22],[-5,-50]],[[3056,4600],[-3,14],[0,19],[-4,22],[-2,250],[-1,124]],[[2904,3626],[2,0],[-1,0],[-1,0]],[[2933,3721],[-6,-80]],[[2927,3641],[-4,-3],[-8,-12]],[[2915,3626],[-6,-8],[0,31],[-2,13],[3,13],[-4,32],[-2,-14],[-6,3],[-2,35],[2,0],[0,45],[2,18],[-2,60],[3,36],[5,6],[0,37],[-3,-5],[0,-18],[-8,-25],[-2,-21],[0,-56],[-3,-26],[1,-44],[4,-30],[-1,-23],[3,-23],[-2,-16],[-6,30],[-10,15],[-2,29],[-6,-16],[-2,23],[5,29]],[[2874,3756],[2,30]],[[2874,3813],[-4,18],[-6,10],[0,28],[-3,15],[-4,4]],[[2857,3888],[-4,53],[-4,0],[-5,18],[-3,-15],[-5,1],[-1,-21],[-8,14],[-6,-28],[-3,6],[-6,-33],[-6,-17],[1,98]],[[2807,3964],[105,0]],[[3053,4565],[1,-34],[-1,-27],[-5,-25],[0,-29],[6,-4],[4,-31],[0,-24],[3,-6],[0,-22],[8,-19],[9,18],[-2,-26],[-13,-23],[-5,-1],[-3,18],[-5,-6],[0,-13],[-5,-9]],[[3045,4302],[-3,35]],[[3042,4337],[0,6]],[[3042,4343],[-3,14],[-2,45],[-4,0],[-8,-2]],[[2977,4408],[0,7],[6,126]],[[2983,4541],[23,-3]],[[3006,4538],[34,-7],[3,18],[7,19],[3,-3]],[[2598,4353],[5,25],[4,43],[4,26],[3,36],[1,52],[0,57],[-9,111],[3,42],[-2,50],[6,51],[2,43],[-1,23],[5,9],[0,31],[8,9],[5,34],[0,-69],[3,-3],[3,35],[1,58],[2,15],[8,9],[-3,41],[5,35],[7,2],[7,-22],[7,-3],[3,-28],[6,-2],[9,-25],[3,1],[4,-41],[-3,-21],[3,-29],[2,-32],[-2,-71],[-6,-18],[-1,-37],[-7,-12],[-4,-44],[2,-17],[6,-15],[6,24],[6,49],[10,19],[5,-15],[3,-27],[3,-80],[0,-39],[3,-48],[-3,-69],[-4,-11],[-1,25],[-3,-7],[-3,-58],[-6,-21],[-2,-44],[-7,-37],[0,-16]],[[2694,4347],[-39,-7]],[[2635,5110],[1,-23],[-4,-4],[1,33],[2,-6]],[[2496,5270],[11,20],[5,23],[12,9],[8,29],[4,1],[3,20],[9,28],[4,24],[7,15],[6,-13],[-11,-59],[-2,-19],[0,-36],[5,27],[10,-4],[8,-19],[7,-52],[3,-10],[7,9],[2,-12],[7,-6],[16,44],[8,4],[10,-2],[7,15],[6,1],[1,-54],[5,-7],[6,8],[2,-12],[4,16],[8,5],[1,-67],[3,-28],[6,-8],[1,19],[5,0],[3,-20],[-3,-14],[-15,12],[-8,-8],[-8,23],[-2,-21],[1,-18],[-4,4],[-5,27],[-9,15],[-5,1],[-4,-25],[-8,-6],[-8,5],[-3,-10],[-1,-21],[-9,-18],[1,25],[-4,5],[-2,-26],[-6,-1],[-3,-11],[-5,-45],[-8,-58],[1,-5]],[[2576,4989],[-4,20],[2,27],[-7,4],[3,26],[0,34],[-5,23],[-4,24],[-12,19],[-4,-7],[-12,29],[-29,38],[-3,33],[-5,11]],[[2541,5539],[-7,-24],[-4,-3],[1,19],[18,45],[-4,-31],[-4,-6]],[[2324,4685],[0,343],[-7,22],[-5,36],[8,41],[1,22]],[[2321,5149],[-1,76],[-4,20],[-2,42],[0,51],[-1,8],[-1,123],[-5,65],[-3,36],[0,77],[1,27],[-3,60]],[[2302,5734],[59,0],[0,73],[5,-2],[4,-14],[4,-100],[3,-11],[9,-3],[1,-10],[11,-4],[1,-21],[10,5],[0,9],[7,10],[6,-4],[8,-16],[2,-19],[4,2],[4,-43],[2,18],[7,8],[1,-18],[9,-12],[0,-17],[4,-14],[8,8],[5,18],[8,12],[2,-28],[5,6],[6,-6],[6,4],[8,-24],[7,4],[0,-10],[-10,-24],[-13,-19],[-9,-20],[-12,-49],[-5,-31],[-8,-34],[-13,-46],[2,-16]],[[2450,5296],[-2,9],[-6,-16],[0,-113],[-2,-11],[-8,-16],[-6,-41],[-1,-27],[3,-2],[4,-24],[-3,-29],[0,-33],[-2,-70],[8,-34],[6,-3],[3,-21],[8,-21],[2,-25],[8,-33],[5,-7],[5,-42],[-1,-30],[2,-22]],[[2553,2179],[-3,-8],[-7,4],[-3,12],[-7,-8],[-9,-22],[-3,-14]],[[2498,3062],[53,0],[7,0]],[[2524,3348],[-2,0],[-2,0],[1,-47],[-6,-48]],[[2376,3349],[0,95]],[[2356,4017],[-7,50],[-6,62]],[[2108,5151],[0,-181],[-1,0]],[[2107,4970],[-53,1],[-90,0],[-56,0],[0,-100]],[[1766,5734],[130,-1],[58,1],[154,0]],[[2108,5734],[0,-217],[0,-366]],[[2107,4208],[0,382]],[[2107,4590],[21,0],[49,-1],[88,0],[1,-10],[15,-34],[4,19],[4,-4],[13,0],[15,-36],[2,-27],[5,-5]],[[1823,4398],[0,-954]],[[1654,4398],[37,-1],[47,2]],[[3006,4538],[-2,14],[0,28],[3,11],[-1,27],[3,81],[5,37],[2,43],[3,16],[-1,47],[10,17],[5,33],[-3,31],[4,32],[0,18]],[[3034,4973],[4,49],[6,-5],[2,12]],[[3056,4600],[-3,-35]],[[2962,4152],[-5,-13],[-2,-29],[8,-14],[0,-22],[-3,-103],[-9,-76],[-6,-22],[-5,-48],[-3,31],[-8,16],[-10,42],[-1,28],[0,4],[2,11]],[[2922,3980],[8,15],[0,15],[9,31],[2,17],[-9,39],[0,24],[-3,6],[-1,22],[5,33],[-3,20],[7,40],[2,21],[4,13]],[[2943,4276],[13,-41],[9,-28],[-3,-55]],[[2137,3444],[0,-95]],[[2137,3349],[-1,0],[0,-474],[0,-193],[0,-192],[-101,0],[-1,-18],[3,-22]],[[2037,2450],[-48,0],[0,-87],[-24,0]],[[2972,4205],[13,-15],[2,11],[10,0],[6,6],[8,31],[1,-22],[5,-10],[-11,-28],[-22,-42],[-9,-8],[-6,2],[-5,-9],[-2,31]],[[2943,4276],[-2,14],[-4,1],[-5,32],[1,29],[-4,22],[-2,-2],[-3,27],[-125,0],[0,48],[0,3]],[[2799,4450],[17,54],[3,26],[5,18],[-2,32],[-2,7],[-2,52],[17,22],[15,-1],[6,-5],[6,-21],[4,8],[12,-1],[8,14],[8,34],[5,1],[0,52],[3,31],[-7,21],[2,24],[11,32],[4,28],[14,64],[13,32],[19,-5],[23,4]],[[2981,4973],[1,-39],[-2,-36],[3,-34],[-1,-37],[-3,-39],[2,-52],[-1,-16],[4,-31],[-1,-132],[0,-16]],[[2909,3359],[4,-77],[-8,8],[-1,-10],[-10,-11],[-1,-11],[-7,-3],[0,-13],[8,9],[1,-8],[9,9],[3,-18],[5,8],[2,-46],[-2,-22],[-3,-2],[-8,-47],[-9,-2],[-2,-33],[4,-32],[4,-6],[-6,-54],[-6,7],[-9,-6],[-6,-11],[-10,-37],[-7,-48],[-4,-60],[-6,13],[-11,-12]],[[2833,2844],[-32,181],[-32,4],[1,21],[-5,33],[-3,-12],[0,20],[-35,10],[-8,-8],[-6,-17],[-10,-13]],[[2669,3061],[1,45],[5,4],[3,31],[7,29],[7,1],[7,29],[8,10],[6,43],[4,13],[1,-19],[11,37],[5,-8],[4,36],[5,9],[1,45]],[[2744,3366],[20,-5],[19,-3],[23,-1],[103,2]],[[2321,5149],[-213,2]],[[2108,5734],[194,0]],[[2777,4138],[-4,-10],[2,-21],[0,-29],[-4,-46],[-3,-70],[-11,-62],[-3,-8],[-4,12],[-3,-27],[-3,1],[-4,-36],[1,-22],[-3,-18],[-4,29],[-5,-46],[1,-29],[-3,-11],[-1,-25],[-8,-4]],[[2694,4347],[11,-26],[3,-15],[3,14],[6,-30],[4,-9],[14,25],[7,-6],[9,36],[12,34],[14,24]],[[2777,4394],[0,-256]],[[2380,2803],[-11,21],[-3,22],[-7,18],[-2,-16],[-8,1],[-1,10],[-7,-19],[-3,11],[-6,-10],[-5,-29],[-2,17],[-6,14],[-7,0],[-2,21],[-7,-42],[-2,24],[-3,-8],[-3,16],[-7,15],[-5,-25],[-2,26],[-4,3],[-2,21],[-6,8],[-3,-18],[-3,16],[-5,-2],[-6,17],[-6,-2],[-2,36],[-9,2],[-4,-6],[-6,37],[-2,-3],[0,370],[-52,0],[-34,0]],[[1534,4399],[-4,22],[-2,61],[0,43],[-4,33],[3,32],[2,51],[4,54],[2,48],[3,162],[0,22],[3,71],[1,99],[-2,54],[1,32],[12,29]],[[1553,5212],[5,-22],[4,5],[3,2],[6,-20],[3,-23],[1,-57],[15,-21],[12,30],[8,3],[9,-10],[1,-13],[16,27],[3,-9],[9,5],[7,19],[12,17],[12,4],[4,12],[58,-1]],[[2807,3964],[-30,0],[0,174]],[[2777,4394],[5,11],[17,45]],[[3045,4302],[-6,-4],[3,39]],[[3042,4343],[-4,3],[-3,-28],[-1,-40],[-11,-9]],[[2833,2844],[-5,-10],[-6,-31],[-6,-49],[-1,-40],[-5,-31],[-6,0],[-2,-23],[-6,-25],[-4,-28],[-6,-11],[-6,-29],[-1,-14],[-6,-16],[-6,-40]],[[2107,4590],[0,380]],[[2687,3368],[57,-2]],[[2398,2049],[-5,-1],[-14,-26],[-6,15],[-1,31],[-3,-22],[-3,5],[-1,-27],[3,-11],[0,-36],[-5,-37],[-9,-47],[-17,-51],[-2,9],[-5,-13],[0,12],[-7,-9],[-3,24],[-2,-5],[7,-49],[-5,-16],[-5,10],[-1,-35],[-7,-35],[-6,-66],[-4,-69],[-3,5],[-1,-25],[3,6],[-2,-50],[-2,-2],[0,-28],[3,-16],[1,-57],[3,-20],[0,-37],[3,-32],[-9,-20],[-3,25],[-7,10],[-9,-3],[-8,32],[-5,3],[-5,25],[-6,8],[-4,24],[-2,58],[-5,34],[0,30],[-2,31],[1,27],[-4,30],[-3,4],[-5,27],[-1,34],[-5,32],[-6,26],[-3,57],[-2,16],[-4,46],[-1,38],[-4,27],[-6,24],[-1,16],[-6,15],[-4,42],[-13,9],[-7,-2],[-7,15],[-1,-20],[-7,-6],[-5,-40],[-3,-64],[-2,-1],[-4,-37],[-5,-1],[-7,29],[-17,47],[-4,25],[-6,24],[-5,54],[-1,49],[-4,40],[-2,35],[-3,22],[-11,32],[-6,44],[-4,15],[-6,38],[-7,20],[-5,50],[-4,11]],[[1908,4399],[0,-192],[57,0]],[[2981,4973],[30,-2],[23,2]],[[2927,3641],[-4,-32],[-3,-12],[-3,-44],[-6,-71],[-5,-15],[-1,27],[2,58],[8,74]],[[2874,3756],[-4,-8],[-2,-28],[1,-19],[8,6],[1,-31],[10,-12],[3,-24],[8,-26],[-4,-54],[4,-41],[-4,-20],[-1,-24],[4,-15],[-4,-23],[-6,30],[-1,-10],[5,-22],[14,-5],[3,-71]],[[2736,3547],[-1,-16],[4,-32],[5,-16],[4,1],[5,25],[4,-20],[7,11],[13,36],[1,-11],[5,17],[0,34],[4,30],[5,29],[2,34],[6,36],[2,44],[5,-27],[4,-8],[3,16],[6,68],[4,-17],[13,77],[2,57],[15,-64],[3,37]],[[1553,5212],[-5,7],[-4,-12],[-6,17],[1,26],[4,14],[-6,40],[-4,103],[-2,14],[-3,73],[-6,28],[-2,56],[3,38],[6,-18],[11,-24],[8,1],[8,-9],[8,9],[3,-16],[7,1],[5,-42],[3,3],[1,-56],[2,-52],[3,6],[-3,43],[1,43],[4,44],[-3,18],[-1,31],[-3,35],[2,25],[-2,29],[-5,4],[-4,22],[1,21],[163,0]],[[1576,5602],[4,9],[0,-39],[-5,15],[1,15]],[[1568,5655],[3,25],[4,-30],[-1,-27],[-7,8],[1,24]],[[2576,4989],[-1,-23],[-6,-4],[-4,-44],[-2,-30],[3,-6],[5,20],[4,38],[6,15],[5,48],[6,10],[-1,-25],[-4,-23],[-8,-79],[-2,-44],[0,-32],[-3,-10],[-2,-43],[1,-37],[-3,-24],[-3,-59],[0,-47],[4,-42],[-1,-55]],[[2450,5296],[6,-2],[20,33],[8,17],[2,-13],[-4,-25],[9,-33],[5,-3]]]};\n Datamap.prototype.usgTopo = '__USG__';\n Datamap.prototype.uzbTopo = '__UZB__';\n Datamap.prototype.vatTopo = '__VAT__';\n Datamap.prototype.vctTopo = '__VCT__';\n Datamap.prototype.venTopo = '__VEN__';\n Datamap.prototype.vgbTopo = '__VGB__';\n Datamap.prototype.virTopo = '__VIR__';\n Datamap.prototype.vnmTopo = '__VNM__';\n Datamap.prototype.vutTopo = '__VUT__';\n Datamap.prototype.wlfTopo = '__WLF__';\n Datamap.prototype.wsbTopo = '__WSB__';\n Datamap.prototype.wsmTopo = '__WSM__';\n Datamap.prototype.yemTopo = '__YEM__';\n Datamap.prototype.zafTopo = '__ZAF__';\n Datamap.prototype.zmbTopo = '__ZMB__';\n Datamap.prototype.zweTopo = '__ZWE__';\n\n /**************************************\n Utilities\n ***************************************/\n\n // Convert lat/lng coords to X / Y coords\n Datamap.prototype.latLngToXY = function(lat, lng) {\n return this.projection([lng, lat]);\n };\n\n // Add layer to root SVG\n Datamap.prototype.addLayer = function( className, id, first ) {\n var layer;\n if ( first ) {\n layer = this.svg.insert('g', ':first-child')\n }\n else {\n layer = this.svg.append('g')\n }\n return layer.attr('id', id || '')\n .attr('class', className || '');\n };\n\n Datamap.prototype.updateChoropleth = function(data, options) {\n var svg = this.svg;\n var that = this;\n\n // When options.reset = true, reset all the fill colors to the defaultFill and kill all data-info\n if ( options && options.reset === true ) {\n svg.selectAll('.datamaps-subunit')\n .attr('data-info', function() {\n return \"{}\"\n })\n .transition().style('fill', this.options.fills.defaultFill)\n }\n\n for ( var subunit in data ) {\n if ( data.hasOwnProperty(subunit) ) {\n var color;\n var subunitData = data[subunit]\n if ( ! subunit ) {\n continue;\n }\n else if ( typeof subunitData === \"string\" ) {\n color = subunitData;\n }\n else if ( typeof subunitData.color === \"string\" ) {\n color = subunitData.color;\n }\n else if ( typeof subunitData.fillColor === \"string\" ) {\n color = subunitData.fillColor;\n }\n else {\n color = this.options.fills[ subunitData.fillKey ];\n }\n // If it's an object, overriding the previous data\n if ( subunitData === Object(subunitData) ) {\n this.options.data[subunit] = defaults(subunitData, this.options.data[subunit] || {});\n var geo = this.svg.select('.' + subunit).attr('data-info', JSON.stringify(this.options.data[subunit]));\n }\n svg\n .selectAll('.' + subunit)\n .transition()\n .style('fill', color);\n }\n }\n };\n\n Datamap.prototype.updatePopup = function (element, d, options) {\n var self = this;\n element.on('mousemove', null);\n element.on('mousemove', function() {\n var position = d3.mouse(self.options.element);\n d3.select(self.svg[0][0].parentNode).select('.datamaps-hoverover')\n .style('top', ( (position[1] + 30)) + \"px\")\n .html(function() {\n var data = JSON.parse(element.attr('data-info'));\n try {\n return options.popupTemplate(d, data);\n } catch (e) {\n return \"\";\n }\n })\n .style('left', ( position[0]) + \"px\");\n });\n\n d3.select(self.svg[0][0].parentNode).select('.datamaps-hoverover').style('display', 'block');\n };\n\n Datamap.prototype.addPlugin = function( name, pluginFn ) {\n var self = this;\n if ( typeof Datamap.prototype[name] === \"undefined\" ) {\n Datamap.prototype[name] = function(data, options, callback, createNewLayer) {\n var layer;\n if ( typeof createNewLayer === \"undefined\" ) {\n createNewLayer = false;\n }\n\n if ( typeof options === 'function' ) {\n callback = options;\n options = undefined;\n }\n\n options = defaults(options || {}, self.options[name + 'Config']);\n\n // Add a single layer, reuse the old layer\n if ( !createNewLayer && this.options[name + 'Layer'] ) {\n layer = this.options[name + 'Layer'];\n options = options || this.options[name + 'Options'];\n }\n else {\n layer = this.addLayer(name);\n this.options[name + 'Layer'] = layer;\n this.options[name + 'Options'] = options;\n }\n pluginFn.apply(this, [layer, data, options]);\n if ( callback ) {\n callback(layer);\n }\n };\n }\n };\n\n // Expose library\n if (typeof exports === 'object') {\n d3 = require('d3');\n topojson = require('topojson');\n module.exports = Datamap;\n }\n else if ( typeof define === \"function\" && define.amd ) {\n define( \"datamaps\", [\"require\", \"d3\", \"topojson\"], function(require) {\n d3 = require('d3');\n topojson = require('topojson');\n\n return Datamap;\n });\n }\n else {\n window.Datamap = window.Datamaps = Datamap;\n }\n\n if ( window.jQuery ) {\n window.jQuery.fn.datamaps = function(options, callback) {\n options = options || {};\n options.element = this[0];\n var datamap = new Datamap(options);\n if ( typeof callback === \"function\" ) {\n callback(datamap, options);\n }\n return this;\n };\n }\n})();\n"],"sourceRoot":""}