{"version":3,"sources":["webpack://App.[name]/./js/demographics-donut.js","webpack://App.[name]/./vendor/highcharts/exporting.js","webpack://App.[name]/./js/analytics.js","webpack://App.[name]/./js/demographics.js","webpack://App.[name]//nix/store/saylf54v94hjg6x2hqwqargyffdmydi3-node_mixrank-0.0.1/lib/node_modules/d3/d3.js","webpack://App.[name]/./vendor/highcharts/highcharts.src.js"],"names":["d3","config","color","scale","category20c","arc","svg","outerRadius","radius","innerRadius","arcHover","pie","layout","sort","value","d","selection","each","data","total","$","i","v","Math","round","select","this","selectAll","gEnter","enter","append","attr","text","title","style","g","arcs","on","percent","index","legendSetup","Highcharts","f","y","A","t","C","k","n","u","o","r","p","D","j","B","E","F","x","Chart","addEvent","removeEvent","createElement","discardElement","css","merge","extend","max","document","window","isTouchDevice","Renderer","prototype","symbols","getOptions","lang","printChart","downloadPNG","downloadJPEG","downloadPDF","downloadSVG","contextButtonTitle","navigation","menuStyle","border","background","padding","menuItemStyle","fontSize","menuItemHoverStyle","buttonOptions","symbolFill","symbolSize","symbolStroke","symbolStrokeWidth","symbolX","symbolY","align","buttonSpacing","height","theme","fill","stroke","verticalAlign","width","exporting","type","url","buttons","contextButton","menuClassName","symbol","_titleKey","menuItems","textKey","onclick","print","separator","exportChart","post","c","a","b","method","action","enctype","display","body","name","submit","getSVG","z","h","options","createElementNS","position","top","chartWidth","chartHeight","renderTo","sourceWidth","chart","test","parseInt","sourceHeight","animation","forExport","enabled","series","showCheckbox","visible","isInternal","push","callback","getExtremes","userMin","userMax","setExtremes","container","innerHTML","destroy","replace","toLowerCase","borderRadius","chartOptions","filename","parentNode","childNodes","isPrinting","nodeType","appendChild","focus","setTimeout","contextMenu","w","e","q","l","m","s","className","zIndex","MozBoxShadow","WebkitBoxShadow","boxShadow","setState","openMenu","clearTimeout","pointer","inClass","target","onmouseover","onmouseout","apply","arguments","cursor","exportDivElements","exportMenuWidth","offsetWidth","exportMenuHeight","offsetHeight","right","left","alignOptions","bottom","addButton","renderer","btnCount","exportSVGElements","states","hover","translateX","translateY","paddingLeft","pick","button","add","destroyExport","length","ontouchstart","menu","callbacks","props","email","$el","that","click","trackEvent","currentTarget","donutChart","demographics","international_total","global_unique_visitors_users","us_unique_visitors_users","gender_total","gender_male_visitors","gender_female_visitors","offspring_total","kidsinhousehold_yes_visitors","kidsinhousehold_no_visitors","charts","age_0_17_visitors","age_18_24_visitors","age_25_34_visitors","age_35_44_visitors","age_45_54_visitors","age_55_64_visitors","age_65_plus_visitors","ushhi_0k_25k_visitors","ushhi_25k_50k_visitors","ushhi_50k_75k_visitors","ushhi_75k_100k_visitors","ushhi_100k_150k_visitors","ushhi_150k_plus_visitors","edu_below_highschool_visitors","edu_highschool_visitors","edu_somecollege_visitors","edu_bachelorsdegree_visitors","edu_graduatedegree_visitors","chartname","hasOwnProperty","hasData","dataIdx","donut","id","get","datum","call","parent","remove","version","d3_arraySlice","slice","d3_array","list","d3_document","d3_documentElement","node","ownerDocument","documentElement","d3_window","defaultView","array","Array","Date","now","setProperty","error","d3_element_prototype","Element","d3_element_setAttribute","setAttribute","d3_element_setAttributeNS","setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","space","local","priority","d3_ascending","NaN","d3_number","d3_numeric","isNaN","d3_bisector","compare","lo","hi","mid","ascending","descending","min","extent","sum","mean","quantile","values","H","floor","median","numbers","variance","deviation","sqrt","d3_bisect","d3_transposeLength","bisectLeft","bisect","bisectRight","bisector","shuffle","i0","i1","random","permute","indexes","permutes","pairs","p1","transpose","matrix","row","zip","keys","map","key","entries","arrays","merged","abs","d3_range_integerScale","d3_class","ctor","properties","Object","defineProperty","enumerable","d3_Map","_","create","range","start","stop","step","Infinity","Error","object","forEach","set","isArray","d3_map_escape","d3_map_unescape","d3_map_has","d3_map_remove","d3_map_keys","d3_map_size","size","d3_map_empty","d3_Set","d3_identity","d3_rebind","source","d3_vendorSymbol","charAt","toUpperCase","d3_vendorPrefixes","prefixName","has","empty","nest","sortValues","rollup","sortKeys","mapType","depth","keyValue","setter","valuesByKey","sortKey","keyMap","order","behavior","rebind","d3_noop","d3_dispatch","d3_dispatch_event","dispatch","listeners","listenerByName","event","listener","indexOf","concat","d3_eventPreventDefault","preventDefault","d3_eventSource","sourceEvent","d3_eventDispatch","of","thiz","argumentz","e1","e0","requote","d3_requote_re","d3_subclass","__proto__","property","d3_selection","groups","d3_selectionPrototype","d3_select","querySelector","d3_selectAll","querySelectorAll","d3_selectMatches","d3_selectMatcher","matches","Sizzle","matchesSelector","d3_selection_selector","selector","d3_selection_selectorAll","subgroup","subnode","group","subgroups","__data__","d3_nsXhtml","d3_nsPrefix","xhtml","xlink","xml","xmlns","d3_selection_attr","ns","qualify","removeAttributeNS","removeAttribute","d3_collapse","trim","d3_selection_classedRe","RegExp","d3_selection_classes","split","d3_selection_classed","d3_selection_classedName","re","classList","getAttribute","lastIndex","d3_selection_style","removeProperty","d3_selection_property","d3_selection_creator","namespace","namespaceURI","d3_selectionRemove","removeChild","d3_selection_dataNode","d3_selection_filter","d3_selection_sortComparator","comparator","d3_selection_each","d3_selection_enter","d3_selection_enterPrototype","prefix","getAttributeNS","classed","contains","getComputedStyle","getPropertyValue","textContent","html","insert","before","insertBefore","bind","groupData","nodeData","n0","updateNodes","enterNodes","exitNodes","nodeByKeyValue","keyValues","update","exit","filter","next","nextSibling","args","d3_selection_enterInsertBefore","j0","d3_selection_on","capture","wrap","d3_selection_onListener","d3_selection_onFilters","onRemove","removeEventListener","d3_selection_onFilter","addEventListener","match","upgroup","nodes","mouseenter","mouseleave","related","relatedTarget","compareDocumentPosition","d3_event_dragSelect","d3_event_dragId","d3_event_dragSuppress","suppressClick","off","mouse","d3_mousePoint","d3_mouse_bug44083","navigator","userAgent","changedTouches","ownerSVGElement","createSVGPoint","point","scrollX","scrollY","ctm","margin","getScreenCTM","pageX","pageY","clientX","clientY","matrixTransform","inverse","rect","getBoundingClientRect","clientLeft","clientTop","d3_behavior_dragTouchId","identifier","touch","touches","drag","origin","mousedown","dragstart","touchstart","subject","move","end","dragOffset","correspondingElement","dragged","dragId","dragName","dragSubject","moved","ended","dragRestore","position0","dx","dy","position1","ε","ε2","π","PI","τ","τε","halfπ","d3_radians","d3_degrees","d3_sgn","d3_cross2d","d3_acos","acos","d3_asin","asin","d3_cosh","exp","d3_haversin","sin","ρ","SQRT2","interpolateZoom","p0","S","ux0","uy0","w0","ux1","uy1","w1","d2","log","d1","b0","b1","r0","r1","coshr0","d3_sinh","duration","zoom","translate0","center0","center","mousewheelTimer","touchtime","x0","x1","y0","y1","view","scaleExtent","d3_behavior_zoomInfinity","zooming","mousemove","mouseup","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","location","scaleTo","translateTo","zoomTo","__chart__","pow","transition","rescale","domain","invert","zoomstarted","zoomed","translate","zoomended","location0","d3_selection_interrupt","scale0","locations0","distance0","zoomName","touchmove","touchend","targets","relocate","started","changed","LN2","l0","l1","distance1","scale1","d3_behavior_zoomDelta","shiftKey","ceil","deltaY","deltaMode","wheelDelta","detail","view1","d3_transitionInheritId","tween","cx","cy","copy","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","toString","rgb","hsl","d3_hslPrototype","d3_hsl_rgb","m1","m2","vv","d3_rgb","d3_hcl","d3_lab_hcl","d3_lab","d3_rgb_lab","brighter","darker","hcl","d3_hclPrototype","d3_hcl_lab","cos","d3_lab_K","lab","d3_labPrototype","d3_lab_rgb","d3_xyz_rgb","d3_lab_xyz","atan2","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_rgbPrototype","d3_rgb_hex","format","exec","parseFloat","d3_rgb_parseNumber","d3_rgb_names","d3_rgb_xyz","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","d3_functor","d3_xhrType","response","mimeType","d3_xhr","xhr","headers","request","XMLHttpRequest","responseType","respond","result","status","responseText","d3_xhrHasResponse","load","XDomainRequest","onload","onerror","onreadystatechange","readyState","onprogress","progress","header","send","open","setRequestHeader","overrideMimeType","beforesend","abort","d3_xhr_fixCallback","functor","dsv","delimiter","reFormat","delimiterCode","charCodeAt","typedResponse","parse","formatRow","formatValue","join","parseRows","Function","JSON","stringify","eol","EOL","EOF","rows","N","I","token","formatRows","fieldSet","fields","field","csv","tsv","d3_timer_queueHead","d3_timer_queueTail","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer","delay","then","time","timer","d3_timer_step","d3_timer_mark","d3_timer_sweep","isFinite","t0","t1","d3_format_precision","LN10","flush","d3_formatPrefixes","d3_locale_numberFormat","locale","locale_decimal","decimal","locale_thousands","thousands","locale_grouping","grouping","locale_currency","currency","formatGroup","substring","reverse","specifier","d3_format_re","sign","zfill","comma","precision","suffix","integer","exponent","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","negative","unit","formatPrefix","after","lastIndexOf","String","fromCharCode","X","toPrecision","toExponential","toFixed","d3_time","d3_date","d3_date_utc","UTC","getDate","getUTCDate","getDay","getUTCDay","getFullYear","getUTCFullYear","getHours","getUTCHours","getMilliseconds","getUTCMilliseconds","getMinutes","getUTCMinutes","getMonth","getUTCMonth","getSeconds","getUTCSeconds","getTime","getTimezoneOffset","valueOf","setDate","d3_time_prototype","setUTCDate","setDay","setUTCDay","setFullYear","setUTCFullYear","setHours","setUTCHours","setMilliseconds","setUTCMilliseconds","setMinutes","setUTCMinutes","setMonth","setUTCMonth","setSeconds","setUTCSeconds","setTime","d3_time_interval","number","date","d0","offset","dt","times","utc","d3_time_interval_utc","d3_locale_timeFormat","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_days","days","locale_shortDays","shortDays","locale_months","months","locale_shortMonths","shortMonths","d3_time_format","template","string","d3_time_formatPads","d3_time_formats","M","L","Z","d3_time_parse","localZ","W","U","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","d3_time_formatPad","dayOfYear","sundayOfYear","mondayOfYear","Y","d3_time_zone","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","year","day","years","interval","week","sunday","weeks","weekOfYear","d3_time_numberRe","d3_time_percentRe","names","zs","zh","zm","formats","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","normal","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","interpolate","clip","segment","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","entry","points","current","isSubject","other","d3_geo_clip","pointVisible","clipLine","clipStart","rotate","line","rotatedClipStart","pointRing","polygon","meridian","parallel","meridianNormal","polarAngle","winding","ring","point0","intersection","φarc","d3_geo_pointInPolygon","polygonStarted","d3_geo_clipSort","pointLine","buffer","d3_geo_clipBufferListener","ringListener","clean","ringSegments","pop","shift","d3_geo_clipSegmentLength1","lines","rejoin","d3_geo_clipAntimeridian","sλ0","sλ1","cosφ1","sinλ0_λ1","atan","d3_geo_clipAntimeridianIntersect","from","to","direction","d3_geo_clipCircle","cr","smallRadius","notHemisphere","c0","v0","v00","point2","point1","code","intersect","d3_geo_circleInterpolate","two","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","t2","δλ","polar","q1","d3_geom_clipLine","ax","ay","d3_geo_clipExtent","x__","y__","v__","x_","y_","v_","first","listener_","bufferListener","wn","insidePolygon","inside","a1","corner","comparePoints","ca","cb","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","ρ0","forward","ρ0_y","clipExtent","output","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_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","moveTo","lineTo","closePath","d3_geo_resample","project","δ2","cosMinDistance","maxDepth","resample","resampleRecursive","resampleNone","d3_geo_transformPoint","a00","b00","c00","a0","resampleLineTo","φ2","λ2","x2","y2","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","path","projectStream","contextStream","cacheStream","transform","methods","projectionMutator","equirectangular","circle","distance","Δλ","sinΔλ","cosΔλ","sinφ1","graticule","X1","X0","Y1","Y0","DX","DY","outline","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","d3_geo_length","d3_geo_azimuthal","azimuthal","cosλ","sinc","cosc","d3_geo_azimuthalEqualArea","cosλcosφ","azimuthalEqualArea","d3_geo_azimuthalEquidistant","d3_geo_conicConformal","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","fx","fy","flippedPoints","upper","lower","skipLeft","skipRight","d3_geom_polygonPrototype","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","ua","d3_geom_polygonClosed","input","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","edge","site","d3_geom_voronoiCreateBeach","beach","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiRemoveBeach","vertex","previous","P","disappearing","lArc","unshift","rArc","iArc","nArcs","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","dxl","dxr","directrix","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","R","newArc","lSite","bx","by","rSite","hb","hc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","edges","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","cSite","ha","d3_geom_voronoiConnectEdge","vb","fm","fb","va","lx","ly","rx","ry","d3_geom_voronoiEdge","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","tree","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","sites","bbox","d3_geom_voronoiVertexOrder","splice","d3_geom_voronoiClipEdges","cell","iHalfEdge","halfEdges","nHalfEdges","cells","iCell","prepare","d3_geom_voronoiCloseCells","diagram","grandpa","uncle","sibling","voronoi","d3_geom_voronoiClipExtent","polygons","links","triangles","s0","s1","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeVisit","sx","sy","children","d3_geom_quadtreeFind","root","closestPoint","minDistance2","find","distance2","xm","ym","d3_interpolateRgb","ar","ag","ab","br","bg","bb","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","am","bm","bs","bi","d3_interpolate_numberA","d3_interpolate_numberB","delaunay","quadtree","compat","xs","ys","x1_","y1_","x2_","y2_","leaf","nx","ny","insertChild","nPoint","below","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolators","d3_interpolateArray","na","nb","interpolateArray","d3_ease_default","d3_ease","linear","poly","quad","d3_ease_quad","cubic","d3_ease_cubic","d3_ease_sin","d3_ease_exp","d3_ease_circle","elastic","back","bounce","d3_ease_bounce","d3_ease_mode","out","d3_ease_reverse","d3_ease_reflect","d3_ease_clamp","d3_ease_cubicInOut","t3","d3_interpolateRound","d3_transform","kx","d3_transformNormalize","kz","d3_transformDot","ky","skew","ease","interpolateHcl","ah","ac","al","bh","bc","bl","interpolateHsl","as","interpolateLab","aa","ba","interpolateRound","baseVal","consolidate","d3_transformIdentity","d3_interpolateTransformPop","d3_interpolateTransform","ta","tb","d3_interpolateTranslate","ra","rb","d3_interpolateRotate","wa","wb","d3_interpolateSkew","ka","kb","d3_interpolateScale","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","link","lca","aNodes","d3_layout_bundleAncestors","bNodes","aNode","bNode","sharedNode","d3_layout_bundleLeastCommonAncestor","ancestors","d3_layout_forceDragstart","fixed","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","interpolateTransform","bundle","paths","chord","chords","sortGroups","sortSubgroups","sortChords","relayout","groupSums","groupIndex","subgroupIndex","di","dj","subindex","startAngle","endAngle","resort","force","alpha","distances","strengths","charges","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","charge","chargeDistance2","d3_layout_forceChargeDistance2","gravity","theta2","repulse","dw","dn","pointCharge","dragmove","resume","tick","weight","d3_layout_forceAccumulate","visit","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","child","stack","childs","revalue","partition","Number","d3_layout_pieSortByValue","padAngle","da","pa","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","orders","offsets","d3_layout_stackOrders","d3_layout_stackOffsets","d3_layout_stackMaxIndex","sums","d3_layout_stackReduceSum","tops","bottoms","silhouette","wiggle","s2","s3","o0","expand","zero","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","db","dc","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","change","d3_layout_treeAncestor","vim","ancestor","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","d3_scaleRange","rangeExtent","d3_scale_bilinear","uninterpolate","d3_scale_nice","nice","d3_scale_niceStep","d3_scale_niceIdentity","histogram","frequency","valuer","ranger","binner","bin","bins","thresholds","pack","d3_layout_packTransform","separation","nodeSize","root0","root1","node1","queue","wrapTree","firstWalk","secondWalk","sizeNode","tx","siblings","d3_layout_treeShift","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","cluster","previousNode","d3_layout_clusterX","d3_layout_clusterY","d3_layout_clusterLeft","d3_layout_clusterRight","treemap","stickies","pad","sticky","mode","ratio","squarify","score","remaining","worst","stickify","rmax","rmin","padFunction","padConstant","µ","σ","logNormal","bates","irwinHall","d3_scale_polylinear","d3_scale_linearRebind","d3_scale_linearNice","d3_scale_linearTickRange","span","err","d3_scale_linearTicks","d3_scale_linearTickFormat","d3_scale_linearPrecision","d3_scale_linearFormatSignificant","d3_scale_linearFormatPrecision","d3_scale_linear","clamp","rangeRound","ticks","tickFormat","d3_scale_log","base","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_powPow","d3_scale_pow","powp","powb","ordinal","d3_scale_ordinal","rangeBand","steps","xi","rangePoints","rangeRoundPoints","rangeBands","outerPadding","rangeRoundBands","category10","d3_category10","category20","d3_category20","category20b","d3_category20b","d3_category20c","d3_zero","d3_scale_quantile","quantiles","invertExtent","quantize","d3_scale_quantize","threshold","d3_scale_threshold","identity","d3_scale_identity","d3_svg_arcInnerRadius","d3_svg_arcOuterRadius","cornerRadius","padRadius","d3_svg_arcAuto","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","cw","rc","circleSegment","rp","ap","d3_svg_arcSweep","h1","h0","rc1","rc0","oc","kc","lc","t30","d3_svg_arcCornerTangents","t12","t03","t21","x01","y01","ox","oy","cx0","cx1","dx0","dy0","dx1","dy1","d3_svg_line","defined","d3_svg_lineLinear","interpolateKey","tension","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStepBefore","d3_svg_lineStepAfter","basis","d3_svg_lineBasis","pi","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","cardinal","d3_svg_lineHermite","d3_svg_lineCardinalTangents","monotone","tangents","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","lp","p2","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","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","curve","self","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","interrupt","d3_selection_interruptNS","lock","activeId","active","count","d3_transitionPrototype","d3_transition_tween","d3_transition_text","inherit","tweens","elapsed","cancelId","cancel","subnodes","nameNS","attrNull","attrNullNS","attrTween","attrTweenNS","styleNull","styleString","styleTween","inheritId","id0","id1","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","resize","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","clear","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","createContextualFragment","json","responseXML","jQuery","factory","win","isNumber","pInt","doc","SVG_NS","createSVGRect","isMS","opera","vml","isFirefox","hasBidiBug","product","deg2rad","hasTouch","undefined","isWebKit","chartCount","seriesTypes","symbolSizes","marginNames","noop","uniqueKeyHash","idCounter","timers","msg","console","Fx","elem","prop","dSetter","startVal","ret","toD","element","run","gotoEnd","stopped","startTime","pos","timerId","setInterval","clearInterval","done","complete","curAnim","objectEach","val","easing","initPath","fromD","fullLength","startX","endX","bezier","numParams","isArea","positionFactor","sixify","arr","isOperator","nextIsOperator","insertSlice","subArr","prepend","fillSetter","strokeSetter","tweenTo","len","doCopy","original","isObject","isClass","isDOMElement","mag","isString","obj","str","strict","constructor","erase","item","splat","syncTimeout","fn","arg","el","styles","opacity","tag","attribs","nopad","extendClass","members","padder","relativeLength","func","proceed","outerArgs","ctx","getTZOffset","timestamp","hcGetTimezoneOffset","hcTimezoneOffset","dateFormat","capitalize","defaultOptions","invalidDate","hcGetHours","hcGetDay","dayOfMonth","hcGetDate","hcGetMonth","fullYear","hcGetFullYear","langWeekdays","weekdays","shortWeekdays","replacements","substr","hcGetMinutes","dateFormats","formatSingle","decimals","decimalPoint","thousandsSep","valueAndFormat","splitter","isInside","getMagnitude","num","normalizeTickInterval","multiples","magnitude","allowDecimals","hasTickAmount","normalized","retInterval","grep","correctFloat","stableSort","sortFunction","sortValue","safeI","arrayMin","arrayMax","destroyObjectProperties","except","garbageBin","prec","setAnimation","globalAnimation","animObject","timeUnits","millisecond","strinteger","roundedNumber","origDec","easeInOutSine","getStyle","toInt","scrollWidth","scrollHeight","inArray","results","docElem","box","pageYOffset","scrollTop","pageXOffset","scrollLeft","events","hcEvents","wrappedFn","srcElement","attachEvent","hcEventsIE","removeOneEvent","detachEvent","removeAllEvents","types","nodeName","fireEvent","eventArguments","defaultFunction","createEvent","dispatchEvent","initEvent","defaultPrevented","animate","params","opt","seriesType","pointProps","plotOptions","pointClass","uniqueKey","highcharts","alias","currentStyle","elements","Color","init","parsers","regex","none","rgba","parser","stops","brighten","setOpacity","hasAlpha","SVGElement","SVGRenderer","textProps","animOptions","colorGradient","colorObject","gradName","gradAttr","radAttr","gradients","gradientObject","stopColor","stopOpacity","radialReference","radialGradient","linearGradient","gradientUnits","getRadialAttr","defs","stopObject","gradient","applyTextOutline","textOutline","tspans","tspan","strokeWidth","firstRealChild","getContrast","fakeTS","getElementsByTagName","ySetter","xSetter","digit","firstChild","clone","cloneNode","hash","continueAnimation","hasSetSymbolSize","skipAttr","_defaultGetter","symbolName","symbolAttr","doTransform","_defaultSetter","shadows","updateShadows","afterSetters","updateTransform","cutHeight","addClass","currentClassName","hasClass","removeClass","wrapper","clipRect","crisp","normalizer","textWidth","hyphenate","oldStyles","newStyles","serializedCss","hasNew","svgPseudoProps","added","buildText","eventType","handler","svgElement","touchEventFired","setRadialReference","existingGradient","inverted","scaleX","scaleY","toFront","alignByTranslate","vAlign","alignTo","alignFactor","vAlignFactor","alignedObjects","placed","alignAttr","getBBox","reload","rot","bBox","rad","toggleTextShadowShim","cacheKey","textStr","cache","cacheKeys","textOverflow","htmlGetBBox","isSVG","show","visibility","hide","fadeOut","elemWrapper","inserted","parentGroup","parentInverted","handleZ","zIndexSetter","onAdd","safeRemoveChild","grandParent","parentToClean","onmousemove","clipPath","destroyShadows","div","shadow","shadowOptions","cutOff","shadowWidth","shadowElementOpacity","offsetX","offsetY","xGetter","dashstyleSetter","alignSetter","opacitySetter","titleSetter","titleNode","createTextNode","textSetter","visibilitySetter","otherElement","otherZIndex","yGetter","translateXSetter","translateYSetter","rotationSetter","verticalAlignSetter","scaleXSetter","scaleYSetter","hasStroke","allowHTML","boxWrapper","subPixelFix","href","imgCount","setSize","unSubPixelFix","fontFamily","setStyle","isHidden","rendererDefs","draw","getSpanWidth","actualWidth","measureSpanWidth","applyEllipsis","currentIndex","wasTooLong","minIndex","maxIndex","updateTSpan","clsRegex","styleRegex","hrefRegex","textCache","isSubsequentLine","textNode","hasMarkup","parentX","textStyles","textLineHeight","lineHeight","ellipsis","noWrap","whiteSpace","tempParent","getLineHeight","fontSizeStyle","fontMetrics","unescapeAngleBrackets","inputStr","lineNo","spans","spanNo","spanCls","spanStyle","attributes","tooLong","words","hasWhiteSpace","rest","normalState","hoverState","pressedState","disabledState","shape","normalStyle","hoverStyle","pressedStyle","disabledStyle","label","curState","fontWeight","state","crispLine","innerR","rSetter","viewBox","image","src","preserveAspectRatio","imageSrc","centerImage","ren","imageRegex","isImage","sym","symbolFn","imgwidth","imgheight","imgSize","trans","isImg","chartIndex","cosStart","sinStart","cosEnd","sinEnd","longArc","callout","safeDistance","anchorX","anchorY","useHTML","fakeSVG","parentVal","rotCorr","baseline","alterY","wrapperX","wrapperY","textAlign","baselineOffset","getCrispAdjust","updateBoxSize","updateTextPadding","boxAttr","deferredAttr","hasBGImage","needsBox","crispAdjust","textY","textX","widthSetter","heightSetter","paddingSetter","paddingLeftSetter","anchorXSetter","anchorYSetter","baseCss","htmlCss","tagName","overflow","offsetLeft","offsetTop","htmlUpdateTransform","alignCorrection","marginLeft","marginTop","invertChild","currentTextTransform","cTT","setSpanRotation","innerText","getSpanCorrection","xCorr","yCorr","alignOnAdd","rotationStyle","cssTransformKey","transformOrigin","addSetters","svgGroupWrapper","htmlGroup","parents","htmlGroupStyle","cls","pointerEvents","VMLRenderer","VMLRendererExtension","VMLElement","docMode8","documentMode","markup","isDiv","prepVML","deferUpdateTransform","costheta","sintheta","elemHeight","nonLeft","pathToVML","isArc","clipMembers","cssRet","destroyClip","getCSS","evt","cutOffPath","modifiedPath","elemStyle","cssText","setAttr","classSetter","filled","stroked","updateClipping","isIE8","isVML","namespaces","hcv","createStyleSheet","styleSheets","isObj","isShape","member","fillType","regexRgba","opacity1","opacity2","color1","color2","firstStop","lastStop","fillAttr","colors","addFillNode","sizex","sizey","applyRadialGradient","global","VMLRadialGradientURL","propNodes","vmlStyle","coordsize","isCircle","parentStyle","imgStyle","flip","measuringSpan","setTimeMethods","globalOptions","useUTC","GET","SET","timezoneOffset","moment","tz","utcOffset","getTimezoneOffsetOption","hcMakeTime","loading","numericSymbols","resetZoom","resetZoomTitle","defaultSeriesType","ignoreHiddenSeries","spacing","resetZoomButton","borderColor","backgroundColor","plotBorderColor","widthAdjust","subtitle","labels","legend","labelFormatter","activeColor","inactiveColor","itemStyle","itemHoverStyle","itemHiddenStyle","itemCheckboxStyle","squareSymbol","symbolPadding","labelStyle","tooltip","dateTimeLabelFormats","footerFormat","snap","borderWidth","headerFormat","pointFormat","credits","setOptions","defaultPlotOptions","Tick","noLabel","isNew","isNewLabel","addLabel","dateTimeLabelFormat","categories","labelOptions","tickPositions","isFirst","isLast","tickPositionInfo","info","isDatetimeAxis","higherRanks","unitName","isLog","lin2log","labelGroup","labelLength","getLabelSize","horiz","handleOverflow","xy","rightPos","pxPos","leftBound","labelLeft","rightBound","labelRight","factor","labelAlign","labelWidth","slotWidth","getSlotWidth","modifiedSlotWidth","xCorrection","goRight","autoRotation","getPosition","tickmarkOffset","old","cHeight","oldChartHeight","transB","opposite","oldChartWidth","getLabelPosition","transA","reversed","staggerLines","tickRotCorr","yOffset","side","labelOffset","getMarkPath","tickLength","tickWidth","renderGridLine","reverseCrisp","gridLinePath","gridLine","gridPrefix","gridLineWidth","gridLineColor","dashStyle","dashstyle","gridGroup","getPlotLinePath","renderMark","tickPrefix","mark","isNewMark","isXAxis","tickColor","axisGroup","renderLabel","showFirstLabel","showLastLabel","isRadial","render","isActive","Axis","endOnTick","minPadding","maxPadding","minorTickLength","minorTickPosition","startOfWeek","startOnTick","tickmarkPlacement","tickPixelInterval","tickPosition","minorGridLineColor","minorGridLineWidth","minorTickColor","lineColor","lineWidth","defaultYAxisOptions","stackLabels","formatter","defaultLeftAxisOptions","defaultRightAxisOptions","defaultBottomAxisOptions","defaultTopAxisOptions","userOptions","isX","isZAxis","coll","defaultLabelFormatter","minPixelPadding","zoomEnabled","hasNames","plotLinesAndBandsGroups","positiveValuesOnly","allowNegativeLog","isLinked","linkedTo","labelEdge","minorTicks","plotLinesAndBands","alternateBands","minRange","userMinRange","maxZoom","stacks","oldStacks","stacksTouched","crosshair","crosshairs","axes","xAxis","linearToLogConverter","val2lin","log2lin","lin2val","numSymMagnitude","numericSymbolMagnitude","formatOption","numericSymbolDetector","tickInterval","getSeriesExtremes","hasVisibleSeries","dataMin","dataMax","softThreshold","buildStacks","xData","seriesDataMin","seriesDataMax","seriesOptions","backwards","cvsCoord","handleLog","pointPlacement","returnValue","linkedParent","cvsOffset","localA","oldTransA","localMin","oldMin","doPostTranslate","isOrdinal","isBroken","sector","toPixels","paneCoordinates","toValue","pixel","translatedValue","axisLeft","axisTop","cWidth","between","getLinearTickPositions","lastPos","roundedMin","roundedMax","single","getMinorTickPositions","minorTickInterval","minorTickPositions","pointRangePadding","paddedTicks","getLogTickPositions","getTimeTicks","normalizeTimeTickInterval","trimTicks","adjustForMinRange","zoomOffset","spaceAvailable","closestDataRange","loopLength","minArgs","maxArgs","xIncrement","getClosest","seriesClosest","closestPointRange","noSharedTooltip","nameToX","explicitCategories","nameX","requireSorting","uniqueNames","autoIncrement","updateNames","isDirtyData","processData","generatePoints","setAxisTranslation","saveOld","ordinalCorrection","pointRange","axisPointRange","minPointOffset","hasCategories","seriesPointRange","ordinalSlope","translationSlope","staticScale","minFromRange","setTickInterval","secondPass","linkedParentExtremes","minTickInterval","thresholdMin","thresholdMax","hardMin","hardMax","tickIntervalOption","tickPixelIntervalOption","getTickAmount","beforePadding","usePercentage","softMin","softMax","ceiling","tickAmount","oldMax","beforeSetTickPositions","postProcessTickInterval","unsquish","setTickPositions","tickPositionsOption","tickPositioner","units","ordinalPositions","adjustTickAmount","alignToOthers","hasOther","others","alignTicks","otherOptions","pane","finalTickAmt","currentTickAmount","setScale","isDirtyAxisLength","oldAxisLength","setAxisSize","isDirty","forceRedraw","oldUserMin","oldUserMax","resetStacks","cleanStacks","newMin","newMax","serie","kdTree","eventArgs","allowZoomOutside","displayBtn","trigger","plotWidth","plotHeight","plotTop","plotLeft","percentRegex","getThreshold","realMin","realMax","autoLabelAlign","labelMetrics","newTickInterval","slotSize","rotationOption","bestScore","MAX_VALUE","getStep","spaceNeeded","autoRotationLimit","labelRotation","slotCount","renderUnsquish","innerWidth","textOverflowOption","maxLabelLength","specCss","addTitle","axisTitleOptions","axisTitle","low","middle","high","generateTick","getOffset","showAxis","titleOffsetOption","labelOffsetPadded","lineHeightCorrection","invertedSide","titleOffset","titleMargin","axisOffset","clipOffset","directionFactor","axisParent","showEmpty","gridZIndex","reserveSpace","1","3","renderLine","axisTitleMargin","axisLine","getLinePath","lineLeft","lineTop","getTitlePosition","axisLength","xOption","yOption","alongAxis","offAxis","renderMinorTick","slideInTicks","hasRendered","renderTick","stackLabelOptions","alternateGridColor","overlap","PlotLineOrBand","_addedPlotLB","plotLines","plotBands","plotLineOptions","addPlotBandOrLine","forDestruction","isPlaced","titleXy","renderStackTotals","plotLine","keepProps","keepEvents","plotGroup","stackKey","drawCrosshair","categorized","graphic","plotX","plotY","chartX","chartY","stackY","hideCrosshair","normalizedInterval","minYear","variableDayLength","minDate","makeTime","unitRange","hcSetMilliseconds","hcSetSeconds","hcSetMinutes","hcSetHours","hcSetDate","hcSetMonth","hcSetFullYear","minMonth","minDateDate","minHours","totalRange","unitsOption","minor","positions","_minorAutoInterval","intermediate","break2","filteredTickIntervalOption","totalPixelLength","optionsLabel","isBand","isLine","svgElem","groupAttribs","groupName","getPlotBandPath","flat","toPath","plus","outside","addPlotBand","addPlotLine","removePlotBandOrLine","removePlotBand","removePlotLine","Tooltip","shared","cleanSplit","tt","getLabel","hideTimer","tooltipTimeout","skipAnchor","followPointer","hideDelay","getAnchor","mouseEvent","yAxis","tooltipPos","normalize","plotLow","plotHigh","boxWidth","boxHeight","swapped","preferFarSide","ttBelow","firstDimension","dim","outerSize","innerSize","roomLeft","roomRight","alignedLeft","alignedRight","secondDimension","retVal","swap","temp","defaultFormatter","items","tooltipFooterHeaderFormatter","bodyFormatter","refresh","pointOrPoints","anchor","currentSeries","textConfig","pointConfig","tooltipOptions","getLabelConfig","category","renderSplit","spacingBox","colorIndex","updatePosition","headerHeight","boxes","rightAligned","tooltipLabel","isHeader","owner","colorClass","rank","distribute","positioner","getDateFormat","dateStr","blank","strpos","lastN","getXDateFormat","labelConfig","isFooter","footOrHead","xDateFormat","isDateTime","formatString","pointFormatter","tooltipFormatter","Pointer","runChartClick","pinchDown","lastValidTouch","followTouchMove","setDOMEvents","zoomOption","zoomX","zoomY","zoomType","pinchType","zoomHor","zoomVert","hasZoom","chartPosition","ePos","getCoordinates","getKDPoints","directTouch","kdpointT","kdpoints","enableMouseTracking","searchPoint","findNearestPointBy","isCloserX","distX","isCloser","dist","isAbove","getPointFromEvent","getChartCoordinatesFromPoint","getHoverData","existingHoverPoint","existingHoverSeries","isDirectTouch","hoverPoint","hoverPoints","hoverSeries","searchSeries","useExisting","notSticky","stickyTracking","isHoverPoint","runPointActions","useSharedTooltip","hoverData","onMouseOver","firePointEvent","unDocMouseMove","hoverChartIndex","onDocumentMouseMove","allowMove","tooltipPoints","isCartesian","onMouseOut","hoverX","scaleGroups","seriesAttribs","getPlotBox","markerGroup","dataLabelsGroup","clipBox","dragStart","mouseIsDown","cancelClick","mouseDownX","mouseDownY","clickedInside","selectionMarker","panKey","hasDragged","isInsidePlot","hasCartesianSeries","selectionMarkerFill","panning","pan","drop","hasPinched","runZoom","selectionData","originalEvent","selectionBox","selectionLeft","selectionTop","selectionWidth","selectionHeight","selectionMin","selectionMax","_cursor","onContainerMouseDown","onDocumentMouseUp","onContainerMouseLeave","toElement","onContainerMouseMove","elemClassName","onTrackerMouseOut","onContainerClick","onmousedown","onContainerTouchStart","ontouchmove","onContainerTouchMove","onDocumentTouchEnd","pinchTranslate","pinchTranslateDirection","forcedScale","selectionWH","selectionXY","clipXY","outOfBounds","transformScale","scaleKey","XY","sChartXY","wh","plotLeftTop","singleTouch","touch0Start","touch0Now","touch1Start","touch1Now","pinch","touchesLength","fireClickEvent","runTrackerClick","initiated","absMin","absMax","res","plotBox","hasMoved","PointerEvent","MSPointerEvent","hasPointerEvent","translateMSPointer","wktype","fake","pointerType","MSPOINTER_TYPE_TOUCH","onContainerPointerDown","pointerId","onContainerPointerMove","onDocumentPointerUp","batchMSEvents","Legend","positionCheckboxes","itemMarginTop","initialItemY","maxItemWidth","itemHeight","symbolWidth","pages","isDirtyLegend","isDirtyBox","colorizeItem","legendGroup","legendItem","legendLine","legendSymbol","hiddenColor","textColor","symbolColor","markerOptions","marker","isMarker","pointAttribs","positionItem","ltr","rtl","legendItemPos","_legendItemPos","itemX","itemY","checkbox","legendWidth","destroyItem","destroyItems","getAllItems","scrollOffset","clipHeight","legendHeight","titleHeight","allItems","checkboxOffset","renderTitle","titleOptions","contentGroup","setText","labelFormat","renderItem","itemWidth","horizontal","itemDistance","widthOption","itemMarginBottom","li","isSeries","drawLegendSymbol","createCheckboxForItem","itemExtraWidth","itemClassName","scrollGroup","symbolHeight","setItemEvents","legendItemWidth","legendItemHeight","lastLineHeight","lastItemY","showInLegend","legendItems","legendType","adjustMargins","alignment","floating","alignments","legendIndex","isResizing","lastY","optionsY","alignTop","spaceHeight","maxHeight","navOptions","arrowSize","nav","clipToHeight","currentPage","fullHeight","up","scroll","pager","down","scrollBy","pageCount","LegendSymbolMixin","drawRectangle","symbolRadius","drawLineMarker","generalRadius","legendItemGroup","verticalCenter","runPositionItem","getArgs","userPlotOptions","optionsChart","chartEvents","showAxes","pointCount","colorCounter","symbolCounter","firstRender","initSeries","Constr","orderSeries","fromIndex","hasStackedSeries","hasDirtyStacks","redrawLegend","isHiddenChart","afterRedraw","setResponsive","temporaryDisplay","layOutTitles","stacking","updateTotals","getStacks","getMargins","extKey","drawChartBox","itemById","getAxes","optionsArray","xAxisOptions","yAxisOptions","axisOptions","getSelectedPoints","selected","getSelectedSeries","setTitle","subtitleOptions","chartTitleOptions","chartSubtitleOptions","isStock","requiresDirtyBox","titleSize","getChartSize","heightOption","containerWidth","containerHeight","revert","tempStyle","hcOrigStyle","setClassName","getContainer","oldChartIndex","Ren","containerStyle","containerId","getElementById","skipClone","skipAxes","resetMargins","extraMargin","extraTopMargin","getAxisMargins","setChartSize","reflow","hasUserWidth","reflowTimeout","initReflow","unbind","clipX","clipY","plotBorderWidth","clipOffsetSide","marginRight","marginBottom","plotSizeX","plotSizeY","sideName","chartBorderWidth","mgn","bgAttr","chartBackground","plotBackground","plotBorder","plotBGImage","chartBackgroundColor","plotBackgroundColor","plotBackgroundImage","verb","plotShadow","propFromSeries","klass","linkSeries","chartSeries","linkedSeries","renderSeries","renderLabels","tempWidth","tempHeight","redoHorizontal","redoVertical","seriesGroup","addCredits","mapCredits","scroller","isReadyToRender","serieOptions","colorCount","applyOptions","colorByPoint","pointValKey","optionsToObject","isNull","isValid","firstItemType","pointArrayMap","valueCount","dataLabels","_hasPointLabels","_hasPointMarkers","getClassName","zone","getZone","zones","zoneAxis","dataLabel","destroyElements","percentage","stackTotal","seriesTooltipOptions","valueDecimals","valuePrefix","valueSuffix","importEvents","allowPointSelect","ctrlKey","metaKey","Series","radiusPlus","lineWidthPlus","fillColor","cropThreshold","halo","turboThreshold","sorted","axisTypes","parallelArrays","lastSeries","bindAxes","getColor","getSymbol","setData","_i","collection","indexOption","AXIS","optionalAxis","updateParallelArrays","toYData","pointInterval","pointIntervalUnit","pointStart","itemOptions","typeOptions","negativeColor","negativeFillColor","getCyclic","defaults","setting","indexName","counterName","seriesMarkerOption","updatePoints","dataLength","pt","oldData","oldDataLength","firstPoint","yData","cropped","hasGroupedData","croppedData","xExtremes","processedXData","processedYData","cropStart","getExtremesFromAll","forceCrop","cropData","cropEnd","cropShoulder","dataOptions","PointClass","processedDataLength","dataGroup","groupMap","yDataLength","validValue","activeYData","activeCounter","stackedYData","lastPlotX","stackIndicator","hasModifyValue","modifyValue","dynamicallyPlaced","stackThreshold","startFromThreshold","closestPointRangePx","pointStack","stackValues","xValue","yValue","yBottom","negStacks","getStackIndicator","setOffset","pointXOffset","barW","getValidPoints","insideOnly","setClip","seriesClipBox","sharedClipKey","markerClipRect","afterAnimate","drawPoints","pointMarkerOptions","hasPointMarker","markerAttribs","seriesMarkerOptions","specialGroup","globallyEnabled","hasImage","seriesStateOptions","pointStateOptions","pointOptions","pointColorOption","pointColor","zoneColor","issue134","animationTimeout","survive","getGraphPath","nullsAsZeroes","connectCliffs","gap","graphPath","xMap","connectNulls","pathToPoint","lastPoint","leftCliff","rightCliff","getPointSpline","drawGraph","gappedPath","graphKey","graph","fillGraph","linecap","applyZones","translatedFrom","translatedTo","clipAttr","extremes","pxRange","pxPosMin","pxPosMax","clips","chartSizeMax","ignoreZones","invertGroups","remover","setInvert","animDuration","chartSeriesGroup","drawDataLabels","drawTracker","wasDirty","kdAxisArray","compareX","searchKDTree","buildKDTree","buildingKdTree","dimensions","_kdtree","kdNow","kdX","kdY","kdComparer","kdDimensions","_search","search","tdist","sideA","sideB","nPoint1","nPoint2","StackItem","isNegative","stackOption","xOffset","xWidth","neg","yZero","stackBox","crop","axisSeries","reversedStacks","setStackedPoints","setStackCliffs","setPercentStacks","stackTotalGroup","touched","cum","pointKey","negKey","singleStacks","pointExtremes","totalFactor","addSeries","addAxis","showLoading","loadingDiv","loadingOptions","setLoadingSize","loadingSpan","loadingShown","showDuration","hideLoading","hideDuration","propsRequireDirtyBox","propsRequireUpdateSeries","updateAllAxes","updateAllSeries","newWidth","newHeight","adders","newOptions","setSubtitle","runEvent","fixedBox","removePoint","addPoint","isInTheMiddle","withEvent","oldOptions","oldType","newType","proto","preserve","setCategories","getStackPoints","visibleSeries","pointMap","seriesIndex","yAxisSeries","seriesLength","upOrDown","stackX","idx","stackPoint","stackedValues","nullName","cliffName","cliff","otherStack","topPath","bottomPath","areaPath","bottomPoints","graphPoints","translatedThreshold","addDummyPoints","otherI","nullVal","cliffVal","isCliff","doCurve","rectPlotX","areaKey","fillOpacity","shiftUnit","leftContX","leftContY","rightContX","rightContY","otherPoint","lastX","nextX","nextY","correction","smoothing","areaProto","groupPadding","pointPadding","minPointLength","brightness","trackerGroups","otherSeries","getColumnMetrics","reversedXAxis","stackGroups","columnCount","columnIndex","otherYAxis","categoryWidth","pointOffsetWidth","pointWidth","maxPointWidth","columnMetrics","crispCol","fromTop","xCrisp","yCrisp","dense","metrics","seriesBarW","barX","barY","barH","shapeType","shapeArgs","stateOptions","p2o","pointAttrToOptions","strokeOption","strokeWidthOption","animationLimit","takeOrdinalPosition","CenteredSeriesMixin","getCenter","handleSlicingRoom","slicingRoom","slicedOffset","centerOption","smallestSize","ignoreHiddenPoint","column","startAngleRad","startR","finalConnectorOffset","radiusX","radiusY","cumulative","connectorOffset","circ","endAngleRad","labelDistance","getX","maxLabelDistance","slicedTranslation","half","labelPos","groupTranslation","pointAttr","shadowGroup","getTranslate","sortByAngle","toggleSlice","setVisible","vis","sliced","haloPath","overlapping","origBoxes","restBoxes","sortByTarget","posInCompositeBox","generalOptions","defer","dlProcessOptions","connector","dlOptions","contrastColor","alignDataLabel","normRotation","negRotation","forceDL","justify","isLabelJustified","justifyDataLabel","justified","dataLabelWidth","labelHeight","connectorPadding","connectorWidth","seriesCenter","centerY","halves","shortened","_pos","naturalY","sideOverflow","positionsIndex","positionIndex","_attr","verifyDataLabelOverflow","placeDataLabels","connectorColor","connectorPath","softConnector","minSize","newSize","overshoot","dlBox","collectAndHide","collections","dataLabelCollections","allowOverlap","labelrank","hideOverlappingLabels","label1","label2","pos1","pos2","parent1","parent2","w2","h2","oldOpacity","newOpacity","isOld","TrackerMixin","drawTrackerPoint","_hasTracking","drawTrackerGraph","trackByArea","trackerPath","trackerPathLength","tracker","TRACKER_FILL","scatter","activeClass","fnLegendItemClick","browserEvent","checked","defaultChecked","showResetZoom","btnOptions","relativeTo","zoomOut","resetSelection","hasZoomed","displayButton","axisData","doRedraw","spill","mousePos","mouseDown","startPos","halfPointRange","panMin","panMax","flipped","paddedMin","paddedMax","accumulate","loopPoint","hasImportedEvents","haloOptions","newSymbol","normalDisabled","markerStateOptions","stateDisabled","stateMarkerGraphic","pointMarker","hasMarkers","currentSymbol","mouseOver","mouseOut","showOrHide","oldVisibility","currentRuleIds","responsive","ruleIds","currentResponsive","rules","rule","_id","matchResponsiveRule","mergedOptions","ruleId","undoOptions","currentOptions","condition","maxWidth","minWidth","minHeight","getCurrent","curr","module","exports"],"mappings":"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","file":"48.chunk.js?v=3bc2d6dcd357813849b0","sourcesContent":["define(['d3'], function(d3) {\n 'use strict';\n\n var donutChart = function(config) {\n config = config || {};\n\n var width = 315;\n var height = 210;\n var radius = 84;\n var color = d3.scale.category20c();\n var arc = d3.svg.arc()\n .outerRadius(radius - 10)\n .innerRadius(radius - 40)\n ;\n var arcHover = d3.svg.arc()\n .outerRadius(radius - 5)\n .innerRadius(radius - 40)\n ;\n var pie = d3.layout.pie()\n .sort(null)\n .value(function(d) { return d[1]; })\n ;\n\n function chart(selection) {\n selection.each(function(data) {\n //data processing\n var total = 0;\n $(data).each(function(i, v) {\n total += v[1];\n });\n $(data).each(function(i, v) {\n v[2] = Math.round((v[1] / total) * 100);\n v[3] = i;\n });\n //select the svg element, if it exists\n var svg = d3.select(this).selectAll('svg').data([data]);\n //otherwise create the skeletal chart\n var gEnter = svg.enter().append('svg').append('g');\n gEnter.append('g').attr('class', 'title')\n .attr('transform', 'translate(0, 10)')\n .append('text').text(config.title)\n .attr('font-weight', 'bold')\n .style('fill', '#777')\n ;\n gEnter.append('g').attr('class', 'donut');\n gEnter.append('g').attr('class', 'legend');\n gEnter.append('g').attr('class', 'hover-label').append('text');\n\n //set the outer dimensions\n svg.attr('width', width).attr('height', height);\n\n //position the donut\n var g = svg.select('.donut')\n .attr('transform', 'translate(' + (width / 4) + ', '+ (height / 2) +')')\n ;\n\n //position the hover-label\n svg.select('.hover-label')\n .style('fill', '#999')\n .attr('text-anchor', 'middle')\n .attr('transform', 'translate(' + (width / 4) + ', '+ ((height / 2) + 5) +')')\n ;\n\n //apply arc data\n var arcs = g.selectAll('.arc')\n .data(pie(data))\n .enter().append('g')\n .attr('class', function(d, i) { return 'arc arc-path-' + i; })\n ;\n arcs.append('path')\n .attr('d', arc)\n .style('fill', function(d) { return color(d.data[0]); })\n .on('mouseover', function() {\n var percent = d3.select(this).data()[0].data[2];\n var index = d3.select(this).data()[0].data[3];\n d3.select(this).attr('d', arcHover);\n svg.select('.hover-label text').text(percent +'%');\n svg.select('.legend-item-'+ index +' text')\n .style('fill', '#000')\n .attr('font-weight', 'bold')\n ;\n })\n .on('mouseout', function() {\n var index = d3.select(this).data()[0].data[3];\n d3.select(this).attr('d', arc);\n svg.select('.hover-label text').text('');\n svg.select('.legend-item-'+ index +' text')\n .style('fill', '#999')\n .attr('font-weight', 'normal')\n ;\n })\n ;\n\n //setup the legend\n var legendSetup = gEnter.select('.legend').selectAll('.legend-item').data(data);\n legendSetup.enter()\n .append('g')\n .attr('class', function(d, i) { return 'legend-item legend-item-' + i; })\n .attr('transform', function(d, i) { return 'translate(70, '+ i * 16 +')'; })\n .style('cursor', 'default')\n .on('mouseover', function() {\n var percent = d3.select(this).data()[0][2];\n var index = d3.select(this).data()[0][3];\n arcs.select('.arc-path-'+ index +' path').attr('d', arcHover);\n svg.select('.hover-label text').text(percent +'%');\n svg.select('.legend-item-'+ index +' text')\n .style('fill', '#000')\n .attr('font-weight', 'bold')\n ;\n })\n .on('mouseout', function() {\n var index = d3.select(this).data()[0][3];\n arcs.select('.arc-path-'+ index +' path').attr('d', arc);\n svg.select('.hover-label text').text('');\n svg.select('.legend-item-'+ index +' text')\n .style('fill', '#999')\n .attr('font-weight', 'normal')\n ;\n })\n ;\n legendSetup.append('circle')\n .attr('cx', 105)\n .attr('cy', 53)\n .attr('r', 5)\n .style('fill', function(d) { return color(d[0]); })\n ;\n legendSetup.append('text')\n .attr('x', 115)\n .attr('y', 57)\n .attr('text-anchor', 'start')\n .style('fill', '#999')\n .style('font-weight', 'bold')\n .style(\"font-size\",\"13px\")\n .text(function(d) { return d[0]; })\n ;\n\n });\n }\n\n return chart;\n };\n return donutChart;\n});\n","/*\n Highcharts JS v3.0.7 (2013-10-24)\n Exporting module\n\n (c) 2010-2013 Torstein Hønsi\n\n License: www.highcharts.com/license\n*/\nrequire(['./highcharts.src.js'], function(Highcharts) {\n (function(f){var A=f.Chart,t=f.addEvent,C=f.removeEvent,k=f.createElement,n=f.discardElement,u=f.css,o=f.merge,r=f.each,p=f.extend,D=Math.max,j=document,B=window,E=f.isTouchDevice,F=f.Renderer.prototype.symbols,x=f.getOptions(),y;p(x.lang,{printChart:\"Print chart\",downloadPNG:\"Download PNG image\",downloadJPEG:\"Download JPEG image\",downloadPDF:\"Download PDF document\",downloadSVG:\"Download SVG vector image\",contextButtonTitle:\"Chart context menu\"});x.navigation={menuStyle:{border:\"1px solid #A0A0A0\",\n background:\"#FFFFFF\",padding:\"5px 0\"},menuItemStyle:{padding:\"0 10px\",background:\"none\",color:\"#303030\",fontSize:E?\"14px\":\"11px\"},menuItemHoverStyle:{background:\"#4572A5\",color:\"#FFFFFF\"},buttonOptions:{symbolFill:\"#E0E0E0\",symbolSize:14,symbolStroke:\"#666\",symbolStrokeWidth:3,symbolX:12.5,symbolY:10.5,align:\"right\",buttonSpacing:3,height:22,theme:{fill:\"white\",stroke:\"none\"},verticalAlign:\"top\",width:24}};x.exporting={type:\"image/png\",url:\"http://export.highcharts.com/\",buttons:{contextButton:{menuClassName:\"highcharts-contextmenu\",\n symbol:\"menu\",_titleKey:\"contextButtonTitle\",menuItems:[{textKey:\"printChart\",onclick:function(){this.print()}},{separator:!0},{textKey:\"downloadPNG\",onclick:function(){this.exportChart()}},{textKey:\"downloadJPEG\",onclick:function(){this.exportChart({type:\"image/jpeg\"})}},{textKey:\"downloadPDF\",onclick:function(){this.exportChart({type:\"application/pdf\"})}},{textKey:\"downloadSVG\",onclick:function(){this.exportChart({type:\"image/svg+xml\"})}}]}}};f.post=function(c,a){var d,b;b=k(\"form\",{method:\"post\",\n action:c,enctype:\"multipart/form-data\"},{display:\"none\"},j.body);for(d in a)k(\"input\",{type:\"hidden\",name:d,value:a[d]},null,b);b.submit();n(b)};p(A.prototype,{getSVG:function(c){var a=this,d,b,z,h,g=o(a.options,c);if(!j.createElementNS)j.createElementNS=function(a,b){return j.createElement(b)};c=k(\"div\",null,{position:\"absolute\",top:\"-9999em\",width:a.chartWidth+\"px\",height:a.chartHeight+\"px\"},j.body);b=a.renderTo.style.width;h=a.renderTo.style.height;b=g.exporting.sourceWidth||g.chart.width||/px$/.test(b)&&\n parseInt(b,10)||600;h=g.exporting.sourceHeight||g.chart.height||/px$/.test(h)&&parseInt(h,10)||400;p(g.chart,{animation:!1,renderTo:c,forExport:!0,width:b,height:h});g.exporting.enabled=!1;g.series=[];r(a.series,function(a){z=o(a.options,{animation:!1,showCheckbox:!1,visible:a.visible});z.isInternal||g.series.push(z)});d=new f.Chart(g,a.callback);r([\"xAxis\",\"yAxis\"],function(b){r(a[b],function(a,c){var g=d[b][c],f=a.getExtremes(),h=f.userMin,f=f.userMax;g&&(h!==void 0||f!==void 0)&&g.setExtremes(h,\n f,!0,!1)})});b=d.container.innerHTML;g=null;d.destroy();n(c);b=b.replace(/zIndex=\"[^\"]+\"/g,\"\").replace(/isShadow=\"[^\"]+\"/g,\"\").replace(/symbolName=\"[^\"]+\"/g,\"\").replace(/jQuery[0-9]+=\"[^\"]+\"/g,\"\").replace(/url\\([^#]+#/g,\"url(#\").replace(/\").replace(/ /g,\" \").replace(//g,\"\").replace(/
/g,'xlink:href=\"$1\"/>').replace(/id=([^\" >]+)/g,'id=\"$1\"').replace(/class=([^\" >]+)/g,'class=\"$1\"').replace(/ transform /g,\" \").replace(/:(path|rect)/g,\"$1\").replace(/style=\"([^\"]+)\"/g,function(a){return a.toLowerCase()});return b=b.replace(/(url\\(#highcharts-[0-9]+)"/g,\"$1\").replace(/"/g,\"'\")},exportChart:function(c,a){var c=c||{},d=this.options.exporting,d=this.getSVG(o({chart:{borderRadius:0}},d.chartOptions,a,{exporting:{sourceWidth:c.sourceWidth||\n d.sourceWidth,sourceHeight:c.sourceHeight||d.sourceHeight}})),c=o(this.options.exporting,c);f.post(c.url,{filename:c.filename||\"chart\",type:c.type,width:c.width||0,scale:c.scale||2,svg:d})},print:function(){var c=this,a=c.container,d=[],b=a.parentNode,f=j.body,h=f.childNodes;if(!c.isPrinting)c.isPrinting=!0,r(h,function(a,b){if(a.nodeType===1)d[b]=a.style.display,a.style.display=\"none\"}),f.appendChild(a),B.focus(),B.print(),setTimeout(function(){b.appendChild(a);r(h,function(a,b){if(a.nodeType===\n 1)a.style.display=d[b]});c.isPrinting=!1},1E3)},contextMenu:function(c,a,d,b,f,h,g){var e=this,j=e.options.navigation,q=j.menuItemStyle,l=e.chartWidth,m=e.chartHeight,o=\"cache-\"+c,i=e[o],s=D(f,h),v,w,n;if(!i)e[o]=i=k(\"div\",{className:c},{position:\"absolute\",zIndex:1E3,padding:s+\"px\"},e.container),v=k(\"div\",null,p({MozBoxShadow:\"3px 3px 10px #888\",WebkitBoxShadow:\"3px 3px 10px #888\",boxShadow:\"3px 3px 10px #888\"},j.menuStyle),i),w=function(){u(i,{display:\"none\"});g&&g.setState(0);e.openMenu=!1},t(i,\n \"mouseleave\",function(){n=setTimeout(w,500)}),t(i,\"mouseenter\",function(){clearTimeout(n)}),t(document,\"mouseup\",function(a){e.pointer.inClass(a.target,c)||w()}),r(a,function(a){if(a){var b=a.separator?k(\"hr\",null,null,v):k(\"div\",{onmouseover:function(){u(this,j.menuItemHoverStyle)},onmouseout:function(){u(this,q)},onclick:function(){w();a.onclick.apply(e,arguments)},innerHTML:a.text||e.options.lang[a.textKey]},p({cursor:\"pointer\"},q),v);e.exportDivElements.push(b)}}),e.exportDivElements.push(v,i),\n e.exportMenuWidth=i.offsetWidth,e.exportMenuHeight=i.offsetHeight;a={display:\"block\"};d+e.exportMenuWidth>l?a.right=l-d-f-s+\"px\":a.left=d-s+\"px\";b+h+e.exportMenuHeight>m&&g.alignOptions.verticalAlign!==\"top\"?a.bottom=m-b-s+\"px\":a.top=b+h-s+\"px\";u(i,a);e.openMenu=!0},addButton:function(c){var a=this,d=a.renderer,b=o(a.options.navigation.buttonOptions,c),j=b.onclick,h=b.menuItems,g,e,k={stroke:b.symbolStroke,fill:b.symbolFill},q=b.symbolSize||12;if(!a.btnCount)a.btnCount=0;if(!a.exportDivElements)a.exportDivElements=\n [],a.exportSVGElements=[];if(b.enabled!==!1){var l=b.theme,m=l.states,n=m&&m.hover,m=m&&m.select,i;delete l.states;j?i=function(){j.apply(a,arguments)}:h&&(i=function(){a.contextMenu(e.menuClassName,h,e.translateX,e.translateY,e.width,e.height,e);e.setState(2)});b.text&&b.symbol?l.paddingLeft=f.pick(l.paddingLeft,25):b.text||p(l,{width:b.width,height:b.height,padding:0});e=d.button(b.text,0,0,i,l,n,m).attr({title:a.options.lang[b._titleKey],\"stroke-linecap\":\"round\"});e.menuClassName=c.menuClassName||\n \"highcharts-menu-\"+a.btnCount++;b.symbol&&(g=d.symbol(b.symbol,b.symbolX-q/2,b.symbolY-q/2,q,q).attr(p(k,{\"stroke-width\":b.symbolStrokeWidth||1,zIndex:1})).add(e));e.add().align(p(b,{width:e.width,x:f.pick(b.x,y)}),!0,\"spacingBox\");y+=(e.width+b.buttonSpacing)*(b.align===\"right\"?-1:1);a.exportSVGElements.push(e,g)}},destroyExport:function(c){var c=c.target,a,d;for(a=0;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}();","// ==ClosureCompiler==\n// @compilation_level SIMPLE_OPTIMIZATIONS\n// JSLint options:\n/*global Highcharts, HighchartsAdapter, document, window, navigator, setInterval, clearInterval, clearTimeout, setTimeout, location, jQuery, $, console, each, grep */\n/*jslint ass: true, sloppy: true, forin: true, plusplus: true, nomen: true, vars: true, regexp: true, newcap: true, browser: true, continue: true, white: true */\n\n/**\n * @license Highcharts JS v5.0.12 (2017-05-24)\n *\n * (c) 2009-2016 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n'use strict';\n\ndefine(['../jquery/jquery-1.10.2.js'], function(jQuery) {\n (function(root, factory) {\n if (typeof module === 'object' && module.exports) {\n module.exports = root.document ?\n factory(root) :\n factory;\n } else {\n root.Highcharts = factory(root);\n }\n }(typeof window !== 'undefined' ? window : this, function(win) {\n var Highcharts = (function() {\n /**\n * (c) 2010-2017 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n /* global window */\n var win = window,\n doc = win.document;\n\n var SVG_NS = 'http://www.w3.org/2000/svg',\n userAgent = (win.navigator && win.navigator.userAgent) || '',\n svg = doc && doc.createElementNS && !!doc.createElementNS(SVG_NS, 'svg').createSVGRect,\n isMS = /(edge|msie|trident)/i.test(userAgent) && !window.opera,\n vml = !svg,\n isFirefox = /Firefox/.test(userAgent),\n hasBidiBug = isFirefox && parseInt(userAgent.split('Firefox/')[1], 10) < 4; // issue #38\n\n var Highcharts = win.Highcharts ? win.Highcharts.error(16, true) : {\n product: 'Highcharts',\n version: '5.0.12',\n deg2rad: Math.PI * 2 / 360,\n doc: doc,\n hasBidiBug: hasBidiBug,\n hasTouch: doc && doc.documentElement.ontouchstart !== undefined,\n isMS: isMS,\n isWebKit: /AppleWebKit/.test(userAgent),\n isFirefox: isFirefox,\n isTouchDevice: /(Mobile|Android|Windows Phone)/.test(userAgent),\n SVG_NS: SVG_NS,\n chartCount: 0,\n seriesTypes: {},\n symbolSizes: {},\n svg: svg,\n vml: vml,\n win: win,\n marginNames: ['plotTop', 'marginRight', 'marginBottom', 'plotLeft'],\n noop: function() {\n return undefined;\n },\n /**\n * An array containing the current chart objects in the page. A chart's\n * position in the array is preserved throughout the page's lifetime. When\n * a chart is destroyed, the array item becomes `undefined`.\n * @type {Array.}\n * @memberOf Highcharts\n */\n charts: []\n };\n return Highcharts;\n }());\n (function(H) {\n /**\n * (c) 2010-2017 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n /* eslint max-len: [\"warn\", 80, 4] */\n\n /**\n * The Highcharts object is the placeholder for all other members, and various\n * utility functions. The most important member of the namespace would be the\n * chart constructor.\n *\n * @example\n * var chart = Highcharts.chart('container', { ... });\n * \n * @namespace Highcharts\n */\n\n var timers = [];\n\n var charts = H.charts,\n doc = H.doc,\n win = H.win;\n\n /**\n * Provide error messages for debugging, with links to online explanation. This\n * function can be overridden to provide custom error handling.\n *\n * @function #error\n * @memberOf Highcharts\n * @param {Number|String} code - The error code. See [errors.xml]{@link \n * https://github.com/highcharts/highcharts/blob/master/errors/errors.xml}\n * for available codes. If it is a string, the error message is printed\n * directly in the console.\n * @param {Boolean} [stop=false] - Whether to throw an error or just log a \n * warning in the console.\n *\n * @sample highcharts/chart/highcharts-error/ Custom error handler\n */\n H.error = function(code, stop) {\n var msg = H.isNumber(code) ?\n 'Highcharts error #' + code + ': www.highcharts.com/errors/' + code :\n code;\n if (stop) {\n throw new Error(msg);\n }\n // else ...\n if (win.console) {\n console.log(msg); // eslint-disable-line no-console\n }\n };\n\n /**\n * An animator object used internally. One instance applies to one property\n * (attribute or style prop) on one element. Animation is always initiated\n * through {@link SVGElement#animate}.\n *\n * @constructor Fx\n * @memberOf Highcharts\n * @param {HTMLDOMElement|SVGElement} elem - The element to animate.\n * @param {AnimationOptions} options - Animation options.\n * @param {string} prop - The single attribute or CSS property to animate.\n * @private\n *\n * @example\n * var rect = renderer.rect(0, 0, 10, 10).add();\n * rect.animate({ width: 100 });\n */\n H.Fx = function(elem, options, prop) {\n this.options = options;\n this.elem = elem;\n this.prop = prop;\n };\n H.Fx.prototype = {\n\n /**\n * Set the current step of a path definition on SVGElement.\n *\n * @function #dSetter\n * @memberOf Highcharts.Fx\n */\n dSetter: function() {\n var start = this.paths[0],\n end = this.paths[1],\n ret = [],\n now = this.now,\n i = start.length,\n startVal;\n\n // Land on the final path without adjustment points appended in the ends\n if (now === 1) {\n ret = this.toD;\n\n } else if (i === end.length && now < 1) {\n while (i--) {\n startVal = parseFloat(start[i]);\n ret[i] =\n isNaN(startVal) ? // a letter instruction like M or L\n start[i] :\n now * (parseFloat(end[i] - startVal)) + startVal;\n\n }\n // If animation is finished or length not matching, land on right value\n } else {\n ret = end;\n }\n this.elem.attr('d', ret, null, true);\n },\n\n /**\n * Update the element with the current animation step.\n *\n * @function #update\n * @memberOf Highcharts.Fx\n */\n update: function() {\n var elem = this.elem,\n prop = this.prop, // if destroyed, it is null\n now = this.now,\n step = this.options.step;\n\n // Animation setter defined from outside\n if (this[prop + 'Setter']) {\n this[prop + 'Setter']();\n\n // Other animations on SVGElement\n } else if (elem.attr) {\n if (elem.element) {\n elem.attr(prop, now, null, true);\n }\n\n // HTML styles, raw HTML content like container size\n } else {\n elem.style[prop] = now + this.unit;\n }\n\n if (step) {\n step.call(elem, now, this);\n }\n\n },\n\n /**\n * Run an animation.\n *\n * @function #run\n * @memberOf Highcharts.Fx\n * @param {Number} from - The current value, value to start from.\n * @param {Number} to - The end value, value to land on.\n * @param {String} [unit] - The property unit, for example `px`.\n * @returns {void}\n */\n run: function(from, to, unit) {\n var self = this,\n timer = function(gotoEnd) {\n return timer.stopped ? false : self.step(gotoEnd);\n },\n i;\n\n this.startTime = +new Date();\n this.start = from;\n this.end = to;\n this.unit = unit;\n this.now = this.start;\n this.pos = 0;\n\n timer.elem = this.elem;\n timer.prop = this.prop;\n\n if (timer() && timers.push(timer) === 1) {\n timer.timerId = setInterval(function() {\n\n for (i = 0; i < timers.length; i++) {\n if (!timers[i]()) {\n timers.splice(i--, 1);\n }\n }\n\n if (!timers.length) {\n clearInterval(timer.timerId);\n }\n }, 13);\n }\n },\n\n /**\n * Run a single step in the animation.\n *\n * @function #step\n * @memberOf Highcharts.Fx\n * @param {Boolean} [gotoEnd] - Whether to go to the endpoint of the\n * animation after abort.\n * @returns {Boolean} Returns `true` if animation continues.\n */\n step: function(gotoEnd) {\n var t = +new Date(),\n ret,\n done,\n options = this.options,\n elem = this.elem,\n complete = options.complete,\n duration = options.duration,\n curAnim = options.curAnim;\n\n if (elem.attr && !elem.element) { // #2616, element is destroyed\n ret = false;\n\n } else if (gotoEnd || t >= duration + this.startTime) {\n this.now = this.end;\n this.pos = 1;\n this.update();\n\n curAnim[this.prop] = true;\n\n done = true;\n\n H.objectEach(curAnim, function(val) {\n if (val !== true) {\n done = false;\n }\n });\n\n if (done && complete) {\n complete.call(elem);\n }\n ret = false;\n\n } else {\n this.pos = options.easing((t - this.startTime) / duration);\n this.now = this.start + ((this.end - this.start) * this.pos);\n this.update();\n ret = true;\n }\n return ret;\n },\n\n /**\n * Prepare start and end values so that the path can be animated one to one.\n *\n * @function #initPath\n * @memberOf Highcharts.Fx\n * @param {SVGElement} elem - The SVGElement item.\n * @param {String} fromD - Starting path definition.\n * @param {Array} toD - Ending path definition.\n * @returns {Array} An array containing start and end paths in array form\n * so that they can be animated in parallel.\n */\n initPath: function(elem, fromD, toD) {\n fromD = fromD || '';\n var shift,\n startX = elem.startX,\n endX = elem.endX,\n bezier = fromD.indexOf('C') > -1,\n numParams = bezier ? 7 : 3,\n fullLength,\n slice,\n i,\n start = fromD.split(' '),\n end = toD.slice(), // copy\n isArea = elem.isArea,\n positionFactor = isArea ? 2 : 1,\n reverse;\n\n /**\n * In splines make moveTo and lineTo points have six parameters like\n * bezier curves, to allow animation one-to-one.\n */\n function sixify(arr) {\n var isOperator,\n nextIsOperator;\n i = arr.length;\n while (i--) {\n\n // Fill in dummy coordinates only if the next operator comes\n // three places behind (#5788)\n isOperator = arr[i] === 'M' || arr[i] === 'L';\n nextIsOperator = /[a-zA-Z]/.test(arr[i + 3]);\n if (isOperator && nextIsOperator) {\n arr.splice(\n i + 1, 0,\n arr[i + 1], arr[i + 2],\n arr[i + 1], arr[i + 2]\n );\n }\n }\n }\n\n /**\n * Insert an array at the given position of another array\n */\n function insertSlice(arr, subArr, index) {\n [].splice.apply(\n arr, [index, 0].concat(subArr)\n );\n }\n\n /**\n * If shifting points, prepend a dummy point to the end path. \n */\n function prepend(arr, other) {\n while (arr.length < fullLength) {\n\n // Move to, line to or curve to?\n arr[0] = other[fullLength - arr.length];\n\n // Prepend a copy of the first point\n insertSlice(arr, arr.slice(0, numParams), 0);\n\n // For areas, the bottom path goes back again to the left, so we\n // need to append a copy of the last point.\n if (isArea) {\n insertSlice(\n arr,\n arr.slice(arr.length - numParams), arr.length\n );\n i--;\n }\n }\n arr[0] = 'M';\n }\n\n /**\n * Copy and append last point until the length matches the end length\n */\n function append(arr, other) {\n var i = (fullLength - arr.length) / numParams;\n while (i > 0 && i--) {\n\n // Pull out the slice that is going to be appended or inserted.\n // In a line graph, the positionFactor is 1, and the last point\n // is sliced out. In an area graph, the positionFactor is 2,\n // causing the middle two points to be sliced out, since an area\n // path starts at left, follows the upper path then turns and\n // follows the bottom back. \n slice = arr.slice().splice(\n (arr.length / positionFactor) - numParams,\n numParams * positionFactor\n );\n\n // Move to, line to or curve to?\n slice[0] = other[fullLength - numParams - (i * numParams)];\n\n // Disable first control point\n if (bezier) {\n slice[numParams - 6] = slice[numParams - 2];\n slice[numParams - 5] = slice[numParams - 1];\n }\n\n // Now insert the slice, either in the middle (for areas) or at\n // the end (for lines)\n insertSlice(arr, slice, arr.length / positionFactor);\n\n if (isArea) {\n i--;\n }\n }\n }\n\n if (bezier) {\n sixify(start);\n sixify(end);\n }\n\n // For sideways animation, find out how much we need to shift to get the\n // start path Xs to match the end path Xs.\n if (startX && endX) {\n for (i = 0; i < startX.length; i++) {\n // Moving left, new points coming in on right\n if (startX[i] === endX[0]) {\n shift = i;\n break;\n // Moving right\n } else if (startX[0] ===\n endX[endX.length - startX.length + i]) {\n shift = i;\n reverse = true;\n break;\n }\n }\n if (shift === undefined) {\n start = [];\n }\n }\n\n if (start.length && H.isNumber(shift)) {\n\n // The common target length for the start and end array, where both \n // arrays are padded in opposite ends\n fullLength = end.length + shift * positionFactor * numParams;\n\n if (!reverse) {\n prepend(end, start);\n append(start, end);\n } else {\n prepend(start, end);\n append(end, start);\n }\n }\n\n return [start, end];\n }\n }; // End of Fx prototype\n\n /**\n * Handle animation of the color attributes directly.\n */\n H.Fx.prototype.fillSetter =\n H.Fx.prototype.strokeSetter = function() {\n this.elem.attr(\n this.prop,\n H.color(this.start).tweenTo(H.color(this.end), this.pos),\n null,\n true\n );\n };\n\n\n /**\n * Utility function to extend an object with the members of another.\n *\n * @function #extend\n * @memberOf Highcharts\n * @param {Object} a - The object to be extended.\n * @param {Object} b - The object to add to the first one.\n * @returns {Object} Object a, the original object.\n */\n H.extend = function(a, b) {\n var n;\n if (!a) {\n a = {};\n }\n for (n in b) {\n a[n] = b[n];\n }\n return a;\n };\n\n /**\n * Utility function to deep merge two or more objects and return a third object.\n * If the first argument is true, the contents of the second object is copied\n * into the first object. The merge function can also be used with a single \n * object argument to create a deep copy of an object.\n *\n * @function #merge\n * @memberOf Highcharts\n * @param {Boolean} [extend] - Whether to extend the left-side object (a) or\n return a whole new object.\n * @param {Object} a - The first object to extend. When only this is given, the\n function returns a deep copy.\n * @param {...Object} [n] - An object to merge into the previous one.\n * @returns {Object} - The merged object. If the first argument is true, the \n * return is the same as the second argument.\n */\n H.merge = function() {\n var i,\n args = arguments,\n len,\n ret = {},\n doCopy = function(copy, original) {\n // An object is replacing a primitive\n if (typeof copy !== 'object') {\n copy = {};\n }\n\n H.objectEach(original, function(value, key) {\n\n // Copy the contents of objects, but not arrays or DOM nodes\n if (\n H.isObject(value, true) &&\n !H.isClass(value) &&\n !H.isDOMElement(value)\n ) {\n copy[key] = doCopy(copy[key] || {}, value);\n\n // Primitives and arrays are copied over directly\n } else {\n copy[key] = original[key];\n }\n });\n return copy;\n };\n\n // If first argument is true, copy into the existing object. Used in\n // setOptions.\n if (args[0] === true) {\n ret = args[1];\n args = Array.prototype.slice.call(args, 2);\n }\n\n // For each argument, extend the return\n len = args.length;\n for (i = 0; i < len; i++) {\n ret = doCopy(ret, args[i]);\n }\n\n return ret;\n };\n\n /**\n * Shortcut for parseInt\n * @ignore\n * @param {Object} s\n * @param {Number} mag Magnitude\n */\n H.pInt = function(s, mag) {\n return parseInt(s, mag || 10);\n };\n\n /**\n * Utility function to check for string type.\n *\n * @function #isString\n * @memberOf Highcharts\n * @param {Object} s - The item to check.\n * @returns {Boolean} - True if the argument is a string.\n */\n H.isString = function(s) {\n return typeof s === 'string';\n };\n\n /**\n * Utility function to check if an item is an array.\n *\n * @function #isArray\n * @memberOf Highcharts\n * @param {Object} obj - The item to check.\n * @returns {Boolean} - True if the argument is an array.\n */\n H.isArray = function(obj) {\n var str = Object.prototype.toString.call(obj);\n return str === '[object Array]' || str === '[object Array Iterator]';\n };\n\n /**\n * Utility function to check if an item is of type object.\n *\n * @function #isObject\n * @memberOf Highcharts\n * @param {Object} obj - The item to check.\n * @param {Boolean} [strict=false] - Also checks that the object is not an\n * array.\n * @returns {Boolean} - True if the argument is an object.\n */\n H.isObject = function(obj, strict) {\n return !!obj && typeof obj === 'object' && (!strict || !H.isArray(obj));\n };\n\n /**\n * Utility function to check if an Object is a HTML Element.\n *\n * @function #isDOMElement\n * @memberOf Highcharts\n * @param {Object} obj - The item to check.\n * @returns {Boolean} - True if the argument is a HTML Element.\n */\n H.isDOMElement = function(obj) {\n return H.isObject(obj) && typeof obj.nodeType === 'number';\n };\n\n /**\n * Utility function to check if an Object is an class.\n *\n * @function #isClass\n * @memberOf Highcharts\n * @param {Object} obj - The item to check.\n * @returns {Boolean} - True if the argument is an class.\n */\n H.isClass = function(obj) {\n var c = obj && obj.constructor;\n return !!(\n H.isObject(obj, true) &&\n !H.isDOMElement(obj) &&\n (c && c.name && c.name !== 'Object')\n );\n };\n\n /**\n * Utility function to check if an item is of type number.\n *\n * @function #isNumber\n * @memberOf Highcharts\n * @param {Object} n - The item to check.\n * @returns {Boolean} - True if the item is a number and is not NaN.\n */\n H.isNumber = function(n) {\n return typeof n === 'number' && !isNaN(n);\n };\n\n /**\n * Remove the last occurence of an item from an array.\n *\n * @function #erase\n * @memberOf Highcharts\n * @param {Array} arr - The array.\n * @param {*} item - The item to remove.\n */\n H.erase = function(arr, item) {\n var i = arr.length;\n while (i--) {\n if (arr[i] === item) {\n arr.splice(i, 1);\n break;\n }\n }\n };\n\n /**\n * Check if an object is null or undefined.\n *\n * @function #defined\n * @memberOf Highcharts\n * @param {Object} obj - The object to check.\n * @returns {Boolean} - False if the object is null or undefined, otherwise\n * true.\n */\n H.defined = function(obj) {\n return obj !== undefined && obj !== null;\n };\n\n /**\n * Set or get an attribute or an object of attributes. To use as a setter, pass\n * a key and a value, or let the second argument be a collection of keys and\n * values. To use as a getter, pass only a string as the second argument.\n *\n * @function #attr\n * @memberOf Highcharts\n * @param {Object} elem - The DOM element to receive the attribute(s).\n * @param {String|Object} [prop] - The property or an object of key-value pairs.\n * @param {String} [value] - The value if a single property is set.\n * @returns {*} When used as a getter, return the value.\n */\n H.attr = function(elem, prop, value) {\n var ret;\n\n // if the prop is a string\n if (H.isString(prop)) {\n // set the value\n if (H.defined(value)) {\n elem.setAttribute(prop, value);\n\n // get the value\n } else if (elem && elem.getAttribute) {\n ret = elem.getAttribute(prop);\n }\n\n // else if prop is defined, it is a hash of key/value pairs\n } else if (H.defined(prop) && H.isObject(prop)) {\n H.objectEach(prop, function(val, key) {\n elem.setAttribute(key, val);\n });\n }\n return ret;\n };\n\n /**\n * Check if an element is an array, and if not, make it into an array.\n *\n * @function #splat\n * @memberOf Highcharts\n * @param obj {*} - The object to splat.\n * @returns {Array} The produced or original array.\n */\n H.splat = function(obj) {\n return H.isArray(obj) ? obj : [obj];\n };\n\n /**\n * Set a timeout if the delay is given, otherwise perform the function\n * synchronously.\n *\n * @function #syncTimeout\n * @memberOf Highcharts\n * @param {Function} fn - The function callback.\n * @param {Number} delay - Delay in milliseconds.\n * @param {Object} [context] - The context.\n * @returns {Number} An identifier for the timeout that can later be cleared\n * with clearTimeout.\n */\n H.syncTimeout = function(fn, delay, context) {\n if (delay) {\n return setTimeout(fn, delay, context);\n }\n fn.call(0, context);\n };\n\n\n /**\n * Return the first value that is not null or undefined.\n *\n * @function #pick\n * @memberOf Highcharts\n * @param {...*} items - Variable number of arguments to inspect.\n * @returns {*} The value of the first argument that is not null or undefined.\n */\n H.pick = function() {\n var args = arguments,\n i,\n arg,\n length = args.length;\n for (i = 0; i < length; i++) {\n arg = args[i];\n if (arg !== undefined && arg !== null) {\n return arg;\n }\n }\n };\n\n /**\n * @typedef {Object} CSSObject - A style object with camel case property names.\n * The properties can be whatever styles are supported on the given SVG or HTML\n * element.\n * @example\n * {\n * fontFamily: 'monospace',\n * fontSize: '1.2em'\n * }\n */\n /**\n * Set CSS on a given element.\n *\n * @function #css\n * @memberOf Highcharts\n * @param {HTMLDOMElement} el - A HTML DOM element.\n * @param {CSSObject} styles - Style object with camel case property names.\n * @returns {void}\n */\n H.css = function(el, styles) {\n if (H.isMS && !H.svg) { // #2686\n if (styles && styles.opacity !== undefined) {\n styles.filter = 'alpha(opacity=' + (styles.opacity * 100) + ')';\n }\n }\n H.extend(el.style, styles);\n };\n\n /**\n * A HTML DOM element.\n * @typedef {Object} HTMLDOMElement\n */\n\n /**\n * Utility function to create an HTML element with attributes and styles.\n *\n * @function #createElement\n * @memberOf Highcharts\n * @param {String} tag - The HTML tag.\n * @param {Object} [attribs] - Attributes as an object of key-value pairs.\n * @param {CSSObject} [styles] - Styles as an object of key-value pairs.\n * @param {Object} [parent] - The parent HTML object.\n * @param {Boolean} [nopad=false] - If true, remove all padding, border and\n * margin.\n * @returns {HTMLDOMElement} The created DOM element.\n */\n H.createElement = function(tag, attribs, styles, parent, nopad) {\n var el = doc.createElement(tag),\n css = H.css;\n if (attribs) {\n H.extend(el, attribs);\n }\n if (nopad) {\n css(el, {\n padding: 0,\n border: 'none',\n margin: 0\n });\n }\n if (styles) {\n css(el, styles);\n }\n if (parent) {\n parent.appendChild(el);\n }\n return el;\n };\n\n /**\n * Extend a prototyped class by new members.\n *\n * @function #extendClass\n * @memberOf Highcharts\n * @param {Object} parent - The parent prototype to inherit.\n * @param {Object} members - A collection of prototype members to add or\n * override compared to the parent prototype.\n * @returns {Object} A new prototype.\n */\n H.extendClass = function(parent, members) {\n var object = function() {};\n object.prototype = new parent(); // eslint-disable-line new-cap\n H.extend(object.prototype, members);\n return object;\n };\n\n /**\n * Left-pad a string to a given length by adding a character repetetively.\n *\n * @function #pad\n * @memberOf Highcharts\n * @param {Number} number - The input string or number.\n * @param {Number} length - The desired string length.\n * @param {String} [padder=0] - The character to pad with.\n * @returns {String} The padded string.\n */\n H.pad = function(number, length, padder) {\n return new Array((length || 2) + 1 -\n String(number).length).join(padder || 0) + number;\n };\n\n /**\n * @typedef {Number|String} RelativeSize - If a number is given, it defines the\n * pixel length. If a percentage string is given, like for example `'50%'`,\n * the setting defines a length relative to a base size, for example the size\n * of a container.\n */\n /**\n * Return a length based on either the integer value, or a percentage of a base.\n *\n * @function #relativeLength\n * @memberOf Highcharts\n * @param {RelativeSize} value - A percentage string or a number.\n * @param {Number} base - The full length that represents 100%.\n * @returns {Number} The computed length.\n */\n H.relativeLength = function(value, base) {\n return (/%$/).test(value) ?\n base * parseFloat(value) / 100 :\n parseFloat(value);\n };\n\n /**\n * Wrap a method with extended functionality, preserving the original function.\n *\n * @function #wrap\n * @memberOf Highcharts\n * @param {Object} obj - The context object that the method belongs to. In real\n * cases, this is often a prototype.\n * @param {String} method - The name of the method to extend.\n * @param {Function} func - A wrapper function callback. This function is called\n * with the same arguments as the original function, except that the\n * original function is unshifted and passed as the first argument.\n * @returns {void}\n */\n H.wrap = function(obj, method, func) {\n var proceed = obj[method];\n obj[method] = function() {\n var args = Array.prototype.slice.call(arguments),\n outerArgs = arguments,\n ctx = this,\n ret;\n ctx.proceed = function() {\n proceed.apply(ctx, arguments.length ? arguments : outerArgs);\n };\n args.unshift(proceed);\n ret = func.apply(this, args);\n ctx.proceed = null;\n return ret;\n };\n };\n\n /**\n * Get the time zone offset based on the current timezone information as set in\n * the global options.\n *\n * @function #getTZOffset\n * @memberOf Highcharts\n * @param {Number} timestamp - The JavaScript timestamp to inspect.\n * @return {Number} - The timezone offset in minutes compared to UTC.\n */\n H.getTZOffset = function(timestamp) {\n var d = H.Date;\n return ((d.hcGetTimezoneOffset && d.hcGetTimezoneOffset(timestamp)) ||\n d.hcTimezoneOffset || 0) * 60000;\n };\n\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970) into a\n * human readable date string. The format is a subset of the formats for PHP's\n * [strftime]{@link\n * http://www.php.net/manual/en/function.strftime.php} function. Additional\n * formats can be given in the {@link Highcharts.dateFormats} hook.\n *\n * @function #dateFormat\n * @memberOf Highcharts\n * @param {String} format - The desired format where various time\n * representations are prefixed with %.\n * @param {Number} timestamp - The JavaScript timestamp.\n * @param {Boolean} [capitalize=false] - Upper case first letter in the return.\n * @returns {String} The formatted date.\n */\n H.dateFormat = function(format, timestamp, capitalize) {\n if (!H.defined(timestamp) || isNaN(timestamp)) {\n return H.defaultOptions.lang.invalidDate || '';\n }\n format = H.pick(format, '%Y-%m-%d %H:%M:%S');\n\n var D = H.Date,\n date = new D(timestamp - H.getTZOffset(timestamp)),\n // get the basic time values\n hours = date[D.hcGetHours](),\n day = date[D.hcGetDay](),\n dayOfMonth = date[D.hcGetDate](),\n month = date[D.hcGetMonth](),\n fullYear = date[D.hcGetFullYear](),\n lang = H.defaultOptions.lang,\n langWeekdays = lang.weekdays,\n shortWeekdays = lang.shortWeekdays,\n pad = H.pad,\n\n // List all format keys. Custom formats can be added from the outside. \n replacements = H.extend({\n\n //-- Day\n // Short weekday, like 'Mon'\n 'a': shortWeekdays ?\n shortWeekdays[day] : langWeekdays[day].substr(0, 3),\n // Long weekday, like 'Monday'\n 'A': langWeekdays[day],\n // Two digit day of the month, 01 to 31\n 'd': pad(dayOfMonth),\n // Day of the month, 1 through 31\n 'e': pad(dayOfMonth, 2, ' '),\n 'w': day,\n\n // Week (none implemented)\n //'W': weekNumber(),\n\n //-- Month\n // Short month, like 'Jan'\n 'b': lang.shortMonths[month],\n // Long month, like 'January'\n 'B': lang.months[month],\n // Two digit month number, 01 through 12\n 'm': pad(month + 1),\n\n //-- Year\n // Two digits year, like 09 for 2009\n 'y': fullYear.toString().substr(2, 2),\n // Four digits year, like 2009\n 'Y': fullYear,\n\n //-- Time\n // Two digits hours in 24h format, 00 through 23\n 'H': pad(hours),\n // Hours in 24h format, 0 through 23\n 'k': hours,\n // Two digits hours in 12h format, 00 through 11\n 'I': pad((hours % 12) || 12),\n // Hours in 12h format, 1 through 12\n 'l': (hours % 12) || 12,\n // Two digits minutes, 00 through 59\n 'M': pad(date[D.hcGetMinutes]()),\n // Upper case AM or PM\n 'p': hours < 12 ? 'AM' : 'PM',\n // Lower case AM or PM\n 'P': hours < 12 ? 'am' : 'pm',\n // Two digits seconds, 00 through 59\n 'S': pad(date.getSeconds()),\n // Milliseconds (naming from Ruby)\n 'L': pad(Math.round(timestamp % 1000), 3)\n },\n\n /**\n * A hook for defining additional date format specifiers. New\n * specifiers are defined as key-value pairs by using the specifier\n * as key, and a function which takes the timestamp as value. This\n * function returns the formatted portion of the date.\n *\n * @type {Object}\n * @name dateFormats\n * @memberOf Highcharts\n * @sample highcharts/global/dateformats/ Adding support for week\n * number\n */\n H.dateFormats\n );\n\n\n // Do the replaces\n H.objectEach(replacements, function(val, key) {\n // Regex would do it in one line, but this is faster\n while (format.indexOf('%' + key) !== -1) {\n format = format.replace(\n '%' + key,\n typeof val === 'function' ? val(timestamp) : val\n );\n }\n\n });\n\n // Optionally capitalize the string and return\n return capitalize ?\n format.substr(0, 1).toUpperCase() + format.substr(1) :\n format;\n };\n\n /**\n * Format a single variable. Similar to sprintf, without the % prefix.\n *\n * @example\n * formatSingle('.2f', 5); // => '5.00'.\n *\n * @function #formatSingle\n * @memberOf Highcharts\n * @param {String} format The format string.\n * @param {*} val The value.\n * @returns {String} The formatted representation of the value.\n */\n H.formatSingle = function(format, val) {\n var floatRegex = /f$/,\n decRegex = /\\.([0-9])/,\n lang = H.defaultOptions.lang,\n decimals;\n\n if (floatRegex.test(format)) { // float\n decimals = format.match(decRegex);\n decimals = decimals ? decimals[1] : -1;\n if (val !== null) {\n val = H.numberFormat(\n val,\n decimals,\n lang.decimalPoint,\n format.indexOf(',') > -1 ? lang.thousandsSep : ''\n );\n }\n } else {\n val = H.dateFormat(format, val);\n }\n return val;\n };\n\n /**\n * Format a string according to a subset of the rules of Python's String.format\n * method.\n *\n * @function #format\n * @memberOf Highcharts\n * @param {String} str The string to format.\n * @param {Object} ctx The context, a collection of key-value pairs where each\n * key is replaced by its value.\n * @returns {String} The formatted string.\n *\n * @example\n * var s = Highcharts.format(\n * 'The {color} fox was {len:.2f} feet long',\n * { color: 'red', len: Math.PI }\n * );\n * // => The red fox was 3.14 feet long\n */\n H.format = function(str, ctx) {\n var splitter = '{',\n isInside = false,\n segment,\n valueAndFormat,\n path,\n i,\n len,\n ret = [],\n val,\n index;\n\n while (str) {\n index = str.indexOf(splitter);\n if (index === -1) {\n break;\n }\n\n segment = str.slice(0, index);\n if (isInside) { // we're on the closing bracket looking back\n\n valueAndFormat = segment.split(':');\n path = valueAndFormat.shift().split('.'); // get first and leave\n len = path.length;\n val = ctx;\n\n // Assign deeper paths\n for (i = 0; i < len; i++) {\n val = val[path[i]];\n }\n\n // Format the replacement\n if (valueAndFormat.length) {\n val = H.formatSingle(valueAndFormat.join(':'), val);\n }\n\n // Push the result and advance the cursor\n ret.push(val);\n\n } else {\n ret.push(segment);\n\n }\n str = str.slice(index + 1); // the rest\n isInside = !isInside; // toggle\n splitter = isInside ? '}' : '{'; // now look for next matching bracket\n }\n ret.push(str);\n return ret.join('');\n };\n\n /**\n * Get the magnitude of a number.\n *\n * @function #getMagnitude\n * @memberOf Highcharts\n * @param {Number} number The number.\n * @returns {Number} The magnitude, where 1-9 are magnitude 1, 10-99 magnitude 2\n * etc.\n */\n H.getMagnitude = function(num) {\n return Math.pow(10, Math.floor(Math.log(num) / Math.LN10));\n };\n\n /**\n * Take an interval and normalize it to multiples of round numbers.\n *\n * @todo Move this function to the Axis prototype. It is here only for\n * historical reasons.\n * @function #normalizeTickInterval\n * @memberOf Highcharts\n * @param {Number} interval - The raw, un-rounded interval.\n * @param {Array} [multiples] - Allowed multiples.\n * @param {Number} [magnitude] - The magnitude of the number.\n * @param {Boolean} [allowDecimals] - Whether to allow decimals.\n * @param {Boolean} [hasTickAmount] - If it has tickAmount, avoid landing\n * on tick intervals lower than original.\n * @returns {Number} The normalized interval.\n */\n H.normalizeTickInterval = function(interval, multiples, magnitude,\n allowDecimals, hasTickAmount) {\n var normalized,\n i,\n retInterval = interval;\n\n // round to a tenfold of 1, 2, 2.5 or 5\n magnitude = H.pick(magnitude, 1);\n normalized = interval / magnitude;\n\n // multiples for a linear scale\n if (!multiples) {\n multiples = hasTickAmount ?\n // Finer grained ticks when the tick amount is hard set, including\n // when alignTicks is true on multiple axes (#4580).\n [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] :\n\n // Else, let ticks fall on rounder numbers\n [1, 2, 2.5, 5, 10];\n\n\n // the allowDecimals option\n if (allowDecimals === false) {\n if (magnitude === 1) {\n multiples = H.grep(multiples, function(num) {\n return num % 1 === 0;\n });\n } else if (magnitude <= 0.1) {\n multiples = [1 / magnitude];\n }\n }\n }\n\n // normalize the interval to the nearest multiple\n for (i = 0; i < multiples.length; i++) {\n retInterval = multiples[i];\n // only allow tick amounts smaller than natural\n if ((hasTickAmount && retInterval * magnitude >= interval) ||\n (!hasTickAmount && (normalized <= (multiples[i] +\n (multiples[i + 1] || multiples[i])) / 2))) {\n break;\n }\n }\n\n // Multiply back to the correct magnitude. Correct floats to appropriate \n // precision (#6085).\n retInterval = H.correctFloat(\n retInterval * magnitude, -Math.round(Math.log(0.001) / Math.LN10)\n );\n\n return retInterval;\n };\n\n\n /**\n * Sort an object array and keep the order of equal items. The ECMAScript\n * standard does not specify the behaviour when items are equal.\n *\n * @function #stableSort\n * @memberOf Highcharts\n * @param {Array} arr - The array to sort.\n * @param {Function} sortFunction - The function to sort it with, like with \n * regular Array.prototype.sort.\n * @returns {void}\n */\n H.stableSort = function(arr, sortFunction) {\n var length = arr.length,\n sortValue,\n i;\n\n // Add index to each item\n for (i = 0; i < length; i++) {\n arr[i].safeI = i; // stable sort index\n }\n\n arr.sort(function(a, b) {\n sortValue = sortFunction(a, b);\n return sortValue === 0 ? a.safeI - b.safeI : sortValue;\n });\n\n // Remove index from items\n for (i = 0; i < length; i++) {\n delete arr[i].safeI; // stable sort index\n }\n };\n\n /**\n * Non-recursive method to find the lowest member of an array. `Math.min` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function #arrayMin\n * @memberOf Highcharts\n * @param {Array} data An array of numbers.\n * @returns {Number} The lowest number.\n */\n H.arrayMin = function(data) {\n var i = data.length,\n min = data[0];\n\n while (i--) {\n if (data[i] < min) {\n min = data[i];\n }\n }\n return min;\n };\n\n /**\n * Non-recursive method to find the lowest member of an array. `Math.max` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function #arrayMax\n * @memberOf Highcharts\n * @param {Array} data - An array of numbers.\n * @returns {Number} The highest number.\n */\n H.arrayMax = function(data) {\n var i = data.length,\n max = data[0];\n\n while (i--) {\n if (data[i] > max) {\n max = data[i];\n }\n }\n return max;\n };\n\n /**\n * Utility method that destroys any SVGElement instances that are properties on\n * the given object. It loops all properties and invokes destroy if there is a\n * destroy method. The property is then delete.\n *\n * @function #destroyObjectProperties\n * @memberOf Highcharts\n * @param {Object} obj - The object to destroy properties on.\n * @param {Object} [except] - Exception, do not destroy this property, only\n * delete it.\n * @returns {void}\n */\n H.destroyObjectProperties = function(obj, except) {\n H.objectEach(obj, function(val, n) {\n // If the object is non-null and destroy is defined\n if (val && val !== except && val.destroy) {\n // Invoke the destroy\n val.destroy();\n }\n\n // Delete the property from the object.\n delete obj[n];\n });\n };\n\n\n /**\n * Discard a HTML element by moving it to the bin and delete.\n *\n * @function #discardElement\n * @memberOf Highcharts\n * @param {HTMLDOMElement} element - The HTML node to discard.\n * @returns {void}\n */\n H.discardElement = function(element) {\n var garbageBin = H.garbageBin;\n // create a garbage bin element, not part of the DOM\n if (!garbageBin) {\n garbageBin = H.createElement('div');\n }\n\n // move the node and empty bin\n if (element) {\n garbageBin.appendChild(element);\n }\n garbageBin.innerHTML = '';\n };\n\n /**\n * Fix JS round off float errors.\n *\n * @function #correctFloat\n * @memberOf Highcharts\n * @param {Number} num - A float number to fix.\n * @param {Number} [prec=14] - The precision.\n * @returns {Number} The corrected float number.\n */\n H.correctFloat = function(num, prec) {\n return parseFloat(\n num.toPrecision(prec || 14)\n );\n };\n\n /**\n * Set the global animation to either a given value, or fall back to the given\n * chart's animation option.\n *\n * @function #setAnimation\n * @memberOf Highcharts\n * @param {Boolean|Animation} animation - The animation object.\n * @param {Object} chart - The chart instance.\n * @returns {void}\n * @todo This function always relates to a chart, and sets a property on the\n * renderer, so it should be moved to the SVGRenderer.\n */\n H.setAnimation = function(animation, chart) {\n chart.renderer.globalAnimation = H.pick(\n animation,\n chart.options.chart.animation,\n true\n );\n };\n\n /**\n * Get the animation in object form, where a disabled animation is always\n * returned as `{ duration: 0 }`.\n *\n * @function #animObject\n * @memberOf Highcharts\n * @param {Boolean|AnimationOptions} animation - An animation setting. Can be an\n * object with duration, complete and easing properties, or a boolean to\n * enable or disable.\n * @returns {AnimationOptions} An object with at least a duration property.\n */\n H.animObject = function(animation) {\n return H.isObject(animation) ?\n H.merge(animation) : {\n duration: animation ? 500 : 0\n };\n };\n\n /**\n * The time unit lookup\n */\n H.timeUnits = {\n millisecond: 1,\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 24 * 3600000,\n week: 7 * 24 * 3600000,\n month: 28 * 24 * 3600000,\n year: 364 * 24 * 3600000\n };\n\n /**\n * Format a number and return a string based on input settings.\n *\n * @function #numberFormat\n * @memberOf Highcharts\n * @param {Number} number - The input number to format.\n * @param {Number} decimals - The amount of decimals. A value of -1 preserves\n * the amount in the input number.\n * @param {String} [decimalPoint] - The decimal point, defaults to the one given\n * in the lang options, or a dot.\n * @param {String} [thousandsSep] - The thousands separator, defaults to the one\n * given in the lang options, or a space character.\n * @returns {String} The formatted number.\n *\n * @sample members/highcharts-numberformat/ Custom number format\n */\n H.numberFormat = function(number, decimals, decimalPoint, thousandsSep) {\n number = +number || 0;\n decimals = +decimals;\n\n var lang = H.defaultOptions.lang,\n origDec = (number.toString().split('.')[1] || '').length,\n strinteger,\n thousands,\n ret,\n roundedNumber;\n\n if (decimals === -1) {\n // Preserve decimals. Not huge numbers (#3793).\n decimals = Math.min(origDec, 20);\n } else if (!H.isNumber(decimals)) {\n decimals = 2;\n }\n\n // Add another decimal to avoid rounding errors of float numbers. (#4573)\n // Then use toFixed to handle rounding.\n roundedNumber = (\n Math.abs(number) + Math.pow(10, -Math.max(decimals, origDec) - 1)\n ).toFixed(decimals);\n\n // A string containing the positive integer component of the number\n strinteger = String(H.pInt(roundedNumber));\n\n // Leftover after grouping into thousands. Can be 0, 1 or 3.\n thousands = strinteger.length > 3 ? strinteger.length % 3 : 0;\n\n // Language\n decimalPoint = H.pick(decimalPoint, lang.decimalPoint);\n thousandsSep = H.pick(thousandsSep, lang.thousandsSep);\n\n // Start building the return\n ret = number < 0 ? '-' : '';\n\n // Add the leftover after grouping into thousands. For example, in the\n // number 42 000 000, this line adds 42.\n ret += thousands ? strinteger.substr(0, thousands) + thousandsSep : '';\n\n // Add the remaining thousands groups, joined by the thousands separator\n ret += strinteger\n .substr(thousands)\n .replace(/(\\d{3})(?=\\d)/g, '$1' + thousandsSep);\n\n // Add the decimal point and the decimal component\n if (decimals) {\n // Get the decimal component\n ret += decimalPoint + roundedNumber.slice(-decimals);\n }\n\n return ret;\n };\n\n /**\n * Easing definition\n * @ignore\n * @param {Number} pos Current position, ranging from 0 to 1.\n */\n Math.easeInOutSine = function(pos) {\n return -0.5 * (Math.cos(Math.PI * pos) - 1);\n };\n\n /**\n * Get the computed CSS value for given element and property, only for numerical\n * properties. For width and height, the dimension of the inner box (excluding\n * padding) is returned. Used for fitting the chart within the container.\n *\n * @function #getStyle\n * @memberOf Highcharts\n * @param {HTMLDOMElement} el - A HTML element.\n * @param {String} prop - The property name.\n * @param {Boolean} [toInt=true] - Parse to integer.\n * @returns {Number} - The numeric value.\n */\n H.getStyle = function(el, prop, toInt) {\n\n var style;\n\n // For width and height, return the actual inner pixel size (#4913)\n if (prop === 'width') {\n return Math.min(el.offsetWidth, el.scrollWidth) -\n H.getStyle(el, 'padding-left') -\n H.getStyle(el, 'padding-right');\n } else if (prop === 'height') {\n return Math.min(el.offsetHeight, el.scrollHeight) -\n H.getStyle(el, 'padding-top') -\n H.getStyle(el, 'padding-bottom');\n }\n\n // Otherwise, get the computed style\n style = win.getComputedStyle(el, undefined);\n if (style) {\n style = style.getPropertyValue(prop);\n if (H.pick(toInt, true)) {\n style = H.pInt(style);\n }\n }\n return style;\n };\n\n /**\n * Search for an item in an array.\n *\n * @function #inArray\n * @memberOf Highcharts\n * @param {*} item - The item to search for.\n * @param {arr} arr - The array or node collection to search in.\n * @returns {Number} - The index within the array, or -1 if not found.\n */\n H.inArray = function(item, arr) {\n return arr.indexOf ? arr.indexOf(item) : [].indexOf.call(arr, item);\n };\n\n /**\n * Filter an array by a callback.\n *\n * @function #grep\n * @memberOf Highcharts\n * @param {Array} arr - The array to filter.\n * @param {Function} callback - The callback function. The function receives the\n * item as the first argument. Return `true` if the item is to be\n * preserved.\n * @returns {Array} - A new, filtered array.\n */\n H.grep = function(arr, callback) {\n return [].filter.call(arr, callback);\n };\n\n /**\n * Return the value of the first element in the array that satisfies the \n * provided testing function.\n *\n * @function #find\n * @memberOf Highcharts\n * @param {Array} arr - The array to test.\n * @param {Function} callback - The callback function. The function receives the\n * item as the first argument. Return `true` if this item satisfies the\n * condition.\n * @returns {Mixed} - The value of the element.\n */\n H.find = function(arr, callback) {\n return [].find.call(arr, callback);\n };\n\n /**\n * Map an array by a callback.\n *\n * @function #map\n * @memberOf Highcharts\n * @param {Array} arr - The array to map.\n * @param {Function} fn - The callback function. Return the new value for the \n * new array.\n * @returns {Array} - A new array item with modified items.\n */\n H.map = function(arr, fn) {\n var results = [],\n i = 0,\n len = arr.length;\n\n for (; i < len; i++) {\n results[i] = fn.call(arr[i], arr[i], i, arr);\n }\n\n return results;\n };\n\n /**\n * Get the element's offset position, corrected for `overflow: auto`.\n *\n * @function #offset\n * @memberOf Highcharts\n * @param {HTMLDOMElement} el - The HTML element.\n * @returns {Object} An object containing `left` and `top` properties for the\n * position in the page.\n */\n H.offset = function(el) {\n var docElem = doc.documentElement,\n box = el.getBoundingClientRect();\n\n return {\n top: box.top + (win.pageYOffset || docElem.scrollTop) -\n (docElem.clientTop || 0),\n left: box.left + (win.pageXOffset || docElem.scrollLeft) -\n (docElem.clientLeft || 0)\n };\n };\n\n /**\n * Stop running animation.\n *\n * @todo A possible extension to this would be to stop a single property, when\n * we want to continue animating others. Then assign the prop to the timer\n * in the Fx.run method, and check for the prop here. This would be an\n * improvement in all cases where we stop the animation from .attr. Instead of\n * stopping everything, we can just stop the actual attributes we're setting.\n *\n * @function #stop\n * @memberOf Highcharts\n * @param {SVGElement} el - The SVGElement to stop animation on.\n * @param {string} [prop] - The property to stop animating. If given, the stop\n * method will stop a single property from animating, while others continue.\n * @returns {void}\n */\n H.stop = function(el, prop) {\n\n var i = timers.length;\n\n // Remove timers related to this element (#4519)\n while (i--) {\n if (timers[i].elem === el && (!prop || prop === timers[i].prop)) {\n timers[i].stopped = true; // #4667\n }\n }\n };\n\n /**\n * Iterate over an array.\n *\n * @function #each\n * @memberOf Highcharts\n * @param {Array} arr - The array to iterate over.\n * @param {Function} fn - The iterator callback. It passes three arguments:\n * * item - The array item.\n * * index - The item's index in the array.\n * * arr - The array that each is being applied to.\n * @param {Object} [ctx] The context.\n */\n H.each = function(arr, fn, ctx) { // modern browsers\n return Array.prototype.forEach.call(arr, fn, ctx);\n };\n\n /**\n * Iterate over object key pairs in an object.\n *\n * @function #objectEach\n * @memberOf Highcharts\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The iterator callback. It passes three arguments:\n * * value - The property value.\n * * key - The property key.\n * * obj - The object that objectEach is being applied to.\n * @param {Object} ctx The context\n */\n H.objectEach = function(obj, fn, ctx) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(ctx, obj[key], key, obj);\n }\n }\n };\n\n /**\n * Add an event listener.\n *\n * @function #addEvent\n * @memberOf Highcharts\n * @param {Object} el - The element or object to add a listener to. It can be a\n * {@link HTMLDOMElement}, an {@link SVGElement} or any other object.\n * @param {String} type - The event type.\n * @param {Function} fn - The function callback to execute when the event is \n * fired.\n * @returns {Function} A callback function to remove the added event.\n */\n H.addEvent = function(el, type, fn) {\n\n var events = el.hcEvents = el.hcEvents || {};\n\n function wrappedFn(e) {\n e.target = e.srcElement || win; // #2820\n fn.call(el, e);\n }\n\n // Handle DOM events in modern browsers\n if (el.addEventListener) {\n el.addEventListener(type, fn, false);\n\n // Handle old IE implementation\n } else if (el.attachEvent) {\n\n if (!el.hcEventsIE) {\n el.hcEventsIE = {};\n }\n\n // Link wrapped fn with original fn, so we can get this in removeEvent\n el.hcEventsIE[fn.toString()] = wrappedFn;\n\n el.attachEvent('on' + type, wrappedFn);\n }\n\n if (!events[type]) {\n events[type] = [];\n }\n\n events[type].push(fn);\n\n // Return a function that can be called to remove this event.\n return function() {\n H.removeEvent(el, type, fn);\n };\n };\n\n /**\n * Remove an event that was added with {@link Highcharts#addEvent}.\n *\n * @function #removeEvent\n * @memberOf Highcharts\n * @param {Object} el - The element to remove events on.\n * @param {String} [type] - The type of events to remove. If undefined, all\n * events are removed from the element.\n * @param {Function} [fn] - The specific callback to remove. If undefined, all\n * events that match the element and optionally the type are removed.\n * @returns {void}\n */\n H.removeEvent = function(el, type, fn) {\n\n var events,\n hcEvents = el.hcEvents,\n index;\n\n function removeOneEvent(type, fn) {\n if (el.removeEventListener) {\n el.removeEventListener(type, fn, false);\n } else if (el.attachEvent) {\n fn = el.hcEventsIE[fn.toString()];\n el.detachEvent('on' + type, fn);\n }\n }\n\n function removeAllEvents() {\n var types,\n len;\n\n if (!el.nodeName) {\n return; // break on non-DOM events\n }\n\n if (type) {\n types = {};\n types[type] = true;\n } else {\n types = hcEvents;\n }\n\n H.objectEach(types, function(val, n) {\n if (hcEvents[n]) {\n len = hcEvents[n].length;\n while (len--) {\n removeOneEvent(n, hcEvents[n][len]);\n }\n }\n });\n }\n\n if (hcEvents) {\n if (type) {\n events = hcEvents[type] || [];\n if (fn) {\n index = H.inArray(fn, events);\n if (index > -1) {\n events.splice(index, 1);\n hcEvents[type] = events;\n }\n removeOneEvent(type, fn);\n\n } else {\n removeAllEvents();\n hcEvents[type] = [];\n }\n } else {\n removeAllEvents();\n el.hcEvents = {};\n }\n }\n };\n\n /**\n * Fire an event that was registered with {@link Highcharts#addEvent}.\n *\n * @function #fireEvent\n * @memberOf Highcharts\n * @param {Object} el - The object to fire the event on. It can be a\n * {@link HTMLDOMElement}, an {@link SVGElement} or any other object.\n * @param {String} type - The type of event.\n * @param {Object} [eventArguments] - Custom event arguments that are passed on\n * as an argument to the event handler.\n * @param {Function} [defaultFunction] - The default function to execute if the \n * other listeners haven't returned false.\n * @returns {void}\n */\n H.fireEvent = function(el, type, eventArguments, defaultFunction) {\n var e,\n hcEvents = el.hcEvents,\n events,\n len,\n i,\n fn;\n\n eventArguments = eventArguments || {};\n\n if (doc.createEvent && (el.dispatchEvent || el.fireEvent)) {\n e = doc.createEvent('Events');\n e.initEvent(type, true, true);\n //e.target = el;\n\n H.extend(e, eventArguments);\n\n if (el.dispatchEvent) {\n el.dispatchEvent(e);\n } else {\n el.fireEvent(type, e);\n }\n\n } else if (hcEvents) {\n\n events = hcEvents[type] || [];\n len = events.length;\n\n if (!eventArguments.target) { // We're running a custom event\n\n H.extend(eventArguments, {\n // Attach a simple preventDefault function to skip default\n // handler if called. The built-in defaultPrevented property is\n // not overwritable (#5112)\n preventDefault: function() {\n eventArguments.defaultPrevented = true;\n },\n // Setting target to native events fails with clicking the\n // zoom-out button in Chrome.\n target: el,\n // If the type is not set, we're running a custom event (#2297).\n // If it is set, we're running a browser event, and setting it\n // will cause en error in IE8 (#2465). \n type: type\n });\n }\n\n\n for (i = 0; i < len; i++) {\n fn = events[i];\n\n // If the event handler return false, prevent the default handler\n // from executing\n if (fn && fn.call(el, eventArguments) === false) {\n eventArguments.preventDefault();\n }\n }\n }\n\n // Run the default if not prevented\n if (defaultFunction && !eventArguments.defaultPrevented) {\n defaultFunction(eventArguments);\n }\n };\n\n /**\n * An animation configuration. Animation configurations can also be defined as\n * booleans, where `false` turns off animation and `true` defaults to a duration\n * of 500ms.\n * @typedef {Object} AnimationOptions\n * @property {Number} duration - The animation duration in milliseconds.\n * @property {String} [easing] - The name of an easing function as defined on\n * the `Math` object.\n * @property {Function} [complete] - A callback function to exectute when the\n * animation finishes.\n * @property {Function} [step] - A callback function to execute on each step of\n * each attribute or CSS property that's being animated. The first argument\n * contains information about the animation and progress.\n */\n\n\n /**\n * The global animate method, which uses Fx to create individual animators.\n *\n * @function #animate\n * @memberOf Highcharts\n * @param {HTMLDOMElement|SVGElement} el - The element to animate.\n * @param {Object} params - An object containing key-value pairs of the\n * properties to animate. Supports numeric as pixel-based CSS properties\n * for HTML objects and attributes for SVGElements.\n * @param {AnimationOptions} [opt] - Animation options.\n */\n H.animate = function(el, params, opt) {\n var start,\n unit = '',\n end,\n fx,\n args;\n\n if (!H.isObject(opt)) { // Number or undefined/null\n args = arguments;\n opt = {\n duration: args[2],\n easing: args[3],\n complete: args[4]\n };\n }\n if (!H.isNumber(opt.duration)) {\n opt.duration = 400;\n }\n opt.easing = typeof opt.easing === 'function' ?\n opt.easing :\n (Math[opt.easing] || Math.easeInOutSine);\n opt.curAnim = H.merge(params);\n\n H.objectEach(params, function(val, prop) {\n // Stop current running animation of this property\n H.stop(el, prop);\n\n fx = new H.Fx(el, opt, prop);\n end = null;\n\n if (prop === 'd') {\n fx.paths = fx.initPath(\n el,\n el.d,\n params.d\n );\n fx.toD = params.d;\n start = 0;\n end = 1;\n } else if (el.attr) {\n start = el.attr(prop);\n } else {\n start = parseFloat(H.getStyle(el, prop)) || 0;\n if (prop !== 'opacity') {\n unit = 'px';\n }\n }\n\n if (!end) {\n end = val;\n }\n if (end && end.match && end.match('px')) {\n end = end.replace(/px/g, ''); // #4351\n }\n fx.run(start, end, unit);\n });\n };\n\n /**\n * Factory to create new series prototypes.\n *\n * @function #seriesType\n * @memberOf Highcharts\n *\n * @param {String} type - The series type name.\n * @param {String} parent - The parent series type name. Use `line` to inherit\n * from the basic {@link Series} object.\n * @param {Object} options - The additional default options that is merged with\n * the parent's options.\n * @param {Object} props - The properties (functions and primitives) to set on\n * the new prototype.\n * @param {Object} [pointProps] - Members for a series-specific extension of the\n * {@link Point} prototype if needed.\n * @returns {*} - The newly created prototype as extended from {@link Series}\n * or its derivatives.\n */\n // docs: add to API + extending Highcharts\n H.seriesType = function(type, parent, options, props, pointProps) {\n var defaultOptions = H.getOptions(),\n seriesTypes = H.seriesTypes;\n\n if (seriesTypes[type]) {\n return H.error(27); // Series type already defined\n }\n\n // Merge the options\n defaultOptions.plotOptions[type] = H.merge(\n defaultOptions.plotOptions[parent],\n options\n );\n\n // Create the class\n seriesTypes[type] = H.extendClass(seriesTypes[parent] ||\n function() {}, props);\n seriesTypes[type].prototype.type = type;\n\n // Create the point class if needed\n if (pointProps) {\n seriesTypes[type].prototype.pointClass =\n H.extendClass(H.Point, pointProps);\n }\n\n return seriesTypes[type];\n };\n\n /**\n * Get a unique key for using in internal element id's and pointers. The key\n * is composed of a random hash specific to this Highcharts instance, and a \n * counter.\n * @function #uniqueKey\n * @memberOf Highcharts\n * @return {string} The key.\n * @example\n * var id = H.uniqueKey(); // => 'highcharts-x45f6hp-0'\n */\n H.uniqueKey = (function() {\n\n var uniqueKeyHash = Math.random().toString(36).substring(2, 9),\n idCounter = 0;\n\n return function() {\n return 'highcharts-' + uniqueKeyHash + '-' + idCounter++;\n };\n }());\n\n /**\n * Register Highcharts as a plugin in jQuery\n */\n if (jQuery) {\n jQuery.fn.highcharts = function() {\n var args = [].slice.call(arguments);\n\n if (this[0]) { // this[0] is the renderTo div\n\n // Create the chart\n if (args[0]) {\n new H[ // eslint-disable-line no-new\n // Constructor defaults to Chart\n H.isString(args[0]) ? args.shift() : 'Chart'\n ](this[0], args[0], args[1]);\n return this;\n }\n\n // When called without parameters or with the return argument,\n // return an existing chart\n return charts[H.attr(this[0], 'data-highcharts-chart')];\n }\n };\n }\n\n\n /**\n * Compatibility section to add support for legacy IE. This can be removed if\n * old IE support is not needed.\n */\n if (doc && !doc.defaultView) {\n H.getStyle = function(el, prop) {\n var val,\n alias = {\n width: 'clientWidth',\n height: 'clientHeight'\n }[prop];\n\n if (el.style[prop]) {\n return H.pInt(el.style[prop]);\n }\n if (prop === 'opacity') {\n prop = 'filter';\n }\n\n // Getting the rendered width and height\n if (alias) {\n el.style.zoom = 1;\n return Math.max(el[alias] - 2 * H.getStyle(el, 'padding'), 0);\n }\n\n val = el.currentStyle[prop.replace(/\\-(\\w)/g, function(a, b) {\n return b.toUpperCase();\n })];\n if (prop === 'filter') {\n val = val.replace(\n /alpha\\(opacity=([0-9]+)\\)/,\n function(a, b) {\n return b / 100;\n }\n );\n }\n\n return val === '' ? 1 : H.pInt(val);\n };\n }\n\n if (!Array.prototype.forEach) {\n H.each = function(arr, fn, ctx) { // legacy\n var i = 0,\n len = arr.length;\n for (; i < len; i++) {\n if (fn.call(ctx, arr[i], i, arr) === false) {\n return i;\n }\n }\n };\n }\n\n if (!Array.prototype.indexOf) {\n H.inArray = function(item, arr) {\n var len,\n i = 0;\n\n if (arr) {\n len = arr.length;\n\n for (; i < len; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n\n return -1;\n };\n }\n\n if (!Array.prototype.filter) {\n H.grep = function(elements, fn) {\n var ret = [],\n i = 0,\n length = elements.length;\n\n for (; i < length; i++) {\n if (fn(elements[i], i)) {\n ret.push(elements[i]);\n }\n }\n\n return ret;\n };\n }\n\n if (!Array.prototype.find) {\n H.find = function(arr, fn) {\n var i,\n length = arr.length;\n\n for (i = 0; i < length; i++) {\n if (fn(arr[i], i)) {\n return arr[i];\n }\n }\n };\n }\n\n //--- End compatibility section ---\n\n }(Highcharts));\n (function(H) {\n /**\n * (c) 2010-2017 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n var each = H.each,\n isNumber = H.isNumber,\n map = H.map,\n merge = H.merge,\n pInt = H.pInt;\n\n /**\n * @typedef {string} ColorString\n * A valid color to be parsed and handled by Highcharts. Highcharts internally \n * supports hex colors like `#ffffff`, rgb colors like `rgb(255,255,255)` and\n * rgba colors like `rgba(255,255,255,1)`. Other colors may be supported by the\n * browsers and displayed correctly, but Highcharts is not able to process them\n * and apply concepts like opacity and brightening.\n */\n /**\n * Handle color operations. The object methods are chainable.\n * @param {String} input The input color in either rbga or hex format\n */\n H.Color = function(input) {\n // Backwards compatibility, allow instanciation without new\n if (!(this instanceof H.Color)) {\n return new H.Color(input);\n }\n // Initialize\n this.init(input);\n };\n H.Color.prototype = {\n\n // Collection of parsers. This can be extended from the outside by pushing parsers\n // to Highcharts.Color.prototype.parsers.\n parsers: [{\n // RGBA color\n regex: /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]?(?:\\.[0-9]+)?)\\s*\\)/,\n parse: function(result) {\n return [pInt(result[1]), pInt(result[2]), pInt(result[3]), parseFloat(result[4], 10)];\n }\n }, {\n // RGB color\n regex: /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/,\n parse: function(result) {\n return [pInt(result[1]), pInt(result[2]), pInt(result[3]), 1];\n }\n }],\n\n // Collection of named colors. Can be extended from the outside by adding\n // colors to Highcharts.Color.prototype.names.\n names: {\n none: 'rgba(255,255,255,0)',\n white: '#ffffff',\n black: '#000000'\n },\n\n /**\n * Parse the input color to rgba array\n * @param {String} input\n */\n init: function(input) {\n var result,\n rgba,\n i,\n parser,\n len;\n\n this.input = input = this.names[\n input && input.toLowerCase ?\n input.toLowerCase() :\n ''\n ] || input;\n\n // Gradients\n if (input && input.stops) {\n this.stops = map(input.stops, function(stop) {\n return new H.Color(stop[1]);\n });\n\n // Solid colors\n } else {\n\n // Check if it's possible to do bitmasking instead of regex\n if (input && input[0] === '#') {\n\n len = input.length;\n input = parseInt(input.substr(1), 16);\n\n // Handle long-form, e.g. #AABBCC\n if (len === 7) {\n\n rgba = [\n (input & 0xFF0000) >> 16,\n (input & 0xFF00) >> 8,\n (input & 0xFF),\n 1\n ];\n\n // Handle short-form, e.g. #ABC\n // In short form, the value is assumed to be the same \n // for both nibbles for each component. e.g. #ABC = #AABBCC\n } else if (len === 4) {\n\n rgba = [\n ((input & 0xF00) >> 4) | (input & 0xF00) >> 8,\n ((input & 0xF0) >> 4) | (input & 0xF0),\n ((input & 0xF) << 4) | (input & 0xF),\n 1\n ];\n }\n }\n\n // Otherwise, check regex parsers\n if (!rgba) {\n i = this.parsers.length;\n while (i-- && !rgba) {\n parser = this.parsers[i];\n result = parser.regex.exec(input);\n if (result) {\n rgba = parser.parse(result);\n }\n }\n }\n }\n this.rgba = rgba || [];\n },\n\n /**\n * Return the color a specified format\n * @param {String} format\n */\n get: function(format) {\n var input = this.input,\n rgba = this.rgba,\n ret;\n\n if (this.stops) {\n ret = merge(input);\n ret.stops = [].concat(ret.stops);\n each(this.stops, function(stop, i) {\n ret.stops[i] = [ret.stops[i][0], stop.get(format)];\n });\n\n // it's NaN if gradient colors on a column chart\n } else if (rgba && isNumber(rgba[0])) {\n if (format === 'rgb' || (!format && rgba[3] === 1)) {\n ret = 'rgb(' + rgba[0] + ',' + rgba[1] + ',' + rgba[2] + ')';\n } else if (format === 'a') {\n ret = rgba[3];\n } else {\n ret = 'rgba(' + rgba.join(',') + ')';\n }\n } else {\n ret = input;\n }\n return ret;\n },\n\n /**\n * Brighten the color\n * @param {Number} alpha\n */\n brighten: function(alpha) {\n var i,\n rgba = this.rgba;\n\n if (this.stops) {\n each(this.stops, function(stop) {\n stop.brighten(alpha);\n });\n\n } else if (isNumber(alpha) && alpha !== 0) {\n for (i = 0; i < 3; i++) {\n rgba[i] += pInt(alpha * 255);\n\n if (rgba[i] < 0) {\n rgba[i] = 0;\n }\n if (rgba[i] > 255) {\n rgba[i] = 255;\n }\n }\n }\n return this;\n },\n\n /**\n * Set the color's opacity to a given alpha value\n * @param {Number} alpha\n */\n setOpacity: function(alpha) {\n this.rgba[3] = alpha;\n return this;\n },\n\n /*\n * Return an intermediate color between two colors.\n *\n * @param {Highcharts.Color} to\n * The color object to tween to.\n * @param {Number} pos\n * The intermediate position, where 0 is the from color (current\n * color item), and 1 is the `to` color.\n *\n * @return {String}\n * The intermediate color in rgba notation.\n */\n tweenTo: function(to, pos) {\n // Check for has alpha, because rgba colors perform worse due to lack of\n // support in WebKit.\n var from = this,\n hasAlpha,\n ret;\n\n // Unsupported color, return to-color (#3920)\n if (!to.rgba.length) {\n ret = to.input || 'none';\n\n // Interpolate\n } else {\n from = from.rgba;\n to = to.rgba;\n hasAlpha = (to[3] !== 1 || from[3] !== 1);\n ret = (hasAlpha ? 'rgba(' : 'rgb(') +\n Math.round(to[0] + (from[0] - to[0]) * (1 - pos)) + ',' +\n Math.round(to[1] + (from[1] - to[1]) * (1 - pos)) + ',' +\n Math.round(to[2] + (from[2] - to[2]) * (1 - pos)) +\n (hasAlpha ?\n (',' + (to[3] + (from[3] - to[3]) * (1 - pos))) :\n '') + ')';\n }\n return ret;\n }\n };\n H.color = function(input) {\n return new H.Color(input);\n };\n\n }(Highcharts));\n (function(H) {\n /**\n * (c) 2010-2017 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n var SVGElement,\n SVGRenderer,\n\n addEvent = H.addEvent,\n animate = H.animate,\n attr = H.attr,\n charts = H.charts,\n color = H.color,\n css = H.css,\n createElement = H.createElement,\n defined = H.defined,\n deg2rad = H.deg2rad,\n destroyObjectProperties = H.destroyObjectProperties,\n doc = H.doc,\n each = H.each,\n extend = H.extend,\n erase = H.erase,\n grep = H.grep,\n hasTouch = H.hasTouch,\n inArray = H.inArray,\n isArray = H.isArray,\n isFirefox = H.isFirefox,\n isMS = H.isMS,\n isObject = H.isObject,\n isString = H.isString,\n isWebKit = H.isWebKit,\n merge = H.merge,\n noop = H.noop,\n objectEach = H.objectEach,\n pick = H.pick,\n pInt = H.pInt,\n removeEvent = H.removeEvent,\n splat = H.splat,\n stop = H.stop,\n svg = H.svg,\n SVG_NS = H.SVG_NS,\n symbolSizes = H.symbolSizes,\n win = H.win;\n\n /**\n * @typedef {Object} SVGDOMElement - An SVG DOM element.\n */\n /**\n * The SVGElement prototype is a JavaScript wrapper for SVG elements used in the\n * rendering layer of Highcharts. Combined with the {@link\n * Highcharts.SVGRenderer} object, these prototypes allow freeform annotation\n * in the charts or even in HTML pages without instanciating a chart. The\n * SVGElement can also wrap HTML labels, when `text` or `label` elements are\n * created with the `useHTML` parameter.\n *\n * The SVGElement instances are created through factory functions on the \n * {@link Highcharts.SVGRenderer} object, like\n * [rect]{@link Highcharts.SVGRenderer#rect}, [path]{@link\n * Highcharts.SVGRenderer#path}, [text]{@link Highcharts.SVGRenderer#text},\n * [label]{@link Highcharts.SVGRenderer#label}, [g]{@link\n * Highcharts.SVGRenderer#g} and more.\n *\n * @class Highcharts.SVGElement\n */\n SVGElement = H.SVGElement = function() {\n return this;\n };\n extend(SVGElement.prototype, /** @lends Highcharts.SVGElement.prototype */ {\n\n // Default base for animation\n opacity: 1,\n SVG_NS: SVG_NS,\n\n /**\n * For labels, these CSS properties are applied to the `text` node directly.\n * @type {Array.}\n */\n textProps: ['direction', 'fontSize', 'fontWeight', 'fontFamily',\n 'fontStyle', 'color', 'lineHeight', 'width', 'textAlign',\n 'textDecoration', 'textOverflow', 'textOutline'\n ],\n\n /**\n * Initialize the SVG renderer. This function only exists to make the\n * initiation process overridable. It should not be called directly.\n *\n * @param {HighchartsSVGRenderer} renderer\n * The SVGRenderer instance to initialize to.\n * @param {String} nodeName\n * The SVG node name.\n * @returns {void}\n */\n init: function(renderer, nodeName) {\n\n /** \n * The DOM node. Each SVGRenderer instance wraps a main DOM node, but \n * may also represent more nodes.\n * @type {SVGDOMNode|HTMLDOMNode}\n */\n this.element = nodeName === 'span' ?\n createElement(nodeName) :\n doc.createElementNS(this.SVG_NS, nodeName);\n\n /**\n * The renderer that the SVGElement belongs to.\n * @type {Highcharts.SVGRenderer}\n */\n this.renderer = renderer;\n },\n\n /**\n * Animate to given attributes or CSS properties.\n * \n * @param {SVGAttributes} params SVG attributes or CSS to animate.\n * @param {AnimationOptions} [options] Animation options.\n * @param {Function} [complete] Function to perform at the end of animation.\n *\n * @sample highcharts/members/element-on/\n * Setting some attributes by animation\n * \n * @returns {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n animate: function(params, options, complete) {\n var animOptions = H.animObject(\n pick(options, this.renderer.globalAnimation, true)\n );\n if (animOptions.duration !== 0) {\n if (complete) { // allows using a callback with the global animation without overwriting it\n animOptions.complete = complete;\n }\n animate(this, params, animOptions);\n } else {\n this.attr(params, null, complete);\n if (animOptions.step) {\n animOptions.step.call(this);\n }\n }\n return this;\n },\n\n /**\n * @typedef {Object} GradientOptions\n * @property {Object} linearGradient Holds an object that defines the start\n * position and the end position relative to the shape.\n * @property {Number} linearGradient.x1 Start horizontal position of the\n * gradient. Ranges 0-1.\n * @property {Number} linearGradient.x2 End horizontal position of the\n * gradient. Ranges 0-1.\n * @property {Number} linearGradient.y1 Start vertical position of the\n * gradient. Ranges 0-1.\n * @property {Number} linearGradient.y2 End vertical position of the\n * gradient. Ranges 0-1.\n * @property {Object} radialGradient Holds an object that defines the center\n * position and the radius.\n * @property {Number} radialGradient.cx Center horizontal position relative\n * to the shape. Ranges 0-1.\n * @property {Number} radialGradient.cy Center vertical position relative\n * to the shape. Ranges 0-1.\n * @property {Number} radialGradient.r Radius relative to the shape. Ranges\n * 0-1.\n * @property {Array.} stops The first item in each tuple is the\n * position in the gradient, where 0 is the start of the gradient and 1\n * is the end of the gradient. Multiple stops can be applied. The second\n * item is the color for each stop. This color can also be given in the\n * rgba format.\n *\n * @example\n * // Linear gradient used as a color option\n * color: {\n * linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n * stops: [\n * [0, '#003399'], // start\n * [0.5, '#ffffff'], // middle\n * [1, '#3366AA'] // end\n * ]\n * }\n * }\n */\n /**\n * Build and apply an SVG gradient out of a common JavaScript configuration\n * object. This function is called from the attribute setters.\n *\n * @private\n * @param {GradientOptions} color The gradient options structure.\n * @param {string} prop The property to apply, can either be `fill` or\n * `stroke`. \n * @param {SVGDOMElement} elem SVG DOM element to apply the gradient on.\n */\n colorGradient: function(color, prop, elem) {\n var renderer = this.renderer,\n colorObject,\n gradName,\n gradAttr,\n radAttr,\n gradients,\n gradientObject,\n stops,\n stopColor,\n stopOpacity,\n radialReference,\n id,\n key = [],\n value;\n\n // Apply linear or radial gradients\n if (color.radialGradient) {\n gradName = 'radialGradient';\n } else if (color.linearGradient) {\n gradName = 'linearGradient';\n }\n\n if (gradName) {\n gradAttr = color[gradName];\n gradients = renderer.gradients;\n stops = color.stops;\n radialReference = elem.radialReference;\n\n // Keep < 2.2 kompatibility\n if (isArray(gradAttr)) {\n color[gradName] = gradAttr = {\n x1: gradAttr[0],\n y1: gradAttr[1],\n x2: gradAttr[2],\n y2: gradAttr[3],\n gradientUnits: 'userSpaceOnUse'\n };\n }\n\n // Correct the radial gradient for the radial reference system\n if (\n gradName === 'radialGradient' &&\n radialReference &&\n !defined(gradAttr.gradientUnits)\n ) {\n radAttr = gradAttr; // Save the radial attributes for updating\n gradAttr = merge(\n gradAttr,\n renderer.getRadialAttr(radialReference, radAttr), {\n gradientUnits: 'userSpaceOnUse'\n }\n );\n }\n\n // Build the unique key to detect whether we need to create a new element (#1282)\n objectEach(gradAttr, function(val, n) {\n if (n !== 'id') {\n key.push(n, val);\n }\n });\n objectEach(stops, function(val) {\n key.push(val);\n });\n key = key.join(',');\n\n // Check if a gradient object with the same config object is created within this renderer\n if (gradients[key]) {\n id = gradients[key].attr('id');\n\n } else {\n\n // Set the id and create the element\n gradAttr.id = id = H.uniqueKey();\n gradients[key] = gradientObject = renderer.createElement(gradName)\n .attr(gradAttr)\n .add(renderer.defs);\n\n gradientObject.radAttr = radAttr;\n\n // The gradient needs to keep a list of stops to be able to destroy them\n gradientObject.stops = [];\n each(stops, function(stop) {\n var stopObject;\n if (stop[1].indexOf('rgba') === 0) {\n colorObject = H.color(stop[1]);\n stopColor = colorObject.get('rgb');\n stopOpacity = colorObject.get('a');\n } else {\n stopColor = stop[1];\n stopOpacity = 1;\n }\n stopObject = renderer.createElement('stop').attr({\n offset: stop[0],\n 'stop-color': stopColor,\n 'stop-opacity': stopOpacity\n }).add(gradientObject);\n\n // Add the stop element to the gradient\n gradientObject.stops.push(stopObject);\n });\n }\n\n // Set the reference to the gradient object\n value = 'url(' + renderer.url + '#' + id + ')';\n elem.setAttribute(prop, value);\n elem.gradient = key;\n\n // Allow the color to be concatenated into tooltips formatters etc. (#2995)\n color.toString = function() {\n return value;\n };\n }\n },\n\n /**\n * Apply a text outline through a custom CSS property, by copying the text\n * element and apply stroke to the copy. Used internally. Contrast checks\n * at http://jsfiddle.net/highcharts/43soe9m1/2/ .\n *\n * @private\n * @param {String} textOutline A custom CSS `text-outline` setting, defined\n * by `width color`. \n * @example\n * // Specific color\n * text.css({\n * textOutline: '1px black'\n * });\n * // Automatic contrast\n * text.css({\n * color: '#000000', // black text\n * textOutline: '1px contrast' // => white outline\n * });\n */\n applyTextOutline: function(textOutline) {\n var elem = this.element,\n tspans,\n tspan,\n hasContrast = textOutline.indexOf('contrast') !== -1,\n styles = {},\n color,\n strokeWidth,\n firstRealChild,\n i;\n\n // When the text shadow is set to contrast, use dark stroke for light\n // text and vice versa.\n if (hasContrast) {\n styles.textOutline = textOutline = textOutline.replace(\n /contrast/g,\n this.renderer.getContrast(elem.style.fill)\n );\n }\n\n // Extract the stroke width and color\n textOutline = textOutline.split(' ');\n color = textOutline[textOutline.length - 1];\n strokeWidth = textOutline[0];\n\n if (strokeWidth && strokeWidth !== 'none' && H.svg) {\n\n this.fakeTS = true; // Fake text shadow\n\n tspans = [].slice.call(elem.getElementsByTagName('tspan'));\n\n // In order to get the right y position of the clone,\n // copy over the y setter\n this.ySetter = this.xSetter;\n\n // Since the stroke is applied on center of the actual outline, we\n // need to double it to get the correct stroke-width outside the \n // glyphs.\n strokeWidth = strokeWidth.replace(\n /(^[\\d\\.]+)(.*?)$/g,\n function(match, digit, unit) {\n return (2 * digit) + unit;\n }\n );\n\n // Remove shadows from previous runs. Iterate from the end to\n // support removing items inside the cycle (#6472).\n i = tspans.length;\n while (i--) {\n tspan = tspans[i];\n if (tspan.getAttribute('class') === 'highcharts-text-outline') {\n // Remove then erase\n erase(tspans, elem.removeChild(tspan));\n }\n }\n\n // For each of the tspans, create a stroked copy behind it.\n firstRealChild = elem.firstChild;\n each(tspans, function(tspan, y) {\n var clone;\n\n // Let the first line start at the correct X position\n if (y === 0) {\n tspan.setAttribute('x', elem.getAttribute('x'));\n y = elem.getAttribute('y');\n tspan.setAttribute('y', y || 0);\n if (y === null) {\n elem.setAttribute('y', 0);\n }\n }\n\n // Create the clone and apply outline properties\n clone = tspan.cloneNode(1);\n attr(clone, {\n 'class': 'highcharts-text-outline',\n 'fill': color,\n 'stroke': color,\n 'stroke-width': strokeWidth,\n 'stroke-linejoin': 'round'\n });\n elem.insertBefore(clone, firstRealChild);\n });\n }\n },\n\n /**\n *\n * @typedef {Object} SVGAttributes An object of key-value pairs for SVG\n * attributes. Attributes in Highcharts elements for the most parts\n * correspond to SVG, but some are specific to Highcharts, like `zIndex`,\n * `rotation`, `translateX`, `translateY`, `scaleX` and `scaleY`. SVG\n * attributes containing a hyphen are _not_ camel-cased, they should be\n * quoted to preserve the hyphen.\n * @example\n * {\n * 'stroke': '#ff0000', // basic\n * 'stroke-width': 2, // hyphenated\n * 'rotation': 45 // custom\n * 'd': ['M', 10, 10, 'L', 30, 30, 'z'] // path definition, note format\n * }\n */\n /**\n * Apply native and custom attributes to the SVG elements.\n * \n * In order to set the rotation center for rotation, set x and y to 0 and\n * use `translateX` and `translateY` attributes to position the element\n * instead.\n *\n * Attributes frequently used in Highcharts are `fill`, `stroke`,\n * `stroke-width`.\n *\n * @param {SVGAttributes|String} hash - The native and custom SVG\n * attributes. \n * @param {string} [val] - If the type of the first argument is `string`, \n * the second can be a value, which will serve as a single attribute\n * setter. If the first argument is a string and the second is undefined,\n * the function serves as a getter and the current value of the property\n * is returned.\n * @param {Function} [complete] - A callback function to execute after setting\n * the attributes. This makes the function compliant and interchangeable\n * with the {@link SVGElement#animate} function.\n * @param {boolean} [continueAnimation=true] Used internally when `.attr` is\n * called as part of an animation step. Otherwise, calling `.attr` for an\n * attribute will stop animation for that attribute.\n * \n * @returns {SVGElement|string|number} If used as a setter, it returns the \n * current {@link SVGElement} so the calls can be chained. If used as a \n * getter, the current value of the attribute is returned.\n *\n * @sample highcharts/members/renderer-rect/\n * Setting some attributes\n * \n * @example\n * // Set multiple attributes\n * element.attr({\n * stroke: 'red',\n * fill: 'blue',\n * x: 10,\n * y: 10\n * });\n *\n * // Set a single attribute\n * element.attr('stroke', 'red');\n *\n * // Get an attribute\n * element.attr('stroke'); // => 'red'\n * \n */\n attr: function(hash, val, complete, continueAnimation) {\n var key,\n element = this.element,\n hasSetSymbolSize,\n ret = this,\n skipAttr,\n setter;\n\n // single key-value pair\n if (typeof hash === 'string' && val !== undefined) {\n key = hash;\n hash = {};\n hash[key] = val;\n }\n\n // used as a getter: first argument is a string, second is undefined\n if (typeof hash === 'string') {\n ret = (this[hash + 'Getter'] || this._defaultGetter).call(this, hash, element);\n\n // setter\n } else {\n\n objectEach(hash, function(val, key) {\n skipAttr = false;\n\n // Unless .attr is from the animator update, stop current\n // running animation of this property\n if (!continueAnimation) {\n stop(this, key);\n }\n\n // Special handling of symbol attributes\n if (\n this.symbolName &&\n /^(x|y|width|height|r|start|end|innerR|anchorX|anchorY)$/\n .test(key)\n ) {\n if (!hasSetSymbolSize) {\n this.symbolAttr(hash);\n hasSetSymbolSize = true;\n }\n skipAttr = true;\n }\n\n if (this.rotation && (key === 'x' || key === 'y')) {\n this.doTransform = true;\n }\n\n if (!skipAttr) {\n setter = this[key + 'Setter'] || this._defaultSetter;\n setter.call(this, val, key, element);\n\n\n // Let the shadow follow the main element\n if (this.shadows && /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(key)) {\n this.updateShadows(key, val, setter);\n }\n\n }\n }, this);\n\n this.afterSetters();\n }\n\n // In accordance with animate, run a complete callback\n if (complete) {\n complete();\n }\n\n return ret;\n },\n\n /**\n * This method is executed in the end of {attr}, after setting all attributes in the hash.\n * In can be used to efficiently consolidate multiple attributes in one SVG property -- e.g.,\n * translate, rotate and scale are merged in one \"transform\" attribute in the SVG node.\n */\n afterSetters: function() {\n // Update transform. Do this outside the loop to prevent redundant updating for batch setting\n // of attributes.\n if (this.doTransform) {\n this.updateTransform();\n this.doTransform = false;\n }\n },\n\n\n /**\n * Update the shadow elements with new attributes.\n *\n * @private\n * @param {String} key - The attribute name.\n * @param {String|Number} value - The value of the attribute.\n * @param {Function} setter - The setter function, inherited from the\n * parent wrapper\n * @returns {void}\n */\n updateShadows: function(key, value, setter) {\n var shadows = this.shadows,\n i = shadows.length;\n\n while (i--) {\n setter.call(\n shadows[i],\n key === 'height' ?\n Math.max(value - (shadows[i].cutHeight || 0), 0) :\n key === 'd' ? this.d : value,\n key,\n shadows[i]\n );\n }\n },\n\n\n /**\n * Add a class name to an element.\n *\n * @param {string} className - The new class name to add.\n * @param {boolean} [replace=false] - When true, the existing class name(s)\n * will be overwritten with the new one. When false, the new one is\n * added.\n * @returns {Highcharts.SVGElement} Return the SVG element for chainability.\n */\n addClass: function(className, replace) {\n var currentClassName = this.attr('class') || '';\n\n if (currentClassName.indexOf(className) === -1) {\n if (!replace) {\n className =\n (currentClassName + (currentClassName ? ' ' : '') +\n className).replace(' ', ' ');\n }\n this.attr('class', className);\n }\n return this;\n },\n\n /**\n * Check if an element has the given class name.\n * @param {string} className - The class name to check for.\n * @return {Boolean}\n */\n hasClass: function(className) {\n return attr(this.element, 'class').indexOf(className) !== -1;\n },\n\n /**\n * Remove a class name from the element.\n * @param {string} className The class name to remove.\n * @return {Highcharts.SVGElement} Returns the SVG element for chainability.\n */\n removeClass: function(className) {\n attr(this.element, 'class', (attr(this.element, 'class') || '').replace(className, ''));\n return this;\n },\n\n /**\n * If one of the symbol size affecting parameters are changed,\n * check all the others only once for each call to an element's\n * .attr() method\n * @param {Object} hash - The attributes to set.\n * @private\n */\n symbolAttr: function(hash) {\n var wrapper = this;\n\n each(['x', 'y', 'r', 'start', 'end', 'width', 'height', 'innerR', 'anchorX', 'anchorY'], function(key) {\n wrapper[key] = pick(hash[key], wrapper[key]);\n });\n\n wrapper.attr({\n d: wrapper.renderer.symbols[wrapper.symbolName](\n wrapper.x,\n wrapper.y,\n wrapper.width,\n wrapper.height,\n wrapper\n )\n });\n },\n\n /**\n * Apply a clipping rectangle to this element.\n * \n * @param {ClipRect} [clipRect] - The clipping rectangle. If skipped, the\n * current clip is removed.\n * @returns {Highcharts.SVGElement} Returns the SVG element to allow chaining.\n */\n clip: function(clipRect) {\n return this.attr(\n 'clip-path',\n clipRect ?\n 'url(' + this.renderer.url + '#' + clipRect.id + ')' :\n 'none'\n );\n },\n\n /**\n * Calculate the coordinates needed for drawing a rectangle crisply and\n * return the calculated attributes.\n * \n * @param {Object} rect - A rectangle.\n * @param {number} rect.x - The x position.\n * @param {number} rect.y - The y position.\n * @param {number} rect.width - The width.\n * @param {number} rect.height - The height.\n * @param {number} [strokeWidth] - The stroke width to consider when\n * computing crisp positioning. It can also be set directly on the rect\n * parameter.\n *\n * @returns {{x: Number, y: Number, width: Number, height: Number}} The\n * modified rectangle arguments.\n */\n crisp: function(rect, strokeWidth) {\n\n var wrapper = this,\n attribs = {},\n normalizer;\n\n strokeWidth = strokeWidth || rect.strokeWidth || 0;\n normalizer = Math.round(strokeWidth) % 2 / 2; // Math.round because strokeWidth can sometimes have roundoff errors\n\n // normalize for crisp edges\n rect.x = Math.floor(rect.x || wrapper.x || 0) + normalizer;\n rect.y = Math.floor(rect.y || wrapper.y || 0) + normalizer;\n rect.width = Math.floor((rect.width || wrapper.width || 0) - 2 * normalizer);\n rect.height = Math.floor((rect.height || wrapper.height || 0) - 2 * normalizer);\n if (defined(rect.strokeWidth)) {\n rect.strokeWidth = strokeWidth;\n }\n\n objectEach(rect, function(val, key) {\n if (wrapper[key] !== val) { // only set attribute if changed\n wrapper[key] = attribs[key] = val;\n }\n });\n\n return attribs;\n },\n\n /**\n * Set styles for the element. In addition to CSS styles supported by \n * native SVG and HTML elements, there are also some custom made for \n * Highcharts, like `width`, `ellipsis` and `textOverflow` for SVG text\n * elements.\n * @param {CSSObject} styles The new CSS styles.\n * @returns {Highcharts.SVGElement} Return the SVG element for chaining.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Styled text\n */\n css: function(styles) {\n var oldStyles = this.styles,\n newStyles = {},\n elem = this.element,\n textWidth,\n serializedCss = '',\n hyphenate,\n hasNew = !oldStyles,\n // These CSS properties are interpreted internally by the SVG\n // renderer, but are not supported by SVG and should not be added to\n // the DOM. In styled mode, no CSS should find its way to the DOM\n // whatsoever (#6173, #6474).\n svgPseudoProps = ['textOutline', 'textOverflow', 'width'];\n\n // convert legacy\n if (styles && styles.color) {\n styles.fill = styles.color;\n }\n\n // Filter out existing styles to increase performance (#2640)\n if (oldStyles) {\n objectEach(styles, function(style, n) {\n if (style !== oldStyles[n]) {\n newStyles[n] = style;\n hasNew = true;\n }\n });\n }\n if (hasNew) {\n\n // Merge the new styles with the old ones\n if (oldStyles) {\n styles = extend(\n oldStyles,\n newStyles\n );\n }\n\n // Get the text width from style\n textWidth = this.textWidth = (\n styles &&\n styles.width &&\n styles.width !== 'auto' &&\n elem.nodeName.toLowerCase() === 'text' &&\n pInt(styles.width)\n );\n\n // store object\n this.styles = styles;\n\n if (textWidth && (!svg && this.renderer.forExport)) {\n delete styles.width;\n }\n\n // serialize and set style attribute\n if (isMS && !svg) {\n css(this.element, styles);\n } else {\n hyphenate = function(a, b) {\n return '-' + b.toLowerCase();\n };\n objectEach(styles, function(style, n) {\n if (inArray(n, svgPseudoProps) === -1) {\n serializedCss +=\n n.replace(/([A-Z])/g, hyphenate) + ':' +\n style + ';';\n }\n });\n if (serializedCss) {\n attr(elem, 'style', serializedCss); // #1881\n }\n }\n\n\n if (this.added) {\n\n // Rebuild text after added. Cache mechanisms in the buildText\n // will prevent building if there are no significant changes.\n if (this.element.nodeName === 'text') {\n this.renderer.buildText(this);\n }\n\n // Apply text outline after added\n if (styles && styles.textOutline) {\n this.applyTextOutline(styles.textOutline);\n }\n }\n }\n\n return this;\n },\n\n\n /**\n * Get the current stroke width. In classic mode, the setter registers it \n * directly on the element.\n * @returns {number} The stroke width in pixels.\n * @ignore\n */\n strokeWidth: function() {\n return this['stroke-width'] || 0;\n },\n\n\n /**\n * Add an event listener. This is a simple setter that replaces all other\n * events of the same type, opposed to the {@link Highcharts#addEvent}\n * function.\n * @param {string} eventType - The event type. If the type is `click`, \n * Highcharts will internally translate it to a `touchstart` event on \n * touch devices, to prevent the browser from waiting for a click event\n * from firing.\n * @param {Function} handler - The handler callback.\n * @returns {Highcharts.SVGElement} The SVGElement for chaining.\n *\n * @sample highcharts/members/element-on/\n * A clickable rectangle\n */\n on: function(eventType, handler) {\n var svgElement = this,\n element = svgElement.element;\n\n // touch\n if (hasTouch && eventType === 'click') {\n element.ontouchstart = function(e) {\n svgElement.touchEventFired = Date.now(); // #2269\n e.preventDefault();\n handler.call(element, e);\n };\n element.onclick = function(e) {\n if (win.navigator.userAgent.indexOf('Android') === -1 ||\n Date.now() - (svgElement.touchEventFired || 0) > 1100) {\n handler.call(element, e);\n }\n };\n } else {\n // simplest possible event model for internal use\n element['on' + eventType] = handler;\n }\n return this;\n },\n\n /**\n * Set the coordinates needed to draw a consistent radial gradient across\n * a shape regardless of positioning inside the chart. Used on pie slices\n * to make all the slices have the same radial reference point.\n *\n * @param {Array} coordinates The center reference. The format is\n * `[centerX, centerY, diameter]` in pixels.\n * @returns {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n setRadialReference: function(coordinates) {\n var existingGradient = this.renderer.gradients[this.element.gradient];\n\n this.element.radialReference = coordinates;\n\n // On redrawing objects with an existing gradient, the gradient needs\n // to be repositioned (#3801)\n if (existingGradient && existingGradient.radAttr) {\n existingGradient.animate(\n this.renderer.getRadialAttr(\n coordinates,\n existingGradient.radAttr\n )\n );\n }\n\n return this;\n },\n\n /**\n * Move an object and its children by x and y values.\n * \n * @param {number} x - The x value.\n * @param {number} y - The y value.\n */\n translate: function(x, y) {\n return this.attr({\n translateX: x,\n translateY: y\n });\n },\n\n /**\n * Invert a group, rotate and flip. This is used internally on inverted \n * charts, where the points and graphs are drawn as if not inverted, then\n * the series group elements are inverted.\n *\n * @param {boolean} inverted - Whether to invert or not. An inverted shape\n * can be un-inverted by setting it to false.\n * @returns {Highcharts.SVGElement} Return the SVGElement for chaining.\n */\n invert: function(inverted) {\n var wrapper = this;\n wrapper.inverted = inverted;\n wrapper.updateTransform();\n return wrapper;\n },\n\n /**\n * Update the transform attribute based on internal properties. Deals with\n * the custom `translateX`, `translateY`, `rotation`, `scaleX` and `scaleY`\n * attributes and updates the SVG `transform` attribute.\n * @private\n * @returns {void}\n */\n updateTransform: function() {\n var wrapper = this,\n translateX = wrapper.translateX || 0,\n translateY = wrapper.translateY || 0,\n scaleX = wrapper.scaleX,\n scaleY = wrapper.scaleY,\n inverted = wrapper.inverted,\n rotation = wrapper.rotation,\n element = wrapper.element,\n transform;\n\n // flipping affects translate as adjustment for flipping around the group's axis\n if (inverted) {\n translateX += wrapper.width;\n translateY += wrapper.height;\n }\n\n // Apply translate. Nearly all transformed elements have translation, so instead\n // of checking for translate = 0, do it always (#1767, #1846).\n transform = ['translate(' + translateX + ',' + translateY + ')'];\n\n // apply rotation\n if (inverted) {\n transform.push('rotate(90) scale(-1,1)');\n } else if (rotation) { // text rotation\n transform.push('rotate(' + rotation + ' ' + (element.getAttribute('x') || 0) + ' ' + (element.getAttribute('y') || 0) + ')');\n\n // Delete bBox memo when the rotation changes\n //delete wrapper.bBox;\n }\n\n // apply scale\n if (defined(scaleX) || defined(scaleY)) {\n transform.push('scale(' + pick(scaleX, 1) + ' ' + pick(scaleY, 1) + ')');\n }\n\n if (transform.length) {\n element.setAttribute('transform', transform.join(' '));\n }\n },\n\n /**\n * Bring the element to the front. Alternatively, a new zIndex can be set.\n *\n * @returns {Highcharts.SVGElement} Returns the SVGElement for chaining.\n *\n * @sample highcharts/members/element-tofront/\n * Click an element to bring it to front\n */\n toFront: function() {\n var element = this.element;\n element.parentNode.appendChild(element);\n return this;\n },\n\n\n /**\n * Align the element relative to the chart or another box.\n * \n * @param {Object} [alignOptions] The alignment options. The function can be\n * called without this parameter in order to re-align an element after the\n * box has been updated.\n * @param {string} [alignOptions.align=left] Horizontal alignment. Can be\n * one of `left`, `center` and `right`.\n * @param {string} [alignOptions.verticalAlign=top] Vertical alignment. Can\n * be one of `top`, `middle` and `bottom`.\n * @param {number} [alignOptions.x=0] Horizontal pixel offset from\n * alignment.\n * @param {number} [alignOptions.y=0] Vertical pixel offset from alignment.\n * @param {Boolean} [alignByTranslate=false] Use the `transform` attribute\n * with translateX and translateY custom attributes to align this elements\n * rather than `x` and `y` attributes.\n * @param {String|Object} box The box to align to, needs a width and height.\n * When the box is a string, it refers to an object in the Renderer. For\n * example, when box is `spacingBox`, it refers to `Renderer.spacingBox`\n * which holds `width`, `height`, `x` and `y` properties.\n * @returns {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n align: function(alignOptions, alignByTranslate, box) {\n var align,\n vAlign,\n x,\n y,\n attribs = {},\n alignTo,\n renderer = this.renderer,\n alignedObjects = renderer.alignedObjects,\n alignFactor,\n vAlignFactor;\n\n // First call on instanciate\n if (alignOptions) {\n this.alignOptions = alignOptions;\n this.alignByTranslate = alignByTranslate;\n if (!box || isString(box)) { // boxes other than renderer handle this internally\n this.alignTo = alignTo = box || 'renderer';\n erase(alignedObjects, this); // prevent duplicates, like legendGroup after resize\n alignedObjects.push(this);\n box = null; // reassign it below\n }\n\n // When called on resize, no arguments are supplied\n } else {\n alignOptions = this.alignOptions;\n alignByTranslate = this.alignByTranslate;\n alignTo = this.alignTo;\n }\n\n box = pick(box, renderer[alignTo], renderer);\n\n // Assign variables\n align = alignOptions.align;\n vAlign = alignOptions.verticalAlign;\n x = (box.x || 0) + (alignOptions.x || 0); // default: left align\n y = (box.y || 0) + (alignOptions.y || 0); // default: top align\n\n // Align\n if (align === 'right') {\n alignFactor = 1;\n } else if (align === 'center') {\n alignFactor = 2;\n }\n if (alignFactor) {\n x += (box.width - (alignOptions.width || 0)) / alignFactor;\n }\n attribs[alignByTranslate ? 'translateX' : 'x'] = Math.round(x);\n\n\n // Vertical align\n if (vAlign === 'bottom') {\n vAlignFactor = 1;\n } else if (vAlign === 'middle') {\n vAlignFactor = 2;\n }\n if (vAlignFactor) {\n y += (box.height - (alignOptions.height || 0)) / vAlignFactor;\n }\n attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);\n\n // Animate only if already placed\n this[this.placed ? 'animate' : 'attr'](attribs);\n this.placed = true;\n this.alignAttr = attribs;\n\n return this;\n },\n\n /**\n * Get the bounding box (width, height, x and y) for the element. Generally\n * used to get rendered text size. Since this is called a lot in charts,\n * the results are cached based on text properties, in order to save DOM\n * traffic. The returned bounding box includes the rotation, so for example\n * a single text line of rotation 90 will report a greater height, and a\n * width corresponding to the line-height.\n *\n * @param {boolean} [reload] Skip the cache and get the updated DOM bouding\n * box.\n * @param {number} [rot] Override the element's rotation. This is internally\n * used on axis labels with a value of 0 to find out what the bounding box\n * would be have been if it were not rotated.\n * @returns {Object} The bounding box with `x`, `y`, `width` and `height`\n * properties.\n *\n * @sample highcharts/members/renderer-on-chart/\n * Draw a rectangle based on a text's bounding box\n */\n getBBox: function(reload, rot) {\n var wrapper = this,\n bBox, // = wrapper.bBox,\n renderer = wrapper.renderer,\n width,\n height,\n rotation,\n rad,\n element = wrapper.element,\n styles = wrapper.styles,\n fontSize,\n textStr = wrapper.textStr,\n toggleTextShadowShim,\n cache = renderer.cache,\n cacheKeys = renderer.cacheKeys,\n cacheKey;\n\n rotation = pick(rot, wrapper.rotation);\n rad = rotation * deg2rad;\n\n\n fontSize = styles && styles.fontSize;\n\n\n if (textStr !== undefined) {\n\n cacheKey = textStr.toString();\n\n // Since numbers are monospaced, and numerical labels appear a lot\n // in a chart, we assume that a label of n characters has the same\n // bounding box as others of the same length. Unless there is inner\n // HTML in the label. In that case, leave the numbers as is (#5899).\n if (cacheKey.indexOf('<') === -1) {\n cacheKey = cacheKey.replace(/[0-9]/g, '0');\n }\n\n // Properties that affect bounding box\n cacheKey += [\n '',\n rotation || 0,\n fontSize,\n styles && styles.width,\n styles && styles.textOverflow // #5968\n ]\n .join(',');\n\n }\n\n if (cacheKey && !reload) {\n bBox = cache[cacheKey];\n }\n\n // No cache found\n if (!bBox) {\n\n // SVG elements\n if (element.namespaceURI === wrapper.SVG_NS || renderer.forExport) {\n try { // Fails in Firefox if the container has display: none.\n\n // When the text shadow shim is used, we need to hide the fake shadows\n // to get the correct bounding box (#3872)\n toggleTextShadowShim = this.fakeTS && function(display) {\n each(element.querySelectorAll('.highcharts-text-outline'), function(tspan) {\n tspan.style.display = display;\n });\n };\n\n // Workaround for #3842, Firefox reporting wrong bounding box for shadows\n if (toggleTextShadowShim) {\n toggleTextShadowShim('none');\n }\n\n bBox = element.getBBox ?\n // SVG: use extend because IE9 is not allowed to change width and height in case\n // of rotation (below)\n extend({}, element.getBBox()) : {\n\n // Legacy IE in export mode\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n\n // #3842\n if (toggleTextShadowShim) {\n toggleTextShadowShim('');\n }\n } catch (e) {}\n\n // If the bBox is not set, the try-catch block above failed. The other condition\n // is for Opera that returns a width of -Infinity on hidden elements.\n if (!bBox || bBox.width < 0) {\n bBox = {\n width: 0,\n height: 0\n };\n }\n\n\n // VML Renderer or useHTML within SVG\n } else {\n\n bBox = wrapper.htmlGetBBox();\n\n }\n\n // True SVG elements as well as HTML elements in modern browsers using the .useHTML option\n // need to compensated for rotation\n if (renderer.isSVG) {\n width = bBox.width;\n height = bBox.height;\n\n // Workaround for wrong bounding box in IE, Edge and Chrome on\n // Windows. With Highcharts' default font, IE and Edge report\n // a box height of 16.899 and Chrome rounds it to 17. If this \n // stands uncorrected, it results in more padding added below\n // the text than above when adding a label border or background.\n // Also vertical positioning is affected.\n // http://jsfiddle.net/highcharts/em37nvuj/\n // (#1101, #1505, #1669, #2568, #6213).\n if (\n styles &&\n styles.fontSize === '11px' &&\n Math.round(height) === 17\n ) {\n bBox.height = height = 14;\n }\n\n // Adjust for rotated text\n if (rotation) {\n bBox.width = Math.abs(height * Math.sin(rad)) + Math.abs(width * Math.cos(rad));\n bBox.height = Math.abs(height * Math.cos(rad)) + Math.abs(width * Math.sin(rad));\n }\n }\n\n // Cache it. When loading a chart in a hidden iframe in Firefox and IE/Edge, the\n // bounding box height is 0, so don't cache it (#5620).\n if (cacheKey && bBox.height > 0) {\n\n // Rotate (#4681)\n while (cacheKeys.length > 250) {\n delete cache[cacheKeys.shift()];\n }\n\n if (!cache[cacheKey]) {\n cacheKeys.push(cacheKey);\n }\n cache[cacheKey] = bBox;\n }\n }\n return bBox;\n },\n\n /**\n * Show the element after it has been hidden. \n *\n * @param {boolean} [inherit=false] Set the visibility attribute to\n * `inherit` rather than `visible`. The difference is that an element with\n * `visibility=\"visible\"` will be visible even if the parent is hidden.\n *\n * @returns {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n show: function(inherit) {\n return this.attr({\n visibility: inherit ? 'inherit' : 'visible'\n });\n },\n\n /**\n * Hide the element, equivalent to setting the `visibility` attribute to\n * `hidden`.\n *\n * @returns {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n hide: function() {\n return this.attr({\n visibility: 'hidden'\n });\n },\n\n /**\n * Fade out an element by animating its opacity down to 0, and hide it on\n * complete. Used internally for the tooltip.\n * \n * @param {number} [duration=150] The fade duration in milliseconds.\n */\n fadeOut: function(duration) {\n var elemWrapper = this;\n elemWrapper.animate({\n opacity: 0\n }, {\n duration: duration || 150,\n complete: function() {\n elemWrapper.attr({\n y: -9999\n }); // #3088, assuming we're only using this for tooltips\n }\n });\n },\n\n /**\n * Add the element to the DOM. All elements must be added this way.\n * \n * @param {Highcharts.SVGElement|SVGDOMElement} [parent] The parent item to add it to.\n * If undefined, the element is added to the {@link\n * Highcharts.SVGRenderer.box}.\n *\n * @returns {Highcharts.SVGElement} Returns the SVGElement for chaining.\n *\n * @sample highcharts/members/renderer-g - Elements added to a group\n */\n add: function(parent) {\n\n var renderer = this.renderer,\n element = this.element,\n inserted;\n\n if (parent) {\n this.parentGroup = parent;\n }\n\n // mark as inverted\n this.parentInverted = parent && parent.inverted;\n\n // build formatted text\n if (this.textStr !== undefined) {\n renderer.buildText(this);\n }\n\n // Mark as added\n this.added = true;\n\n // If we're adding to renderer root, or other elements in the group\n // have a z index, we need to handle it\n if (!parent || parent.handleZ || this.zIndex) {\n inserted = this.zIndexSetter();\n }\n\n // If zIndex is not handled, append at the end\n if (!inserted) {\n (parent ? parent.element : renderer.box).appendChild(element);\n }\n\n // fire an event for internal hooks\n if (this.onAdd) {\n this.onAdd();\n }\n\n return this;\n },\n\n /**\n * Removes an element from the DOM.\n *\n * @private\n * @param {SVGDOMElement|HTMLDOMElement} element The DOM node to remove.\n */\n safeRemoveChild: function(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n parentNode.removeChild(element);\n }\n },\n\n /**\n * Destroy the element and element wrapper and clear up the DOM and event\n * hooks.\n *\n * @returns {void}\n */\n destroy: function() {\n var wrapper = this,\n element = wrapper.element || {},\n parentToClean =\n wrapper.renderer.isSVG &&\n element.nodeName === 'SPAN' &&\n wrapper.parentGroup,\n grandParent,\n ownerSVGElement = element.ownerSVGElement,\n i;\n\n // remove events\n element.onclick = element.onmouseout = element.onmouseover =\n element.onmousemove = element.point = null;\n stop(wrapper); // stop running animations\n\n if (wrapper.clipPath && ownerSVGElement) {\n // Look for existing references to this clipPath and remove them\n // before destroying the element (#6196).\n each(\n ownerSVGElement.querySelectorAll('[clip-path]'),\n function(el) {\n // Include the closing paranthesis in the test to rule out\n // id's from 10 and above (#6550)\n if (el.getAttribute('clip-path')\n .indexOf(wrapper.clipPath.element.id + ')') > -1) {\n el.removeAttribute('clip-path');\n }\n }\n );\n wrapper.clipPath = wrapper.clipPath.destroy();\n }\n\n // Destroy stops in case this is a gradient object\n if (wrapper.stops) {\n for (i = 0; i < wrapper.stops.length; i++) {\n wrapper.stops[i] = wrapper.stops[i].destroy();\n }\n wrapper.stops = null;\n }\n\n // remove element\n wrapper.safeRemoveChild(element);\n\n\n wrapper.destroyShadows();\n\n\n // In case of useHTML, clean up empty containers emulating SVG groups (#1960, #2393, #2697).\n while (parentToClean && parentToClean.div && parentToClean.div.childNodes.length === 0) {\n grandParent = parentToClean.parentGroup;\n wrapper.safeRemoveChild(parentToClean.div);\n delete parentToClean.div;\n parentToClean = grandParent;\n }\n\n // remove from alignObjects\n if (wrapper.alignTo) {\n erase(wrapper.renderer.alignedObjects, wrapper);\n }\n\n objectEach(wrapper, function(val, key) {\n delete wrapper[key];\n });\n\n return null;\n },\n\n\n /**\n * @typedef {Object} ShadowOptions\n * @property {string} [color=#000000] The shadow color.\n * @property {number} [offsetX=1] The horizontal offset from the element.\n * @property {number} [offsetY=1] The vertical offset from the element.\n * @property {number} [opacity=0.15] The shadow opacity.\n * @property {number} [width=3] The shadow width or distance from the\n * element.\n */\n /**\n * Add a shadow to the element. Must be called after the element is added to\n * the DOM. In styled mode, this method is not used, instead use `defs` and\n * filters.\n * \n * @param {boolean|ShadowOptions} shadowOptions The shadow options. If\n * `true`, the default options are applied. If `false`, the current\n * shadow will be removed.\n * @param {Highcharts.SVGElement} [group] The SVG group element where the shadows will \n * be applied. The default is to add it to the same parent as the current\n * element. Internally, this is ised for pie slices, where all the\n * shadows are added to an element behind all the slices.\n * @param {boolean} [cutOff] Used internally for column shadows.\n *\n * @returns {Highcharts.SVGElement} Returns the SVGElement for chaining.\n *\n * @example\n * renderer.rect(10, 100, 100, 100)\n * .attr({ fill: 'red' })\n * .shadow(true);\n */\n shadow: function(shadowOptions, group, cutOff) {\n var shadows = [],\n i,\n shadow,\n element = this.element,\n strokeWidth,\n shadowWidth,\n shadowElementOpacity,\n\n // compensate for inverted plot area\n transform;\n\n if (!shadowOptions) {\n this.destroyShadows();\n\n } else if (!this.shadows) {\n shadowWidth = pick(shadowOptions.width, 3);\n shadowElementOpacity = (shadowOptions.opacity || 0.15) / shadowWidth;\n transform = this.parentInverted ?\n '(-1,-1)' :\n '(' + pick(shadowOptions.offsetX, 1) + ', ' + pick(shadowOptions.offsetY, 1) + ')';\n for (i = 1; i <= shadowWidth; i++) {\n shadow = element.cloneNode(0);\n strokeWidth = (shadowWidth * 2) + 1 - (2 * i);\n attr(shadow, {\n 'isShadow': 'true',\n 'stroke': shadowOptions.color || '#000000',\n 'stroke-opacity': shadowElementOpacity * i,\n 'stroke-width': strokeWidth,\n 'transform': 'translate' + transform,\n 'fill': 'none'\n });\n if (cutOff) {\n attr(shadow, 'height', Math.max(attr(shadow, 'height') - strokeWidth, 0));\n shadow.cutHeight = strokeWidth;\n }\n\n if (group) {\n group.element.appendChild(shadow);\n } else {\n element.parentNode.insertBefore(shadow, element);\n }\n\n shadows.push(shadow);\n }\n\n this.shadows = shadows;\n }\n return this;\n\n },\n\n /**\n * Destroy shadows on the element.\n * @private\n */\n destroyShadows: function() {\n each(this.shadows || [], function(shadow) {\n this.safeRemoveChild(shadow);\n }, this);\n this.shadows = undefined;\n },\n\n\n\n xGetter: function(key) {\n if (this.element.nodeName === 'circle') {\n if (key === 'x') {\n key = 'cx';\n } else if (key === 'y') {\n key = 'cy';\n }\n }\n return this._defaultGetter(key);\n },\n\n /**\n * Get the current value of an attribute or pseudo attribute, used mainly\n * for animation. Called internally from the {@link\n * Highcharts.SVGRenderer#attr}\n * function.\n *\n * @private\n */\n _defaultGetter: function(key) {\n var ret = pick(this[key], this.element ? this.element.getAttribute(key) : null, 0);\n\n if (/^[\\-0-9\\.]+$/.test(ret)) { // is numerical\n ret = parseFloat(ret);\n }\n return ret;\n },\n\n\n dSetter: function(value, key, element) {\n if (value && value.join) { // join path\n value = value.join(' ');\n }\n if (/(NaN| {2}|^$)/.test(value)) {\n value = 'M 0 0';\n }\n element.setAttribute(key, value);\n\n this[key] = value;\n },\n\n dashstyleSetter: function(value) {\n var i,\n strokeWidth = this['stroke-width'];\n\n // If \"inherit\", like maps in IE, assume 1 (#4981). With HC5 and the new strokeWidth \n // function, we should be able to use that instead.\n if (strokeWidth === 'inherit') {\n strokeWidth = 1;\n }\n value = value && value.toLowerCase();\n if (value) {\n value = value\n .replace('shortdashdotdot', '3,1,1,1,1,1,')\n .replace('shortdashdot', '3,1,1,1')\n .replace('shortdot', '1,1,')\n .replace('shortdash', '3,1,')\n .replace('longdash', '8,3,')\n .replace(/dot/g, '1,3,')\n .replace('dash', '4,3,')\n .replace(/,$/, '')\n .split(','); // ending comma\n\n i = value.length;\n while (i--) {\n value[i] = pInt(value[i]) * strokeWidth;\n }\n value = value.join(',')\n .replace(/NaN/g, 'none'); // #3226\n this.element.setAttribute('stroke-dasharray', value);\n }\n },\n\n alignSetter: function(value) {\n var convert = {\n left: 'start',\n center: 'middle',\n right: 'end'\n };\n this.element.setAttribute('text-anchor', convert[value]);\n },\n opacitySetter: function(value, key, element) {\n this[key] = value;\n element.setAttribute(key, value);\n },\n titleSetter: function(value) {\n var titleNode = this.element.getElementsByTagName('title')[0];\n if (!titleNode) {\n titleNode = doc.createElementNS(this.SVG_NS, 'title');\n this.element.appendChild(titleNode);\n }\n\n // Remove text content if it exists\n if (titleNode.firstChild) {\n titleNode.removeChild(titleNode.firstChild);\n }\n\n titleNode.appendChild(\n doc.createTextNode(\n (String(pick(value), '')).replace(/<[^>]*>/g, '') // #3276, #3895\n )\n );\n },\n textSetter: function(value) {\n if (value !== this.textStr) {\n // Delete bBox memo when the text changes\n delete this.bBox;\n\n this.textStr = value;\n if (this.added) {\n this.renderer.buildText(this);\n }\n }\n },\n fillSetter: function(value, key, element) {\n if (typeof value === 'string') {\n element.setAttribute(key, value);\n } else if (value) {\n this.colorGradient(value, key, element);\n }\n },\n visibilitySetter: function(value, key, element) {\n // IE9-11 doesn't handle visibilty:inherit well, so we remove the attribute instead (#2881, #3909)\n if (value === 'inherit') {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n },\n zIndexSetter: function(value, key) {\n var renderer = this.renderer,\n parentGroup = this.parentGroup,\n parentWrapper = parentGroup || renderer,\n parentNode = parentWrapper.element || renderer.box,\n childNodes,\n otherElement,\n otherZIndex,\n element = this.element,\n inserted,\n run = this.added,\n i;\n\n if (defined(value)) {\n element.zIndex = value; // So we can read it for other elements in the group\n value = +value;\n if (this[key] === value) { // Only update when needed (#3865)\n run = false;\n }\n this[key] = value;\n }\n\n // Insert according to this and other elements' zIndex. Before .add() is called,\n // nothing is done. Then on add, or by later calls to zIndexSetter, the node\n // is placed on the right place in the DOM.\n if (run) {\n value = this.zIndex;\n\n if (value && parentGroup) {\n parentGroup.handleZ = true;\n }\n\n childNodes = parentNode.childNodes;\n for (i = 0; i < childNodes.length && !inserted; i++) {\n otherElement = childNodes[i];\n otherZIndex = otherElement.zIndex;\n if (otherElement !== element && (\n // Insert before the first element with a higher zIndex\n pInt(otherZIndex) > value ||\n // If no zIndex given, insert before the first element with a zIndex\n (!defined(value) && defined(otherZIndex)) ||\n // Negative zIndex versus no zIndex:\n // On all levels except the highest. If the parent is