NBC News Clone summarizes the latest on: Index.html - Breaking News | NBC News Clone. This article is rewritten and presented in a simplified tone for a better reader experience.
Tracing Covid-19 deaths across the country from the first death to the hardest-hit county.
By Elliott Ramos, Pedro Barquinha and Jiachuan Wu Feb. 22, 2021
The United States on Sunday hit the half-a-million mark for the number of lives claimed by Covid-19.
Nearly a year since the coronavirus was declared a pandemic on March 11, 2020, 100,000 Covid-19 deaths in the U.S. was the low estimate. Early on, cities such as New York and Chicago were hit hard, particularly in communities of color. Then, hot spots in nursing homes and meatpacking plants began to emerge as the virus hit suburban and rural communities.
Scroll through the map to trace Covid-19 deaths across the country from the first death to the hardest-hit county.
Methodology NBC News, using Johns Hopkins University's per-county Covid-19 death counts and the U.S. Census Bureau's 2010 decennial census, plotted deaths based on census block-level populations within the county the deaths were reported in. Locations are representative and, except for Chicago, not exact. The locations of Chicago's Covid-19 deaths came from the Cook County Medical Examiner.
AdBlock Detected!
Please disable it to support our content.
") } function Fu(t) { return new RegExp("^(?:" + t.map(Ou).join("|") + ")", "i") } function Iu(t) { for (var n = {}, e = -1, r = t.length; ++e < r;) n[t[e].toLowerCase()] = e; return n } function Yu(t, n, e) { var r = Tg.exec(n.slice(e, e + 1)); return r ? (t.w = +r[0], e + r[0].length) : -1 } function Bu(t, n, e) { var r = Tg.exec(n.slice(e, e + 1)); return r ? (t.u = +r[0], e + r[0].length) : -1 } function Hu(t, n, e) { var r = Tg.exec(n.slice(e, e + 2)); return r ? (t.U = +r[0], e + r[0].length) : -1 } function ju(t, n, e) { var r = Tg.exec(n.slice(e, e + 2)); return r ? (t.V = +r[0], e + r[0].length) : -1 } function Xu(t, n, e) { var r = Tg.exec(n.slice(e, e + 2)); return r ? (t.W = +r[0], e + r[0].length) : -1 } function Vu(t, n, e) { var r = Tg.exec(n.slice(e, e + 4)); return r ? (t.y = +r[0], e + r[0].length) : -1 } function $u(t, n, e) { var r = Tg.exec(n.slice(e, e + 2)); return r ? (t.y = +r[0] + (+r[0] > 68 ? 1900 : 2e3), e + r[0].length) : -1 } function Wu(t, n, e) { var r = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e, e + 6)); return r ? (t.Z = r[1] ? 0 : -(r[2] + (r[3] || "00")), e + r[0].length) : -1 } function Zu(t, n, e) { var r = Tg.exec(n.slice(e, e + 2)); return r ? (t.m = r[0] - 1, e + r[0].length) : -1 } function Gu(t, n, e) { var r = Tg.exec(n.slice(e, e + 2)); return r ? (t.d = +r[0], e + r[0].length) : -1 } function Qu(t, n, e) { var r = Tg.exec(n.slice(e, e + 3)); return r ? (t.m = 0, t.d = +r[0], e + r[0].length) : -1 } function Ju(t, n, e) { var r = Tg.exec(n.slice(e, e + 2)); return r ? (t.H = +r[0], e + r[0].length) : -1 } function Ku(t, n, e) { var r = Tg.exec(n.slice(e, e + 2)); return r ? (t.M = +r[0], e + r[0].length) : -1 } function ta(t, n, e) { var r = Tg.exec(n.slice(e, e + 2)); return r ? (t.S = +r[0], e + r[0].length) : -1 } function na(t, n, e) { var r = Tg.exec(n.slice(e, e + 3)); return r ? (t.L = +r[0], e + r[0].length) : -1 } function ea(t, n, e) { var r = Tg.exec(n.slice(e, e + 6)); return r ? (t.L = Math.floor(r[0] / 1e3), e + r[0].length) : -1 } function ra(t, n, e) { var r = Ng.exec(n.slice(e, e + 1)); return r ? e + r[0].length : -1 } function ia(t, n, e) { var r = Tg.exec(n.slice(e)); return r ? (t.Q = +r[0], e + r[0].length) : -1 } function oa(t, n, e) { var r = Tg.exec(n.slice(e)); return r ? (t.Q = 1e3 * +r[0], e + r[0].length) : -1 } function ua(t, n) { return Uu(t.getDate(), n, 2) } function aa(t, n) { return Uu(t.getHours(), n, 2) } function ca(t, n) { return Uu(t.getHours() % 12 || 12, n, 2) } function sa(t, n) { return Uu(1 + Pv.count(Gv(t), t), n, 3) } function fa(t, n) { return Uu(t.getMilliseconds(), n, 3) } function la(t, n) { return fa(t, n) + "000" } function ha(t, n) { return Uu(t.getMonth() + 1, n, 2) } function pa(t, n) { return Uu(t.getMinutes(), n, 2) } function da(t, n) { return Uu(t.getSeconds(), n, 2) } function va(t) { var n = t.getDay(); return 0 === n ? 7 : n } function ga(t, n) { return Uu(Lv.count(Gv(t), t), n, 2) } function _a(t, n) { var e = t.getDay(); return t = e >= 4 || 0 === e ? Ov(t) : Ov.ceil(t), Uu(Ov.count(Gv(t), t) + (4 === Gv(t).getDay()), n, 2) } function ya(t) { return t.getDay() } function ma(t, n) { return Uu(qv.count(Gv(t), t), n, 2) } function xa(t, n) { return Uu(t.getFullYear() % 100, n, 2) } function ba(t, n) { return Uu(t.getFullYear() % 1e4, n, 4) } function wa(t) { var n = t.getTimezoneOffset(); return (n > 0 ? "-" : (n *= -1, "+")) + Uu(n / 60 | 0, "0", 2) + Uu(n % 60, "0", 2) } function Ma(t, n) { return Uu(t.getUTCDate(), n, 2) } function Ta(t, n) { return Uu(t.getUTCHours(), n, 2) } function Na(t, n) { return Uu(t.getUTCHours() % 12 || 12, n, 2) } function ka(t, n) { return Uu(1 + eg.count(xg(t), t), n, 3) } function Sa(t, n) { return Uu(t.getUTCMilliseconds(), n, 3) } function Ea(t, n) { return Sa(t, n) + "000" } function Aa(t, n) { return Uu(t.getUTCMonth() + 1, n, 2) } function Ca(t, n) { return Uu(t.getUTCMinutes(), n, 2) } function za(t, n) { return Uu(t.getUTCSeconds(), n, 2) } function Pa(t) { var n = t.getUTCDay(); return 0 === n ? 7 : n } function Ra(t, n) { return Uu(ig.count(xg(t), t), n, 2) } function La(t, n) { var e = t.getUTCDay(); return t = e >= 4 || 0 === e ? cg(t) : cg.ceil(t), Uu(cg.count(xg(t), t) + (4 === xg(t).getUTCDay()), n, 2) } function qa(t) { return t.getUTCDay() } function Da(t, n) { return Uu(og.count(xg(t), t), n, 2) } function Ua(t, n) { return Uu(t.getUTCFullYear() % 100, n, 2) } function Oa(t, n) { return Uu(t.getUTCFullYear() % 1e4, n, 4) } function Fa() { return "+0000" } function Ia() { return "%" } function Ya(t) { return +t } function Ba(t) { return Math.floor(+t / 1e3) } function Ha(n) { return bg = Du(n), t.timeFormat = bg.format, t.timeParse = bg.parse, t.utcFormat = bg.utcFormat, t.utcParse = bg.utcParse, bg } function ja(t) { return new Date(t) } function Xa(t) { return t instanceof Date ? +t : +new Date(+t) } function Va(t, n, r, i, o, u, a, c, s) { function f(e) { return (a(e) < e ? g : u(e) < e ? _ : o(e) < e ? y : i(e) < e ? m : n(e) < e ? r(e) < e ? x : b : t(e) < e ? w : M)(e) } function l(n, r, i, o) { if (null == n && (n = 10), "number" == typeof n) { var u = Math.abs(i - r) / n, a = e(function(t) { return t[2] }).right(T, u); a === T.length ? (o = p(r / Dg, i / Dg, n), n = t) : a ? (o = (a = T[u / T[a - 1][2] < T[a][2] / u ? a - 1 : a])[1], n = a[0]) : (o = Math.max(p(r, i, n), 1), n = c) } return null == o ? n : n.every(o) } var h = pu(su, an), d = h.invert, v = h.domain, g = s(".%L"), _ = s(":%S"), y = s("%I:%M"), m = s("%I %p"), x = s("%a %d"), b = s("%b %d"), w = s("%B"), M = s("%Y"), T = [ [a, 1, Cg], [a, 5, 5 * Cg], [a, 15, 15 * Cg], [a, 30, 30 * Cg], [u, 1, zg], [u, 5, 5 * zg], [u, 15, 15 * zg], [u, 30, 30 * zg], [o, 1, Pg], [o, 3, 3 * Pg], [o, 6, 6 * Pg], [o, 12, 12 * Pg], [i, 1, Rg], [i, 2, 2 * Rg], [r, 1, Lg], [n, 1, qg], [n, 3, 3 * qg], [t, 1, Dg] ]; return h.invert = function(t) { return new Date(d(t)) }, h.domain = function(t) { return arguments.length ? v(gv.call(t, Xa)) : v().map(ja) }, h.ticks = function(t, n) { var e, r = v(), i = r[0], o = r[r.length - 1], u = o < i; return u && (e = i, i = o, o = e), e = l(t, i, o, n), e = e ? e.range(i, o + 1) : [], u ? e.reverse() : e }, h.tickFormat = function(t, n) { return null == n ? f : s(n) }, h.nice = function(t, n) { var e = v(); return (t = l(t, e[0], e[e.length - 1], n)) ? v(_u(e, t)) : h }, h.copy = function() { return hu(h, Va(t, n, r, i, o, u, a, c, s)) }, h } function $a(t) { return t.match(/.{6}/g).map(function(t) { return "#" + t }) } function Wa(t) { var n = t.length; return function(e) { return t[Math.max(0, Math.min(n - 1, Math.floor(e * n)))] } } function Za(t) { function n(n) { var o = (n - e) / (r - e); return t(i ? Math.max(0, Math.min(1, o)) : o) } var e = 0, r = 1, i = !1; return n.domain = function(t) { return arguments.length ? (e = +t[0], r = +t[1], n) : [e, r] }, n.clamp = function(t) { return arguments.length ? (i = !!t, n) : i }, n.interpolator = function(e) { return arguments.length ? (t = e, n) : t }, n.copy = function() { return Za(t).domain([e, r]).clamp(i) }, du(n) } function Ga(t) { return function() { return t } } function Qa(t) { return t >= 1 ? i_ : t <= -1 ? -i_ : Math.asin(t) } function Ja(t) { return t.innerRadius } function Ka(t) { return t.outerRadius } function tc(t) { return t.startAngle } function nc(t) { return t.endAngle } function ec(t) { return t && t.padAngle } function rc(t, n, e, r, i, o, u) { var a = t - e, c = n - r, s = (u ? o : -o) / n_(a * a + c * c), f = s * c, l = -s * a, h = t + f, p = n + l, d = e + f, v = r + l, g = (h + d) / 2, _ = (p + v) / 2, y = d - h, m = v - p, x = y * y + m * m, b = i - o, w = h * v - d * p, M = (m < 0 ? -1 : 1) * n_(Jg(0, b * b * x - w * w)), T = (w * m - y * M) / x, N = (-w * y - m * M) / x, k = (w * m + y * M) / x, S = (-w * y + m * M) / x, E = T - g, A = N - _, C = k - g, z = S - _; return E * E + A * A > C * C + z * z && (T = k, N = S), { cx: T, cy: N, x01: -f, y01: -l, x11: T * (i / b - 1), y11: N * (i / b - 1) } } function ic(t) { this._context = t } function oc(t) { return new ic(t) } function uc(t) { return t[0] } function ac(t) { return t[1] } function cc() { function t(t) { var a, c, s, f = t.length, l = !1; for (null == i && (u = o(s = ee())), a = 0; a <= f; ++a) !(a < f && r(c = t[a], a, t)) === l && ((l = !l) ? u.lineStart() : u.lineEnd()), l && u.point(+n(c, a, t), +e(c, a, t)); if (s) return u = null, s + "" || null } var n = uc, e = ac, r = Ga(!0), i = null, o = oc, u = null; return t.x = function(e) { return arguments.length ? (n = "function" == typeof e ? e : Ga(+e), t) : n }, t.y = function(n) { return arguments.length ? (e = "function" == typeof n ? n : Ga(+n), t) : e }, t.defined = function(n) { return arguments.length ? (r = "function" == typeof n ? n : Ga(!!n), t) : r }, t.curve = function(n) { return arguments.length ? (o = n, null != i && (u = o(i)), t) : o }, t.context = function(n) { return arguments.length ? (null == n ? i = u = null : u = o(i = n), t) : i }, t } function sc() { function t(t) { var n, f, l, h, p, d = t.length, v = !1, g = new Array(d), _ = new Array(d); for (null == a && (s = c(p = ee())), n = 0; n <= d; ++n) { if (!(n < d && u(h = t[n], n, t)) === v) if (v = !v) f = n, s.areaStart(), s.lineStart(); else { for (s.lineEnd(), s.lineStart(), l = n - 1; l >= f; --l) s.point(g[l], _[l]); s.lineEnd(), s.areaEnd() } v && (g[n] = +e(h, n, t), _[n] = +i(h, n, t), s.point(r ? +r(h, n, t) : g[n], o ? +o(h, n, t) : _[n])) } if (p) return s = null, p + "" || null } function n() { return cc().defined(u).curve(c).context(a) } var e = uc, r = null, i = Ga(0), o = ac, u = Ga(!0), a = null, c = oc, s = null; return t.x = function(n) { return arguments.length ? (e = "function" == typeof n ? n : Ga(+n), r = null, t) : e }, t.x0 = function(n) { return arguments.length ? (e = "function" == typeof n ? n : Ga(+n), t) : e }, t.x1 = function(n) { return arguments.length ? (r = null == n ? null : "function" == typeof n ? n : Ga(+n), t) : r }, t.y = function(n) { return arguments.length ? (i = "function" == typeof n ? n : Ga(+n), o = null, t) : i }, t.y0 = function(n) { return arguments.length ? (i = "function" == typeof n ? n : Ga(+n), t) : i }, t.y1 = function(n) { return arguments.length ? (o = null == n ? null : "function" == typeof n ? n : Ga(+n), t) : o }, t.lineX0 = t.lineY0 = function() { return n().x(e).y(i) }, t.lineY1 = function() { return n().x(e).y(o) }, t.lineX1 = function() { return n().x(r).y(i) }, t.defined = function(n) { return arguments.length ? (u = "function" == typeof n ? n : Ga(!!n), t) : u }, t.curve = function(n) { return arguments.length ? (c = n, null != a && (s = c(a)), t) : c }, t.context = function(n) { return arguments.length ? (null == n ? a = s = null : s = c(a = n), t) : a }, t } function fc(t, n) { return n < t ? -1 : n > t ? 1 : n >= t ? 0 : NaN } function lc(t) { return t } function hc(t) { this._curve = t } function pc(t) { function n(n) { return new hc(t(n)) } return n._curve = t, n } function dc(t) { var n = t.curve; return t.angle = t.x, delete t.x, t.radius = t.y, delete t.y, t.curve = function(t) { return arguments.length ? n(pc(t)) : n()._curve }, t } function vc() { return dc(cc().curve(u_)) } function gc() { var t = sc().curve(u_), n = t.curve, e = t.lineX0, r = t.lineX1, i = t.lineY0, o = t.lineY1; return t.angle = t.x, delete t.x, t.startAngle = t.x0, delete t.x0, t.endAngle = t.x1, delete t.x1, t.radius = t.y, delete t.y, t.innerRadius = t.y0, delete t.y0, t.outerRadius = t.y1, delete t.y1, t.lineStartAngle = function() { return dc(e()) }, delete t.lineX0, t.lineEndAngle = function() { return dc(r()) }, delete t.lineX1, t.lineInnerRadius = function() { return dc(i()) }, delete t.lineY0, t.lineOuterRadius = function() { return dc(o()) }, delete t.lineY1, t.curve = function(t) { return arguments.length ? n(pc(t)) : n()._curve }, t } function _c(t, n) { return [(n = +n) * Math.cos(t -= Math.PI / 2), n * Math.sin(t)] } function yc(t) { return t.source } function mc(t) { return t.target } function xc(t) { function n() { var n, a = a_.call(arguments), c = e.apply(this, a), s = r.apply(this, a); if (u || (u = n = ee()), t(u, +i.apply(this, (a[0] = c, a)), +o.apply(this, a), +i.apply(this, (a[0] = s, a)), +o.apply(this, a)), n) return u = null, n + "" || null } var e = yc, r = mc, i = uc, o = ac, u = null; return n.source = function(t) { return arguments.length ? (e = t, n) : e }, n.target = function(t) { return arguments.length ? (r = t, n) : r }, n.x = function(t) { return arguments.length ? (i = "function" == typeof t ? t : Ga(+t), n) : i }, n.y = function(t) { return arguments.length ? (o = "function" == typeof t ? t : Ga(+t), n) : o }, n.context = function(t) { return arguments.length ? (u = null == t ? null : t, n) : u }, n } function bc(t, n, e, r, i) { t.moveTo(n, e), t.bezierCurveTo(n = (n + r) / 2, e, n, i, r, i) } function wc(t, n, e, r, i) { t.moveTo(n, e), t.bezierCurveTo(n, e = (e + i) / 2, r, e, r, i) } function Mc(t, n, e, r, i) { var o = _c(n, e), u = _c(n, e = (e + i) / 2), a = _c(r, e), c = _c(r, i); t.moveTo(o[0], o[1]), t.bezierCurveTo(u[0], u[1], a[0], a[1], c[0], c[1]) } function Tc() {} function Nc(t, n, e) { t._context.bezierCurveTo((2 * t._x0 + t._x1) / 3, (2 * t._y0 + t._y1) / 3, (t._x0 + 2 * t._x1) / 3, (t._y0 + 2 * t._y1) / 3, (t._x0 + 4 * t._x1 + n) / 6, (t._y0 + 4 * t._y1 + e) / 6) } function kc(t) { this._context = t } function Sc(t) { this._context = t } function Ec(t) { this._context = t } function Ac(t, n) { this._basis = new kc(t), this._beta = n } function Cc(t, n, e) { t._context.bezierCurveTo(t._x1 + t._k * (t._x2 - t._x0), t._y1 + t._k * (t._y2 - t._y0), t._x2 + t._k * (t._x1 - n), t._y2 + t._k * (t._y1 - e), t._x2, t._y2) } function zc(t, n) { this._context = t, this._k = (1 - n) / 6 } function Pc(t, n) { this._context = t, this._k = (1 - n) / 6 } function Rc(t, n) { this._context = t, this._k = (1 - n) / 6 } function Lc(t, n, e) { var r = t._x1, i = t._y1, o = t._x2, u = t._y2; if (t._l01_a > e_) { var a = 2 * t._l01_2a + 3 * t._l01_a * t._l12_a + t._l12_2a, c = 3 * t._l01_a * (t._l01_a + t._l12_a); r = (r * a - t._x0 * t._l12_2a + t._x2 * t._l01_2a) / c, i = (i * a - t._y0 * t._l12_2a + t._y2 * t._l01_2a) / c } if (t._l23_a > e_) { var s = 2 * t._l23_2a + 3 * t._l23_a * t._l12_a + t._l12_2a, f = 3 * t._l23_a * (t._l23_a + t._l12_a); o = (o * s + t._x1 * t._l23_2a - n * t._l12_2a) / f, u = (u * s + t._y1 * t._l23_2a - e * t._l12_2a) / f } t._context.bezierCurveTo(r, i, o, u, t._x2, t._y2) } function qc(t, n) { this._context = t, this._alpha = n } function Dc(t, n) { this._context = t, this._alpha = n } function Uc(t, n) { this._context = t, this._alpha = n } function Oc(t) { this._context = t } function Fc(t) { return t < 0 ? -1 : 1 } function Ic(t, n, e) { var r = t._x1 - t._x0, i = n - t._x1, o = (t._y1 - t._y0) / (r || i < 0 && -0), u = (e - t._y1) / (i || r < 0 && -0), a = (o * i + u * r) / (r + i); return (Fc(o) + Fc(u)) * Math.min(Math.abs(o), Math.abs(u), .5 * Math.abs(a)) || 0 } function Yc(t, n) { var e = t._x1 - t._x0; return e ? (3 * (t._y1 - t._y0) / e - n) / 2 : n } function Bc(t, n, e) { var r = t._x0, i = t._y0, o = t._x1, u = t._y1, a = (o - r) / 3; t._context.bezierCurveTo(r + a, i + a * n, o - a, u - a * e, o, u) } function Hc(t) { this._context = t } function jc(t) { this._context = new Xc(t) } function Xc(t) { this._context = t } function Vc(t) { this._context = t } function $c(t) { var n, e, r = t.length - 1, i = new Array(r), o = new Array(r), u = new Array(r); for (i[0] = 0, o[0] = 2, u[0] = t[0] + 2 * t[1], n = 1; n < r - 1; ++n) i[n] = 1, o[n] = 4, u[n] = 4 * t[n] + 2 * t[n + 1]; for (i[r - 1] = 2, o[r - 1] = 7, u[r - 1] = 8 * t[r - 1] + t[r], n = 1; n < r; ++n) e = i[n] / o[n - 1], o[n] -= e, u[n] -= e * u[n - 1]; for (i[r - 1] = u[r - 1] / o[r - 1], n = r - 2; n >= 0; --n) i[n] = (u[n] - i[n + 1]) / o[n]; for (o[r - 1] = (t[r] + i[r - 1]) / 2, n = 0; n < r - 1; ++n) o[n] = 2 * t[n + 1] - i[n + 1]; return [i, o] } function Wc(t, n) { this._context = t, this._t = n } function Zc(t, n) { if ((i = t.length) > 1) for (var e, r, i, o = 1, u = t[n[0]], a = u.length; o < i; ++o) for (r = u, u = t[n[o]], e = 0; e < a; ++e) u[e][1] += u[e][0] = isNaN(r[e][1]) ? r[e][0] : r[e][1] } function Gc(t) { for (var n = t.length, e = new Array(n); --n >= 0;) e[n] = n; return e } function Qc(t, n) { return t[n] } function Jc(t) { var n = t.map(Kc); return Gc(t).sort(function(t, e) { return n[t] - n[e] }) } function Kc(t) { for (var n, e = 0, r = -1, i = t.length; ++r < i;)(n = +t[r][1]) && (e += n); return e } function ts(t) { return function() { return t } } function ns(t) { return t[0] } function es(t) { return t[1] } function rs() { this._ = null } function is(t) { t.U = t.C = t.L = t.R = t.P = t.N = null } function os(t, n) { var e = n, r = n.R, i = e.U; i ? i.L === e ? i.L = r : i.R = r : t._ = r, r.U = i, e.U = r, e.R = r.L, e.R && (e.R.U = e), r.L = e } function us(t, n) { var e = n, r = n.L, i = e.U; i ? i.L === e ? i.L = r : i.R = r : t._ = r, r.U = i, e.U = r, e.L = r.R, e.L && (e.L.U = e), r.R = e } function as(t) { for (; t.L;) t = t.L; return t } function cs(t, n, e, r) { var i = [null, null], o = D_.push(i) - 1; return i.left = t, i.right = n, e && fs(i, t, n, e), r && fs(i, n, t, r), L_[t.index].halfedges.push(o), L_[n.index].halfedges.push(o), i } function ss(t, n, e) { var r = [n, e]; return r.left = t, r } function fs(t, n, e, r) { t[0] || t[1] ? t.left === e ? t[1] = r : t[0] = r : (t[0] = r, t.left = n, t.right = e) } function ls(t, n, e, r, i) { var o, u = t[0], a = t[1], c = u[0], s = u[1], f = 0, l = 1, h = a[0] - c, p = a[1] - s; if (o = n - c, h || !(o > 0)) { if (o /= h, h < 0) { if (o < f) return; o < l && (l = o) } else if (h > 0) { if (o > l) return; o > f && (f = o) } if (o = r - c, h || !(o < 0)) { if (o /= h, h < 0) { if (o > l) return; o > f && (f = o) } else if (h > 0) { if (o < f) return; o < l && (l = o) } if (o = e - s, p || !(o > 0)) { if (o /= p, p < 0) { if (o < f) return; o < l && (l = o) } else if (p > 0) { if (o > l) return; o > f && (f = o) } if (o = i - s, p || !(o < 0)) { if (o /= p, p < 0) { if (o > l) return; o > f && (f = o) } else if (p > 0) { if (o < f) return; o < l && (l = o) } return !(f > 0 || l < 1) || (f > 0 && (t[0] = [c + f * h, s + f * p]), l < 1 && (t[1] = [c + l * h, s + l * p]), !0) } } } } } function hs(t, n, e, r, i) { var o = t[1]; if (o) return !0; var u, a, c = t[0], s = t.left, f = t.right, l = s[0], h = s[1], p = f[0], d = f[1], v = (l + p) / 2, g = (h + d) / 2; if (d === h) { if (v < n || v >= r) return; if (l > p) { if (c) { if (c[1] >= i) return } else c = [v, e]; o = [v, i] } else { if (c) { if (c[1] < e) return } else c = [v, i]; o = [v, e] } } else if (u = (l - p) / (d - h), a = g - u * v, u < -1 || u > 1) if (l > p) { if (c) { if (c[1] >= i) return } else c = [(e - a) / u, e]; o = [(i - a) / u, i] } else { if (c) { if (c[1] < e) return } else c = [(i - a) / u, i]; o = [(e - a) / u, e] } else if (h < d) { if (c) { if (c[0] >= r) return } else c = [n, u * n + a]; o = [r, u * r + a] } else { if (c) { if (c[0] < n) return } else c = [r, u * r + a]; o = [n, u * n + a] } return t[0] = c, t[1] = o, !0 } function ps(t, n) { var e = t.site, r = n.left, i = n.right; return e === i && (i = r, r = e), i ? Math.atan2(i[1] - r[1], i[0] - r[0]) : (e === r ? (r = n[1], i = n[0]) : (r = n[0], i = n[1]), Math.atan2(r[0] - i[0], i[1] - r[1])) } function ds(t, n) { return n[+(n.left !== t.site)] } function vs(t, n) { return n[+(n.left === t.site)] } function gs(t) { var n = t.P, e = t.N; if (n && e) { var r = n.site, i = t.site, o = e.site; if (r !== o) { var u = i[0], a = i[1], c = r[0] - u, s = r[1] - a, f = o[0] - u, l = o[1] - a, h = 2 * (c * l - s * f); if (!(h >= -I_)) { var p = c * c + s * s, d = f * f + l * l, v = (l * p - s * d) / h, g = (c * d - f * p) / h, _ = U_.pop() || new function() { is(this), this.x = this.y = this.arc = this.site = this.cy = null }; _.arc = t, _.site = i, _.x = v + u, _.y = (_.cy = g + a) + Math.sqrt(v * v + g * g), t.circle = _; for (var y = null, m = q_._; m;) if (_.y < m.y || _.y === m.y && _.x <= m.x) { if (!m.L) { y = m.P; break } m = m.L } else { if (!m.R) { y = m; break } m = m.R } q_.insert(y, _), y || (P_ = _) } } } } function _s(t) { var n = t.circle; n && (n.P || (P_ = n.N), q_.remove(n), U_.push(n), is(n), t.circle = null) } function ys(t) { var n = O_.pop() || new function() { is(this), this.edge = this.site = this.circle = null }; return n.site = t, n } function ms(t) { _s(t), R_.remove(t), O_.push(t), is(t) } function xs(t) { var n = t.circle, e = n.x, r = n.cy, i = [e, r], o = t.P, u = t.N, a = [t]; ms(t); for (var c = o; c.circle && Math.abs(e - c.circle.x) < F_ && Math.abs(r - c.circle.cy) < F_;) o = c.P, a.unshift(c), ms(c), c = o; a.unshift(c), _s(c); for (var s = u; s.circle && Math.abs(e - s.circle.x) < F_ && Math.abs(r - s.circle.cy) < F_;) u = s.N, a.push(s), ms(s), s = u; a.push(s), _s(s); var f, l = a.length; for (f = 1; f < l; ++f) s = a[f], c = a[f - 1], fs(s.edge, c.site, s.site, i); c = a[0], (s = a[l - 1]).edge = cs(c.site, s.site, null, i), gs(c), gs(s) } function bs(t) { for (var n, e, r, i, o = t[0], u = t[1], a = R_._; a;) if ((r = ws(a, u) - o) > F_) a = a.L; else { if (!((i = o - function(t, n) { var e = t.N; if (e) return ws(e, n); var r = t.site; return r[1] === n ? r[0] : 1 / 0 }(a, u)) > F_)) { r > -F_ ? (n = a.P, e = a) : i > -F_ ? (n = a, e = a.N) : n = e = a; break } if (!a.R) { n = a; break } a = a.R }(function(t) { L_[t.index] = { site: t, halfedges: [] } })(t); var c = ys(t); if (R_.insert(n, c), n || e) { if (n === e) return _s(n), e = ys(n.site), R_.insert(c, e), c.edge = e.edge = cs(n.site, c.site), gs(n), void gs(e); if (e) { _s(n), _s(e); var s = n.site, f = s[0], l = s[1], h = t[0] - f, p = t[1] - l, d = e.site, v = d[0] - f, g = d[1] - l, _ = 2 * (h * g - p * v), y = h * h + p * p, m = v * v + g * g, x = [(g * y - p * m) / _ + f, (h * m - v * y) / _ + l]; fs(e.edge, s, d, x), c.edge = cs(s, t, null, x), e.edge = cs(t, d, null, x), gs(n), gs(e) } else c.edge = cs(n.site, c.site) } } function ws(t, n) { var e = t.site, r = e[0], i = e[1], o = i - n; if (!o) return r; var u = t.P; if (!u) return -1 / 0; var a = (e = u.site)[0], c = e[1], s = c - n; if (!s) return a; var f = a - r, l = 1 / o - 1 / s, h = f / s; return l ? (-h + Math.sqrt(h * h - 2 * l * (f * f / (-2 * s) - c + s / 2 + i - o / 2))) / l + r : (r + a) / 2 } function Ms(t, n, e) { return (t[0] - e[0]) * (n[1] - t[1]) - (t[0] - n[0]) * (e[1] - t[1]) } function Ts(t, n) { return n[1] - t[1] || n[0] - t[0] } function Ns(t, n) { var e, r, i, o = t.sort(Ts).pop(); for (D_ = [], L_ = new Array(t.length), R_ = new rs, q_ = new rs;;) if (i = P_, o && (!i || o[1] < i.y || o[1] === i.y && o[0] < i.x)) o[0] === e && o[1] === r || (bs(o), e = o[0], r = o[1]), o = t.pop(); else { if (!i) break; xs(i.arc) } if (function() { for (var t, n, e, r, i = 0, o = L_.length; i < o; ++i) if ((t = L_[i]) && (r = (n = t.halfedges).length)) { var u = new Array(r), a = new Array(r); for (e = 0; e < r; ++e) u[e] = e, a[e] = ps(t, D_[n[e]]); for (u.sort(function(t, n) { return a[n] - a[t] }), e = 0; e < r; ++e) a[e] = n[u[e]]; for (e = 0; e < r; ++e) n[e] = a[e] } }(), n) { var u = +n[0][0], a = +n[0][1], c = +n[1][0], s = +n[1][1]; (function(t, n, e, r) { for (var i, o = D_.length; o--;) hs(i = D_[o], t, n, e, r) && ls(i, t, n, e, r) && (Math.abs(i[0][0] - i[1][0]) > F_ || Math.abs(i[0][1] - i[1][1]) > F_) || delete D_[o] })(u, a, c, s), function(t, n, e, r) { var i, o, u, a, c, s, f, l, h, p, d, v, g = L_.length, _ = !0; for (i = 0; i < g; ++i) if (o = L_[i]) { for (u = o.site, a = (c = o.halfedges).length; a--;) D_[c[a]] || c.splice(a, 1); for (a = 0, s = c.length; a < s;) d = (p = vs(o, D_[c[a]]))[0], v = p[1], l = (f = ds(o, D_[c[++a % s]]))[0], h = f[1], (Math.abs(d - l) > F_ || Math.abs(v - h) > F_) && (c.splice(a, 0, D_.push(ss(u, p, Math.abs(d - t) < F_ && r - v > F_ ? [t, Math.abs(l - t) < F_ ? h : r] : Math.abs(v - r) < F_ && e - d > F_ ? [Math.abs(h - r) < F_ ? l : e, r] : Math.abs(d - e) < F_ && v - n > F_ ? [e, Math.abs(l - e) < F_ ? h : n] : Math.abs(v - n) < F_ && d - t > F_ ? [Math.abs(h - n) < F_ ? l : t, n] : null)) - 1), ++s); s && (_ = !1) } if (_) { var y, m, x, b = 1 / 0; for (i = 0, _ = null; i < g; ++i)(o = L_[i]) && (x = (y = (u = o.site)[0] - t) * y + (m = u[1] - n) * m) < b && (b = x, _ = o); if (_) { var w = [t, n], M = [t, r], T = [e, r], N = [e, n]; _.halfedges.push(D_.push(ss(u = _.site, w, M)) - 1, D_.push(ss(u, M, T)) - 1, D_.push(ss(u, T, N)) - 1, D_.push(ss(u, N, w)) - 1) } } for (i = 0; i < g; ++i)(o = L_[i]) && (o.halfedges.length || delete L_[i]) }(u, a, c, s) } this.edges = D_, this.cells = L_, R_ = q_ = D_ = L_ = null } function ks(t) { return function() { return t } } function Ss(t, n, e) { this.k = t, this.x = n, this.y = e } function Es(t) { return t.__zoom || Y_ } function As() { t.event.stopImmediatePropagation() } function Cs() { t.event.preventDefault(), t.event.stopImmediatePropagation() } function zs() { return !t.event.button } function Ps() { var t, n, e = this; return e instanceof SVGElement ? (t = (e = e.ownerSVGElement || e).width.baseVal.value, n = e.height.baseVal.value) : (t = e.clientWidth, n = e.clientHeight), [ [0, 0], [t, n] ] } function Rs() { return this.__zoom || Y_ } function Ls() { return -t.event.deltaY * (t.event.deltaMode ? 120 : 1) / 500 } function qs() { return "ontouchstart" in this } function Ds(t, n, e) { var r = t.invertX(n[0][0]) - e[0][0], i = t.invertX(n[1][0]) - e[1][0], o = t.invertY(n[0][1]) - e[0][1], u = t.invertY(n[1][1]) - e[1][1]; return t.translate(i > r ? (r + i) / 2 : Math.min(0, r) || Math.max(0, i), u > o ? (o + u) / 2 : Math.min(0, o) || Math.max(0, u)) } var Us = e(n), Os = Us.right, Fs = Us.left, Is = Array.prototype, Ys = Is.slice, Bs = Is.map, Hs = Math.sqrt(50), js = Math.sqrt(10), Xs = Math.sqrt(2), Vs = Array.prototype.slice, $s = 1, Ws = 2, Zs = 3, Gs = 4, Qs = 1e-6, Js = { value: function() {} }; k.prototype = N.prototype = { constructor: k, on: function(t, n) { var e, r = this._, i = function(t, n) { return t.trim().split(/^|\s+/).map(function(t) { var e = "", r = t.indexOf("."); if (r >= 0 && (e = t.slice(r + 1), t = t.slice(0, r)), t && !n.hasOwnProperty(t)) throw new Error("unknown type: " + t); return { type: t, name: e } }) }(t + "", r), o = -1, u = i.length; { if (!(arguments.length < 2)) { if (null != n && "function" != typeof n) throw new Error("invalid callback: " + n); for (; ++o < u;) if (e = (t = i[o]).type) r[e] = S(r[e], t.name, n); else if (null == n) for (e in r) r[e] = S(r[e], t.name, null); return this } for (; ++o < u;) if ((e = (t = i[o]).type) && (e = function(t, n) { for (var e, r = 0, i = t.length; r < i; ++r) if ((e = t[r]).name === n) return e.value }(r[e], t.name))) return e } }, copy: function() { var t = {}, n = this._; for (var e in n) t[e] = n[e].slice(); return new k(t) }, call: function(t, n) { if ((e = arguments.length - 2) > 0) for (var e, r, i = new Array(e), o = 0; o < e; ++o) i[o] = arguments[o + 2]; if (!this._.hasOwnProperty(t)) throw new Error("unknown type: " + t); for (o = 0, e = (r = this._[t]).length; o < e; ++o) r[o].value.apply(n, i) }, apply: function(t, n, e) { if (!this._.hasOwnProperty(t)) throw new Error("unknown type: " + t); for (var r = this._[t], i = 0, o = r.length; i < o; ++i) r[i].value.apply(n, e) } }; var Ks = "http://www.w3.org/1999/xhtml", tf = { svg: "http://www.w3.org/2000/svg", xhtml: Ks, xlink: "http://www.w3.org/1999/xlink", xml: "http://www.w3.org/XML/1998/namespace", xmlns: "http://www.w3.org/2000/xmlns/" }, nf = function(t) { return function() { return this.matches(t) } }; if ("undefined" != typeof document) { var ef = document.documentElement; if (!ef.matches) { var rf = ef.webkitMatchesSelector || ef.msMatchesSelector || ef.mozMatchesSelector || ef.oMatchesSelector; nf = function(t) { return function() { return rf.call(this, t) } } } } var of = nf; q.prototype = { constructor: q, appendChild: function(t) { return this._parent.insertBefore(t, this._next) }, insertBefore: function(t, n) { return this._parent.insertBefore(t, n) }, querySelector: function(t) { return this._parent.querySelector(t) }, querySelectorAll: function(t) { return this._parent.querySelectorAll(t) } }; var uf = "$"; H.prototype = { add: function(t) { this._names.indexOf(t) < 0 && (this._names.push(t), this._node.setAttribute("class", this._names.join(" "))) }, remove: function(t) { var n = this._names.indexOf(t); n >= 0 && (this._names.splice(n, 1), this._node.setAttribute("class", this._names.join(" "))) }, contains: function(t) { return this._names.indexOf(t) >= 0 } }; var af = {}; if (t.event = null, "undefined" != typeof document) { "onmouseenter" in document.documentElement || (af = { mouseenter: "mouseover", mouseleave: "mouseout" }) } var cf = [null]; ut.prototype = at.prototype = { constructor: ut, select: function(t) { "function" != typeof t && (t = z(t)); for (var n = this._groups, e = n.length, r = new Array(e), i = 0; i < e; ++i) for (var o, u, a = n[i], c = a.length, s = r[i] = new Array(c), f = 0; f < c; ++f)(o = a[f]) && (u = t.call(o, o.__data__, f, a)) && ("__data__" in o && (u.__data__ = o.__data__), s[f] = u); return new ut(r, this._parents) }, selectAll: function(t) { "function" != typeof t && (t = R(t)); for (var n = this._groups, e = n.length, r = [], i = [], o = 0; o < e; ++o) for (var u, a = n[o], c = a.length, s = 0; s < c; ++s)(u = a[s]) && (r.push(t.call(u, u.__data__, s, a)), i.push(u)); return new ut(r, i) }, filter: function(t) { "function" != typeof t && (t = of (t)); for (var n = this._groups, e = n.length, r = new Array(e), i = 0; i < e; ++i) for (var o, u = n[i], a = u.length, c = r[i] = [], s = 0; s < a; ++s)(o = u[s]) && t.call(o, o.__data__, s, u) && c.push(o); return new ut(r, this._parents) }, data: function(t, n) { if (!t) return p = new Array(this.size()), s = -1, this.each(function(t) { p[++s] = t }), p; var e = n ? U : D, r = this._parents, i = this._groups; "function" != typeof t && (t = function(t) { return function() { return t } }(t)); for (var o = i.length, u = new Array(o), a = new Array(o), c = new Array(o), s = 0; s < o; ++s) { var f = r[s], l = i[s], h = l.length, p = t.call(f, f && f.__data__, s, r), d = p.length, v = a[s] = new Array(d), g = u[s] = new Array(d); e(f, l, v, g, c[s] = new Array(h), p, n); for (var _, y, m = 0, x = 0; m < d; ++m) if (_ = v[m]) { for (m >= x && (x = m + 1); !(y = g[x]) && ++x < d;); _._next = y || null } } return u = new ut(u, r), u._enter = a, u._exit = c, u }, enter: function() { return new ut(this._enter || this._groups.map(L), this._parents) }, exit: function() { return new ut(this._exit || this._groups.map(L), this._parents) }, merge: function(t) { for (var n = this._groups, e = t._groups, r = n.length, i = e.length, o = Math.min(r, i), u = new Array(r), a = 0; a < o; ++a) for (var c, s = n[a], f = e[a], l = s.length, h = u[a] = new Array(l), p = 0; p < l; ++p)(c = s[p] || f[p]) && (h[p] = c); for (; a < r; ++a) u[a] = n[a]; return new ut(u, this._parents) }, order: function() { for (var t = this._groups, n = -1, e = t.length; ++n < e;) for (var r, i = t[n], o = i.length - 1, u = i[o]; --o >= 0;)(r = i[o]) && (u && u !== r.nextSibling && u.parentNode.insertBefore(r, u), u = r); return this }, sort: function(t) { function n(n, e) { return n && e ? t(n.__data__, e.__data__) : !n - !e } t || (t = O); for (var e = this._groups, r = e.length, i = new Array(r), o = 0; o < r; ++o) { for (var u, a = e[o], c = a.length, s = i[o] = new Array(c), f = 0; f < c; ++f)(u = a[f]) && (s[f] = u); s.sort(n) } return new ut(i, this._parents).order() }, call: function() { var t = arguments[0]; return arguments[0] = this, t.apply(null, arguments), this }, nodes: function() { var t = new Array(this.size()), n = -1; return this.each(function() { t[++n] = this }), t }, node: function() { for (var t = this._groups, n = 0, e = t.length; n < e; ++n) for (var r = t[n], i = 0, o = r.length; i < o; ++i) { var u = r[i]; if (u) return u } return null }, size: function() { var t = 0; return this.each(function() { ++t }), t }, empty: function() { return !this.node() }, each: function(t) { for (var n = this._groups, e = 0, r = n.length; e < r; ++e) for (var i, o = n[e], u = 0, a = o.length; u < a; ++u)(i = o[u]) && t.call(i, i.__data__, u, o); return this }, attr: function(t, n) { var e = E(t); if (arguments.length < 2) { var r = this.node(); return e.local ? r.getAttributeNS(e.space, e.local) : r.getAttribute(e) } return this.each((null == n ? e.local ? function(t) { return function() { this.removeAttributeNS(t.space, t.local) } } : function(t) { return function() { this.removeAttribute(t) } } : "function" == typeof n ? e.local ? function(t, n) { return function() { var e = n.apply(this, arguments); null == e ? this.removeAttributeNS(t.space, t.local) : this.setAttributeNS(t.space, t.local, e) } } : function(t, n) { return function() { var e = n.apply(this, arguments); null == e ? this.removeAttribute(t) : this.setAttribute(t, e) } } : e.local ? function(t, n) { return function() { this.setAttributeNS(t.space, t.local, n) } } : function(t, n) { return function() { this.setAttribute(t, n) } })(e, n)) }, style: function(t, n, e) { return arguments.length > 1 ? this.each((null == n ? function(t) { return function() { this.style.removeProperty(t) } } : "function" == typeof n ? function(t, n, e) { return function() { var r = n.apply(this, arguments); null == r ? this.style.removeProperty(t) : this.style.setProperty(t, r, e) } } : function(t, n, e) { return function() { this.style.setProperty(t, n, e) } })(t, n, null == e ? "" : e)) : I(this.node(), t) }, property: function(t, n) { return arguments.length > 1 ? this.each((null == n ? function(t) { return function() { delete this[t] } } : "function" == typeof n ? function(t, n) { return function() { var e = n.apply(this, arguments); null == e ? delete this[t] : this[t] = e } } : function(t, n) { return function() { this[t] = n } })(t, n)) : this.node()[t] }, classed: function(t, n) { var e = Y(t + ""); if (arguments.length < 2) { for (var r = B(this.node()), i = -1, o = e.length; ++i < o;) if (!r.contains(e[i])) return !1; return !0 } return this.each(("function" == typeof n ? function(t, n) { return function() { (n.apply(this, arguments) ? j : X)(this, t) } } : n ? function(t) { return function() { j(this, t) } } : function(t) { return function() { X(this, t) } })(e, n)) }, text: function(t) { return arguments.length ? this.each(null == t ? V : ("function" == typeof t ? function(t) { return function() { var n = t.apply(this, arguments); this.textContent = null == n ? "" : n } } : function(t) { return function() { this.textContent = t } })(t)) : this.node().textContent }, html: function(t) { return arguments.length ? this.each(null == t ? $ : ("function" == typeof t ? function(t) { return function() { var n = t.apply(this, arguments); this.innerHTML = null == n ? "" : n } } : function(t) { return function() { this.innerHTML = t } })(t)) : this.node().innerHTML }, raise: function() { return this.each(W) }, lower: function() { return this.each(Z) }, append: function(t) { var n = "function" == typeof t ? t : A(t); return this.select(function() { return this.appendChild(n.apply(this, arguments)) }) }, insert: function(t, n) { var e = "function" == typeof t ? t : A(t), r = null == n ? G : "function" == typeof n ? n : z(n); return this.select(function() { return this.insertBefore(e.apply(this, arguments), r.apply(this, arguments) || null) }) }, remove: function() { return this.each(Q) }, clone: function(t) { return this.select(t ? K : J) }, datum: function(t) { return arguments.length ? this.property("__data__", t) : this.node().__data__ }, on: function(t, n, e) { var r, i, o = function(t) { return t.trim().split(/^|\s+/).map(function(t) { var n = "", e = t.indexOf("."); return e >= 0 && (n = t.slice(e + 1), t = t.slice(0, e)), { type: t, name: n } }) }(t + ""), u = o.length; if (!(arguments.length < 2)) { for (a = n ? rt : et, null == e && (e = !1), r = 0; r < u; ++r) this.each(a(o[r], n, e)); return this } var a = this.node().__on; if (a) for (var c, s = 0, f = a.length; s < f; ++s) for (r = 0, c = a[s]; r < u; ++r) if ((i = o[r]).type === c.type && i.name === c.name) return c.value }, dispatch: function(t, n) { return this.each(("function" == typeof n ? function(t, n) { return function() { return ot(this, t, n.apply(this, arguments)) } } : function(t, n) { return function() { return ot(this, t, n) } })(t, n)) } }; var sf = 0; ft.prototype = st.prototype = { constructor: ft, get: function(t) { for (var n = this._; !(n in t);) if (!(t = t.parentNode)) return; return t[n] }, set: function(t, n) { return t[this._] = n }, remove: function(t) { return this._ in t && delete t[this._] }, toString: function() { return this._ } }, xt.prototype.on = function() { var t = this._.on.apply(this._, arguments); return t === this._ ? this : t }; var ff = "\\s*([+-]?\\d+)\\s*", lf = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", hf = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", pf = /^#([0-9a-f]{3})$/, df = /^#([0-9a-f]{6})$/, vf = new RegExp("^rgb\\(" + [ff, ff, ff] + "\\)$"), gf = new RegExp("^rgb\\(" + [hf, hf, hf] + "\\)$"), _f = new RegExp("^rgba\\(" + [ff, ff, ff, lf] + "\\)$"), yf = new RegExp("^rgba\\(" + [hf, hf, hf, lf] + "\\)$"), mf = new RegExp("^hsl\\(" + [lf, hf, hf] + "\\)$"), xf = new RegExp("^hsla\\(" + [lf, hf, hf, lf] + "\\)$"), bf = { aliceblue: 15792383, antiquewhite: 16444375, aqua: 65535, aquamarine: 8388564, azure: 15794175, beige: 16119260, bisque: 16770244, black: 0, blanchedalmond: 16772045, blue: 255, blueviolet: 9055202, brown: 10824234, burlywood: 14596231, cadetblue: 6266528, chartreuse: 8388352, chocolate: 13789470, coral: 16744272, cornflowerblue: 6591981, cornsilk: 16775388, crimson: 14423100, cyan: 65535, darkblue: 139, darkcyan: 35723, darkgoldenrod: 12092939, darkgray: 11119017, darkgreen: 25600, darkgrey: 11119017, darkkhaki: 12433259, darkmagenta: 9109643, darkolivegreen: 5597999, darkorange: 16747520, darkorchid: 10040012, darkred: 9109504, darksalmon: 15308410, darkseagreen: 9419919, darkslateblue: 4734347, darkslategray: 3100495, darkslategrey: 3100495, darkturquoise: 52945, darkviolet: 9699539, deeppink: 16716947, deepskyblue: 49151, dimgray: 6908265, dimgrey: 6908265, dodgerblue: 2003199, firebrick: 11674146, floralwhite: 16775920, forestgreen: 2263842, fuchsia: 16711935, gainsboro: 14474460, ghostwhite: 16316671, gold: 16766720, goldenrod: 14329120, gray: 8421504, green: 32768, greenyellow: 11403055, grey: 8421504, honeydew: 15794160, hotpink: 16738740, indianred: 13458524, indigo: 4915330, ivory: 16777200, khaki: 15787660, lavender: 15132410, lavenderblush: 16773365, lawngreen: 8190976, lemonchiffon: 16775885, lightblue: 11393254, lightcoral: 15761536, lightcyan: 14745599, lightgoldenrodyellow: 16448210, lightgray: 13882323, lightgreen: 9498256, lightgrey: 13882323, lightpink: 16758465, lightsalmon: 16752762, lightseagreen: 2142890, lightskyblue: 8900346, lightslategray: 7833753, lightslategrey: 7833753, lightsteelblue: 11584734, lightyellow: 16777184, lime: 65280, limegreen: 3329330, linen: 16445670, magenta: 16711935, maroon: 8388608, mediumaquamarine: 6737322, mediumblue: 205, mediumorchid: 12211667, mediumpurple: 9662683, mediumseagreen: 3978097, mediumslateblue: 8087790, mediumspringgreen: 64154, mediumturquoise: 4772300, mediumvioletred: 13047173, midnightblue: 1644912, mintcream: 16121850, mistyrose: 16770273, moccasin: 16770229, navajowhite: 16768685, navy: 128, oldlace: 16643558, olive: 8421376, olivedrab: 7048739, orange: 16753920, orangered: 16729344, orchid: 14315734, palegoldenrod: 15657130, palegreen: 10025880, paleturquoise: 11529966, palevioletred: 14381203, papayawhip: 16773077, peachpuff: 16767673, peru: 13468991, pink: 16761035, plum: 14524637, powderblue: 11591910, purple: 8388736, rebeccapurple: 6697881, red: 16711680, rosybrown: 12357519, royalblue: 4286945, saddlebrown: 9127187, salmon: 16416882, sandybrown: 16032864, seagreen: 3050327, seashell: 16774638, sienna: 10506797, silver: 12632256, skyblue: 8900331, slateblue: 6970061, slategray: 7372944, slategrey: 7372944, snow: 16775930, springgreen: 65407, steelblue: 4620980, tan: 13808780, teal: 32896, thistle: 14204888, tomato: 16737095, turquoise: 4251856, violet: 15631086, wheat: 16113331, white: 16777215, whitesmoke: 16119285, yellow: 16776960, yellowgreen: 10145074 }; Nt(St, Et, { displayable: function() { return this.rgb().displayable() }, toString: function() { return this.rgb() + "" } }), Nt(Rt, Pt, kt(St, { brighter: function(t) { return t = null == t ? 1 / .7 : Math.pow(1 / .7, t), new Rt(this.r * t, this.g * t, this.b * t, this.opacity) }, darker: function(t) { return t = null == t ? .7 : Math.pow(.7, t), new Rt(this.r * t, this.g * t, this.b * t, this.opacity) }, rgb: function() { return this }, displayable: function() { return 0 <= this.r && this.r <= 255 && 0 <= this.g && this.g <= 255 && 0 <= this.b && this.b <= 255 && 0 <= this.opacity && this.opacity <= 1 }, toString: function() { var t = this.opacity; return (1 === (t = isNaN(t) ? 1 : Math.max(0, Math.min(1, t))) ? "rgb(" : "rgba(") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (1 === t ? ")" : ", " + t + ")") } })), Nt(Dt, qt, kt(St, { brighter: function(t) { return t = null == t ? 1 / .7 : Math.pow(1 / .7, t), new Dt(this.h, this.s, this.l * t, this.opacity) }, darker: function(t) { return t = null == t ? .7 : Math.pow(.7, t), new Dt(this.h, this.s, this.l * t, this.opacity) }, rgb: function() { var t = this.h % 360 + 360 * (this.h < 0), n = isNaN(t) || isNaN(this.s) ? 0 : this.s, e = this.l, r = e + (e < .5 ? e : 1 - e) * n, i = 2 * e - r; return new Rt(Ut(t >= 240 ? t - 240 : t + 120, i, r), Ut(t, i, r), Ut(t < 120 ? t + 240 : t - 120, i, r), this.opacity) }, displayable: function() { return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1 } })); var wf = Math.PI / 180, Mf = 180 / Math.PI, Tf = .95047, Nf = 1, kf = 1.08883, Sf = 4 / 29, Ef = 6 / 29, Af = 3 * Ef * Ef, Cf = Ef * Ef * Ef; Nt(It, Ft, kt(St, { brighter: function(t) { return new It(this.l + 18 * (null == t ? 1 : t), this.a, this.b, this.opacity) }, darker: function(t) { return new It(this.l - 18 * (null == t ? 1 : t), this.a, this.b, this.opacity) }, rgb: function() { var t = (this.l + 16) / 116, n = isNaN(this.a) ? t : t + this.a / 500, e = isNaN(this.b) ? t : t - this.b / 200; return t = Nf * Bt(t), n = Tf * Bt(n), e = kf * Bt(e), new Rt(Ht(3.2404542 * n - 1.5371385 * t - .4985314 * e), Ht(-.969266 * n + 1.8760108 * t + .041556 * e), Ht(.0556434 * n - .2040259 * t + 1.0572252 * e), this.opacity) } })), Nt(Vt, Xt, kt(St, { brighter: function(t) { return new Vt(this.h, this.c, this.l + 18 * (null == t ? 1 : t), this.opacity) }, darker: function(t) { return new Vt(this.h, this.c, this.l - 18 * (null == t ? 1 : t), this.opacity) }, rgb: function() { return Ot(this).rgb() } })); var zf = -.29227, Pf = -.90649, Rf = 1.97294, Lf = Rf * Pf, qf = 1.78277 * Rf, Df = 1.78277 * zf - -.14861 * Pf; Nt(Wt, $t, kt(St, { brighter: function(t) { return t = null == t ? 1 / .7 : Math.pow(1 / .7, t), new Wt(this.h, this.s, this.l * t, this.opacity) }, darker: function(t) { return t = null == t ? .7 : Math.pow(.7, t), new Wt(this.h, this.s, this.l * t, this.opacity) }, rgb: function() { var t = isNaN(this.h) ? 0 : (this.h + 120) * wf, n = +this.l, e = isNaN(this.s) ? 0 : this.s * n * (1 - n), r = Math.cos(t), i = Math.sin(t); return new Rt(255 * (n + e * (-.14861 * r + 1.78277 * i)), 255 * (n + e * (zf * r + Pf * i)), 255 * (n + e * (Rf * r)), this.opacity) } })); var Uf, Of, Ff, If, Yf, Bf, Hf = function t(n) { function e(t, n) { var e = r((t = Pt(t)).r, (n = Pt(n)).r), i = r(t.g, n.g), o = r(t.b, n.b), u = en(t.opacity, n.opacity); return function(n) { return t.r = e(n), t.g = i(n), t.b = o(n), t.opacity = u(n), t + "" } } var r = nn(n); return e.gamma = t, e }(1), jf = rn(Gt), Xf = rn(Qt), Vf = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, $f = new RegExp(Vf.source, "g"), Wf = 180 / Math.PI, Zf = { translateX: 0, translateY: 0, rotate: 0, skewX: 0, scaleX: 1, scaleY: 1 }, Gf = pn(function(t) { return "none" === t ? Zf : (Uf || (Uf = document.createElement("DIV"), Of = document.documentElement, Ff = document.defaultView), Uf.style.transform = t, t = Ff.getComputedStyle(Of.appendChild(Uf), null).getPropertyValue("transform"), Of.removeChild(Uf), t = t.slice(7, -1).split(","), hn(+t[0], +t[1], +t[2], +t[3], +t[4], +t[5])) }, "px, ", "px)", "deg)"), Qf = pn(function(t) { return null == t ? Zf : (If || (If = document.createElementNS("http://www.w3.org/2000/svg", "g")), If.setAttribute("transform", t), (t = If.transform.baseVal.consolidate()) ? (t = t.matrix, hn(t.a, t.b, t.c, t.d, t.e, t.f)) : Zf) }, ", ", ")", ")"), Jf = Math.SQRT2, Kf = 2, tl = 4, nl = 1e-12, el = gn(tn), rl = gn(en), il = _n(tn), ol = _n(en), ul = yn(tn), al = yn(en), cl = 0, sl = 0, fl = 0, ll = 1e3, hl = 0, pl = 0, dl = 0, vl = "object" == typeof performance && performance.now ? performance : Date, gl = "object" == typeof window && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(t) { setTimeout(t, 17) }; bn.prototype = wn.prototype = { constructor: bn, restart: function(t, n, e) { if ("function" != typeof t) throw new TypeError("callback is not a function"); e = (null == e ? mn() : +e) + (null == n ? 0 : +n), this._next || Bf === this || (Bf ? Bf._next = this : Yf = this, Bf = this), this._call = t, this._time = e, kn() }, stop: function() { this._call && (this._call = null, this._time = 1 / 0, kn()) } }; var _l = N("start", "end", "interrupt"), yl = [], ml = 0, xl = 1, bl = 2, wl = 3, Ml = 4, Tl = 5, Nl = 6, kl = at.prototype.constructor, Sl = 0, El = at.prototype; qn.prototype = Dn.prototype = { constructor: qn, select: function(t) { var n = this._name, e = this._id; "function" != typeof t && (t = z(t)); for (var r = this._groups, i = r.length, o = new Array(i), u = 0; u < i; ++u) for (var a, c, s = r[u], f = s.length, l = o[u] = new Array(f), h = 0; h < f; ++h)(a = s[h]) && (c = t.call(a, a.__data__, h, s)) && ("__data__" in a && (c.__data__ = a.__data__), l[h] = c, En(l[h], n, e, h, l, zn(a, e))); return new qn(o, this._parents, n, e) }, selectAll: function(t) { var n = this._name, e = this._id; "function" != typeof t && (t = R(t)); for (var r = this._groups, i = r.length, o = [], u = [], a = 0; a < i; ++a) for (var c, s = r[a], f = s.length, l = 0; l < f; ++l) if (c = s[l]) { for (var h, p = t.call(c, c.__data__, l, s), d = zn(c, e), v = 0, g = p.length; v < g; ++v)(h = p[v]) && En(h, n, e, v, p, d); o.push(p), u.push(c) } return new qn(o, u, n, e) }, filter: function(t) { "function" != typeof t && (t = of (t)); for (var n = this._groups, e = n.length, r = new Array(e), i = 0; i < e; ++i) for (var o, u = n[i], a = u.length, c = r[i] = [], s = 0; s < a; ++s)(o = u[s]) && t.call(o, o.__data__, s, u) && c.push(o); return new qn(r, this._parents, this._name, this._id) }, merge: function(t) { if (t._id !== this._id) throw new Error; for (var n = this._groups, e = t._groups, r = n.length, i = e.length, o = Math.min(r, i), u = new Array(r), a = 0; a < o; ++a) for (var c, s = n[a], f = e[a], l = s.length, h = u[a] = new Array(l), p = 0; p < l; ++p)(c = s[p] || f[p]) && (h[p] = c); for (; a < r; ++a) u[a] = n[a]; return new qn(u, this._parents, this._name, this._id) }, selection: function() { return new kl(this._groups, this._parents) }, transition: function() { for (var t = this._name, n = this._id, e = Un(), r = this._groups, i = r.length, o = 0; o < i; ++o) for (var u, a = r[o], c = a.length, s = 0; s < c; ++s) if (u = a[s]) { var f = zn(u, n); En(u, t, e, s, a, { time: f.time + f.delay + f.duration, delay: 0, duration: f.duration, ease: f.ease }) } return new qn(r, this._parents, t, e) }, call: El.call, nodes: El.nodes, node: El.node, size: El.size, empty: El.empty, each: El.each, on: function(t, n) { var e = this._id; return arguments.length < 2 ? zn(this.node(), e).on.on(t) : this.each(function(t, n, e) { var r, i, o = function(t) { return (t + "").trim().split(/^|\s+/).every(function(t) { var n = t.indexOf("."); return n >= 0 && (t = t.slice(0, n)), !t || "start" === t }) }(n) ? An : Cn; return function() { var u = o(this, t), a = u.on; a !== r && (i = (r = a).copy()).on(n, e), u.on = i } }(e, t, n)) }, attr: function(t, n) { var e = E(t), r = "transform" === e ? Qf : Ln; return this.attrTween(t, "function" == typeof n ? (e.local ? function(t, n, e) { var r, i, o; return function() { var u, a = e(this); if (null != a) return (u = this.getAttributeNS(t.space, t.local)) === a ? null : u === r && a === i ? o : o = n(r = u, i = a); this.removeAttributeNS(t.space, t.local) } } : function(t, n, e) { var r, i, o; return function() { var u, a = e(this); if (null != a) return (u = this.getAttribute(t)) === a ? null : u === r && a === i ? o : o = n(r = u, i = a); this.removeAttribute(t) } })(e, r, Rn(this, "attr." + t, n)) : null == n ? (e.local ? function(t) { return function() { this.removeAttributeNS(t.space, t.local) } } : function(t) { return function() { this.removeAttribute(t) } })(e) : (e.local ? function(t, n, e) { var r, i; return function() { var o = this.getAttributeNS(t.space, t.local); return o === e ? null : o === r ? i : i = n(r = o, e) } } : function(t, n, e) { var r, i; return function() { var o = this.getAttribute(t); return o === e ? null : o === r ? i : i = n(r = o, e) } })(e, r, n + "")) }, attrTween: function(t, n) { var e = "attr." + t; if (arguments.length < 2) return (e = this.tween(e)) && e._value; if (null == n) return this.tween(e, null); if ("function" != typeof n) throw new Error; var r = E(t); return this.tween(e, (r.local ? function(t, n) { function e() { var e = this, r = n.apply(e, arguments); return r && function(n) { e.setAttributeNS(t.space, t.local, r(n)) } } return e._value = n, e } : function(t, n) { function e() { var e = this, r = n.apply(e, arguments); return r && function(n) { e.setAttribute(t, r(n)) } } return e._value = n, e })(r, n)) }, style: function(t, n, e) { var r = "transform" == (t += "") ? Gf : Ln; return null == n ? this.styleTween(t, function(t, n) { var e, r, i; return function() { var o = I(this, t), u = (this.style.removeProperty(t), I(this, t)); return o === u ? null : o === e && u === r ? i : i = n(e = o, r = u) } }(t, r)).on("end.style." + t, function(t) { return function() { this.style.removeProperty(t) } }(t)) : this.styleTween(t, "function" == typeof n ? function(t, n, e) { var r, i, o; return function() { var u = I(this, t), a = e(this); return null == a && (this.style.removeProperty(t), a = I(this, t)), u === a ? null : u === r && a === i ? o : o = n(r = u, i = a) } }(t, r, Rn(this, "style." + t, n)) : function(t, n, e) { var r, i; return function() { var o = I(this, t); return o === e ? null : o === r ? i : i = n(r = o, e) } }(t, r, n + ""), e) }, styleTween: function(t, n, e) { var r = "style." + (t += ""); if (arguments.length < 2) return (r = this.tween(r)) && r._value; if (null == n) return this.tween(r, null); if ("function" != typeof n) throw new Error; return this.tween(r, function(t, n, e) { function r() { var r = this, i = n.apply(r, arguments); return i && function(n) { r.style.setProperty(t, i(n), e) } } return r._value = n, r }(t, n, null == e ? "" : e)) }, text: function(t) { return this.tween("text", "function" == typeof t ? function(t) { return function() { var n = t(this); this.textContent = null == n ? "" : n } }(Rn(this, "text", t)) : function(t) { return function() { this.textContent = t } }(null == t ? "" : t + "")) }, remove: function() { return this.on("end.remove", function(t) { return function() { var n = this.parentNode; for (var e in this.__transition) if (+e !== t) return; n && n.removeChild(this) } }(this._id)) }, tween: function(t, n) { var e = this._id; if (t += "", arguments.length < 2) { for (var r, i = zn(this.node(), e).tween, o = 0, u = i.length; o < u; ++o) if ((r = i[o]).name === t) return r.value; return null } return this.each((null == n ? function(t, n) { var e, r; return function() { var i = Cn(this, t), o = i.tween; if (o !== e) for (var u = 0, a = (r = e = o).length; u < a; ++u) if (r[u].name === n) { (r = r.slice()).splice(u, 1); break } i.tween = r } } : function(t, n, e) { var r, i; if ("function" != typeof e) throw new Error; return function() { var o = Cn(this, t), u = o.tween; if (u !== r) { i = (r = u).slice(); for (var a = { name: n, value: e }, c = 0, s = i.length; c < s; ++c) if (i[c].name === n) { i[c] = a; break } c === s && i.push(a) } o.tween = i } })(e, t, n)) }, delay: function(t) { var n = this._id; return arguments.length ? this.each(("function" == typeof t ? function(t, n) { return function() { An(this, t).delay = +n.apply(this, arguments) } } : function(t, n) { return n = +n, function() { An(this, t).delay = n } })(n, t)) : zn(this.node(), n).delay }, duration: function(t) { var n = this._id; return arguments.length ? this.each(("function" == typeof t ? function(t, n) { return function() { Cn(this, t).duration = +n.apply(this, arguments) } } : function(t, n) { return n = +n, function() { Cn(this, t).duration = n } })(n, t)) : zn(this.node(), n).duration }, ease: function(t) { var n = this._id; return arguments.length ? this.each(function(t, n) { if ("function" != typeof n) throw new Error; return function() { Cn(this, t).ease = n } }(n, t)) : zn(this.node(), n).ease } }; var Al = function t(n) { function e(t) { return Math.pow(t, n) } return n = +n, e.exponent = t, e }(3), Cl = function t(n) { function e(t) { return 1 - Math.pow(1 - t, n) } return n = +n, e.exponent = t, e }(3), zl = function t(n) { function e(t) { return ((t *= 2) <= 1 ? Math.pow(t, n) : 2 - Math.pow(2 - t, n)) / 2 } return n = +n, e.exponent = t, e }(3), Pl = Math.PI, Rl = Pl / 2, Ll = 4 / 11, ql = 6 / 11, Dl = 8 / 11, Ul = .75, Ol = 9 / 11, Fl = 10 / 11, Il = .9375, Yl = 21 / 22, Bl = 63 / 64, Hl = 1 / Ll / Ll, jl = function t(n) { function e(t) { return t * t * ((n + 1) * t - n) } return n = +n, e.overshoot = t, e }(1.70158), Xl = function t(n) { function e(t) { return --t * t * ((n + 1) * t + n) + 1 } return n = +n, e.overshoot = t, e }(1.70158), Vl = function t(n) { function e(t) { return ((t *= 2) < 1 ? t * t * ((n + 1) * t - n) : (t -= 2) * t * ((n + 1) * t + n) + 2) / 2 } return n = +n, e.overshoot = t, e }(1.70158), $l = 2 * Math.PI, Wl = function t(n, e) { function r(t) { return n * Math.pow(2, 10 * --t) * Math.sin((i - t) / e) } var i = Math.asin(1 / (n = Math.max(1, n))) * (e /= $l); return r.amplitude = function(n) { return t(n, e * $l) }, r.period = function(e) { return t(n, e) }, r }(1, .3), Zl = function t(n, e) { function r(t) { return 1 - n * Math.pow(2, -10 * (t = +t)) * Math.sin((t + i) / e) } var i = Math.asin(1 / (n = Math.max(1, n))) * (e /= $l); return r.amplitude = function(n) { return t(n, e * $l) }, r.period = function(e) { return t(n, e) }, r }(1, .3), Gl = function t(n, e) { function r(t) { return ((t = 2 * t - 1) < 0 ? n * Math.pow(2, 10 * t) * Math.sin((i - t) / e) : 2 - n * Math.pow(2, -10 * t) * Math.sin((i + t) / e)) / 2 } var i = Math.asin(1 / (n = Math.max(1, n))) * (e /= $l); return r.amplitude = function(n) { return t(n, e * $l) }, r.period = function(e) { return t(n, e) }, r }(1, .3), Ql = { time: null, delay: 0, duration: 250, ease: Fn }; at.prototype.interrupt = function(t) { return this.each(function() { Pn(this, t) }) }, at.prototype.transition = function(t) { var n, e; t instanceof qn ? (n = t._id, t = t._name) : (n = Un(), (e = Ql).time = mn(), t = null == t ? null : t + ""); for (var r = this._groups, i = r.length, o = 0; o < i; ++o) for (var u, a = r[o], c = a.length, s = 0; s < c; ++s)(u = a[s]) && En(u, t, n, s, a, e || jn(u, n)); return new qn(r, this._parents, t, n) }; var Jl = [null], Kl = { name: "drag" }, th = { name: "space" }, nh = { name: "handle" }, eh = { name: "center" }, rh = { name: "x", handles: ["e", "w"].map(Wn), input: function(t, n) { return t && [ [t[0], n[0][1]], [t[1], n[1][1]] ] }, output: function(t) { return t && [t[0][0], t[1][0]] } }, ih = { name: "y", handles: ["n", "s"].map(Wn), input: function(t, n) { return t && [ [n[0][0], t[0]], [n[1][0], t[1]] ] }, output: function(t) { return t && [t[0][1], t[1][1]] } }, oh = { name: "xy", handles: ["n", "e", "s", "w", "nw", "ne", "se", "sw"].map(Wn), input: function(t) { return t }, output: function(t) { return t } }, uh = { overlay: "crosshair", selection: "move", n: "ns-resize", e: "ew-resize", s: "ns-resize", w: "ew-resize", nw: "nwse-resize", ne: "nesw-resize", se: "nwse-resize", sw: "nesw-resize" }, ah = { e: "w", w: "e", nw: "ne", ne: "nw", se: "sw", sw: "se" }, ch = { n: "s", s: "n", nw: "sw", ne: "se", se: "ne", sw: "nw" }, sh = { overlay: 1, selection: 1, n: null, e: 1, s: null, w: -1, nw: -1, ne: 1, se: 1, sw: -1 }, fh = { overlay: 1, selection: 1, n: -1, e: null, s: 1, w: null, nw: -1, ne: -1, se: 1, sw: 1 }, lh = Math.cos, hh = Math.sin, ph = Math.PI, dh = ph / 2, vh = 2 * ph, gh = Math.max, _h = Array.prototype.slice, yh = Math.PI, mh = 2 * yh, xh = mh - 1e-6; ne.prototype = ee.prototype = { constructor: ne, moveTo: function(t, n) { this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +n) }, closePath: function() { null !== this._x1 && (this._x1 = this._x0, this._y1 = this._y0, this._ += "Z") }, lineTo: function(t, n) { this._ += "L" + (this._x1 = +t) + "," + (this._y1 = +n) }, quadraticCurveTo: function(t, n, e, r) { this._ += "Q" + +t + "," + +n + "," + (this._x1 = +e) + "," + (this._y1 = +r) }, bezierCurveTo: function(t, n, e, r, i, o) { this._ += "C" + +t + "," + +n + "," + +e + "," + +r + "," + (this._x1 = +i) + "," + (this._y1 = +o) }, arcTo: function(t, n, e, r, i) { t = +t, n = +n, e = +e, r = +r, i = +i; var o = this._x1, u = this._y1, a = e - t, c = r - n, s = o - t, f = u - n, l = s * s + f * f; if (i < 0) throw new Error("negative radius: " + i); if (null === this._x1) this._ += "M" + (this._x1 = t) + "," + (this._y1 = n); else if (l > 1e-6) if (Math.abs(f * a - c * s) > 1e-6 && i) { var h = e - o, p = r - u, d = a * a + c * c, v = h * h + p * p, g = Math.sqrt(d), _ = Math.sqrt(l), y = i * Math.tan((yh - Math.acos((d + l - v) / (2 * g * _))) / 2), m = y / _, x = y / g; Math.abs(m - 1) > 1e-6 && (this._ += "L" + (t + m * s) + "," + (n + m * f)), this._ += "A" + i + "," + i + ",0,0," + +(f * h > s * p) + "," + (this._x1 = t + x * a) + "," + (this._y1 = n + x * c) } else this._ += "L" + (this._x1 = t) + "," + (this._y1 = n); else; }, arc: function(t, n, e, r, i, o) { t = +t, n = +n; var u = (e = +e) * Math.cos(r), a = e * Math.sin(r), c = t + u, s = n + a, f = 1 ^ o, l = o ? r - i : i - r; if (e < 0) throw new Error("negative radius: " + e); null === this._x1 ? this._ += "M" + c + "," + s : (Math.abs(this._x1 - c) > 1e-6 || Math.abs(this._y1 - s) > 1e-6) && (this._ += "L" + c + "," + s), e && (l < 0 && (l = l % mh + mh), l > xh ? this._ += "A" + e + "," + e + ",0,1," + f + "," + (t - u) + "," + (n - a) + "A" + e + "," + e + ",0,1," + f + "," + (this._x1 = c) + "," + (this._y1 = s) : l > 1e-6 && (this._ += "A" + e + "," + e + ",0," + +(l >= yh) + "," + f + "," + (this._x1 = t + e * Math.cos(i)) + "," + (this._y1 = n + e * Math.sin(i)))) }, rect: function(t, n, e, r) { this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +n) + "h" + +e + "v" + +r + "h" + -e + "Z" }, toString: function() { return this._ } }; ce.prototype = se.prototype = { constructor: ce, has: function(t) { return "$" + t in this }, get: function(t) { return this["$" + t] }, set: function(t, n) { return this["$" + t] = n, this }, remove: function(t) { var n = "$" + t; return n in this && delete this[n] }, clear: function() { for (var t in this) "$" === t[0] && delete this[t] }, keys: function() { var t = []; for (var n in this) "$" === n[0] && t.push(n.slice(1)); return t }, values: function() { var t = []; for (var n in this) "$" === n[0] && t.push(this[n]); return t }, entries: function() { var t = []; for (var n in this) "$" === n[0] && t.push({ key: n.slice(1), value: this[n] }); return t }, size: function() { var t = 0; for (var n in this) "$" === n[0] && ++t; return t }, empty: function() { for (var t in this) if ("$" === t[0]) return !1; return !0 }, each: function(t) { for (var n in this) "$" === n[0] && t(this[n], n.slice(1), this) } }; var bh = se.prototype; de.prototype = ve.prototype = { constructor: de, has: bh.has, add: function(t) { return t += "", this["$" + t] = t, this }, remove: bh.remove, clear: bh.clear, values: bh.keys, size: bh.size, empty: bh.empty, each: bh.each }; var wh = {}, Mh = {}, Th = 34, Nh = 10, kh = 13, Sh = _e(","), Eh = Sh.parse, Ah = Sh.parseRows, Ch = Sh.format, zh = Sh.formatRows, Ph = _e("\t"), Rh = Ph.parse, Lh = Ph.parseRows, qh = Ph.format, Dh = Ph.formatRows, Uh = Te.prototype = Ne.prototype; Uh.copy = function() { var t, n, e = new Ne(this._x, this._y, this._x0, this._y0, this._x1, this._y1), r = this._root; if (!r) return e; if (!r.length) return e._root = ke(r), e; for (t = [{ source: r, target: e._root = new Array(4) }]; r = t.pop();) for (var i = 0; i < 4; ++i)(n = r.source[i]) && (n.length ? t.push({ source: n, target: r.target[i] = new Array(4) }) : r.target[i] = ke(n)); return e }, Uh.add = function(t) { var n = +this._x.call(null, t), e = +this._y.call(null, t); return xe(this.cover(n, e), n, e, t) }, Uh.addAll = function(t) { var n, e, r, i, o = t.length, u = new Array(o), a = new Array(o), c = 1 / 0, s = 1 / 0, f = -1 / 0, l = -1 / 0; for (e = 0; e < o; ++e) isNaN(r = +this._x.call(null, n = t[e])) || isNaN(i = +this._y.call(null, n)) || (u[e] = r, a[e] = i, r < c && (c = r), r > f && (f = r), i < s && (s = i), i > l && (l = i)); for (f < c && (c = this._x0, f = this._x1), l < s && (s = this._y0, l = this._y1), this.cover(c, s).cover(f, l), e = 0; e < o; ++e) xe(this, u[e], a[e], t[e]); return this }, Uh.cover = function(t, n) { if (isNaN(t = +t) || isNaN(n = +n)) return this; var e = this._x0, r = this._y0, i = this._x1, o = this._y1; if (isNaN(e)) i = (e = Math.floor(t)) + 1, o = (r = Math.floor(n)) + 1; else { if (!(e > t || t > i || r > n || n > o)) return this; var u, a, c = i - e, s = this._root; switch (a = (n < (r + o) / 2) << 1 | t < (e + i) / 2) { case 0: do { u = new Array(4), u[a] = s, s = u } while (c *= 2, i = e + c, o = r + c, t > i || n > o); break; case 1: do { u = new Array(4), u[a] = s, s = u } while (c *= 2, e = i - c, o = r + c, e > t || n > o); break; case 2: do { u = new Array(4), u[a] = s, s = u } while (c *= 2, i = e + c, r = o - c, t > i || r > n); break; case 3: do { u = new Array(4), u[a] = s, s = u } while (c *= 2, e = i - c, r = o - c, e > t || r > n) } this._root && this._root.length && (this._root = s) } return this._x0 = e, this._y0 = r, this._x1 = i, this._y1 = o, this }, Uh.data = function() { var t = []; return this.visit(function(n) { if (!n.length) do { t.push(n.data) } while (n = n.next) }), t }, Uh.extent = function(t) { return arguments.length ? this.cover(+t[0][0], +t[0][1]).cover(+t[1][0], +t[1][1]) : isNaN(this._x0) ? void 0 : [ [this._x0, this._y0], [this._x1, this._y1] ] }, Uh.find = function(t, n, e) { var r, i, o, u, a, c, s, f = this._x0, l = this._y0, h = this._x1, p = this._y1, d = [], v = this._root; for (v && d.push(new be(v, f, l, h, p)), null == e ? e = 1 / 0 : (f = t - e, l = n - e, h = t + e, p = n + e, e *= e); c = d.pop();) if (!(!(v = c.node) || (i = c.x0) > h || (o = c.y0) > p || (u = c.x1) < f || (a = c.y1) < l)) if (v.length) { var g = (i + u) / 2, _ = (o + a) / 2; d.push(new be(v[3], g, _, u, a), new be(v[2], i, _, g, a), new be(v[1], g, o, u, _), new be(v[0], i, o, g, _)), (s = (n >= _) << 1 | t >= g) && (c = d[d.length - 1], d[d.length - 1] = d[d.length - 1 - s], d[d.length - 1 - s] = c) } else { var y = t - +this._x.call(null, v.data), m = n - +this._y.call(null, v.data), x = y * y + m * m; if (x < e) { var b = Math.sqrt(e = x); f = t - b, l = n - b, h = t + b, p = n + b, r = v.data } } return r }, Uh.remove = function(t) { if (isNaN(o = +this._x.call(null, t)) || isNaN(u = +this._y.call(null, t))) return this; var n, e, r, i, o, u, a, c, s, f, l, h, p = this._root, d = this._x0, v = this._y0, g = this._x1, _ = this._y1; if (!p) return this; if (p.length) for (;;) { if ((s = o >= (a = (d + g) / 2)) ? d = a : g = a, (f = u >= (c = (v + _) / 2)) ? v = c : _ = c, n = p, !(p = p[l = f << 1 | s])) return this; if (!p.length) break; (n[l + 1 & 3] || n[l + 2 & 3] || n[l + 3 & 3]) && (e = n, h = l) } for (; p.data !== t;) if (r = p, !(p = p.next)) return this; return (i = p.next) && delete p.next, r ? (i ? r.next = i : delete r.next, this) : n ? (i ? n[l] = i : delete n[l], (p = n[0] || n[1] || n[2] || n[3]) && p === (n[3] || n[2] || n[1] || n[0]) && !p.length && (e ? e[h] = p : this._root = p), this) : (this._root = i, this) }, Uh.removeAll = function(t) { for (var n = 0, e = t.length; n < e; ++n) this.remove(t[n]); return this }, Uh.root = function() { return this._root }, Uh.size = function() { var t = 0; return this.visit(function(n) { if (!n.length) do { ++t } while (n = n.next) }), t }, Uh.visit = function(t) { var n, e, r, i, o, u, a = [], c = this._root; for (c && a.push(new be(c, this._x0, this._y0, this._x1, this._y1)); n = a.pop();) if (!t(c = n.node, r = n.x0, i = n.y0, o = n.x1, u = n.y1) && c.length) { var s = (r + o) / 2, f = (i + u) / 2; (e = c[3]) && a.push(new be(e, s, f, o, u)), (e = c[2]) && a.push(new be(e, r, f, s, u)), (e = c[1]) && a.push(new be(e, s, i, o, f)), (e = c[0]) && a.push(new be(e, r, i, s, f)) } return this }, Uh.visitAfter = function(t) { var n, e = [], r = []; for (this._root && e.push(new be(this._root, this._x0, this._y0, this._x1, this._y1)); n = e.pop();) { var i = n.node; if (i.length) { var o, u = n.x0, a = n.y0, c = n.x1, s = n.y1, f = (u + c) / 2, l = (a + s) / 2; (o = i[0]) && e.push(new be(o, u, a, f, l)), (o = i[1]) && e.push(new be(o, f, a, c, l)), (o = i[2]) && e.push(new be(o, u, l, f, s)), (o = i[3]) && e.push(new be(o, f, l, c, s)) } r.push(n) } for (; n = r.pop();) t(n.node, n.x0, n.y0, n.x1, n.y1); return this }, Uh.x = function(t) { return arguments.length ? (this._x = t, this) : this._x }, Uh.y = function(t) { return arguments.length ? (this._y = t, this) : this._y }; var Oh, Fh = 10, Ih = Math.PI * (3 - Math.sqrt(5)), Yh = { "": function(t, n) { t: for (var e, r = (t = t.toPrecision(n)).length, i = 1, o = -1; i < r; ++i) switch (t[i]) { case ".": o = e = i; break; case "0": 0 === o && (o = i), e = i; break; case "e": break t; default: o > 0 && (o = 0) } return o > 0 ? t.slice(0, o) + t.slice(e + 1) : t }, "%": function(t, n) { return (100 * t).toFixed(n) }, b: function(t) { return Math.round(t).toString(2) }, c: function(t) { return t + "" }, d: function(t) { return Math.round(t).toString(10) }, e: function(t, n) { return t.toExponential(n) }, f: function(t, n) { return t.toFixed(n) }, g: function(t, n) { return t.toPrecision(n) }, o: function(t) { return Math.round(t).toString(8) }, p: function(t, n) { return qe(100 * t, n) }, r: qe, s: function(t, n) { var e = Re(t, n); if (!e) return t + ""; var r = e[0], i = e[1], o = i - (Oh = 3 * Math.max(-8, Math.min(8, Math.floor(i / 3)))) + 1, u = r.length; return o === u ? r : o > u ? r + new Array(o - u + 1).join("0") : o > 0 ? r.slice(0, o) + "." + r.slice(o) : "0." + new Array(1 - o).join("0") + Re(t, Math.max(0, n + o - 1))[0] }, X: function(t) { return Math.round(t).toString(16).toUpperCase() }, x: function(t) { return Math.round(t).toString(16) } }, Bh = /^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i; De.prototype = Ue.prototype, Ue.prototype.toString = function() { return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (null == this.width ? "" : Math.max(1, 0 | this.width)) + (this.comma ? "," : "") + (null == this.precision ? "" : "." + Math.max(0, 0 | this.precision)) + this.type }; var Hh, jh = ["y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"]; Ie({ decimal: ".", thousands: ",", grouping: [3], currency: ["$", ""] }), Xe.prototype = { constructor: Xe, reset: function() { this.s = this.t = 0 }, add: function(t) { Ve(wp, t, this.t), Ve(this, wp.s, this.s), this.s ? this.t += wp.t : this.s = wp.t }, valueOf: function() { return this.s } }; var Xh, Vh, $h, Wh, Zh, Gh, Qh, Jh, Kh, tp, np, ep, rp, ip, op, up, ap, cp, sp, fp, lp, hp, pp, dp, vp, gp, _p, yp, mp, xp, bp, wp = new Xe, Mp = 1e-6, Tp = 1e-12, Np = Math.PI, kp = Np / 2, Sp = Np / 4, Ep = 2 * Np, Ap = 180 / Np, Cp = Np / 180, zp = Math.abs, Pp = Math.atan, Rp = Math.atan2, Lp = Math.cos, qp = Math.ceil, Dp = Math.exp, Up = Math.log, Op = Math.pow, Fp = Math.sin, Ip = Math.sign || function(t) { return t > 0 ? 1 : t < 0 ? -1 : 0 }, Yp = Math.sqrt, Bp = Math.tan, Hp = { Feature: function(t, n) { Qe(t.geometry, n) }, FeatureCollection: function(t, n) { for (var e = t.features, r = -1, i = e.length; ++r < i;) Qe(e[r].geometry, n) } }, jp = { Sphere: function(t, n) { n.sphere() }, Point: function(t, n) { t = t.coordinates, n.point(t[0], t[1], t[2]) }, MultiPoint: function(t, n) { for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) t = e[r], n.point(t[0], t[1], t[2]) }, LineString: function(t, n) { Je(t.coordinates, n, 0) }, MultiLineString: function(t, n) { for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) Je(e[r], n, 0) }, Polygon: function(t, n) { Ke(t.coordinates, n) }, MultiPolygon: function(t, n) { for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) Ke(e[r], n) }, GeometryCollection: function(t, n) { for (var e = t.geometries, r = -1, i = e.length; ++r < i;) Qe(e[r], n) } }, Xp = je(), Vp = je(), $p = { point: Ge, lineStart: Ge, lineEnd: Ge, polygonStart: function() { Xp.reset(), $p.lineStart = nr, $p.lineEnd = er }, polygonEnd: function() { var t = +Xp; Vp.add(t < 0 ? Ep + t : t), this.lineStart = this.lineEnd = this.point = Ge }, sphere: function() { Vp.add(Ep) } }, Wp = je(), Zp = { point: hr, lineStart: dr, lineEnd: vr, polygonStart: function() { Zp.point = gr, Zp.lineStart = _r, Zp.lineEnd = yr, Wp.reset(), $p.polygonStart() }, polygonEnd: function() { $p.polygonEnd(), Zp.point = hr, Zp.lineStart = dr, Zp.lineEnd = vr, Xp < 0 ? (Gh = -(Jh = 180), Qh = -(Kh = 90)) : Wp > Mp ? Kh = 90 : Wp < -Mp && (Qh = -90), op[0] = Gh, op[1] = Jh } }, Gp = { sphere: Ge, point: wr, lineStart: Tr, lineEnd: Sr, polygonStart: function() { Gp.lineStart = Er, Gp.lineEnd = Ar }, polygonEnd: function() { Gp.lineStart = Tr, Gp.lineEnd = Sr } }; Lr.invert = Lr; var Qp, Jp, Kp, td, nd, ed, rd, id, od, ud, ad, cd = je(), sd = Wr(function() { return !0 }, function(t) { var n, e = NaN, r = NaN, i = NaN; return { lineStart: function() { t.lineStart(), n = 1 }, point: function(o, u) { var a = o > 0 ? Np : -Np, c = zp(o - e); zp(c - Np) < Mp ? (t.point(e, r = (r + u) / 2 > 0 ? kp : -kp), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(a, r), t.point(o, r), n = 0) : i !== a && c >= Np && (zp(e - i) < Mp && (e -= i * Mp), zp(o - a) < Mp && (o -= a * Mp), r = function(t, n, e, r) { var i, o, u = Fp(t - e); return zp(u) > Mp ? Pp((Fp(n) * (o = Lp(r)) * Fp(e) - Fp(r) * (i = Lp(n)) * Fp(t)) / (i * o * u)) : (n + r) / 2 }(e, r, o, u), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(a, r), n = 0), t.point(e = o, r = u), i = a }, lineEnd: function() { t.lineEnd(), e = r = NaN }, clean: function() { return 2 - n } } }, function(t, n, e, r) { var i; if (null == t) i = e * kp, r.point(-Np, i), r.point(0, i), r.point(Np, i), r.point(Np, 0), r.point(Np, -i), r.point(0, -i), r.point(-Np, -i), r.point(-Np, 0), r.point(-Np, i); else if (zp(t[0] - n[0]) > Mp) { var o = t[0] < n[0] ? Np : -Np; i = e * o / 2, r.point(-o, i), r.point(0, i), r.point(o, i) } else r.point(n[0], n[1]) }, [-Np, -kp]), fd = 1e9, ld = -fd, hd = je(), pd = { sphere: Ge, point: Ge, lineStart: function() { pd.point = ti, pd.lineEnd = Kr }, lineEnd: Ge, polygonStart: Ge, polygonEnd: Ge }, dd = [null, null], vd = { type: "LineString", coordinates: dd }, gd = { Feature: function(t, n) { return ii(t.geometry, n) }, FeatureCollection: function(t, n) { for (var e = t.features, r = -1, i = e.length; ++r < i;) if (ii(e[r].geometry, n)) return !0; return !1 } }, _d = { Sphere: function() { return !0 }, Point: function(t, n) { return oi(t.coordinates, n) }, MultiPoint: function(t, n) { for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) if (oi(e[r], n)) return !0; return !1 }, LineString: function(t, n) { return ui(t.coordinates, n) }, MultiLineString: function(t, n) { for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) if (ui(e[r], n)) return !0; return !1 }, Polygon: function(t, n) { return ai(t.coordinates, n) }, MultiPolygon: function(t, n) { for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) if (ai(e[r], n)) return !0; return !1 }, GeometryCollection: function(t, n) { for (var e = t.geometries, r = -1, i = e.length; ++r < i;) if (ii(e[r], n)) return !0; return !1 } }, yd = je(), md = je(), xd = { point: Ge, lineStart: Ge, lineEnd: Ge, polygonStart: function() { xd.lineStart = di, xd.lineEnd = _i }, polygonEnd: function() { xd.lineStart = xd.lineEnd = xd.point = Ge, yd.add(zp(md)), md.reset() }, result: function() { var t = yd / 2; return yd.reset(), t } }, bd = 1 / 0, wd = bd, Md = -bd, Td = Md, Nd = { point: function(t, n) { t < bd && (bd = t), t > Md && (Md = t), n < wd && (wd = n), n > Td && (Td = n) }, lineStart: Ge, lineEnd: Ge, polygonStart: Ge, polygonEnd: Ge, result: function() { var t = [ [bd, wd], [Md, Td] ]; return Md = Td = -(wd = bd = 1 / 0), t } }, kd = 0, Sd = 0, Ed = 0, Ad = 0, Cd = 0, zd = 0, Pd = 0, Rd = 0, Ld = 0, qd = { point: yi, lineStart: mi, lineEnd: wi, polygonStart: function() { qd.lineStart = Mi, qd.lineEnd = Ti }, polygonEnd: function() { qd.point = yi, qd.lineStart = mi, qd.lineEnd = wi }, result: function() { var t = Ld ? [Pd / Ld, Rd / Ld] : zd ? [Ad / zd, Cd / zd] : Ed ? [kd / Ed, Sd / Ed] : [NaN, NaN]; return kd = Sd = Ed = Ad = Cd = zd = Pd = Rd = Ld = 0, t } }; Si.prototype = { _radius: 4.5, pointRadius: function(t) { return this._radius = t, this }, polygonStart: function() { this._line = 0 }, polygonEnd: function() { this._line = NaN }, lineStart: function() { this._point = 0 }, lineEnd: function() { 0 === this._line && this._context.closePath(), this._point = NaN }, point: function(t, n) { switch (this._point) { case 0: this._context.moveTo(t, n), this._point = 1; break; case 1: this._context.lineTo(t, n); break; default: this._context.moveTo(t + this._radius, n), this._context.arc(t, n, this._radius, 0, Ep) } }, result: Ge }; var Dd, Ud, Od, Fd, Id, Yd = je(), Bd = { point: Ge, lineStart: function() { Bd.point = Ei }, lineEnd: function() { Dd && Ai(Ud, Od), Bd.point = Ge }, polygonStart: function() { Dd = !0 }, polygonEnd: function() { Dd = null }, result: function() { var t = +Yd; return Yd.reset(), t } }; Ci.prototype = { _radius: 4.5, _circle: zi(4.5), pointRadius: function(t) { return (t = +t) !== this._radius && (this._radius = t, this._circle = null), this }, polygonStart: function() { this._line = 0 }, polygonEnd: function() { this._line = NaN }, lineStart: function() { this._point = 0 }, lineEnd: function() { 0 === this._line && this._string.push("Z"), this._point = NaN }, point: function(t, n) { switch (this._point) { case 0: this._string.push("M", t, ",", n), this._point = 1; break; case 1: this._string.push("L", t, ",", n); break; default: null == this._circle && (this._circle = zi(this._radius)), this._string.push("M", t, ",", n, this._circle) } }, result: function() { if (this._string.length) { var t = this._string.join(""); return this._string = [], t } return null } }, Ri.prototype = { constructor: Ri, point: function(t, n) { this.stream.point(t, n) }, sphere: function() { this.stream.sphere() }, lineStart: function() { this.stream.lineStart() }, lineEnd: function() { this.stream.lineEnd() }, polygonStart: function() { this.stream.polygonStart() }, polygonEnd: function() { this.stream.polygonEnd() } }; var Hd = 16, jd = Lp(30 * Cp), Xd = Pi({ point: function(t, n) { this.stream.point(t * Cp, n * Cp) } }), Vd = Vi(function(t) { return Yp(2 / (1 + t)) }); Vd.invert = $i(function(t) { return 2 * We(t / 2) }); var $d = Vi(function(t) { return (t = $e(t)) && t / Fp(t) }); $d.invert = $i(function(t) { return t }), Wi.invert = function(t, n) { return [t, 2 * Pp(Dp(n)) - kp] }, Ji.invert = Ji, to.invert = $i(Pp), eo.invert = function(t, n) { var e, r = n, i = 25; do { var o = r * r, u = o * o; r -= e = (r * (1.007226 + o * (.015085 + u * (.028874 * o - .044475 - .005916 * u))) - n) / (1.007226 + o * (.045255 + u * (.259866 * o - .311325 - .005916 * 11 * u))) } while (zp(e) > Mp && --i > 0); return [t / (.8707 + (o = r * r) * (o * (o * o * o * (.003971 - .001529 * o) - .013791) - .131979)), r] }, ro.invert = $i(We), io.invert = $i(function(t) { return 2 * Pp(t) }), oo.invert = function(t, n) { return [-n, 2 * Pp(Dp(t)) - kp] }, vo.prototype = fo.prototype = { constructor: vo, count: function() { return this.eachAfter(so) }, each: function(t) { var n, e, r, i, o = this, u = [o]; do { for (n = u.reverse(), u = []; o = n.pop();) if (t(o), e = o.children) for (r = 0, i = e.length; r < i; ++r) u.push(e[r]) } while (u.length); return this }, eachAfter: function(t) { for (var n, e, r, i = this, o = [i], u = []; i = o.pop();) if (u.push(i), n = i.children) for (e = 0, r = n.length; e < r; ++e) o.push(n[e]); for (; i = u.pop();) t(i); return this }, eachBefore: function(t) { for (var n, e, r = this, i = [r]; r = i.pop();) if (t(r), n = r.children) for (e = n.length - 1; e >= 0; --e) i.push(n[e]); return this }, sum: function(t) { return this.eachAfter(function(n) { for (var e = +t(n.data) || 0, r = n.children, i = r && r.length; --i >= 0;) e += r[i].value; n.value = e }) }, sort: function(t) { return this.eachBefore(function(n) { n.children && n.children.sort(t) }) }, path: function(t) { for (var n = this, e = function(t, n) { if (t === n) return t; var e = t.ancestors(), r = n.ancestors(), i = null; for (t = e.pop(), n = r.pop(); t === n;) i = t, t = e.pop(), n = r.pop(); return i }(n, t), r = [n]; n !== e;) n = n.parent, r.push(n); for (var i = r.length; t !== e;) r.splice(i, 0, t), t = t.parent; return r }, ancestors: function() { for (var t = this, n = [t]; t = t.parent;) n.push(t); return n }, descendants: function() { var t = []; return this.each(function(n) { t.push(n) }), t }, leaves: function() { var t = []; return this.eachBefore(function(n) { n.children || t.push(n) }), t }, links: function() { var t = this, n = []; return t.each(function(e) { e !== t && n.push({ source: e.parent, target: e }) }), n }, copy: function() { return fo(this).eachBefore(ho) } }; var Wd = Array.prototype.slice, Zd = "$", Gd = { depth: -1 }, Qd = {}; Ho.prototype = Object.create(vo.prototype); var Jd = (1 + Math.sqrt(5)) / 2, Kd = function t(n) { function e(t, e, r, i, o) { Xo(n, t, e, r, i, o) } return e.ratio = function(n) { return t((n = +n) > 1 ? n : 1) }, e }(Jd), tv = function t(n) { function e(t, e, r, i, o) { if ((u = t._squarify) && u.ratio === n) for (var u, a, c, s, f, l = -1, h = u.length, p = t.value; ++l < h;) { for (c = (a = u[l]).children, s = a.value = 0, f = c.length; s < f; ++s) a.value += c[s].value; a.dice ? qo(a, e, r, i, r += (o - r) * a.value / p) : jo(a, e, r, e += (i - e) * a.value / p, o), p -= a.value } else t._squarify = u = Xo(n, t, e, r, i, o), u.ratio = n } return e.ratio = function(n) { return t((n = +n) > 1 ? n : 1) }, e }(Jd), nv = [].slice, ev = {}; Zo.prototype = Ko.prototype = { constructor: Zo, defer: function(t) { if ("function" != typeof t) throw new Error("invalid callback"); if (this._call) throw new Error("defer after await"); if (null != this._error) return this; var n = nv.call(arguments, 1); return n.push(t), ++this._waiting, this._tasks.push(n), Go(this), this }, abort: function() { return null == this._error && Qo(this, new Error("abort")), this }, await: function(t) { if ("function" != typeof t) throw new Error("invalid callback"); if (this._call) throw new Error("multiple await"); return this._call = function(n, e) { t.apply(null, [n].concat(e)) }, Jo(this), this }, awaitAll: function(t) { if ("function" != typeof t) throw new Error("invalid callback"); if (this._call) throw new Error("multiple await"); return this._call = t, Jo(this), this } }; var rv = function t(n) { function e(t, e) { return t = null == t ? 0 : +t, e = null == e ? 1 : +e, 1 === arguments.length ? (e = t, t = 0) : e -= t, function() { return n() * e + t } } return e.source = t, e }(tu), iv = function t(n) { function e(t, e) { var r, i; return t = null == t ? 0 : +t, e = null == e ? 1 : +e, function() { var o; if (null != r) o = r, r = null; else do { r = 2 * n() - 1, o = 2 * n() - 1, i = r * r + o * o } while (!i || i > 1); return t + e * o * Math.sqrt(-2 * Math.log(i) / i) } } return e.source = t, e }(tu), ov = function t(n) { function e() { var t = iv.source(n).apply(this, arguments); return function() { return Math.exp(t()) } } return e.source = t, e }(tu), uv = function t(n) { function e(t) { return function() { for (var e = 0, r = 0; r < t; ++r) e += n(); return e } } return e.source = t, e }(tu), av = function t(n) { function e(t) { var e = uv.source(n)(t); return function() { return e() / t } } return e.source = t, e }(tu), cv = function t(n) { function e(t) { return function() { return -Math.log(1 - n()) / t } } return e.source = t, e }(tu), sv = eu("text/html", function(t) { return document.createRange().createContextualFragment(t.responseText) }), fv = eu("application/json", function(t) { return JSON.parse(t.responseText) }), lv = eu("text/plain", function(t) { return t.responseText }), hv = eu("application/xml", function(t) { var n = t.responseXML; if (!n) throw new Error("parse error"); return n }), pv = ru("text/csv", Eh), dv = ru("text/tab-separated-values", Rh), vv = Array.prototype, gv = vv.map, _v = vv.slice, yv = { name: "implicit" }, mv = [0, 1], xv = new Date, bv = new Date, wv = Cu(function() {}, function(t, n) { t.setTime(+t + n) }, function(t, n) { return n - t }); wv.every = function(t) { return t = Math.floor(t), isFinite(t) && t > 0 ? t > 1 ? Cu(function(n) { n.setTime(Math.floor(n / t) * t) }, function(n, e) { n.setTime(+n + e * t) }, function(n, e) { return (e - n) / t }) : wv : null }; var Mv = wv.range, Tv = 6e4, Nv = 6048e5, kv = Cu(function(t) { t.setTime(1e3 * Math.floor(t / 1e3)) }, function(t, n) { t.setTime(+t + 1e3 * n) }, function(t, n) { return (n - t) / 1e3 }, function(t) { return t.getUTCSeconds() }), Sv = kv.range, Ev = Cu(function(t) { t.setTime(Math.floor(t / Tv) * Tv) }, function(t, n) { t.setTime(+t + n * Tv) }, function(t, n) { return (n - t) / Tv }, function(t) { return t.getMinutes() }), Av = Ev.range, Cv = Cu(function(t) { var n = t.getTimezoneOffset() * Tv % 36e5; n < 0 && (n += 36e5), t.setTime(36e5 * Math.floor((+t - n) / 36e5) + n) }, function(t, n) { t.setTime(+t + 36e5 * n) }, function(t, n) { return (n - t) / 36e5 }, function(t) { return t.getHours() }), zv = Cv.range, Pv = Cu(function(t) { t.setHours(0, 0, 0, 0) }, function(t, n) { t.setDate(t.getDate() + n) }, function(t, n) { return (n - t - (n.getTimezoneOffset() - t.getTimezoneOffset()) * Tv) / 864e5 }, function(t) { return t.getDate() - 1 }), Rv = Pv.range, Lv = zu(0), qv = zu(1), Dv = zu(2), Uv = zu(3), Ov = zu(4), Fv = zu(5), Iv = zu(6), Yv = Lv.range, Bv = qv.range, Hv = Dv.range, jv = Uv.range, Xv = Ov.range, Vv = Fv.range, $v = Iv.range, Wv = Cu(function(t) { t.setDate(1), t.setHours(0, 0, 0, 0) }, function(t, n) { t.setMonth(t.getMonth() + n) }, function(t, n) { return n.getMonth() - t.getMonth() + 12 * (n.getFullYear() - t.getFullYear()) }, function(t) { return t.getMonth() }), Zv = Wv.range, Gv = Cu(function(t) { t.setMonth(0, 1), t.setHours(0, 0, 0, 0) }, function(t, n) { t.setFullYear(t.getFullYear() + n) }, function(t, n) { return n.getFullYear() - t.getFullYear() }, function(t) { return t.getFullYear() }); Gv.every = function(t) { return isFinite(t = Math.floor(t)) && t > 0 ? Cu(function(n) { n.setFullYear(Math.floor(n.getFullYear() / t) * t), n.setMonth(0, 1), n.setHours(0, 0, 0, 0) }, function(n, e) { n.setFullYear(n.getFullYear() + e * t) }) : null }; var Qv = Gv.range, Jv = Cu(function(t) { t.setUTCSeconds(0, 0) }, function(t, n) { t.setTime(+t + n * Tv) }, function(t, n) { return (n - t) / Tv }, function(t) { return t.getUTCMinutes() }), Kv = Jv.range, tg = Cu(function(t) { t.setUTCMinutes(0, 0, 0) }, function(t, n) { t.setTime(+t + 36e5 * n) }, function(t, n) { return (n - t) / 36e5 }, function(t) { return t.getUTCHours() }), ng = tg.range, eg = Cu(function(t) { t.setUTCHours(0, 0, 0, 0) }, function(t, n) { t.setUTCDate(t.getUTCDate() + n) }, function(t, n) { return (n - t) / 864e5 }, function(t) { return t.getUTCDate() - 1 }), rg = eg.range, ig = Pu(0), og = Pu(1), ug = Pu(2), ag = Pu(3), cg = Pu(4), sg = Pu(5), fg = Pu(6), lg = ig.range, hg = og.range, pg = ug.range, dg = ag.range, vg = cg.range, gg = sg.range, _g = fg.range, yg = Cu(function(t) { t.setUTCDate(1), t.setUTCHours(0, 0, 0, 0) }, function(t, n) { t.setUTCMonth(t.getUTCMonth() + n) }, function(t, n) { return n.getUTCMonth() - t.getUTCMonth() + 12 * (n.getUTCFullYear() - t.getUTCFullYear()) }, function(t) { return t.getUTCMonth() }), mg = yg.range, xg = Cu(function(t) { t.setUTCMonth(0, 1), t.setUTCHours(0, 0, 0, 0) }, function(t, n) { t.setUTCFullYear(t.getUTCFullYear() + n) }, function(t, n) { return n.getUTCFullYear() - t.getUTCFullYear() }, function(t) { return t.getUTCFullYear() }); xg.every = function(t) { return isFinite(t = Math.floor(t)) && t > 0 ? Cu(function(n) { n.setUTCFullYear(Math.floor(n.getUTCFullYear() / t) * t), n.setUTCMonth(0, 1), n.setUTCHours(0, 0, 0, 0) }, function(n, e) { n.setUTCFullYear(n.getUTCFullYear() + e * t) }) : null }; var bg, wg = xg.range, Mg = { "-": "", _: " ", 0: "0" }, Tg = /^\s*\d+/, Ng = /^%/, kg = /[\\^$*+?|[\]().{}]/g; Ha({ dateTime: "%x, %X", date: "%-m/%-d/%Y", time: "%-I:%M:%S %p", periods: ["AM", "PM"], days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] }); var Sg = "%Y-%m-%dT%H:%M:%S.%LZ", Eg = Date.prototype.toISOString ? function(t) { return t.toISOString() } : t.utcFormat(Sg), Ag = +new Date("2000-01-01T00:00:00.000Z") ? function(t) { var n = new Date(t); return isNaN(n) ? null : n } : t.utcParse(Sg), Cg = 1e3, zg = 60 * Cg, Pg = 60 * zg, Rg = 24 * Pg, Lg = 7 * Rg, qg = 30 * Rg, Dg = 365 * Rg, Ug = $a("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"), Og = $a("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6"), Fg = $a("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"), Ig = $a("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"), Yg = al($t(300, .5, 0), $t(-240, .5, 1)), Bg = al($t(-100, .75, .35), $t(80, 1.5, .8)), Hg = al($t(260, .75, .35), $t(80, 1.5, .8)), jg = $t(), Xg = Wa($a("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")), Vg = Wa($a("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")), $g = Wa($a("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")), Wg = Wa($a("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")), Zg = Math.abs, Gg = Math.atan2, Qg = Math.cos, Jg = Math.max, Kg = Math.min, t_ = Math.sin, n_ = Math.sqrt, e_ = 1e-12, r_ = Math.PI, i_ = r_ / 2, o_ = 2 * r_; ic.prototype = { areaStart: function() { this._line = 0 }, areaEnd: function() { this._line = NaN }, lineStart: function() { this._point = 0 }, lineEnd: function() { (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function(t, n) { switch (t = +t, n = +n, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, n) : this._context.moveTo(t, n); break; case 1: this._point = 2; default: this._context.lineTo(t, n) } } }; var u_ = pc(oc); hc.prototype = { areaStart: function() { this._curve.areaStart() }, areaEnd: function() { this._curve.areaEnd() }, lineStart: function() { this._curve.lineStart() }, lineEnd: function() { this._curve.lineEnd() }, point: function(t, n) { this._curve.point(n * Math.sin(t), n * -Math.cos(t)) } }; var a_ = Array.prototype.slice, c_ = { draw: function(t, n) { var e = Math.sqrt(n / r_); t.moveTo(e, 0), t.arc(0, 0, e, 0, o_) } }, s_ = { draw: function(t, n) { var e = Math.sqrt(n / 5) / 2; t.moveTo(-3 * e, -e), t.lineTo(-e, -e), t.lineTo(-e, -3 * e), t.lineTo(e, -3 * e), t.lineTo(e, -e), t.lineTo(3 * e, -e), t.lineTo(3 * e, e), t.lineTo(e, e), t.lineTo(e, 3 * e), t.lineTo(-e, 3 * e), t.lineTo(-e, e), t.lineTo(-3 * e, e), t.closePath() } }, f_ = Math.sqrt(1 / 3), l_ = 2 * f_, h_ = { draw: function(t, n) { var e = Math.sqrt(n / l_), r = e * f_; t.moveTo(0, -e), t.lineTo(r, 0), t.lineTo(0, e), t.lineTo(-r, 0), t.closePath() } }, p_ = Math.sin(r_ / 10) / Math.sin(7 * r_ / 10), d_ = Math.sin(o_ / 10) * p_, v_ = -Math.cos(o_ / 10) * p_, g_ = { draw: function(t, n) { var e = Math.sqrt(.8908130915292852 * n), r = d_ * e, i = v_ * e; t.moveTo(0, -e), t.lineTo(r, i); for (var o = 1; o < 5; ++o) { var u = o_ * o / 5, a = Math.cos(u), c = Math.sin(u); t.lineTo(c * e, -a * e), t.lineTo(a * r - c * i, c * r + a * i) } t.closePath() } }, __ = { draw: function(t, n) { var e = Math.sqrt(n), r = -e / 2; t.rect(r, r, e, e) } }, y_ = Math.sqrt(3), m_ = { draw: function(t, n) { var e = -Math.sqrt(n / (3 * y_)); t.moveTo(0, 2 * e), t.lineTo(-y_ * e, -e), t.lineTo(y_ * e, -e), t.closePath() } }, x_ = Math.sqrt(3) / 2, b_ = 1 / Math.sqrt(12), w_ = 3 * (b_ / 2 + 1), M_ = { draw: function(t, n) { var e = Math.sqrt(n / w_), r = e / 2, i = e * b_, o = r, u = e * b_ + e, a = -o, c = u; t.moveTo(r, i), t.lineTo(o, u), t.lineTo(a, c), t.lineTo(-.5 * r - x_ * i, x_ * r + -.5 * i), t.lineTo(-.5 * o - x_ * u, x_ * o + -.5 * u), t.lineTo(-.5 * a - x_ * c, x_ * a + -.5 * c), t.lineTo(-.5 * r + x_ * i, -.5 * i - x_ * r), t.lineTo(-.5 * o + x_ * u, -.5 * u - x_ * o), t.lineTo(-.5 * a + x_ * c, -.5 * c - x_ * a), t.closePath() } }, T_ = [c_, s_, h_, __, g_, m_, M_]; kc.prototype = { areaStart: function() { this._line = 0 }, areaEnd: function() { this._line = NaN }, lineStart: function() { this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0 }, lineEnd: function() { switch (this._point) { case 3: Nc(this, this._x1, this._y1); case 2: this._context.lineTo(this._x1, this._y1) }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function(t, n) { switch (t = +t, n = +n, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, n) : this._context.moveTo(t, n); break; case 1: this._point = 2; break; case 2: this._point = 3, this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); default: Nc(this, t, n) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n } }, Sc.prototype = { areaStart: Tc, areaEnd: Tc, lineStart: function() { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN, this._point = 0 }, lineEnd: function() { switch (this._point) { case 1: this._context.moveTo(this._x2, this._y2), this._context.closePath(); break; case 2: this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3), this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3), this._context.closePath(); break; case 3: this.point(this._x2, this._y2), this.point(this._x3, this._y3), this.point(this._x4, this._y4) } }, point: function(t, n) { switch (t = +t, n = +n, this._point) { case 0: this._point = 1, this._x2 = t, this._y2 = n; break; case 1: this._point = 2, this._x3 = t, this._y3 = n; break; case 2: this._point = 3, this._x4 = t, this._y4 = n, this._context.moveTo((this._x0 + 4 * this._x1 + t) / 6, (this._y0 + 4 * this._y1 + n) / 6); break; default: Nc(this, t, n) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n } }, Ec.prototype = { areaStart: function() { this._line = 0 }, areaEnd: function() { this._line = NaN }, lineStart: function() { this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0 }, lineEnd: function() { (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function(t, n) { switch (t = +t, n = +n, this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3; var e = (this._x0 + 4 * this._x1 + t) / 6, r = (this._y0 + 4 * this._y1 + n) / 6; this._line ? this._context.lineTo(e, r) : this._context.moveTo(e, r); break; case 3: this._point = 4; default: Nc(this, t, n) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n } }, Ac.prototype = { lineStart: function() { this._x = [], this._y = [], this._basis.lineStart() }, lineEnd: function() { var t = this._x, n = this._y, e = t.length - 1; if (e > 0) for (var r, i = t[0], o = n[0], u = t[e] - i, a = n[e] - o, c = -1; ++c <= e;) r = c / e, this._basis.point(this._beta * t[c] + (1 - this._beta) * (i + r * u), this._beta * n[c] + (1 - this._beta) * (o + r * a)); this._x = this._y = null, this._basis.lineEnd() }, point: function(t, n) { this._x.push(+t), this._y.push(+n) } }; var N_ = function t(n) { function e(t) { return 1 === n ? new kc(t) : new Ac(t, n) } return e.beta = function(n) { return t(+n) }, e }(.85); zc.prototype = { areaStart: function() { this._line = 0 }, areaEnd: function() { this._line = NaN }, lineStart: function() { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0 }, lineEnd: function() { switch (this._point) { case 2: this._context.lineTo(this._x2, this._y2); break; case 3: Cc(this, this._x1, this._y1) }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function(t, n) { switch (t = +t, n = +n, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, n) : this._context.moveTo(t, n); break; case 1: this._point = 2, this._x1 = t, this._y1 = n; break; case 2: this._point = 3; default: Cc(this, t, n) } this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var k_ = function t(n) { function e(t) { return new zc(t, n) } return e.tension = function(n) { return t(+n) }, e }(0); Pc.prototype = { areaStart: Tc, areaEnd: Tc, lineStart: function() { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._point = 0 }, lineEnd: function() { switch (this._point) { case 1: this._context.moveTo(this._x3, this._y3), this._context.closePath(); break; case 2: this._context.lineTo(this._x3, this._y3), this._context.closePath(); break; case 3: this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5) } }, point: function(t, n) { switch (t = +t, n = +n, this._point) { case 0: this._point = 1, this._x3 = t, this._y3 = n; break; case 1: this._point = 2, this._context.moveTo(this._x4 = t, this._y4 = n); break; case 2: this._point = 3, this._x5 = t, this._y5 = n; break; default: Cc(this, t, n) } this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var S_ = function t(n) { function e(t) { return new Pc(t, n) } return e.tension = function(n) { return t(+n) }, e }(0); Rc.prototype = { areaStart: function() { this._line = 0 }, areaEnd: function() { this._line = NaN }, lineStart: function() { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0 }, lineEnd: function() { (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function(t, n) { switch (t = +t, n = +n, this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3, this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: this._point = 4; default: Cc(this, t, n) } this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var E_ = function t(n) { function e(t) { return new Rc(t, n) } return e.tension = function(n) { return t(+n) }, e }(0); qc.prototype = { areaStart: function() { this._line = 0 }, areaEnd: function() { this._line = NaN }, lineStart: function() { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function() { switch (this._point) { case 2: this._context.lineTo(this._x2, this._y2); break; case 3: this.point(this._x2, this._y2) }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function(t, n) { if (t = +t, n = +n, this._point) { var e = this._x2 - t, r = this._y2 - n; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(e * e + r * r, this._alpha)) } switch (this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, n) : this._context.moveTo(t, n); break; case 1: this._point = 2; break; case 2: this._point = 3; default: Lc(this, t, n) } this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var A_ = function t(n) { function e(t) { return n ? new qc(t, n) : new zc(t, 0) } return e.alpha = function(n) { return t(+n) }, e }(.5); Dc.prototype = { areaStart: Tc, areaEnd: Tc, lineStart: function() { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function() { switch (this._point) { case 1: this._context.moveTo(this._x3, this._y3), this._context.closePath(); break; case 2: this._context.lineTo(this._x3, this._y3), this._context.closePath(); break; case 3: this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5) } }, point: function(t, n) { if (t = +t, n = +n, this._point) { var e = this._x2 - t, r = this._y2 - n; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(e * e + r * r, this._alpha)) } switch (this._point) { case 0: this._point = 1, this._x3 = t, this._y3 = n; break; case 1: this._point = 2, this._context.moveTo(this._x4 = t, this._y4 = n); break; case 2: this._point = 3, this._x5 = t, this._y5 = n; break; default: Lc(this, t, n) } this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var C_ = function t(n) { function e(t) { return n ? new Dc(t, n) : new Pc(t, 0) } return e.alpha = function(n) { return t(+n) }, e }(.5); Uc.prototype = { areaStart: function() { this._line = 0 }, areaEnd: function() { this._line = NaN }, lineStart: function() { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function() { (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function(t, n) { if (t = +t, n = +n, this._point) { var e = this._x2 - t, r = this._y2 - n; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(e * e + r * r, this._alpha)) } switch (this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3, this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: this._point = 4; default: Lc(this, t, n) } this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = n } }; var z_ = function t(n) { function e(t) { return n ? new Uc(t, n) : new Rc(t, 0) } return e.alpha = function(n) { return t(+n) }, e }(.5); Oc.prototype = { areaStart: Tc, areaEnd: Tc, lineStart: function() { this._point = 0 }, lineEnd: function() { this._point && this._context.closePath() }, point: function(t, n) { t = +t, n = +n, this._point ? this._context.lineTo(t, n) : (this._point = 1, this._context.moveTo(t, n)) } }, Hc.prototype = { areaStart: function() { this._line = 0 }, areaEnd: function() { this._line = NaN }, lineStart: function() { this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN, this._point = 0 }, lineEnd: function() { switch (this._point) { case 2: this._context.lineTo(this._x1, this._y1); break; case 3: Bc(this, this._t0, Yc(this, this._t0)) }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function(t, n) { var e = NaN; if (t = +t, n = +n, t !== this._x1 || n !== this._y1) { switch (this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, n) : this._context.moveTo(t, n); break; case 1: this._point = 2; break; case 2: this._point = 3, Bc(this, Yc(this, e = Ic(this, t, n)), e); break; default: Bc(this, this._t0, e = Ic(this, t, n)) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = n, this._t0 = e } } }, (jc.prototype = Object.create(Hc.prototype)).point = function(t, n) { Hc.prototype.point.call(this, n, t) }, Xc.prototype = { moveTo: function(t, n) { this._context.moveTo(n, t) }, closePath: function() { this._context.closePath() }, lineTo: function(t, n) { this._context.lineTo(n, t) }, bezierCurveTo: function(t, n, e, r, i, o) { this._context.bezierCurveTo(n, t, r, e, o, i) } }, Vc.prototype = { areaStart: function() { this._line = 0 }, areaEnd: function() { this._line = NaN }, lineStart: function() { this._x = [], this._y = [] }, lineEnd: function() { var t = this._x, n = this._y, e = t.length; if (e) if (this._line ? this._context.lineTo(t[0], n[0]) : this._context.moveTo(t[0], n[0]), 2 === e) this._context.lineTo(t[1], n[1]); else for (var r = $c(t), i = $c(n), o = 0, u = 1; u < e; ++o, ++u) this._context.bezierCurveTo(r[0][o], i[0][o], r[1][o], i[1][o], t[u], n[u]); (this._line || 0 !== this._line && 1 === e) && this._context.closePath(), this._line = 1 - this._line, this._x = this._y = null }, point: function(t, n) { this._x.push(+t), this._y.push(+n) } }, Wc.prototype = { areaStart: function() { this._line = 0 }, areaEnd: function() { this._line = NaN }, lineStart: function() { this._x = this._y = NaN, this._point = 0 }, lineEnd: function() { 0 < this._t && this._t < 1 && 2 === this._point && this._context.lineTo(this._x, this._y), (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line >= 0 && (this._t = 1 - this._t, this._line = 1 - this._line) }, point: function(t, n) { switch (t = +t, n = +n, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, n) : this._context.moveTo(t, n); break; case 1: this._point = 2; default: if (this._t <= 0) this._context.lineTo(this._x, n), this._context.lineTo(t, n); else { var e = this._x * (1 - this._t) + t * this._t; this._context.lineTo(e, this._y), this._context.lineTo(e, n) } } this._x = t, this._y = n } }, rs.prototype = { constructor: rs, insert: function(t, n) { var e, r, i; if (t) { if (n.P = t, n.N = t.N, t.N && (t.N.P = n), t.N = n, t.R) { for (t = t.R; t.L;) t = t.L; t.L = n } else t.R = n; e = t } else this._ ? (t = as(this._), n.P = null, n.N = t, t.P = t.L = n, e = t) : (n.P = n.N = null, this._ = n, e = null); for (n.L = n.R = null, n.U = e, n.C = !0, t = n; e && e.C;) e === (r = e.U).L ? (i = r.R) && i.C ? (e.C = i.C = !1, r.C = !0, t = r) : (t === e.R && (os(this, e), e = (t = e).U), e.C = !1, r.C = !0, us(this, r)) : (i = r.L) && i.C ? (e.C = i.C = !1, r.C = !0, t = r) : (t === e.L && (us(this, e), e = (t = e).U), e.C = !1, r.C = !0, os(this, r)), e = t.U; this._.C = !1 }, remove: function(t) { t.N && (t.N.P = t.P), t.P && (t.P.N = t.N), t.N = t.P = null; var n, e, r, i = t.U, o = t.L, u = t.R; if (e = o ? u ? as(u) : o : u, i ? i.L === t ? i.L = e : i.R = e : this._ = e, o && u ? (r = e.C, e.C = t.C, e.L = o, o.U = e, e !== u ? (i = e.U, e.U = t.U, t = e.R, i.L = t, e.R = u, u.U = e) : (e.U = i, i = e, t = e.R)) : (r = t.C, t = e), t && (t.U = i), !r) if (t && t.C) t.C = !1; else { do { if (t === this._) break; if (t === i.L) { if ((n = i.R).C && (n.C = !1, i.C = !0, os(this, i), n = i.R), n.L && n.L.C || n.R && n.R.C) { n.R && n.R.C || (n.L.C = !1, n.C = !0, us(this, n), n = i.R), n.C = i.C, i.C = n.R.C = !1, os(this, i), t = this._; break } } else if ((n = i.L).C && (n.C = !1, i.C = !0, us(this, i), n = i.L), n.L && n.L.C || n.R && n.R.C) { n.L && n.L.C || (n.R.C = !1, n.C = !0, os(this, n), n = i.L), n.C = i.C, i.C = n.L.C = !1, us(this, i), t = this._; break } n.C = !0, t = i, i = i.U } while (!t.C); t && (t.C = !1) } } }; var P_, R_, L_, q_, D_, U_ = [], O_ = [], F_ = 1e-6, I_ = 1e-12; Ns.prototype = { constructor: Ns, polygons: function() { var t = this.edges; return this.cells.map(function(n) { var e = n.halfedges.map(function(e) { return ds(n, t[e]) }); return e.data = n.site.data, e }) }, triangles: function() { var t = [], n = this.edges; return this.cells.forEach(function(e, r) { if (o = (i = e.halfedges).length) for (var i, o, u, a = e.site, c = -1, s = n[i[o - 1]], f = s.left === a ? s.right : s.left; ++c < o;) u = f, f = (s = n[i[c]]).left === a ? s.right : s.left, u && f && r < u.index && r < f.index && Ms(a, u, f) < 0 && t.push([a.data, u.data, f.data]) }), t }, links: function() { return this.edges.filter(function(t) { return t.right }).map(function(t) { return { source: t.left.data, target: t.right.data } }) }, find: function(t, n, e) { for (var r, i, o = this, u = o._found || 0, a = o.cells.length; !(i = o.cells[u]);) if (++u >= a) return null; var c = t - i.site[0], s = n - i.site[1], f = c * c + s * s; do { i = o.cells[r = u], u = null, i.halfedges.forEach(function(e) { var r = o.edges[e], a = r.left; if (a !== i.site && a || (a = r.right)) { var c = t - a[0], s = n - a[1], l = c * c + s * s; l < f && (f = l, u = a.index) } }) } while (null !== u); return o._found = r, null == e || f <= e * e ? i.site : null } }, Ss.prototype = { constructor: Ss, scale: function(t) { return 1 === t ? this : new Ss(this.k * t, this.x, this.y) }, translate: function(t, n) { return 0 === t & 0 === n ? this : new Ss(this.k, this.x + this.k * t, this.y + this.k * n) }, apply: function(t) { return [t[0] * this.k + this.x, t[1] * this.k + this.y] }, applyX: function(t) { return t * this.k + this.x }, applyY: function(t) { return t * this.k + this.y }, invert: function(t) { return [(t[0] - this.x) / this.k, (t[1] - this.y) / this.k] }, invertX: function(t) { return (t - this.x) / this.k }, invertY: function(t) { return (t - this.y) / this.k }, rescaleX: function(t) { return t.copy().domain(t.range().map(this.invertX, this).map(t.invert, t)) }, rescaleY: function(t) { return t.copy().domain(t.range().map(this.invertY, this).map(t.invert, t)) }, toString: function() { return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")" } }; var Y_ = new Ss(1, 0, 0); Es.prototype = Ss.prototype, t.version = "4.13.0", t.bisect = Os, t.bisectRight = Os, t.bisectLeft = Fs, t.ascending = n, t.bisector = e, t.cross = function(t, n, e) { var i, o, u, a, c = t.length, s = n.length, f = new Array(c * s); for (null == e && (e = r), i = u = 0; i < c; ++i) for (a = t[i], o = 0; o < s; ++o, ++u) f[u] = e(a, n[o]); return f }, t.descending = function(t, n) { return n < t ? -1 : n > t ? 1 : n >= t ? 0 : NaN }, t.deviation = u, t.extent = a, t.histogram = function() { function t(t) { var i, o, u = t.length, a = new Array(u); for (i = 0; i < u; ++i) a[i] = n(t[i], i, t); var c = e(a), s = c[0], l = c[1], h = r(a, s, l); Array.isArray(h) || (h = p(s, l, h), h = f(Math.ceil(s / h) * h, Math.floor(l / h) * h, h)); for (var d = h.length; h[0] <= s;) h.shift(), --d; for (; h[d - 1] > l;) h.pop(), --d; var v, g = new Array(d + 1); for (i = 0; i <= d; ++i)(v = g[i] = []).x0 = i > 0 ? h[i - 1] : s, v.x1 = i < d ? h[i] : l; for (i = 0; i < u; ++i) s <= (o = a[i]) && o <= l && g[Os(h, o, 0, d)].push(t[i]); return g } var n = s, e = a, r = d; return t.value = function(e) { return arguments.length ? (n = "function" == typeof e ? e : c(e), t) : n }, t.domain = function(n) { return arguments.length ? (e = "function" == typeof n ? n : c([n[0], n[1]]), t) : e }, t.thresholds = function(n) { return arguments.length ? (r = "function" == typeof n ? n : Array.isArray(n) ? c(Ys.call(n)) : c(n), t) : r }, t }, t.thresholdFreedmanDiaconis = function(t, e, r) { return t = Bs.call(t, i).sort(n), Math.ceil((r - e) / (2 * (v(t, .75) - v(t, .25)) * Math.pow(t.length, -1 / 3))) }, t.thresholdScott = function(t, n, e) { return Math.ceil((e - n) / (3.5 * u(t) * Math.pow(t.length, -1 / 3))) }, t.thresholdSturges = d, t.max = function(t, n) { var e, r, i = t.length, o = -1; if (null == n) { for (; ++o < i;) if (null != (e = t[o]) && e >= e) for (r = e; ++o < i;) null != (e = t[o]) && e > r && (r = e) } else for (; ++o < i;) if (null != (e = n(t[o], o, t)) && e >= e) for (r = e; ++o < i;) null != (e = n(t[o], o, t)) && e > r && (r = e); return r }, t.mean = function(t, n) { var e, r = t.length, o = r, u = -1, a = 0; if (null == n) for (; ++u < r;) isNaN(e = i(t[u])) ? --o : a += e; else for (; ++u < r;) isNaN(e = i(n(t[u], u, t))) ? --o : a += e; if (o) return a / o }, t.median = function(t, e) { var r, o = t.length, u = -1, a = []; if (null == e) for (; ++u < o;) isNaN(r = i(t[u])) || a.push(r); else for (; ++u < o;) isNaN(r = i(e(t[u], u, t))) || a.push(r); return v(a.sort(n), .5) }, t.merge = g, t.min = _, t.pairs = function(t, n) { null == n && (n = r); for (var e = 0, i = t.length - 1, o = t[0], u = new Array(i < 0 ? 0 : i); e < i;) u[e] = n(o, o = t[++e]); return u }, t.permute = function(t, n) { for (var e = n.length, r = new Array(e); e--;) r[e] = t[n[e]]; return r }, t.quantile = v, t.range = f, t.scan = function(t, e) { if (r = t.length) { var r, i, o = 0, u = 0, a = t[u]; for (null == e && (e = n); ++o < r;)(e(i = t[o], a) < 0 || 0 !== e(a, a)) && (a = i, u = o); return 0 === e(a, a) ? u : void 0 } }, t.shuffle = function(t, n, e) { for (var r, i, o = (null == e ? t.length : e) - (n = null == n ? 0 : +n); o;) i = Math.random() * o-- | 0, r = t[o + n], t[o + n] = t[i + n], t[i + n] = r; return t }, t.sum = function(t, n) { var e, r = t.length, i = -1, o = 0; if (null == n) for (; ++i < r;)(e = +t[i]) && (o += e); else for (; ++i < r;)(e = +n(t[i], i, t)) && (o += e); return o }, t.ticks = l, t.tickIncrement = h, t.tickStep = p, t.transpose = y, t.variance = o, t.zip = function() { return y(arguments) }, t.axisTop = function(t) { return T($s, t) }, t.axisRight = function(t) { return T(Ws, t) }, t.axisBottom = function(t) { return T(Zs, t) }, t.axisLeft = function(t) { return T(Gs, t) }, t.brush = function() { return Kn(oh) }, t.brushX = function() { return Kn(rh) }, t.brushY = function() { return Kn(ih) }, t.brushSelection = function(t) { var n = t.__brush; return n ? n.dim.output(n.selection) : null }, t.chord = function() { function t(t) { var o, u, a, c, s, l, h = t.length, p = [], d = f(h), v = [], g = [], _ = g.groups = new Array(h), y = new Array(h * h); for (o = 0, s = -1; ++s < h;) { for (u = 0, l = -1; ++l < h;) u += t[s][l]; p.push(u), v.push(f(h)), o += u } for (e && d.sort(function(t, n) { return e(p[t], p[n]) }), r && v.forEach(function(n, e) { n.sort(function(n, i) { return r(t[e][n], t[e][i]) }) }), c = (o = gh(0, vh - n * h) / o) ? n : vh / h, u = 0, s = -1; ++s < h;) { for (a = u, l = -1; ++l < h;) { var m = d[s], x = v[m][l], b = t[m][x], w = u, M = u += b * o; y[x * h + m] = { index: m, subindex: x, startAngle: w, endAngle: M, value: b } } _[m] = { index: m, startAngle: a, endAngle: u, value: p[m] }, u += c } for (s = -1; ++s < h;) for (l = s - 1; ++l < h;) { var T = y[l * h + s], N = y[s * h + l]; (T.value || N.value) && g.push(T.value < N.value ? { source: N, target: T } : { source: T, target: N }) } return i ? g.sort(i) : g } var n = 0, e = null, r = null, i = null; return t.padAngle = function(e) { return arguments.length ? (n = gh(0, e), t) : n }, t.sortGroups = function(n) { return arguments.length ? (e = n, t) : e }, t.sortSubgroups = function(n) { return arguments.length ? (r = n, t) : r }, t.sortChords = function(n) { return arguments.length ? (null == n ? i = null : (i = function(t) { return function(n, e) { return t(n.source.value + n.target.value, e.source.value + e.target.value) } }(n))._ = n, t) : i && i._ }, t }, t.ribbon = function() { function t() { var t, a = _h.call(arguments), c = n.apply(this, a), s = e.apply(this, a), f = +r.apply(this, (a[0] = c, a)), l = i.apply(this, a) - dh, h = o.apply(this, a) - dh, p = f * lh(l), d = f * hh(l), v = +r.apply(this, (a[0] = s, a)), g = i.apply(this, a) - dh, _ = o.apply(this, a) - dh; if (u || (u = t = ee()), u.moveTo(p, d), u.arc(0, 0, f, l, h), l === g && h === _ || (u.quadraticCurveTo(0, 0, v * lh(g), v * hh(g)), u.arc(0, 0, v, g, _)), u.quadraticCurveTo(0, 0, p, d), u.closePath(), t) return u = null, t + "" || null } var n = re, e = ie, r = oe, i = ue, o = ae, u = null; return t.radius = function(n) { return arguments.length ? (r = "function" == typeof n ? n : te(+n), t) : r }, t.startAngle = function(n) { return arguments.length ? (i = "function" == typeof n ? n : te(+n), t) : i }, t.endAngle = function(n) { return arguments.length ? (o = "function" == typeof n ? n : te(+n), t) : o }, t.source = function(e) { return arguments.length ? (n = e, t) : n }, t.target = function(n) { return arguments.length ? (e = n, t) : e }, t.context = function(n) { return arguments.length ? (u = null == n ? null : n, t) : u }, t }, t.nest = function() { function t(n, i, u, a) { if (i >= o.length) return null != e && n.sort(e), null != r ? r(n) : n; for (var c, s, f, l = -1, h = n.length, p = o[i++], d = se(), v = u(); ++l < h;)(f = d.get(c = p(s = n[l]) + "")) ? f.push(s) : d.set(c, [s]); return d.each(function(n, e) { a(v, e, t(n, i, u, a)) }), v } function n(t, e) { if (++e > o.length) return t; var i, a = u[e - 1]; return null != r && e >= o.length ? i = t.entries() : (i = [], t.each(function(t, r) { i.push({ key: r, values: n(t, e) }) })), null != a ? i.sort(function(t, n) { return a(t.key, n.key) }) : i } var e, r, i, o = [], u = []; return i = { object: function(n) { return t(n, 0, fe, le) }, map: function(n) { return t(n, 0, he, pe) }, entries: function(e) { return n(t(e, 0, he, pe), 0) }, key: function(t) { return o.push(t), i }, sortKeys: function(t) { return u[o.length - 1] = t, i }, sortValues: function(t) { return e = t, i }, rollup: function(t) { return r = t, i } } }, t.set = ve, t.map = se, t.keys = function(t) { var n = []; for (var e in t) n.push(e); return n }, t.values = function(t) { var n = []; for (var e in t) n.push(t[e]); return n }, t.entries = function(t) { var n = []; for (var e in t) n.push({ key: e, value: t[e] }); return n }, t.color = Et, t.rgb = Pt, t.hsl = qt, t.lab = Ft, t.hcl = Xt, t.cubehelix = $t, t.dispatch = N, t.drag = function() { function n(t) { t.on("mousedown.drag", e).filter(g).on("touchstart.drag", o).on("touchmove.drag", u).on("touchend.drag touchcancel.drag", a).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)") } function e() { if (!h && p.apply(this, arguments)) { var n = c("mouse", d.apply(this, arguments), pt, this, arguments); n && (ct(t.event.view).on("mousemove.drag", r, !0).on("mouseup.drag", i, !0), _t(t.event.view), vt(), l = !1, s = t.event.clientX, f = t.event.clientY, n("start")) } } function r() { if (gt(), !l) { var n = t.event.clientX - s, e = t.event.clientY - f; l = n * n + e * e > x } _.mouse("drag") } function i() { ct(t.event.view).on("mousemove.drag mouseup.drag", null), yt(t.event.view, l), gt(), _.mouse("end") } function o() { if (p.apply(this, arguments)) { var n, e, r = t.event.changedTouches, i = d.apply(this, arguments), o = r.length; for (n = 0; n < o; ++n)(e = c(r[n].identifier, i, dt, this, arguments)) && (vt(), e("start")) } } function u() { var n, e, r = t.event.changedTouches, i = r.length; for (n = 0; n < i; ++n)(e = _[r[n].identifier]) && (gt(), e("drag")) } function a() { var n, e, r = t.event.changedTouches, i = r.length; for (h && clearTimeout(h), h = setTimeout(function() { h = null }, 500), n = 0; n < i; ++n)(e = _[r[n].identifier]) && (vt(), e("end")) } function c(e, r, i, o, u) { var a, c, s, f = i(r, e), l = y.copy(); if (it(new xt(n, "beforestart", a, e, m, f[0], f[1], 0, 0, l), function() { return null != (t.event.subject = a = v.apply(o, u)) && (c = a.x - f[0] || 0, s = a.y - f[1] || 0, !0) })) return function t(h) { var p, d = f; switch (h) { case "start": _[e] = t, p = m++; break; case "end": delete _[e], --m; case "drag": f = i(r, e), p = m } it(new xt(n, h, a, e, p, f[0] + c, f[1] + s, f[0] - d[0], f[1] - d[1], l), l.apply, l, [h, o, u]) } } var s, f, l, h, p = bt, d = wt, v = Mt, g = Tt, _ = {}, y = N("start", "drag", "end"), m = 0, x = 0; return n.filter = function(t) { return arguments.length ? (p = "function" == typeof t ? t : mt(!!t), n) : p }, n.container = function(t) { return arguments.length ? (d = "function" == typeof t ? t : mt(t), n) : d }, n.subject = function(t) { return arguments.length ? (v = "function" == typeof t ? t : mt(t), n) : v }, n.touchable = function(t) { return arguments.length ? (g = "function" == typeof t ? t : mt(!!t), n) : g }, n.on = function() { var t = y.on.apply(y, arguments); return t === y ? n : t }, n.clickDistance = function(t) { return arguments.length ? (x = (t = +t) * t, n) : Math.sqrt(x) }, n }, t.dragDisable = _t, t.dragEnable = yt, t.dsvFormat = _e, t.csvParse = Eh, t.csvParseRows = Ah, t.csvFormat = Ch, t.csvFormatRows = zh, t.tsvParse = Rh, t.tsvParseRows = Lh, t.tsvFormat = qh, t.tsvFormatRows = Dh, t.easeLinear = function(t) { return +t }, t.easeQuad = On, t.easeQuadIn = function(t) { return t * t }, t.easeQuadOut = function(t) { return t * (2 - t) }, t.easeQuadInOut = On, t.easeCubic = Fn, t.easeCubicIn = function(t) { return t * t * t }, t.easeCubicOut = function(t) { return --t * t * t + 1 }, t.easeCubicInOut = Fn, t.easePoly = zl, t.easePolyIn = Al, t.easePolyOut = Cl, t.easePolyInOut = zl, t.easeSin = In, t.easeSinIn = function(t) { return 1 - Math.cos(t * Rl) }, t.easeSinOut = function(t) { return Math.sin(t * Rl) }, t.easeSinInOut = In, t.easeExp = Yn, t.easeExpIn = function(t) { return Math.pow(2, 10 * t - 10) }, t.easeExpOut = function(t) { return 1 - Math.pow(2, -10 * t) }, t.easeExpInOut = Yn, t.easeCircle = Bn, t.easeCircleIn = function(t) { return 1 - Math.sqrt(1 - t * t) }, t.easeCircleOut = function(t) { return Math.sqrt(1 - --t * t) }, t.easeCircleInOut = Bn, t.easeBounce = Hn, t.easeBounceIn = function(t) { return 1 - Hn(1 - t) }, t.easeBounceOut = Hn, t.easeBounceInOut = function(t) { return ((t *= 2) <= 1 ? 1 - Hn(1 - t) : Hn(t - 1) + 1) / 2 }, t.easeBack = Vl, t.easeBackIn = jl, t.easeBackOut = Xl, t.easeBackInOut = Vl, t.easeElastic = Zl, t.easeElasticIn = Wl, t.easeElasticOut = Zl, t.easeElasticInOut = Gl, t.forceCenter = function(t, n) { function e() { var e, i, o = r.length, u = 0, a = 0; for (e = 0; e < o; ++e) u += (i = r[e]).x, a += i.y; for (u = u / o - t, a = a / o - n, e = 0; e < o; ++e)(i = r[e]).x -= u, i.y -= a } var r; return null == t && (t = 0), null == n && (n = 0), e.initialize = function(t) { r = t }, e.x = function(n) { return arguments.length ? (t = +n, e) : t }, e.y = function(t) { return arguments.length ? (n = +t, e) : n }, e }, t.forceCollide = function(t) { function n() { for (var t, n, r, c, s, f, l, h = i.length, p = 0; p < a; ++p) for (n = Te(i, Se, Ee).visitAfter(e), t = 0; t < h; ++t) r = i[t], f = o[r.index], l = f * f, c = r.x + r.vx, s = r.y + r.vy, n.visit(function(t, n, e, i, o) { var a = t.data, h = t.r, p = f + h; if (!a) return n > c + p || i < c - p || e > s + p || o < s - p; if (a.index > r.index) { var d = c - a.x - a.vx, v = s - a.y - a.vy, g = d * d + v * v; g < p * p && (0 === d && (d = me(), g += d * d), 0 === v && (v = me(), g += v * v), g = (p - (g = Math.sqrt(g))) / g * u, r.vx += (d *= g) * (p = (h *= h) / (l + h)), r.vy += (v *= g) * p, a.vx -= d * (p = 1 - p), a.vy -= v * p) } }) } function e(t) { if (t.data) return t.r = o[t.data.index]; for (var n = t.r = 0; n < 4; ++n) t[n] && t[n].r > t.r && (t.r = t[n].r) } function r() { if (i) { var n, e, r = i.length; for (o = new Array(r), n = 0; n < r; ++n) e = i[n], o[e.index] = +t(e, n, i) } } var i, o, u = 1, a = 1; return "function" != typeof t && (t = ye(null == t ? 1 : +t)), n.initialize = function(t) { i = t, r() }, n.iterations = function(t) { return arguments.length ? (a = +t, n) : a }, n.strength = function(t) { return arguments.length ? (u = +t, n) : u }, n.radius = function(e) { return arguments.length ? (t = "function" == typeof e ? e : ye(+e), r(), n) : t }, n }, t.forceLink = function(t) { function n(n) { for (var e = 0, r = t.length; e < p; ++e) for (var i, a, c, f, l, h, d, v = 0; v < r; ++v) a = (i = t[v]).source, f = (c = i.target).x + c.vx - a.x - a.vx || me(), l = c.y + c.vy - a.y - a.vy || me(), f *= h = ((h = Math.sqrt(f * f + l * l)) - u[v]) / h * n * o[v], l *= h, c.vx -= f * (d = s[v]), c.vy -= l * d, a.vx += f * (d = 1 - d), a.vy += l * d } function e() { if (a) { var n, e, l = a.length, h = t.length, p = se(a, f); for (n = 0, c = new Array(l); n < h; ++n)(e = t[n]).index = n, "object" != typeof e.source && (e.source = Ce(p, e.source)), "object" != typeof e.target && (e.target = Ce(p, e.target)), c[e.source.index] = (c[e.source.index] || 0) + 1, c[e.target.index] = (c[e.target.index] || 0) + 1; for (n = 0, s = new Array(h); n < h; ++n) e = t[n], s[n] = c[e.source.index] / (c[e.source.index] + c[e.target.index]); o = new Array(h), r(), u = new Array(h), i() } } function r() { if (a) for (var n = 0, e = t.length; n < e; ++n) o[n] = +l(t[n], n, t) } function i() { if (a) for (var n = 0, e = t.length; n < e; ++n) u[n] = +h(t[n], n, t) } var o, u, a, c, s, f = Ae, l = function(t) { return 1 / Math.min(c[t.source.index], c[t.target.index]) }, h = ye(30), p = 1; return null == t && (t = []), n.initialize = function(t) { a = t, e() }, n.links = function(r) { return arguments.length ? (t = r, e(), n) : t }, n.id = function(t) { return arguments.length ? (f = t, n) : f }, n.iterations = function(t) { return arguments.length ? (p = +t, n) : p }, n.strength = function(t) { return arguments.length ? (l = "function" == typeof t ? t : ye(+t), r(), n) : l }, n.distance = function(t) { return arguments.length ? (h = "function" == typeof t ? t : ye(+t), i(), n) : h }, n }, t.forceManyBody = function() { function t(t) { var n, a = i.length, c = Te(i, ze, Pe).visitAfter(e); for (u = t, n = 0; n < a; ++n) o = i[n], c.visit(r) } function n() { if (i) { var t, n, e = i.length; for (a = new Array(e), t = 0; t < e; ++t) n = i[t], a[n.index] = +c(n, t, i) } } function e(t) { var n, e, r, i, o, u = 0, c = 0; if (t.length) { for (r = i = o = 0; o < 4; ++o)(n = t[o]) && (e = Math.abs(n.value)) && (u += n.value, c += e, r += e * n.x, i += e * n.y); t.x = r / c, t.y = i / c } else { (n = t).x = n.data.x, n.y = n.data.y; do { u += a[n.data.index] } while (n = n.next) } t.value = u } function r(t, n, e, r) { if (!t.value) return !0; var i = t.x - o.x, c = t.y - o.y, h = r - n, p = i * i + c * c; if (h * h / l < p) return p < f && (0 === i && (i = me(), p += i * i), 0 === c && (c = me(), p += c * c), p < s && (p = Math.sqrt(s * p)), o.vx += i * t.value * u / p, o.vy += c * t.value * u / p), !0; if (!(t.length || p >= f)) { (t.data !== o || t.next) && (0 === i && (i = me(), p += i * i), 0 === c && (c = me(), p += c * c), p < s && (p = Math.sqrt(s * p))); do { t.data !== o && (h = a[t.data.index] * u / p, o.vx += i * h, o.vy += c * h) } while (t = t.next) } } var i, o, u, a, c = ye(-30), s = 1, f = 1 / 0, l = .81; return t.initialize = function(t) { i = t, n() }, t.strength = function(e) { return arguments.length ? (c = "function" == typeof e ? e : ye(+e), n(), t) : c }, t.distanceMin = function(n) { return arguments.length ? (s = n * n, t) : Math.sqrt(s) }, t.distanceMax = function(n) { return arguments.length ? (f = n * n, t) : Math.sqrt(f) }, t.theta = function(n) { return arguments.length ? (l = n * n, t) : Math.sqrt(l) }, t }, t.forceRadial = function(t, n, e) { function r(t) { for (var r = 0, i = o.length; r < i; ++r) { var c = o[r], s = c.x - n || 1e-6, f = c.y - e || 1e-6, l = Math.sqrt(s * s + f * f), h = (a[r] - l) * u[r] * t / l; c.vx += s * h, c.vy += f * h } } function i() { if (o) { var n, e = o.length; for (u = new Array(e), a = new Array(e), n = 0; n < e; ++n) a[n] = +t(o[n], n, o), u[n] = isNaN(a[n]) ? 0 : +c(o[n], n, o) } } var o, u, a, c = ye(.1); return "function" != typeof t && (t = ye(+t)), null == n && (n = 0), null == e && (e = 0), r.initialize = function(t) { o = t, i() }, r.strength = function(t) { return arguments.length ? (c = "function" == typeof t ? t : ye(+t), i(), r) : c }, r.radius = function(n) { return arguments.length ? (t = "function" == typeof n ? n : ye(+n), i(), r) : t }, r.x = function(t) { return arguments.length ? (n = +t, r) : n }, r.y = function(t) { return arguments.length ? (e = +t, r) : e }, r }, t.forceSimulation = function(t) { function n() { e(), p.call("tick", o), u < a && (h.stop(), p.call("end", o)) } function e() { var n, e, r = t.length; for (u += (s - u) * c, l.each(function(t) { t(u) }), n = 0; n < r; ++n) null == (e = t[n]).fx ? e.x += e.vx *= f : (e.x = e.fx, e.vx = 0), null == e.fy ? e.y += e.vy *= f : (e.y = e.fy, e.vy = 0) } function r() { for (var n, e = 0, r = t.length; e < r; ++e) { if (n = t[e], n.index = e, isNaN(n.x) || isNaN(n.y)) { var i = Fh * Math.sqrt(e), o = e * Ih; n.x = i * Math.cos(o), n.y = i * Math.sin(o) }(isNaN(n.vx) || isNaN(n.vy)) && (n.vx = n.vy = 0) } } function i(n) { return n.initialize && n.initialize(t), n } var o, u = 1, a = .001, c = 1 - Math.pow(a, 1 / 300), s = 0, f = .6, l = se(), h = wn(n), p = N("tick", "end"); return null == t && (t = []), r(), o = { tick: e, restart: function() { return h.restart(n), o }, stop: function() { return h.stop(), o }, nodes: function(n) { return arguments.length ? (t = n, r(), l.each(i), o) : t }, alpha: function(t) { return arguments.length ? (u = +t, o) : u }, alphaMin: function(t) { return arguments.length ? (a = +t, o) : a }, alphaDecay: function(t) { return arguments.length ? (c = +t, o) : +c }, alphaTarget: function(t) { return arguments.length ? (s = +t, o) : s }, velocityDecay: function(t) { return arguments.length ? (f = 1 - t, o) : 1 - f }, force: function(t, n) { return arguments.length > 1 ? (null == n ? l.remove(t) : l.set(t, i(n)), o) : l.get(t) }, find: function(n, e, r) { var i, o, u, a, c, s = 0, f = t.length; for (null == r ? r = 1 / 0 : r *= r, s = 0; s < f; ++s)(u = (i = n - (a = t[s]).x) * i + (o = e - a.y) * o) < r && (c = a, r = u); return c }, on: function(t, n) { return arguments.length > 1 ? (p.on(t, n), o) : p.on(t) } } }, t.forceX = function(t) { function n(t) { for (var n, e = 0, u = r.length; e < u; ++e)(n = r[e]).vx += (o[e] - n.x) * i[e] * t } function e() { if (r) { var n, e = r.length; for (i = new Array(e), o = new Array(e), n = 0; n < e; ++n) i[n] = isNaN(o[n] = +t(r[n], n, r)) ? 0 : +u(r[n], n, r) } } var r, i, o, u = ye(.1); return "function" != typeof t && (t = ye(null == t ? 0 : +t)), n.initialize = function(t) { r = t, e() }, n.strength = function(t) { return arguments.length ? (u = "function" == typeof t ? t : ye(+t), e(), n) : u }, n.x = function(r) { return arguments.length ? (t = "function" == typeof r ? r : ye(+r), e(), n) : t }, n }, t.forceY = function(t) { function n(t) { for (var n, e = 0, u = r.length; e < u; ++e)(n = r[e]).vy += (o[e] - n.y) * i[e] * t } function e() { if (r) { var n, e = r.length; for (i = new Array(e), o = new Array(e), n = 0; n < e; ++n) i[n] = isNaN(o[n] = +t(r[n], n, r)) ? 0 : +u(r[n], n, r) } } var r, i, o, u = ye(.1); return "function" != typeof t && (t = ye(null == t ? 0 : +t)), n.initialize = function(t) { r = t, e() }, n.strength = function(t) { return arguments.length ? (u = "function" == typeof t ? t : ye(+t), e(), n) : u }, n.y = function(r) { return arguments.length ? (t = "function" == typeof r ? r : ye(+r), e(), n) : t }, n }, t.formatDefaultLocale = Ie, t.formatLocale = Fe, t.formatSpecifier = De, t.precisionFixed = Ye, t.precisionPrefix = Be, t.precisionRound = He, t.geoArea = function(t) { return Vp.reset(), tr(t, $p), 2 * Vp }, t.geoBounds = function(t) { var n, e, r, i, o, u, a; if (Kh = Jh = -(Gh = Qh = 1 / 0), ip = [], tr(t, Zp), e = ip.length) { for (ip.sort(xr), n = 1, o = [r = ip[0]]; n < e; ++n) br(r, (i = ip[n])[0]) || br(r, i[1]) ? (mr(r[0], i[1]) > mr(r[0], r[1]) && (r[1] = i[1]), mr(i[0], r[1]) > mr(r[0], r[1]) && (r[0] = i[0])) : o.push(r = i); for (u = -1 / 0, n = 0, r = o[e = o.length - 1]; n <= e; r = i, ++n) i = o[n], (a = mr(r[1], i[0])) > u && (u = a, Gh = i[0], Jh = r[1]) } return ip = op = null, Gh === 1 / 0 || Qh === 1 / 0 ? [ [NaN, NaN], [NaN, NaN] ] : [ [Gh, Qh], [Jh, Kh] ] }, t.geoCentroid = function(t) { up = ap = cp = sp = fp = lp = hp = pp = dp = vp = gp = 0, tr(t, Gp); var n = dp, e = vp, r = gp, i = n * n + e * e + r * r; return i < Tp && (n = lp, e = hp, r = pp, ap < Mp && (n = cp, e = sp, r = fp), (i = n * n + e * e + r * r) < Tp) ? [NaN, NaN] : [Rp(e, n) * Ap, We(r / Yp(i)) * Ap] }, t.geoCircle = function() { function t() { var t = r.apply(this, arguments), a = i.apply(this, arguments) * Cp, c = o.apply(this, arguments) * Cp; return n = [], e = qr(-t[0] * Cp, -t[1] * Cp, 0).invert, Ir(u, a, c, 1), t = { type: "Polygon", coordinates: [n] }, n = e = null, t } var n, e, r = Pr([0, 0]), i = Pr(90), o = Pr(6), u = { point: function(t, r) { n.push(t = e(t, r)), t[0] *= Ap, t[1] *= Ap } }; return t.center = function(n) { return arguments.length ? (r = "function" == typeof n ? n : Pr([+n[0], +n[1]]), t) : r }, t.radius = function(n) { return arguments.length ? (i = "function" == typeof n ? n : Pr(+n), t) : i }, t.precision = function(n) { return arguments.length ? (o = "function" == typeof n ? n : Pr(+n), t) : o }, t }, t.geoClipAntimeridian = sd, t.geoClipCircle = Qr, t.geoClipExtent = function() { var t, n, e, r = 0, i = 0, o = 960, u = 500; return e = { stream: function(e) { return t && n === e ? t : t = Jr(r, i, o, u)(n = e) }, extent: function(a) { return arguments.length ? (r = +a[0][0], i = +a[0][1], o = +a[1][0], u = +a[1][1], t = n = null, e) : [ [r, i], [o, u] ] } } }, t.geoClipRectangle = Jr, t.geoContains = function(t, n) { return (t && gd.hasOwnProperty(t.type) ? gd[t.type] : ii)(t, n) }, t.geoDistance = ri, t.geoGraticule = hi, t.geoGraticule10 = function() { return hi()() }, t.geoInterpolate = function(t, n) { var e = t[0] * Cp, r = t[1] * Cp, i = n[0] * Cp, o = n[1] * Cp, u = Lp(r), a = Fp(r), c = Lp(o), s = Fp(o), f = u * Lp(e), l = u * Fp(e), h = c * Lp(i), p = c * Fp(i), d = 2 * We(Yp(Ze(o - r) + u * c * Ze(i - e))), v = Fp(d), g = d ? function(t) { var n = Fp(t *= d) / v, e = Fp(d - t) / v, r = e * f + n * h, i = e * l + n * p, o = e * a + n * s; return [Rp(i, r) * Ap, Rp(o, Yp(r * r + i * i)) * Ap] } : function() { return [e * Ap, r * Ap] }; return g.distance = d, g }, t.geoLength = ei, t.geoPath = function(t, n) { function e(t) { return t && ("function" == typeof o && i.pointRadius(+o.apply(this, arguments)), tr(t, r(i))), i.result() } var r, i, o = 4.5; return e.area = function(t) { return tr(t, r(xd)), xd.result() }, e.measure = function(t) { return tr(t, r(Bd)), Bd.result() }, e.bounds = function(t) { return tr(t, r(Nd)), Nd.result() }, e.centroid = function(t) { return tr(t, r(qd)), qd.result() }, e.projection = function(n) { return arguments.length ? (r = null == n ? (t = null, pi) : (t = n).stream, e) : t }, e.context = function(t) { return arguments.length ? (i = null == t ? (n = null, new Ci) : new Si(n = t), "function" != typeof o && i.pointRadius(o), e) : n }, e.pointRadius = function(t) { return arguments.length ? (o = "function" == typeof t ? t : (i.pointRadius(+t), +t), e) : o }, e.projection(t).context(n) }, t.geoAlbers = Xi, t.geoAlbersUsa = function() { function t(t) { var n = t[0], e = t[1]; return a = null, i.point(n, e), a || (o.point(n, e), a) || (u.point(n, e), a) } function n() { return e = r = null, t } var e, r, i, o, u, a, c = Xi(), s = ji().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), f = ji().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), l = { point: function(t, n) { a = [t, n] } }; return t.invert = function(t) { var n = c.scale(), e = c.translate(), r = (t[0] - e[0]) / n, i = (t[1] - e[1]) / n; return (i >= .12 && i < .234 && r >= -.425 && r < -.214 ? s : i >= .166 && i < .234 && r >= -.214 && r < -.115 ? f : c).invert(t) }, t.stream = function(t) { return e && r === t ? e : e = function(t) { var n = t.length; return { point: function(e, r) { for (var i = -1; ++i < n;) t[i].point(e, r) }, sphere: function() { for (var e = -1; ++e < n;) t[e].sphere() }, lineStart: function() { for (var e = -1; ++e < n;) t[e].lineStart() }, lineEnd: function() { for (var e = -1; ++e < n;) t[e].lineEnd() }, polygonStart: function() { for (var e = -1; ++e < n;) t[e].polygonStart() }, polygonEnd: function() { for (var e = -1; ++e < n;) t[e].polygonEnd() } } }([c.stream(r = t), s.stream(t), f.stream(t)]) }, t.precision = function(t) { return arguments.length ? (c.precision(t), s.precision(t), f.precision(t), n()) : c.precision() }, t.scale = function(n) { return arguments.length ? (c.scale(n), s.scale(.35 * n), f.scale(n), t.translate(c.translate())) : c.scale() }, t.translate = function(t) { if (!arguments.length) return c.translate(); var e = c.scale(), r = +t[0], a = +t[1]; return i = c.translate(t).clipExtent([ [r - .455 * e, a - .238 * e], [r + .455 * e, a + .238 * e] ]).stream(l), o = s.translate([r - .307 * e, a + .201 * e]).clipExtent([ [r - .425 * e + Mp, a + .12 * e + Mp], [r - .214 * e - Mp, a + .234 * e - Mp] ]).stream(l), u = f.translate([r - .205 * e, a + .212 * e]).clipExtent([ [r - .214 * e + Mp, a + .166 * e + Mp], [r - .115 * e - Mp, a + .234 * e - Mp] ]).stream(l), n() }, t.fitExtent = function(n, e) { return qi(t, n, e) }, t.fitSize = function(n, e) { return Di(t, n, e) }, t.fitWidth = function(n, e) { return Ui(t, n, e) }, t.fitHeight = function(n, e) { return Oi(t, n, e) }, t.scale(1070) }, t.geoAzimuthalEqualArea = function() { return Ii(Vd).scale(124.75).clipAngle(179.999) }, t.geoAzimuthalEqualAreaRaw = Vd, t.geoAzimuthalEquidistant = function() { return Ii($d).scale(79.4188).clipAngle(179.999) }, t.geoAzimuthalEquidistantRaw = $d, t.geoConicConformal = function() { return Bi(Qi).scale(109.5).parallels([30, 30]) }, t.geoConicConformalRaw = Qi, t.geoConicEqualArea = ji, t.geoConicEqualAreaRaw = Hi, t.geoConicEquidistant = function() { return Bi(Ki).scale(131.154).center([0, 13.9389]) }, t.geoConicEquidistantRaw = Ki, t.geoEquirectangular = function() { return Ii(Ji).scale(152.63) }, t.geoEquirectangularRaw = Ji, t.geoGnomonic = function() { return Ii(to).scale(144.049).clipAngle(60) }, t.geoGnomonicRaw = to, t.geoIdentity = function() { function t() { return i = o = null, u } var n, e, r, i, o, u, a = 1, c = 0, s = 0, f = 1, l = 1, h = pi, p = null, d = pi; return u = { stream: function(t) { return i && o === t ? i : i = h(d(o = t)) }, postclip: function(i) { return arguments.length ? (d = i, p = n = e = r = null, t()) : d }, clipExtent: function(i) { return arguments.length ? (d = null == i ? (p = n = e = r = null, pi) : Jr(p = +i[0][0], n = +i[0][1], e = +i[1][0], r = +i[1][1]), t()) : null == p ? null : [ [p, n], [e, r] ] }, scale: function(n) { return arguments.length ? (h = no((a = +n) * f, a * l, c, s), t()) : a }, translate: function(n) { return arguments.length ? (h = no(a * f, a * l, c = +n[0], s = +n[1]), t()) : [c, s] }, reflectX: function(n) { return arguments.length ? (h = no(a * (f = n ? -1 : 1), a * l, c, s), t()) : f < 0 }, reflectY: function(n) { return arguments.length ? (h = no(a * f, a * (l = n ? -1 : 1), c, s), t()) : l < 0 }, fitExtent: function(t, n) { return qi(u, t, n) }, fitSize: function(t, n) { return Di(u, t, n) }, fitWidth: function(t, n) { return Ui(u, t, n) }, fitHeight: function(t, n) { return Oi(u, t, n) } } }, t.geoProjection = Ii, t.geoProjectionMutator = Yi, t.geoMercator = function() { return Zi(Wi).scale(961 / Ep) }, t.geoMercatorRaw = Wi, t.geoNaturalEarth1 = function() { return Ii(eo).scale(175.295) }, t.geoNaturalEarth1Raw = eo, t.geoOrthographic = function() { return Ii(ro).scale(249.5).clipAngle(90 + Mp) }, t.geoOrthographicRaw = ro, t.geoStereographic = function() { return Ii(io).scale(250).clipAngle(142) }, t.geoStereographicRaw = io, t.geoTransverseMercator = function() { var t = Zi(oo), n = t.center, e = t.rotate; return t.center = function(t) { return arguments.length ? n([-t[1], t[0]]) : (t = n(), [t[1], -t[0]]) }, t.rotate = function(t) { return arguments.length ? e([t[0], t[1], t.length > 2 ? t[2] + 90 : 90]) : (t = e(), [t[0], t[1], t[2] - 90]) }, e([0, 0, 90]).scale(159.155) }, t.geoTransverseMercatorRaw = oo, t.geoRotation = Fr, t.geoStream = tr, t.geoTransform = function(t) { return { stream: Pi(t) } }, t.cluster = function() { function t(t) { var o, u = 0; t.eachAfter(function(t) { var e = t.children; e ? (t.x = function(t) { return t.reduce(ao, 0) / t.length }(e), t.y = function(t) { return 1 + t.reduce(co, 0) }(e)) : (t.x = o ? u += n(t, o) : 0, t.y = 0, o = t) }); var a = function(t) { for (var n; n = t.children;) t = n[0]; return t }(t), c = function(t) { for (var n; n = t.children;) t = n[n.length - 1]; return t }(t), s = a.x - n(a, c) / 2, f = c.x + n(c, a) / 2; return t.eachAfter(i ? function(n) { n.x = (n.x - t.x) * e, n.y = (t.y - n.y) * r } : function(n) { n.x = (n.x - s) / (f - s) * e, n.y = (1 - (t.y ? n.y / t.y : 1)) * r }) } var n = uo, e = 1, r = 1, i = !1; return t.separation = function(e) { return arguments.length ? (n = e, t) : n }, t.size = function(n) { return arguments.length ? (i = !1, e = +n[0], r = +n[1], t) : i ? null : [e, r] }, t.nodeSize = function(n) { return arguments.length ? (i = !0, e = +n[0], r = +n[1], t) : i ? [e, r] : null }, t }, t.hierarchy = fo, t.pack = function() { function t(t) { return t.x = e / 2, t.y = r / 2, n ? t.eachBefore(zo(n)).eachAfter(Po(i, .5)).eachBefore(Ro(1)) : t.eachBefore(zo(Co)).eachAfter(Po(Eo, 1)).eachAfter(Po(i, t.r / Math.min(e, r))).eachBefore(Ro(Math.min(e, r) / (2 * t.r))), t } var n = null, e = 1, r = 1, i = Eo; return t.radius = function(e) { return arguments.length ? (n = function(t) { return null == t ? null : So(t) }(e), t) : n }, t.size = function(n) { return arguments.length ? (e = +n[0], r = +n[1], t) : [e, r] }, t.padding = function(n) { return arguments.length ? (i = "function" == typeof n ? n : Ao(+n), t) : i }, t }, t.packSiblings = function(t) { return ko(t), t }, t.packEnclose = go, t.partition = function() { function t(t) { var o = t.height + 1; return t.x0 = t.y0 = r, t.x1 = n, t.y1 = e / o, t.eachBefore(function(t, n) { return function(e) { e.children && qo(e, e.x0, t * (e.depth + 1) / n, e.x1, t * (e.depth + 2) / n); var i = e.x0, o = e.y0, u = e.x1 - r, a = e.y1 - r; u < i && (i = u = (i + u) / 2), a < o && (o = a = (o + a) / 2), e.x0 = i, e.y0 = o, e.x1 = u, e.y1 = a } }(e, o)), i && t.eachBefore(Lo), t } var n = 1, e = 1, r = 0, i = !1; return t.round = function(n) { return arguments.length ? (i = !!n, t) : i }, t.size = function(r) { return arguments.length ? (n = +r[0], e = +r[1], t) : [n, e] }, t.padding = function(n) { return arguments.length ? (r = +n, t) : r }, t }, t.stratify = function() { function t(t) { var r, i, o, u, a, c, s, f = t.length, l = new Array(f), h = {}; for (i = 0; i < f; ++i) r = t[i], a = l[i] = new vo(r), null != (c = n(r, i, t)) && (c += "") && (h[s = Zd + (a.id = c)] = s in h ? Qd : a); for (i = 0; i < f; ++i) if (a = l[i], null != (c = e(t[i], i, t)) && (c += "")) { if (!(u = h[Zd + c])) throw new Error("missing: " + c); if (u === Qd) throw new Error("ambiguous: " + c); u.children ? u.children.push(a) : u.children = [a], a.parent = u } else { if (o) throw new Error("multiple roots"); o = a } if (!o) throw new Error("no root"); if (o.parent = Gd, o.eachBefore(function(t) { t.depth = t.parent.depth + 1, --f }).eachBefore(po), o.parent = null, f > 0) throw new Error("cycle"); return o } var n = Do, e = Uo; return t.id = function(e) { return arguments.length ? (n = So(e), t) : n }, t.parentId = function(n) { return arguments.length ? (e = So(n), t) : e }, t }, t.tree = function() { function t(t) { var c = function(t) { for (var n, e, r, i, o, u = new Ho(t, 0), a = [u]; n = a.pop();) if (r = n._.children) for (n.children = new Array(o = r.length), i = o - 1; i >= 0; --i) a.push(e = n.children[i] = new Ho(r[i], i)), e.parent = n; return (u.parent = new Ho(null, 0)).children = [u], u }(t); if (c.eachAfter(n), c.parent.m = -c.z, c.eachBefore(e), a) t.eachBefore(r); else { var s = t, f = t, l = t; t.eachBefore(function(t) { t.x < s.x && (s = t), t.x > f.x && (f = t), t.depth > l.depth && (l = t) }); var h = s === f ? 1 : i(s, f) / 2, p = h - s.x, d = o / (f.x + h + p), v = u / (l.depth || 1); t.eachBefore(function(t) { t.x = (t.x + p) * d, t.y = t.depth * v }) } return t } function n(t) { var n = t.children, e = t.parent.children, r = t.i ? e[t.i - 1] : null; if (n) { (function(t) { for (var n, e = 0, r = 0, i = t.children, o = i.length; --o >= 0;)(n = i[o]).z += e, n.m += e, e += n.s + (r += n.c) })(t); var o = (n[0].z + n[n.length - 1].z) / 2; r ? (t.z = r.z + i(t._, r._), t.m = t.z - o) : t.z = o } else r && (t.z = r.z + i(t._, r._)); t.parent.A = function(t, n, e) { if (n) { for (var r, o = t, u = t, a = n, c = o.parent.children[0], s = o.m, f = u.m, l = a.m, h = c.m; a = Io(a), o = Fo(o), a && o;) c = Fo(c), (u = Io(u)).a = t, (r = a.z + l - o.z - s + i(a._, o._)) > 0 && (Yo(Bo(a, t, e), t, r), s += r, f += r), l += a.m, s += o.m, h += c.m, f += u.m; a && !Io(u) && (u.t = a, u.m += l - f), o && !Fo(c) && (c.t = o, c.m += s - h, e = t) } return e }(t, r, t.parent.A || e[0]) } function e(t) { t._.x = t.z + t.parent.m, t.m += t.parent.m } function r(t) { t.x *= o, t.y = t.depth * u } var i = Oo, o = 1, u = 1, a = null; return t.separation = function(n) { return arguments.length ? (i = n, t) : i }, t.size = function(n) { return arguments.length ? (a = !1, o = +n[0], u = +n[1], t) : a ? null : [o, u] }, t.nodeSize = function(n) { return arguments.length ? (a = !0, o = +n[0], u = +n[1], t) : a ? [o, u] : null }, t }, t.treemap = function() { function t(t) { return t.x0 = t.y0 = 0, t.x1 = i, t.y1 = o, t.eachBefore(n), u = [0], r && t.eachBefore(Lo), t } function n(t) { var n = u[t.depth], r = t.x0 + n, i = t.y0 + n, o = t.x1 - n, h = t.y1 - n; o < r && (r = o = (r + o) / 2), h < i && (i = h = (i + h) / 2), t.x0 = r, t.y0 = i, t.x1 = o, t.y1 = h, t.children && (n = u[t.depth + 1] = a(t) / 2, r += l(t) - n, i += c(t) - n, o -= s(t) - n, h -= f(t) - n, o < r && (r = o = (r + o) / 2), h < i && (i = h = (i + h) / 2), e(t, r, i, o, h)) } var e = Kd, r = !1, i = 1, o = 1, u = [0], a = Eo, c = Eo, s = Eo, f = Eo, l = Eo; return t.round = function(n) { return arguments.length ? (r = !!n, t) : r }, t.size = function(n) { return arguments.length ? (i = +n[0], o = +n[1], t) : [i, o] }, t.tile = function(n) { return arguments.length ? (e = So(n), t) : e }, t.padding = function(n) { return arguments.length ? t.paddingInner(n).paddingOuter(n) : t.paddingInner() }, t.paddingInner = function(n) { return arguments.length ? (a = "function" == typeof n ? n : Ao(+n), t) : a }, t.paddingOuter = function(n) { return arguments.length ? t.paddingTop(n).paddingRight(n).paddingBottom(n).paddingLeft(n) : t.paddingTop() }, t.paddingTop = function(n) { return arguments.length ? (c = "function" == typeof n ? n : Ao(+n), t) : c }, t.paddingRight = function(n) { return arguments.length ? (s = "function" == typeof n ? n : Ao(+n), t) : s }, t.paddingBottom = function(n) { return arguments.length ? (f = "function" == typeof n ? n : Ao(+n), t) : f }, t.paddingLeft = function(n) { return arguments.length ? (l = "function" == typeof n ? n : Ao(+n), t) : l }, t }, t.treemapBinary = function(t, n, e, r, i) { function o(t, n, e, r, i, u, a) { if (t >= n - 1) { var s = c[t]; return s.x0 = r, s.y0 = i, s.x1 = u, void(s.y1 = a) } for (var l = f[t], h = e / 2 + l, p = t + 1, d = n - 1; p < d;) { var v = p + d >>> 1; f[v] < h ? p = v + 1 : d = v } h - f[p - 1] < f[p] - h && t + 1 < p && --p; var g = f[p] - l, _ = e - g; if (u - r > a - i) { var y = (r * _ + u * g) / e; o(t, p, g, r, i, y, a), o(p, n, _, y, i, u, a) } else { var m = (i * _ + a * g) / e; o(t, p, g, r, i, u, m), o(p, n, _, r, m, u, a) } } var u, a, c = t.children, s = c.length, f = new Array(s + 1); for (f[0] = a = u = 0; u < s; ++u) f[u + 1] = a += c[u].value; o(0, s, t.value, n, e, r, i) }, t.treemapDice = qo, t.treemapSlice = jo, t.treemapSliceDice = function(t, n, e, r, i) { (1 & t.depth ? jo : qo)(t, n, e, r, i) }, t.treemapSquarify = Kd, t.treemapResquarify = tv, t.interpolate = fn, t.interpolateArray = on, t.interpolateBasis = Gt, t.interpolateBasisClosed = Qt, t.interpolateDate = un, t.interpolateNumber = an, t.interpolateObject = cn, t.interpolateRound = ln, t.interpolateString = sn, t.interpolateTransformCss = Gf, t.interpolateTransformSvg = Qf, t.interpolateZoom = vn, t.interpolateRgb = Hf, t.interpolateRgbBasis = jf, t.interpolateRgbBasisClosed = Xf, t.interpolateHsl = el, t.interpolateHslLong = rl, t.interpolateLab = function(t, n) { var e = en((t = Ft(t)).l, (n = Ft(n)).l), r = en(t.a, n.a), i = en(t.b, n.b), o = en(t.opacity, n.opacity); return function(n) { return t.l = e(n), t.a = r(n), t.b = i(n), t.opacity = o(n), t + "" } }, t.interpolateHcl = il, t.interpolateHclLong = ol, t.interpolateCubehelix = ul, t.interpolateCubehelixLong = al, t.quantize = function(t, n) { for (var e = new Array(n), r = 0; r < n; ++r) e[r] = t(r / (n - 1)); return e }, t.path = ee, t.polygonArea = function(t) { for (var n, e = -1, r = t.length, i = t[r - 1], o = 0; ++e < r;) n = i, i = t[e], o += n[1] * i[0] - n[0] * i[1]; return o / 2 }, t.polygonCentroid = function(t) { for (var n, e, r = -1, i = t.length, o = 0, u = 0, a = t[i - 1], c = 0; ++r < i;) n = a, a = t[r], c += e = n[0] * a[1] - a[0] * n[1], o += (n[0] + a[0]) * e, u += (n[1] + a[1]) * e; return c *= 3, [o / c, u / c] }, t.polygonHull = function(t) { if ((e = t.length) < 3) return null; var n, e, r = new Array(e), i = new Array(e); for (n = 0; n < e; ++n) r[n] = [+t[n][0], +t[n][1], n]; for (r.sort($o), n = 0; n < e; ++n) i[n] = [r[n][0], -r[n][1]]; var o = Wo(r), u = Wo(i), a = u[0] === o[0], c = u[u.length - 1] === o[o.length - 1], s = []; for (n = o.length - 1; n >= 0; --n) s.push(t[r[o[n]][2]]); for (n = +a; n < u.length - c; ++n) s.push(t[r[u[n]][2]]); return s }, t.polygonContains = function(t, n) { for (var e, r, i = t.length, o = t[i - 1], u = n[0], a = n[1], c = o[0], s = o[1], f = !1, l = 0; l < i; ++l) e = (o = t[l])[0], (r = o[1]) > a != s > a && u < (c - e) * (a - r) / (s - r) + e && (f = !f), c = e, s = r; return f }, t.polygonLength = function(t) { for (var n, e, r = -1, i = t.length, o = t[i - 1], u = o[0], a = o[1], c = 0; ++r < i;) n = u, e = a, n -= u = (o = t[r])[0], e -= a = o[1], c += Math.sqrt(n * n + e * e); return c }, t.quadtree = Te, t.queue = Ko, t.randomUniform = rv, t.randomNormal = iv, t.randomLogNormal = ov, t.randomBates = av, t.randomIrwinHall = uv, t.randomExponential = cv, t.request = nu, t.html = sv, t.json = fv, t.text = lv, t.xml = hv, t.csv = pv, t.tsv = dv, t.scaleBand = ou, t.scalePoint = function() { return uu(ou().paddingInner(1)) }, t.scaleIdentity = gu, t.scaleLinear = vu, t.scaleLog = Tu, t.scaleOrdinal = iu, t.scaleImplicit = yv, t.scalePow = ku, t.scaleSqrt = function() { return ku().exponent(.5) }, t.scaleQuantile = Su, t.scaleQuantize = Eu, t.scaleThreshold = Au, t.scaleTime = function() { return Va(Gv, Wv, Lv, Pv, Cv, Ev, kv, wv, t.timeFormat).domain([new Date(2e3, 0, 1), new Date(2e3, 0, 2)]) }, t.scaleUtc = function() { return Va(xg, yg, ig, eg, tg, Jv, kv, wv, t.utcFormat).domain([Date.UTC(2e3, 0, 1), Date.UTC(2e3, 0, 2)]) }, t.schemeCategory10 = Ug, t.schemeCategory20b = Og, t.schemeCategory20c = Fg, t.schemeCategory20 = Ig, t.interpolateCubehelixDefault = Yg, t.interpolateRainbow = function(t) { (t < 0 || t > 1) && (t -= Math.floor(t)); var n = Math.abs(t - .5); return jg.h = 360 * t - 100, jg.s = 1.5 - 1.5 * n, jg.l = .8 - .9 * n, jg + "" }, t.interpolateWarm = Bg, t.interpolateCool = Hg, t.interpolateViridis = Xg, t.interpolateMagma = Vg, t.interpolateInferno = $g, t.interpolatePlasma = Wg, t.scaleSequential = Za, t.create = function(t) { return ct(A(t).call(document.documentElement)) }, t.creator = A, t.local = st, t.matcher = of , t.mouse = pt, t.namespace = E, t.namespaces = tf, t.clientPoint = ht, t.select = ct, t.selectAll = function(t) { return "string" == typeof t ? new ut([document.querySelectorAll(t)], [document.documentElement]) : new ut([null == t ? [] : t], cf) }, t.selection = at, t.selector = z, t.selectorAll = R, t.style = I, t.touch = dt, t.touches = function(t, n) { null == n && (n = lt().touches); for (var e = 0, r = n ? n.length : 0, i = new Array(r); e < r; ++e) i[e] = ht(t, n[e]); return i }, t.window = F, t.customEvent = it, t.arc = function() { function t() { var t, s, f = +n.apply(this, arguments), l = +e.apply(this, arguments), h = o.apply(this, arguments) - i_, p = u.apply(this, arguments) - i_, d = Zg(p - h), v = p > h; if (c || (c = t = ee()), l < f && (s = l, l = f, f = s), l > e_) if (d > o_ - e_) c.moveTo(l * Qg(h), l * t_(h)), c.arc(0, 0, l, h, p, !v), f > e_ && (c.moveTo(f * Qg(p), f * t_(p)), c.arc(0, 0, f, p, h, v)); else { var g, _, y = h, m = p, x = h, b = p, w = d, M = d, T = a.apply(this, arguments) / 2, N = T > e_ && (i ? +i.apply(this, arguments) : n_(f * f + l * l)), k = Kg(Zg(l - f) / 2, +r.apply(this, arguments)), S = k, E = k; if (N > e_) { var A = Qa(N / f * t_(T)), C = Qa(N / l * t_(T)); (w -= 2 * A) > e_ ? (A *= v ? 1 : -1, x += A, b -= A) : (w = 0, x = b = (h + p) / 2), (M -= 2 * C) > e_ ? (C *= v ? 1 : -1, y += C, m -= C) : (M = 0, y = m = (h + p) / 2) } var z = l * Qg(y), P = l * t_(y), R = f * Qg(b), L = f * t_(b); if (k > e_) { var q = l * Qg(m), D = l * t_(m), U = f * Qg(x), O = f * t_(x); if (d < r_) { var F = w > e_ ? function(t, n, e, r, i, o, u, a) { var c = e - t, s = r - n, f = u - i, l = a - o, h = (f * (n - o) - l * (t - i)) / (l * c - f * s); return [t + h * c, n + h * s] }(z, P, U, O, q, D, R, L) : [R, L], I = z - F[0], Y = P - F[1], B = q - F[0], H = D - F[1], j = 1 / t_(function(t) { return t > 1 ? 0 : t < -1 ? r_ : Math.acos(t) }((I * B + Y * H) / (n_(I * I + Y * Y) * n_(B * B + H * H))) / 2), X = n_(F[0] * F[0] + F[1] * F[1]); S = Kg(k, (f - X) / (j - 1)), E = Kg(k, (l - X) / (j + 1)) } } M > e_ ? E > e_ ? (g = rc(U, O, z, P, l, E, v), _ = rc(q, D, R, L, l, E, v), c.moveTo(g.cx + g.x01, g.cy + g.y01), E < k ? c.arc(g.cx, g.cy, E, Gg(g.y01, g.x01), Gg(_.y01, _.x01), !v) : (c.arc(g.cx, g.cy, E, Gg(g.y01, g.x01), Gg(g.y11, g.x11), !v), c.arc(0, 0, l, Gg(g.cy + g.y11, g.cx + g.x11), Gg(_.cy + _.y11, _.cx + _.x11), !v), c.arc(_.cx, _.cy, E, Gg(_.y11, _.x11), Gg(_.y01, _.x01), !v))) : (c.moveTo(z, P), c.arc(0, 0, l, y, m, !v)) : c.moveTo(z, P), f > e_ && w > e_ ? S > e_ ? (g = rc(R, L, q, D, f, -S, v), _ = rc(z, P, U, O, f, -S, v), c.lineTo(g.cx + g.x01, g.cy + g.y01), S < k ? c.arc(g.cx, g.cy, S, Gg(g.y01, g.x01), Gg(_.y01, _.x01), !v) : (c.arc(g.cx, g.cy, S, Gg(g.y01, g.x01), Gg(g.y11, g.x11), !v), c.arc(0, 0, f, Gg(g.cy + g.y11, g.cx + g.x11), Gg(_.cy + _.y11, _.cx + _.x11), v), c.arc(_.cx, _.cy, S, Gg(_.y11, _.x11), Gg(_.y01, _.x01), !v))) : c.arc(0, 0, f, b, x, v) : c.lineTo(R, L) } else c.moveTo(0, 0); if (c.closePath(), t) return c = null, t + "" || null } var n = Ja, e = Ka, r = Ga(0), i = null, o = tc, u = nc, a = ec, c = null; return t.centroid = function() { var t = (+n.apply(this, arguments) + +e.apply(this, arguments)) / 2, r = (+o.apply(this, arguments) + +u.apply(this, arguments)) / 2 - r_ / 2; return [Qg(r) * t, t_(r) * t] }, t.innerRadius = function(e) { return arguments.length ? (n = "function" == typeof e ? e : Ga(+e), t) : n }, t.outerRadius = function(n) { return arguments.length ? (e = "function" == typeof n ? n : Ga(+n), t) : e }, t.cornerRadius = function(n) { return arguments.length ? (r = "function" == typeof n ? n : Ga(+n), t) : r }, t.padRadius = function(n) { return arguments.length ? (i = null == n ? null : "function" == typeof n ? n : Ga(+n), t) : i }, t.startAngle = function(n) { return arguments.length ? (o = "function" == typeof n ? n : Ga(+n), t) : o }, t.endAngle = function(n) { return arguments.length ? (u = "function" == typeof n ? n : Ga(+n), t) : u }, t.padAngle = function(n) { return arguments.length ? (a = "function" == typeof n ? n : Ga(+n), t) : a }, t.context = function(n) { return arguments.length ? (c = null == n ? null : n, t) : c }, t }, t.area = sc, t.line = cc, t.pie = function() { function t(t) { var a, c, s, f, l, h = t.length, p = 0, d = new Array(h), v = new Array(h), g = +i.apply(this, arguments), _ = Math.min(o_, Math.max(-o_, o.apply(this, arguments) - g)), y = Math.min(Math.abs(_) / h, u.apply(this, arguments)), m = y * (_ < 0 ? -1 : 1); for (a = 0; a < h; ++a)(l = v[d[a] = a] = +n(t[a], a, t)) > 0 && (p += l); for (null != e ? d.sort(function(t, n) { return e(v[t], v[n]) }) : null != r && d.sort(function(n, e) { return r(t[n], t[e]) }), a = 0, s = p ? (_ - h * m) / p : 0; a < h; ++a, g = f) c = d[a], f = g + ((l = v[c]) > 0 ? l * s : 0) + m, v[c] = { data: t[c], index: a, value: l, startAngle: g, endAngle: f, padAngle: y }; return v } var n = lc, e = fc, r = null, i = Ga(0), o = Ga(o_), u = Ga(0); return t.value = function(e) { return arguments.length ? (n = "function" == typeof e ? e : Ga(+e), t) : n }, t.sortValues = function(n) { return arguments.length ? (e = n, r = null, t) : e }, t.sort = function(n) { return arguments.length ? (r = n, e = null, t) : r }, t.startAngle = function(n) { return arguments.length ? (i = "function" == typeof n ? n : Ga(+n), t) : i }, t.endAngle = function(n) { return arguments.length ? (o = "function" == typeof n ? n : Ga(+n), t) : o }, t.padAngle = function(n) { return arguments.length ? (u = "function" == typeof n ? n : Ga(+n), t) : u }, t }, t.areaRadial = gc, t.radialArea = gc, t.lineRadial = vc, t.radialLine = vc, t.pointRadial = _c, t.linkHorizontal = function() { return xc(bc) }, t.linkVertical = function() { return xc(wc) }, t.linkRadial = function() { var t = xc(Mc); return t.angle = t.x, delete t.x, t.radius = t.y, delete t.y, t }, t.symbol = function() { function t() { var t; if (r || (r = t = ee()), n.apply(this, arguments).draw(r, +e.apply(this, arguments)), t) return r = null, t + "" || null } var n = Ga(c_), e = Ga(64), r = null; return t.type = function(e) { return arguments.length ? (n = "function" == typeof e ? e : Ga(e), t) : n }, t.size = function(n) { return arguments.length ? (e = "function" == typeof n ? n : Ga(+n), t) : e }, t.context = function(n) { return arguments.length ? (r = null == n ? null : n, t) : r }, t }, t.symbols = T_, t.symbolCircle = c_, t.symbolCross = s_, t.symbolDiamond = h_, t.symbolSquare = __, t.symbolStar = g_, t.symbolTriangle = m_, t.symbolWye = M_, t.curveBasisClosed = function(t) { return new Sc(t) }, t.curveBasisOpen = function(t) { return new Ec(t) }, t.curveBasis = function(t) { return new kc(t) }, t.curveBundle = N_, t.curveCardinalClosed = S_, t.curveCardinalOpen = E_, t.curveCardinal = k_, t.curveCatmullRomClosed = C_, t.curveCatmullRomOpen = z_, t.curveCatmullRom = A_, t.curveLinearClosed = function(t) { return new Oc(t) }, t.curveLinear = oc, t.curveMonotoneX = function(t) { return new Hc(t) }, t.curveMonotoneY = function(t) { return new jc(t) }, t.curveNatural = function(t) { return new Vc(t) }, t.curveStep = function(t) { return new Wc(t, .5) }, t.curveStepAfter = function(t) { return new Wc(t, 1) }, t.curveStepBefore = function(t) { return new Wc(t, 0) }, t.stack = function() { function t(t) { var o, u, a = n.apply(this, arguments), c = t.length, s = a.length, f = new Array(s); for (o = 0; o < s; ++o) { for (var l, h = a[o], p = f[o] = new Array(c), d = 0; d < c; ++d) p[d] = l = [0, +i(t[d], h, d, t)], l.data = t[d]; p.key = h } for (o = 0, u = e(f); o < s; ++o) f[u[o]].index = o; return r(f, u), f } var n = Ga([]), e = Gc, r = Zc, i = Qc; return t.keys = function(e) { return arguments.length ? (n = "function" == typeof e ? e : Ga(a_.call(e)), t) : n }, t.value = function(n) { return arguments.length ? (i = "function" == typeof n ? n : Ga(+n), t) : i }, t.order = function(n) { return arguments.length ? (e = null == n ? Gc : "function" == typeof n ? n : Ga(a_.call(n)), t) : e }, t.offset = function(n) { return arguments.length ? (r = null == n ? Zc : n, t) : r }, t }, t.stackOffsetExpand = function(t, n) { if ((r = t.length) > 0) { for (var e, r, i, o = 0, u = t[0].length; o < u; ++o) { for (i = e = 0; e < r; ++e) i += t[e][o][1] || 0; if (i) for (e = 0; e < r; ++e) t[e][o][1] /= i } Zc(t, n) } }, t.stackOffsetDiverging = function(t, n) { if ((a = t.length) > 1) for (var e, r, i, o, u, a, c = 0, s = t[n[0]].length; c < s; ++c) for (o = u = 0, e = 0; e < a; ++e)(i = (r = t[n[e]][c])[1] - r[0]) >= 0 ? (r[0] = o, r[1] = o += i) : i < 0 ? (r[1] = u, r[0] = u += i) : r[0] = o }, t.stackOffsetNone = Zc, t.stackOffsetSilhouette = function(t, n) { if ((e = t.length) > 0) { for (var e, r = 0, i = t[n[0]], o = i.length; r < o; ++r) { for (var u = 0, a = 0; u < e; ++u) a += t[u][r][1] || 0; i[r][1] += i[r][0] = -a / 2 } Zc(t, n) } }, t.stackOffsetWiggle = function(t, n) { if ((i = t.length) > 0 && (r = (e = t[n[0]]).length) > 0) { for (var e, r, i, o = 0, u = 1; u < r; ++u) { for (var a = 0, c = 0, s = 0; a < i; ++a) { for (var f = t[n[a]], l = f[u][1] || 0, h = (l - (f[u - 1][1] || 0)) / 2, p = 0; p < a; ++p) { var d = t[n[p]]; h += (d[u][1] || 0) - (d[u - 1][1] || 0) } c += l, s += h * l } e[u - 1][1] += e[u - 1][0] = o, c && (o -= s / c) } e[u - 1][1] += e[u - 1][0] = o, Zc(t, n) } }, t.stackOrderAscending = Jc, t.stackOrderDescending = function(t) { return Jc(t).reverse() }, t.stackOrderInsideOut = function(t) { var n, e, r = t.length, i = t.map(Kc), o = Gc(t).sort(function(t, n) { return i[n] - i[t] }), u = 0, a = 0, c = [], s = []; for (n = 0; n < r; ++n) e = o[n], u < a ? (u += i[e], c.push(e)) : (a += i[e], s.push(e)); return s.reverse().concat(c) }, t.stackOrderNone = Gc, t.stackOrderReverse = function(t) { return Gc(t).reverse() }, t.timeInterval = Cu, t.timeMillisecond = wv, t.timeMilliseconds = Mv, t.utcMillisecond = wv, t.utcMilliseconds = Mv, t.timeSecond = kv, t.timeSeconds = Sv, t.utcSecond = kv, t.utcSeconds = Sv, t.timeMinute = Ev, t.timeMinutes = Av, t.timeHour = Cv, t.timeHours = zv, t.timeDay = Pv, t.timeDays = Rv, t.timeWeek = Lv, t.timeWeeks = Yv, t.timeSunday = Lv, t.timeSundays = Yv, t.timeMonday = qv, t.timeMondays = Bv, t.timeTuesday = Dv, t.timeTuesdays = Hv, t.timeWednesday = Uv, t.timeWednesdays = jv, t.timeThursday = Ov, t.timeThursdays = Xv, t.timeFriday = Fv, t.timeFridays = Vv, t.timeSaturday = Iv, t.timeSaturdays = $v, t.timeMonth = Wv, t.timeMonths = Zv, t.timeYear = Gv, t.timeYears = Qv, t.utcMinute = Jv, t.utcMinutes = Kv, t.utcHour = tg, t.utcHours = ng, t.utcDay = eg, t.utcDays = rg, t.utcWeek = ig, t.utcWeeks = lg, t.utcSunday = ig, t.utcSundays = lg, t.utcMonday = og, t.utcMondays = hg, t.utcTuesday = ug, t.utcTuesdays = pg, t.utcWednesday = ag, t.utcWednesdays = dg, t.utcThursday = cg, t.utcThursdays = vg, t.utcFriday = sg, t.utcFridays = gg, t.utcSaturday = fg, t.utcSaturdays = _g, t.utcMonth = yg, t.utcMonths = mg, t.utcYear = xg, t.utcYears = wg, t.timeFormatDefaultLocale = Ha, t.timeFormatLocale = Du, t.isoFormat = Eg, t.isoParse = Ag, t.now = mn, t.timer = wn, t.timerFlush = Mn, t.timeout = Sn, t.interval = function(t, n, e) { var r = new bn, i = n; return null == n ? (r.restart(t, n, e), r) : (n = +n, e = null == e ? mn() : +e, r.restart(function o(u) { u += i, r.restart(o, i += n, e), t(u) }, n, e), r) }, t.transition = Dn, t.active = function(t, n) { var e, r, i = t.__transition; if (i) { n = null == n ? null : n + ""; for (r in i) if ((e = i[r]).state > xl && e.name === n) return new qn([ [t] ], Jl, n, +r) } return null }, t.interrupt = Pn, t.voronoi = function() { function t(t) { return new Ns(t.map(function(r, i) { var o = [Math.round(n(r, i, t) / F_) * F_, Math.round(e(r, i, t) / F_) * F_]; return o.index = i, o.data = r, o }), r) } var n = ns, e = es, r = null; return t.polygons = function(n) { return t(n).polygons() }, t.links = function(n) { return t(n).links() }, t.triangles = function(n) { return t(n).triangles() }, t.x = function(e) { return arguments.length ? (n = "function" == typeof e ? e : ts(+e), t) : n }, t.y = function(n) { return arguments.length ? (e = "function" == typeof n ? n : ts(+n), t) : e }, t.extent = function(n) { return arguments.length ? (r = null == n ? null : [ [+n[0][0], +n[0][1]], [+n[1][0], +n[1][1]] ], t) : r && [ [r[0][0], r[0][1]], [r[1][0], r[1][1]] ] }, t.size = function(n) { return arguments.length ? (r = null == n ? null : [ [0, 0], [+n[0], +n[1]] ], t) : r && [r[1][0] - r[0][0], r[1][1] - r[0][1]] }, t }, t.zoom = function() { function n(t) { t.property("__zoom", Rs).on("wheel.zoom", c).on("mousedown.zoom", s).on("dblclick.zoom", f).filter(x).on("touchstart.zoom", l).on("touchmove.zoom", h).on("touchend.zoom touchcancel.zoom", p).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)") } function e(t, n) { return (n = Math.max(b[0], Math.min(b[1], n))) === t.k ? t : new Ss(n, t.x, t.y) } function r(t, n, e) { var r = n[0] - e[0] * t.k, i = n[1] - e[1] * t.k; return r === t.x && i === t.y ? t : new Ss(t.k, r, i) } function i(t) { return [(+t[0][0] + +t[1][0]) / 2, (+t[0][1] + +t[1][1]) / 2] } function o(t, n, e) { t.on("start.zoom", function() { u(this, arguments).start() }).on("interrupt.zoom end.zoom", function() { u(this, arguments).end() }).tween("zoom", function() { var t = arguments, r = u(this, t), o = _.apply(this, t), a = e || i(o), c = Math.max(o[1][0] - o[0][0], o[1][1] - o[0][1]), s = this.__zoom, f = "function" == typeof n ? n.apply(this, t) : n, l = T(s.invert(a).concat(c / s.k), f.invert(a).concat(c / f.k)); return function(t) { if (1 === t) t = f; else { var n = l(t), e = c / n[2]; t = new Ss(e, a[0] - n[0] * e, a[1] - n[1] * e) } r.zoom(null, t) } }) } function u(t, n) { for (var e, r = 0, i = k.length; r < i; ++r) if ((e = k[r]).that === t) return e; return new a(t, n) } function a(t, n) { this.that = t, this.args = n, this.index = -1, this.active = 0, this.extent = _.apply(t, n) } function c() { if (g.apply(this, arguments)) { var t = u(this, arguments), n = this.__zoom, i = Math.max(b[0], Math.min(b[1], n.k * Math.pow(2, m.apply(this, arguments)))), o = pt(this); if (t.wheel) t.mouse[0][0] === o[0] && t.mouse[0][1] === o[1] || (t.mouse[1] = n.invert(t.mouse[0] = o)), clearTimeout(t.wheel); else { if (n.k === i) return; t.mouse = [o, n.invert(o)], Pn(this), t.start() } Cs(), t.wheel = setTimeout(function() { t.wheel = null, t.end() }, A), t.zoom("mouse", y(r(e(n, i), t.mouse[0], t.mouse[1]), t.extent, w)) } } function s() { if (!v && g.apply(this, arguments)) { var n = u(this, arguments), e = ct(t.event.view).on("mousemove.zoom", function() { if (Cs(), !n.moved) { var e = t.event.clientX - o, i = t.event.clientY - a; n.moved = e * e + i * i > C } n.zoom("mouse", y(r(n.that.__zoom, n.mouse[0] = pt(n.that), n.mouse[1]), n.extent, w)) }, !0).on("mouseup.zoom", function() { e.on("mousemove.zoom mouseup.zoom", null), yt(t.event.view, n.moved), Cs(), n.end() }, !0), i = pt(this), o = t.event.clientX, a = t.event.clientY; _t(t.event.view), As(), n.mouse = [i, this.__zoom.invert(i)], Pn(this), n.start() } } function f() { if (g.apply(this, arguments)) { var i = this.__zoom, u = pt(this), a = i.invert(u), c = i.k * (t.event.shiftKey ? .5 : 2), s = y(r(e(i, c), u, a), _.apply(this, arguments), w); Cs(), M > 0 ? ct(this).transition().duration(M).call(o, s, u) : ct(this).call(n.transform, s) } } function l() { if (g.apply(this, arguments)) { var n, e, r, i, o = u(this, arguments), a = t.event.changedTouches, c = a.length; for (As(), e = 0; e < c; ++e) i = [i = dt(this, a, (r = a[e]).identifier), this.__zoom.invert(i), r.identifier], o.touch0 ? o.touch1 || (o.touch1 = i) : (o.touch0 = i, n = !0); if (d && (d = clearTimeout(d), !o.touch1)) return o.end(), void((i = ct(this).on("dblclick.zoom")) && i.apply(this, arguments)); n && (d = setTimeout(function() { d = null }, E), Pn(this), o.start()) } } function h() { var n, i, o, a, c = u(this, arguments), s = t.event.changedTouches, f = s.length; for (Cs(), d && (d = clearTimeout(d)), n = 0; n < f; ++n) o = dt(this, s, (i = s[n]).identifier), c.touch0 && c.touch0[2] === i.identifier ? c.touch0[0] = o : c.touch1 && c.touch1[2] === i.identifier && (c.touch1[0] = o); if (i = c.that.__zoom, c.touch1) { var l = c.touch0[0], h = c.touch0[1], p = c.touch1[0], v = c.touch1[1], g = (g = p[0] - l[0]) * g + (g = p[1] - l[1]) * g, _ = (_ = v[0] - h[0]) * _ + (_ = v[1] - h[1]) * _; i = e(i, Math.sqrt(g / _)), o = [(l[0] + p[0]) / 2, (l[1] + p[1]) / 2], a = [(h[0] + v[0]) / 2, (h[1] + v[1]) / 2] } else { if (!c.touch0) return; o = c.touch0[0], a = c.touch0[1] } c.zoom("touch", y(r(i, o, a), c.extent, w)) } function p() { var n, e, r = u(this, arguments), i = t.event.changedTouches, o = i.length; for (As(), v && clearTimeout(v), v = setTimeout(function() { v = null }, E), n = 0; n < o; ++n) e = i[n], r.touch0 && r.touch0[2] === e.identifier ? delete r.touch0 : r.touch1 && r.touch1[2] === e.identifier && delete r.touch1; r.touch1 && !r.touch0 && (r.touch0 = r.touch1, delete r.touch1), r.touch0 ? r.touch0[1] = this.__zoom.invert(r.touch0[0]) : r.end() } var d, v, g = zs, _ = Ps, y = Ds, m = Ls, x = qs, b = [0, 1 / 0], w = [ [-1 / 0, -1 / 0], [1 / 0, 1 / 0] ], M = 250, T = vn, k = [], S = N("start", "zoom", "end"), E = 500, A = 150, C = 0; return n.transform = function(t, n) { var e = t.selection ? t.selection() : t; e.property("__zoom", Rs), t !== e ? o(t, n) : e.interrupt().each(function() { u(this, arguments).start().zoom(null, "function" == typeof n ? n.apply(this, arguments) : n).end() }) }, n.scaleBy = function(t, e) { n.scaleTo(t, function() { return this.__zoom.k * ("function" == typeof e ? e.apply(this, arguments) : e) }) }, n.scaleTo = function(t, o) { n.transform(t, function() { var t = _.apply(this, arguments), n = this.__zoom, u = i(t), a = n.invert(u), c = "function" == typeof o ? o.apply(this, arguments) : o; return y(r(e(n, c), u, a), t, w) }) }, n.translateBy = function(t, e, r) { n.transform(t, function() { return y(this.__zoom.translate("function" == typeof e ? e.apply(this, arguments) : e, "function" == typeof r ? r.apply(this, arguments) : r), _.apply(this, arguments), w) }) }, n.translateTo = function(t, e, r) { n.transform(t, function() { var t = _.apply(this, arguments), n = this.__zoom, o = i(t); return y(Y_.translate(o[0], o[1]).scale(n.k).translate("function" == typeof e ? -e.apply(this, arguments) : -e, "function" == typeof r ? -r.apply(this, arguments) : -r), t, w) }) }, a.prototype = { start: function() { return 1 == ++this.active && (this.index = k.push(this) - 1, this.emit("start")), this }, zoom: function(t, n) { return this.mouse && "mouse" !== t && (this.mouse[1] = n.invert(this.mouse[0])), this.touch0 && "touch" !== t && (this.touch0[1] = n.invert(this.touch0[0])), this.touch1 && "touch" !== t && (this.touch1[1] = n.invert(this.touch1[0])), this.that.__zoom = n, this.emit("zoom"), this }, end: function() { return 0 == --this.active && (k.splice(this.index, 1), this.index = -1, this.emit("end")), this }, emit: function(t) { it(new function(t, n, e) { this.target = t, this.type = n, this.transform = e }(n, t, this.that.__zoom), S.apply, S, [t, this.that, this.args]) } }, n.wheelDelta = function(t) { return arguments.length ? (m = "function" == typeof t ? t : ks(+t), n) : m }, n.filter = function(t) { return arguments.length ? (g = "function" == typeof t ? t : ks(!!t), n) : g }, n.touchable = function(t) { return arguments.length ? (x = "function" == typeof t ? t : ks(!!t), n) : x }, n.extent = function(t) { return arguments.length ? (_ = "function" == typeof t ? t : ks([ [+t[0][0], +t[0][1]], [+t[1][0], +t[1][1]] ]), n) : _ }, n.scaleExtent = function(t) { return arguments.length ? (b[0] = +t[0], b[1] = +t[1], n) : [b[0], b[1]] }, n.translateExtent = function(t) { return arguments.length ? (w[0][0] = +t[0][0], w[1][0] = +t[1][0], w[0][1] = +t[0][1], w[1][1] = +t[1][1], n) : [ [w[0][0], w[0][1]], [w[1][0], w[1][1]] ] }, n.constrain = function(t) { return arguments.length ? (y = t, n) : y }, n.duration = function(t) { return arguments.length ? (M = +t, n) : M }, n.interpolate = function(t) { return arguments.length ? (T = t, n) : T }, n.on = function() { var t = S.on.apply(S, arguments); return t === S ? n : t }, n.clickDistance = function(t) { return arguments.length ? (C = (t = +t) * t, n) : Math.sqrt(C) }, n }, t.zoomTransform = Es, t.zoomIdentity = Y_, Object.defineProperty(t, "__esModule", { value: !0 }) }); "use strict"; function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function(key) { _defineProperty(target, key, source[key]); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } var openStreetLayers = [{ id: 'land', type: 'background', metadata: { 'mapbox:featureComponent': 'land-and-water', 'mapbox:group': 'Land & water, land' }, layout: {}, paint: { 'background-color': '#ffffff' } }, { id: 'national-park', type: 'fill', metadata: { 'mapbox:featureComponent': 'land-and-water', 'mapbox:group': 'Land & water, land' }, source: 'composite', 'source-layer': 'landuse_overlay', minzoom: 5, filter: ['==', ['get', 'class'], 'national_park'], layout: {}, paint: { 'fill-color': '#cccccc', 'fill-opacity': ['interpolate', ['linear'], ['zoom'], 5, 0, 6, 0.5, 10, 0.5 ] } }, { id: 'landuse', type: 'fill', metadata: { 'mapbox:featureComponent': 'land-and-water', 'mapbox:group': 'Land & water, land' }, source: 'composite', 'source-layer': 'landuse', minzoom: 5, filter: ['match', ['get', 'class'], ['park', 'airport', 'glacier', 'pitch', 'sand', 'facility'], true, 'cemetery', true, false ], layout: {}, paint: { 'fill-color': ['interpolate', ['linear'], ['zoom'], 15, ['match', ['get', 'class'], 'park', '#d8d8d8', 'airport', '#d8d8d8', 'cemetery', '#d8d8d8', 'glacier', '#d8d8d8', 'pitch', '#d8d8d8', 'sand', '#d8d8d8', '#d8d8d8'], 16, ['match', ['get', 'class'], 'park', '#d8d8d8', 'airport', '#d8d8d8', 'cemetery', '#d8d8d8', 'glacier', 'hsl(177, 53%, 100%)', 'pitch', '#d8d8d8', 'sand', 'hsl(127, 8%, 98%)', '#d8d8d8'] ], 'fill-opacity': ['interpolate', ['linear'], ['zoom'], 5, 0, 6, ['match', ['get', 'class'], 'glacier', 0.5, 1] ] } }, { id: 'pitch-outline', type: 'line', metadata: { 'mapbox:featureComponent': 'land-and-water', 'mapbox:group': 'Land & water, land' }, source: 'composite', 'source-layer': 'landuse', minzoom: 15, filter: ['==', ['get', 'class'], 'pitch'], layout: {}, paint: { 'line-color': 'hsl(109, 6%, 95%)' } }, { id: 'waterway', type: 'line', metadata: { 'mapbox:featureComponent': 'land-and-water', 'mapbox:group': 'Land & water, water' }, source: 'composite', 'source-layer': 'waterway', minzoom: 8, layout: { 'line-cap': ['step', ['zoom'], 'butt', 11, 'round'], 'line-join': 'round' }, paint: { 'line-color': 'hsl(177, 63%, 94%)', 'line-width': ['interpolate', ['exponential', 1.3], ['zoom'], 9, ['match', ['get', 'class'], ['canal', 'river'], 0.1, 0 ], 20, ['match', ['get', 'class'], ['canal', 'river'], 8, 3 ] ], 'line-opacity': ['interpolate', ['linear'], ['zoom'], 8, 0, 8.5, 1 ] } }, { id: 'water', type: 'fill', metadata: { 'mapbox:featureComponent': 'land-and-water', 'mapbox:group': 'Land & water, water' }, source: 'composite', 'source-layer': 'water', layout: {}, paint: { 'fill-color': '#999999' } }, { id: 'land-structure-polygon', type: 'fill', metadata: { 'mapbox:featureComponent': 'land-and-water', 'mapbox:group': 'Land & water, built' }, source: 'composite', 'source-layer': 'structure', minzoom: 13, filter: ['all', ['==', ['geometry-type'], 'Polygon'], ['==', ['get', 'class'], 'land'] ], layout: {}, paint: { 'fill-color': 'hsl(175, 0%, 99%)' } }, { id: 'land-structure-line', type: 'line', metadata: { 'mapbox:featureComponent': 'land-and-water', 'mapbox:group': 'Land & water, built' }, source: 'composite', 'source-layer': 'structure', minzoom: 13, filter: ['all', ['==', ['geometry-type'], 'LineString'], ['==', ['get', 'class'], 'land'] ], layout: { 'line-cap': 'round' }, paint: { 'line-width': ['interpolate', ['exponential', 1.99], ['zoom'], 14, 0.75, 20, 40 ], 'line-color': 'hsl(175, 0%, 99%)' } }, { id: 'aeroway-polygon', type: 'fill', metadata: { 'mapbox:featureComponent': 'transit', 'mapbox:group': 'Transit, built' }, source: 'composite', 'source-layer': 'aeroway', minzoom: 11, filter: ['all', ['==', ['geometry-type'], 'Polygon'], ['match', ['get', 'type'], ['runway', 'taxiway', 'helipad'], true, false ] ], layout: {}, paint: { 'fill-color': ['interpolate', ['linear'], ['zoom'], 15, 'hsl(345, 1%, 91%)', 16, 'hsl(345, 2%, 93%)' ], 'fill-opacity': ['interpolate', ['linear'], ['zoom'], 11, 0, 11.5, 1 ] } }, { id: 'aeroway-line', type: 'line', metadata: { 'mapbox:featureComponent': 'transit', 'mapbox:group': 'Transit, built' }, source: 'composite', 'source-layer': 'aeroway', minzoom: 9, filter: ['==', ['geometry-type'], 'LineString'], layout: {}, paint: { 'line-color': ['interpolate', ['linear'], ['zoom'], 15, 'hsl(345, 1%, 91%)', 16, 'hsl(345, 2%, 93%)' ], 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 9, ['match', ['get', 'type'], 'runway', 1, 0.5], 18, ['match', ['get', 'type'], 'runway', 80, 20] ] } }, { id: 'building-outline', type: 'line', metadata: { 'mapbox:featureComponent': 'buildings', 'mapbox:group': 'Buildings, built' }, source: 'composite', 'source-layer': 'building', minzoom: 15, filter: ['all', ['!=', ['get', 'type'], 'building:part'], ['==', ['get', 'underground'], 'false'] ], layout: {}, paint: { 'line-color': 'hsl(175, 0%, 89%)', 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 15, 0.75, 20, 3 ], 'line-opacity': ['interpolate', ['linear'], ['zoom'], 15, 0, 16, 1 ] } }, { id: 'building', type: 'fill', metadata: { 'mapbox:featureComponent': 'buildings', 'mapbox:group': 'Buildings, built' }, source: 'composite', 'source-layer': 'building', minzoom: 15, filter: ['all', ['!=', ['get', 'type'], 'building:part'], ['==', ['get', 'underground'], 'false'] ], layout: {}, paint: { 'fill-color': ['interpolate', ['linear'], ['zoom'], 15, 'hsl(175, 0%, 95%)', 16, 'hsl(175, 0%, 95%)' ], 'fill-opacity': ['interpolate', ['linear'], ['zoom'], 15, 0, 16, 1 ], 'fill-outline-color': 'hsl(175, 0%, 89%)' } }, { id: 'tunnel-path', type: 'line', metadata: { 'mapbox:featureComponent': 'walking-cycling', 'mapbox:group': 'Walking, cycling, etc., tunnels' }, source: 'composite', 'source-layer': 'road', minzoom: 14, filter: ['all', ['==', ['get', 'structure'], 'tunnel'], ['==', ['get', 'class'], 'path'], ['!=', ['get', 'type'], 'steps'], ['==', ['geometry-type'], 'LineString'] ], layout: {}, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 15, 1, 18, 4 ], 'line-color': 'hsl(175, 0%, 89%)', 'line-dasharray': ['step', ['zoom'], ['literal', [1, 0]], 15, ['literal', [1.75, 1]], 16, ['literal', [1, 0.75]], 17, ['literal', [1, 0.5]] ] } }, { id: 'tunnel-steps', type: 'line', metadata: { 'mapbox:featureComponent': 'walking-cycling', 'mapbox:group': 'Walking, cycling, etc., tunnels' }, source: 'composite', 'source-layer': 'road', minzoom: 14, filter: ['all', ['==', ['get', 'structure'], 'tunnel'], ['==', ['get', 'type'], 'steps'], ['==', ['geometry-type'], 'LineString'] ], layout: {}, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 15, 1, 16, 1.6, 18, 6 ], 'line-color': 'hsl(175, 0%, 89%)', 'line-dasharray': ['step', ['zoom'], ['literal', [1, 0]], 15, ['literal', [1.75, 1]], 16, ['literal', [1, 0.75]], 17, ['literal', [0.3, 0.3]] ] } }, { id: 'tunnel-pedestrian', type: 'line', metadata: { 'mapbox:featureComponent': 'walking-cycling', 'mapbox:group': 'Walking, cycling, etc., tunnels' }, source: 'composite', 'source-layer': 'road', minzoom: 13, filter: ['all', ['==', ['get', 'structure'], 'tunnel'], ['==', ['get', 'class'], 'pedestrian'], ['==', ['geometry-type'], 'LineString'] ], layout: {}, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 14, 0.5, 18, 12 ], 'line-color': 'hsl(175, 0%, 89%)', 'line-dasharray': ['step', ['zoom'], ['literal', [1, 0]], 15, ['literal', [1.5, 0.4]], 16, ['literal', [1, 0.2]] ] } }, { id: 'tunnel-simple', type: 'line', metadata: { 'mapbox:featureComponent': 'road-network', 'mapbox:group': 'Road network, tunnels' }, source: 'composite', 'source-layer': 'road', minzoom: 13, filter: ['all', ['==', ['get', 'structure'], 'tunnel'], ['step', ['zoom'], ['match', ['get', 'class'], ['motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'secondary', 'tertiary', 'street', 'street_limited', 'primary_link', 'track'], true, false ], 14, ['match', ['get', 'class'], ['motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'street', 'street_limited', 'service', 'track'], true, false ] ], ['==', ['geometry-type'], 'LineString'] ], layout: {}, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 13, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary'], 4, ['secondary', 'tertiary'], 2.5, ['motorway_link', 'trunk_link', 'street', 'street_limited', 'primary_link'], 1, 0.5 ], 18, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary'], 32, ['secondary', 'tertiary'], 26, ['motorway_link', 'trunk_link', 'street', 'street_limited', 'primary_link'], 18, 12 ] ], 'line-color': 'hsl(0, 13%, 87%)' } }, { id: 'road-path', type: 'line', metadata: { 'mapbox:featureComponent': 'walking-cycling', 'mapbox:group': 'Walking, cycling, etc., surface' }, source: 'composite', 'source-layer': 'road', minzoom: 12, filter: ['all', ['==', ['get', 'class'], 'path'], ['step', ['zoom'], ['!', ['match', ['get', 'type'], ['steps', 'sidewalk', 'crossing'], true, false ]], 16, ['!=', ['get', 'type'], 'steps'] ], ['match', ['get', 'structure'], ['none', 'ford'], true, false ], ['==', ['geometry-type'], 'LineString'] ], layout: { 'line-join': ['step', ['zoom'], 'miter', 14, 'round'] }, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 13, 0.5, 14, 1, 15, 1, 18, 4 ], 'line-color': 'hsl(175, 0%, 100%)', 'line-dasharray': ['step', ['zoom'], ['literal', [4, 0.3]], 15, ['literal', [1.75, 0.3]], 16, ['literal', [1, 0.3]], 17, ['literal', [1, 0.25]] ] } }, { id: 'road-steps', type: 'line', metadata: { 'mapbox:featureComponent': 'walking-cycling', 'mapbox:group': 'Walking, cycling, etc., surface' }, source: 'composite', 'source-layer': 'road', minzoom: 14, filter: ['all', ['==', ['get', 'type'], 'steps'], ['match', ['get', 'structure'], ['none', 'ford'], true, false ], ['==', ['geometry-type'], 'LineString'] ], layout: { 'line-join': 'round' }, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 15, 1, 16, 1.6, 18, 6 ], 'line-color': 'hsl(175, 0%, 100%)', 'line-dasharray': ['step', ['zoom'], ['literal', [1, 0]], 15, ['literal', [1.75, 1]], 16, ['literal', [1, 0.75]], 17, ['literal', [0.3, 0.3]] ] } }, { id: 'road-pedestrian', type: 'line', metadata: { 'mapbox:featureComponent': 'walking-cycling', 'mapbox:group': 'Walking, cycling, etc., surface' }, source: 'composite', 'source-layer': 'road', minzoom: 12, filter: ['all', ['==', ['get', 'class'], 'pedestrian'], ['match', ['get', 'structure'], ['none', 'ford'], true, false ], ['==', ['geometry-type'], 'LineString'] ], layout: { 'line-join': ['step', ['zoom'], 'miter', 14, 'round'] }, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 14, 0.5, 18, 12 ], 'line-color': 'hsl(175, 0%, 100%)', 'line-dasharray': ['step', ['zoom'], ['literal', [1, 0]], 15, ['literal', [1.5, 0.4]], 16, ['literal', [1, 0.2]] ] } }, { id: 'road-simple', type: 'line', metadata: { 'mapbox:featureComponent': 'road-network', 'mapbox:group': 'Road network, surface' }, source: 'composite', 'source-layer': 'road', minzoom: 5, filter: ['all', ['step', ['zoom'], ['match', ['get', 'class'], ['motorway', 'trunk'], true, false ], 6, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary'], true, false ], 8, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary', 'secondary'], true, false ], 10, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'motorway_link', 'trunk_link'], true, false ], 11, ['match', ['get', 'class'], ['motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'secondary', 'tertiary', 'street'], true, false ], 12, ['match', ['get', 'class'], ['motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'secondary', 'tertiary', 'street', 'street_limited', 'primary_link'], true, false ], 13, ['match', ['get', 'class'], ['motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'secondary', 'tertiary', 'street', 'street_limited', 'primary_link', 'track'], true, false ], 14, ['match', ['get', 'class'], ['motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'street', 'street_limited', 'service', 'track'], true, false ] ], ['match', ['get', 'structure'], ['none', 'ford'], true, false ], ['==', ['geometry-type'], 'LineString'] ], layout: { 'line-cap': ['step', ['zoom'], 'butt', 14, 'round'], 'line-join': ['step', ['zoom'], 'miter', 14, 'round'] }, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 5, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary'], 0.75, ['secondary', 'tertiary'], 0.1, 0 ], 13, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary'], 4, ['secondary', 'tertiary'], 2.5, ['motorway_link', 'trunk_link', 'primary_link', 'street', 'street_limited'], 1, 0.5 ], 18, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary'], 32, ['secondary', 'tertiary'], 26, ['motorway_link', 'trunk_link', 'primary_link', 'street', 'street_limited'], 18, 10 ] ], 'line-color': ['match', ['get', 'class'], ['primary_link', 'secondary_link', 'tertiary_link', 'street', 'street_limited', 'service', 'track'], 'hsl(0, 13%, 89%)', 'hsl(0, 13%, 94%)' ] } }, { id: 'bridge-path', type: 'line', metadata: { 'mapbox:featureComponent': 'walking-cycling', 'mapbox:group': 'Walking, cycling, etc., barriers-bridges' }, source: 'composite', 'source-layer': 'road', minzoom: 14, filter: ['all', ['==', ['get', 'structure'], 'bridge'], ['==', ['get', 'class'], 'path'], ['==', ['geometry-type'], 'LineString'], ['!=', ['get', 'type'], 'steps'] ], layout: { 'line-join': 'round' }, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 15, 1, 18, 4 ], 'line-color': 'hsl(175, 0%, 100%)', 'line-dasharray': ['step', ['zoom'], ['literal', [4, 0.3]], 15, ['literal', [1.75, 0.3]], 16, ['literal', [1, 0.3]], 17, ['literal', [1, 0.25]] ] } }, { id: 'bridge-steps', type: 'line', metadata: { 'mapbox:featureComponent': 'walking-cycling', 'mapbox:group': 'Walking, cycling, etc., barriers-bridges' }, source: 'composite', 'source-layer': 'road', minzoom: 14, filter: ['all', ['==', ['get', 'type'], 'steps'], ['==', ['get', 'structure'], 'bridge'], ['==', ['geometry-type'], 'LineString'] ], layout: { 'line-join': 'round' }, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 15, 1, 16, 1.6, 18, 6 ], 'line-color': 'hsl(175, 0%, 100%)', 'line-dasharray': ['step', ['zoom'], ['literal', [1, 0]], 15, ['literal', [1.75, 1]], 16, ['literal', [1, 0.75]], 17, ['literal', [0.3, 0.3]] ] } }, { id: 'bridge-pedestrian', type: 'line', metadata: { 'mapbox:featureComponent': 'walking-cycling', 'mapbox:group': 'Walking, cycling, etc., barriers-bridges' }, source: 'composite', 'source-layer': 'road', minzoom: 13, filter: ['all', ['==', ['get', 'structure'], 'bridge'], ['==', ['get', 'class'], 'pedestrian'], ['==', ['geometry-type'], 'LineString'] ], layout: { 'line-join': 'round' }, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 14, 0.5, 18, 12 ], 'line-color': 'hsl(175, 0%, 100%)', 'line-dasharray': ['step', ['zoom'], ['literal', [1, 0]], 15, ['literal', [1.5, 0.4]], 16, ['literal', [1, 0.2]] ] } }, { id: 'bridge-case-simple', type: 'line', metadata: { 'mapbox:featureComponent': 'road-network', 'mapbox:group': 'Road network, bridges' }, source: 'composite', 'source-layer': 'road', minzoom: 13, filter: ['all', ['==', ['get', 'structure'], 'bridge'], ['step', ['zoom'], ['match', ['get', 'class'], ['motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'secondary', 'tertiary', 'street', 'street_limited', 'primary_link', 'track'], true, false ], 14, ['match', ['get', 'class'], ['motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'street', 'street_limited', 'service', 'track'], true, false ] ], ['==', ['geometry-type'], 'LineString'] ], layout: { 'line-join': ['step', ['zoom'], 'miter', 14, 'round'] }, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 13, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary'], 6, ['secondary', 'tertiary'], 4, ['motorway_link', 'trunk_link', 'street', 'street_limited', 'primary_link'], 2.5, 1.25 ], 18, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary'], 36, ['secondary', 'tertiary'], 30, ['motorway_link', 'trunk_link', 'street', 'street_limited', 'primary_link'], 22, 16 ] ], 'line-color': 'hsl(175, 0%, 99%)' } }, { id: 'bridge-simple', type: 'line', metadata: { 'mapbox:featureComponent': 'road-network', 'mapbox:group': 'Road network, bridges' }, source: 'composite', 'source-layer': 'road', minzoom: 13, filter: ['all', ['==', ['get', 'structure'], 'bridge'], ['step', ['zoom'], ['match', ['get', 'class'], ['motorway', 'trunk'], true, false ], 13, ['match', ['get', 'class'], ['motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'secondary', 'tertiary', 'street', 'street_limited', 'primary_link', 'track'], true, false ], 14, ['match', ['get', 'class'], ['motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'street', 'street_limited', 'service', 'track'], true, false ] ], ['==', ['geometry-type'], 'LineString'] ], layout: { 'line-cap': ['step', ['zoom'], 'butt', 14, 'round'], 'line-join': ['step', ['zoom'], 'miter', 14, 'round'] }, paint: { 'line-width': ['interpolate', ['exponential', 1.5], ['zoom'], 13, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary'], 4, ['secondary', 'tertiary'], 2.5, ['motorway_link', 'trunk_link', 'street', 'street_limited', 'primary_link'], 1, 0.5 ], 18, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary'], 32, ['secondary', 'tertiary'], 26, ['motorway_link', 'trunk_link', 'street', 'street_limited', 'primary_link'], 18, 12 ] ], 'line-color': ['match', ['get', 'class'], ['primary_link', 'secondary_link', 'tertiary_link', 'street', 'street_limited', 'service', 'track'], 'hsl(0, 13%, 89%)', 'hsl(0, 13%, 94%)' ] } }, { id: 'admin-1-boundary-bg', type: 'line', metadata: { 'mapbox:featureComponent': 'admin-boundaries', 'mapbox:group': 'Administrative boundaries, admin' }, source: 'composite', 'source-layer': 'admin', minzoom: 7, filter: ['all', ['==', ['get', 'iso_3166_1'], 'US'], ['==', ['get', 'admin_level'], 1], ['==', ['get', 'maritime'], 'false'], ['match', ['get', 'worldview'], ['all', 'US'], true, false ] ], layout: { 'line-join': 'bevel' }, paint: { 'line-color': ['interpolate', ['linear'], ['zoom'], 8, 'hsl(175, 0%, 99%)', 16, 'hsl(0, 10%, 99%)' ], 'line-width': ['interpolate', ['linear'], ['zoom'], 7, 3.75, 12, 5.5 ], 'line-opacity': ['interpolate', ['linear'], ['zoom'], 7, 0, 8, 0.75 ], 'line-dasharray': [1, 0], 'line-blur': ['interpolate', ['linear'], ['zoom'], 3, 0, 8, 3 ] } }, { id: 'admin-0-boundary-bg', type: 'line', metadata: { 'mapbox:featureComponent': 'admin-boundaries', 'mapbox:group': 'Administrative boundaries, admin' }, source: 'composite', 'source-layer': 'admin', minzoom: 1, filter: ['all', ['==', ['get', 'iso_3166_1'], 'US'], ['==', ['get', 'admin_level'], 0], ['==', ['get', 'maritime'], 'false'], ['match', ['get', 'worldview'], ['all', 'US'], true, false ] ], layout: {}, paint: { 'line-width': ['interpolate', ['linear'], ['zoom'], 3, 3.5, 10, 8 ], 'line-color': ['interpolate', ['linear'], ['zoom'], 6, 'hsl(175, 0%, 99%)', 8, 'hsl(0, 10%, 99%)' ], 'line-opacity': ['interpolate', ['linear'], ['zoom'], 3, 0, 4, 0.5 ], 'line-blur': ['interpolate', ['linear'], ['zoom'], 3, 0, 10, 2 ] } }, { id: 'admin-1-boundary', type: 'line', metadata: { 'mapbox:featureComponent': 'admin-boundaries', 'mapbox:group': 'Administrative boundaries, admin' }, source: 'composite', 'source-layer': 'admin', minzoom: 2, filter: ['all', ['==', ['get', 'iso_3166_1'], 'US'], ['==', ['get', 'admin_level'], 1], ['==', ['get', 'maritime'], 'false'], ['match', ['get', 'worldview'], ['all', 'US'], true, false ] ], layout: { 'line-join': 'round', 'line-cap': 'round' }, paint: { 'line-dasharray': ['step', ['zoom'], ['literal', [2, 0]], 7, ['literal', [2, 2, 6, 2]] ], 'line-width': ['interpolate', ['linear'], ['zoom'], 7, 0.75, 12, 1.5 ], 'line-opacity': ['interpolate', ['linear'], ['zoom'], 2, 0, 3, 1 ], 'line-color': ['interpolate', ['linear'], ['zoom'], 3, 'hsl(0, 3%, 77%)', 7, 'hsl(0, 2%, 62%)' ] } }, { id: 'admin-0-boundary', type: 'line', metadata: { 'mapbox:featureComponent': 'admin-boundaries', 'mapbox:group': 'Administrative boundaries, admin' }, source: 'composite', 'source-layer': 'admin', minzoom: 1, filter: ['all', ['==', ['get', 'admin_level'], 0], ['==', ['get', 'disputed'], 'false'], ['==', ['get', 'maritime'], 'false'], ['match', ['get', 'worldview'], ['all', 'US'], true, false ] ], layout: { 'line-join': 'round', 'line-cap': 'round' }, paint: { 'line-color': 'hsl(0, 2%, 51%)', 'line-width': ['interpolate', ['linear'], ['zoom'], 3, 0.5, 10, 2 ], 'line-dasharray': [10, 0] } }, { id: 'admin-0-boundary-disputed', type: 'line', metadata: { 'mapbox:featureComponent': 'admin-boundaries', 'mapbox:group': 'Administrative boundaries, admin' }, source: 'composite', 'source-layer': 'admin', minzoom: 1, filter: ['all', ['==', ['get', 'iso_3166_1'], 'US'], ['==', ['get', 'disputed'], 'true'], ['==', ['get', 'admin_level'], 0], ['==', ['get', 'maritime'], 'false'], ['match', ['get', 'worldview'], ['all', 'US'], true, false ] ], layout: { 'line-join': 'round' }, paint: { 'line-color': 'hsl(0, 2%, 51%)', 'line-width': ['interpolate', ['linear'], ['zoom'], 3, 0.5, 10, 2 ], 'line-dasharray': ['step', ['zoom'], ['literal', [3.25, 3.25]], 6, ['literal', [2.5, 2.5]], 7, ['literal', [2, 2.25]], 8, ['literal', [1.75, 2]] ] } }]; var labels = [{ id: 'settlement-minor-label', type: 'symbol', metadata: { 'mapbox:featureComponent': 'place-labels', 'mapbox:group': 'Place labels, place-labels' }, source: 'composite', 'source-layer': 'place_label', maxzoom: 15, filter: ['all', ['<=', ['get', 'filterrank'], 3], ['==', ['get', 'iso_3166_1'], 'US'], ['match', ['get', 'class'], 'settlement', ['match', ['get', 'worldview'], ['all', 'US'], true, false ], 'disputed_settlement', ['all', ['==', ['get', 'disputed'], 'true'], ['match', ['get', 'worldview'], ['all', 'US'], true, false ] ], false], ['step', ['zoom'], true, 8, ['>=', ['get', 'symbolrank'], 11], 10, ['>=', ['get', 'symbolrank'], 12], 11, ['>=', ['get', 'symbolrank'], 13], 12, ['>=', ['get', 'symbolrank'], 15], 13, ['>=', ['get', 'symbolrank'], 11], 14, ['>=', ['get', 'symbolrank'], 13]] ], layout: { 'text-line-height': 1.1, 'text-size': ['interpolate', ['cubic-bezier', 0.2, 0, 0.9, 1], ['zoom'], 3, ['step', ['get', 'symbolrank'], 12, 9, 11, 10, 10.5, 12, 9.5, 14, 8.5, 16, 6.5, 17, 4], 13, ['step', ['get', 'symbolrank'], 23, 9, 21, 10, 19, 11, 17, 12, 16, 13, 15, 15, 13] ], 'icon-image': '', 'text-font': ['DIN Pro Regular', 'Arial Unicode MS Regular'], 'text-offset': ['step', ['zoom'], ['literal', [0, 0]], 8, ['literal', [0, 0]] ], 'text-anchor': ['step', ['zoom'], 'center', 8, 'center'], 'text-field': ['coalesce', ['get', 'name_en'], ['get', 'name'] ], 'text-max-width': 7 }, paint: { 'text-color': 'hsl(0, 6%, 45%)', 'text-halo-color': 'hsl(175, 5%, 100%)', 'text-halo-width': 1, 'icon-opacity': ['step', ['zoom'], 1, 8, 0], 'text-halo-blur': 1 } }, { id: 'settlement-major-label', type: 'symbol', metadata: { 'mapbox:featureComponent': 'place-labels', 'mapbox:group': 'Place labels, place-labels' }, source: 'composite', 'source-layer': 'place_label', maxzoom: 15, filter: ['all', ['<=', ['get', 'filterrank'], 3], ['==', ['get', 'iso_3166_1'], 'US'], ['match', ['get', 'class'], 'settlement', ['match', ['get', 'worldview'], ['all', 'US'], true, false ], 'disputed_settlement', ['all', ['==', ['get', 'disputed'], 'true'], ['match', ['get', 'worldview'], ['all', 'US'], true, false ] ], false], ['step', ['zoom'], false, 8, ['<', ['get', 'symbolrank'], 11], 10, ['<', ['get', 'symbolrank'], 12], 11, ['<', ['get', 'symbolrank'], 13], 12, ['<', ['get', 'symbolrank'], 15], 13, ['>=', ['get', 'symbolrank'], 11], 14, ['>=', ['get', 'symbolrank'], 13]] ], layout: { 'text-line-height': 1.1, 'text-size': ['interpolate', ['cubic-bezier', 0.2, 0, 0.9, 1], ['zoom'], 8, ['step', ['get', 'symbolrank'], 18, 9, 17, 10, 15], 15, ['step', ['get', 'symbolrank'], 23, 9, 22, 10, 20, 11, 18, 12, 16, 13, 15, 15, 13] ], 'icon-image': '', 'text-font': ['DIN Pro Medium', 'Arial Unicode MS Regular'], 'text-offset': ['step', ['zoom'], ['literal', [0, 0]], 8, ['literal', [0, 0]] ], 'text-anchor': ['step', ['zoom'], 'center', 8, 'center'], 'text-field': ['coalesce', ['get', 'name_en'], ['get', 'name'] ], 'text-max-width': 7 }, paint: { 'text-color': 'hsl(0, 6%, 45%)', 'text-halo-color': 'hsl(175, 5%, 100%)', 'text-halo-width': 1, 'icon-opacity': ['step', ['zoom'], 1, 10, 0], 'text-halo-blur': 1 } }, { id: 'state-label', type: 'symbol', metadata: { 'mapbox:featureComponent': 'place-labels', 'mapbox:group': 'Place labels, place-labels' }, source: 'composite', 'source-layer': 'place_label', minzoom: 3, maxzoom: 9, filter: ['match', ['get', 'class'], 'state', ['==', ['get', 'iso_3166_1'], 'US'], 'disputed_state', ['all', ['==', ['get', 'disputed'], 'true'], ['match', ['get', 'worldview'], ['all', 'US'], true, false ] ], false], layout: { 'text-size': ['interpolate', ['cubic-bezier', 0.85, 0.7, 0.65, 1], ['zoom'], 4, ['step', ['get', 'symbolrank'], 10, 6, 9.5, 7, 9], 9, ['step', ['get', 'symbolrank'], 21, 6, 16, 7, 13] ], 'text-transform': 'uppercase', 'text-font': ['DIN Pro Bold', 'Arial Unicode MS Bold'], 'text-field': ['step', ['zoom'], ['step', ['get', 'symbolrank'], ['coalesce', ['get', 'name_en'], ['get', 'name'] ], 5, ['coalesce', ['get', 'abbr'], ['get', 'name_en'], ['get', 'name'] ] ], 5, ['coalesce', ['get', 'name_en'], ['get', 'name'] ] ], 'text-letter-spacing': 0.15, 'text-max-width': 6 }, paint: { 'text-color': 'hsl(0, 6%, 45%)', 'text-halo-color': 'hsl(175, 5%, 100%)', 'text-halo-width': 1 } // { // id: 'country-label', // type: 'symbol', // metadata: { // 'mapbox:featureComponent': 'place-labels', // 'mapbox:group': 'Place labels, place-labels' // }, // source: 'composite', // 'source-layer': 'place_label', // minzoom: 1, // maxzoom: 10, // filter: [ // 'match', // ['get', 'class'], // 'country', // ['match', ['get', 'worldview'], ['all', 'US'], true, false], // 'disputed_country', // [ // 'all', // ['==', ['get', 'disputed'], 'true'], // ['match', ['get', 'worldview'], ['all', 'US'], true, false] // ], // false // ], // layout: { // 'text-line-height': 1.1, // 'text-size': [ // 'interpolate', // ['cubic-bezier', 0.2, 0, 0.7, 1], // ['zoom'], // 1, // ['step', ['get', 'symbolrank'], 11, 4, 9, 5, 8], // 9, // ['step', ['get', 'symbolrank'], 22, 4, 19, 5, 17] // ], // 'icon-image': '', // 'text-font': ['DIN Pro Medium', 'Arial Unicode MS Regular'], // 'text-offset': ['literal', [0, 0]], // 'text-field': ['coalesce', ['get', 'name_en'], ['get', 'name']], // 'text-max-width': 6 // }, // paint: { // 'icon-opacity': [ // 'step', // ['zoom'], // ['case', ['has', 'text_anchor'], 1, 0], // 7, // 0 // ], // 'text-color': 'hsl(0, 6%, 45%)', // 'text-halo-color': [ // 'interpolate', // ['linear'], // ['zoom'], // 2, // 'hsla(175, 5%, 100%, 0.75)', // 3, // 'hsl(175, 5%, 100%)' // ], // 'text-halo-width': 1.25 // } // } }]; var style = { version: 8, name: 'Basic', metadata: { 'mapbox:type': 'default', 'mapbox:origin': 'basic-v1', 'mapbox:sdk-support': { android: '9.3.0', ios: '5.10.0', js: '1.10.0' }, 'mapbox:autocomposite': true, 'mapbox:groups': { 'Land & water, land': { name: 'Land & water, land', collapsed: false }, 'Land & water, water': { name: 'Land & water, water', collapsed: false }, 'Land & water, built': { name: 'Land & water, built', collapsed: false }, 'Transit, built': { name: 'Transit, built', collapsed: false }, 'Buildings, built': { name: 'Buildings, built', collapsed: false }, 'Walking, cycling, etc., tunnels': { name: 'Walking, cycling, etc., tunnels', collapsed: false }, 'Road network, tunnels': { name: 'Road network, tunnels', collapsed: false }, 'Walking, cycling, etc., surface': { name: 'Walking, cycling, etc., surface', collapsed: false }, 'Road network, surface': { name: 'Road network, surface', collapsed: false }, 'Walking, cycling, etc., barriers-bridges': { name: 'Walking, cycling, etc., barriers-bridges', collapsed: false }, 'Road network, bridges': { name: 'Road network, bridges', collapsed: false }, 'Administrative boundaries, admin': { name: 'Administrative boundaries, admin', collapsed: false }, 'Road network, road-labels': { name: 'Road network, road-labels', collapsed: false }, 'Walking, cycling, etc., walking-cycling-labels': { name: 'Walking, cycling, etc., walking-cycling-labels', collapsed: false }, 'Natural features, natural-labels': { name: 'Natural features, natural-labels', collapsed: false }, 'Point of interest labels, poi-labels': { name: 'Point of interest labels, poi-labels', collapsed: false }, 'Transit, transit-labels': { name: 'Transit, transit-labels', collapsed: false }, 'Place labels, place-labels': { name: 'Place labels, place-labels', collapsed: false } }, 'mapbox:decompiler': { id: 'basic-spring-v1', componentVersion: '7.1.0', strata: [{ id: 'basic-v1', order: [ ['land-and-water', 'land'], ['land-and-water', 'water'], ['land-and-water', 'built'], ['transit', 'built'], ['buildings', 'built'], ['road-network', 'tunnels-case'], ['walking-cycling', 'tunnels'], ['road-network', 'tunnels'], ['transit', 'ferries'], ['walking-cycling', 'surface'], ['road-network', 'surface'], ['transit', 'surface'], ['road-network', 'surface-icons'], ['walking-cycling', 'barriers-bridges'], ['road-network', 'bridges'], ['transit', 'bridges'], ['road-network', 'traffic-and-closures'], ['buildings', 'extruded'], ['transit', 'elevated'], ['admin-boundaries', 'admin'], ['buildings', 'building-labels'], ['road-network', 'road-labels'], ['walking-cycling', 'walking-cycling-labels'], ['transit', 'ferry-aerialway-labels'], ['natural-features', 'natural-labels'], ['point-of-interest-labels', 'poi-labels'], ['transit', 'transit-labels'], ['place-labels', 'place-labels'] ] }], components: { 'road-network': '7.1.0', 'natural-features': '7.1.0', 'place-labels': '7.1.0', 'admin-boundaries': '7.1.0', 'point-of-interest-labels': '7.1.0', 'walking-cycling': '7.1.0', transit: '7.1.0', 'land-and-water': '7.1.0', buildings: '7.1.0' }, propConfig: { 'road-network': { 'color-base': 'hsl(175, 0%, 100%)', 'color-road': 'hsl(0, 13%, 94%)', roadNetwork: 'Simple' }, 'natural-features': { 'color-base': 'hsl(175, 0%, 100%)', 'color-water': 'hsl(177, 63%, 94%)', 'color-poi': 'hsl(20, 2%, 55%)' }, 'place-labels': { 'color-base': 'hsl(175, 0%, 100%)', 'color-place-label': 'hsl(0, 6%, 66%)', settlementSubdivisionsDensity: 3, settlementLabelStyle: 'Text only' }, 'admin-boundaries': { 'color-base': 'hsl(175, 0%, 100%)', 'color-place-label': 'hsl(0, 6%, 66%)' }, 'point-of-interest-labels': { 'color-base': 'hsl(175, 0%, 100%)', 'color-greenspace': 'hsl(127, 10%, 85%)', 'color-greenspace-label': 'hsl(128, 12%, 47%)', 'color-poi': 'hsl(20, 2%, 55%)', density: 2 }, 'walking-cycling': { 'color-base': 'hsl(175, 0%, 100%)', 'color-road': 'hsl(0, 13%, 94%)', 'color-greenspace': 'hsl(127, 10%, 85%)', 'color-greenspace-label': 'hsl(128, 12%, 47%)', walkingCyclingPisteBackground: false, golfHoleLabelLine: false, pedestrianPolygonFeatures: false }, transit: { 'color-airport': 'hsl(345, 3%, 70%)', 'color-transit': 'hsl(40, 3%, 70%)', aerialways: false, 'color-road': 'hsl(0, 13%, 94%)', 'color-water': 'hsl(177, 63%, 94%)', transitLabels: false, railways: false, ferries: false, 'color-base': 'hsl(175, 0%, 100%)' }, 'land-and-water': { 'color-airport': 'hsl(345, 3%, 70%)', landcover: false, 'color-greenspace': 'hsl(127, 10%, 85%)', 'color-water': 'hsl(177, 63%, 94%)', transitionLandOnZoom: false, waterStyle: 'Simple', 'color-base': 'hsl(175, 0%, 100%)' }, buildings: { 'color-base': 'hsl(175, 0%, 100%)', houseNumbers: false } } } }, zoom: 12, center: [0, 0], sources: { 'mapbox://mapbox.mapbox-traffic-v1': { url: 'mapbox://mapbox.mapbox-traffic-v1', type: 'vector' }, 'mapbox://mapbox.mapbox-incidents-v1': { url: 'mapbox://mapbox.mapbox-incidents-v1', type: 'vector' }, composite: { url: 'mapbox://mapbox.mapbox-streets-v8,mapbox.mapbox-terrain-v2', type: 'vector' }, covidPoints: { tiles: ['https://nodeassets.nbcnews.com/mapbox-tiles-prod/covid-death-points3/{z}/{x}/{y}.pbf'], type: 'vector', format: 'pbf', bounds: [-159.6, 13.4, 144.9, 71.3] }, covidCounties: { tiles: ['https://nodeassets.nbcnews.com/mapbox-tiles-prod/covid-counties3/{z}/{x}/{y}.pbf'], type: 'vector', format: 'pbf', bounds: [-159.6, 13.4, 144.9, 71.3] // zipcodes: { // tiles: [ // 'https://nodeassets.nbcnews.com/mapbox-tiles-prod/zipcodes/{z}/{x}/{y}.pbf' // ], // type: 'vector', // format: 'pbf', // bounds: [-159.6, 13.4, 144.9, 71.3] // } } }, sprite: 'mapbox://sprites/nbcdatateam/ck6sbg8b137161io1cfz8q0qa/ck2u8j60r58fu0sgyxrigm3cu', glyphs: 'mapbox://fonts/nbcdatateam/{fontstack}/{range}.pbf', layers: [].concat(openStreetLayers, [{ id: 'covid-points', type: 'circle', source: 'covidPoints', 'source-layer': 'coviddeathpoints', paint: { 'circle-opacity': 1, 'circle-radius': ['interpolate', ['linear'], ['zoom'], 5, 0.5, 9, 1, 10, 1.6 ], 'circle-color': ['to-color', ['feature-state', 'color'], '#FA3A3A'] } }, { id: 'covid-counties-fill', type: 'fill', source: 'covidCounties', 'source-layer': 'countiescovid', paint: { 'fill-color': 'black', 'fill-opacity': 0 // 'fill-outline-color': 'white' // 'line-width': 3, // 'line-opacity': ['number', ['feature-state', 'opacity'], 0] } }, { id: 'covid-counties', type: 'line', source: 'covidCounties', 'source-layer': 'countiescovid', paint: { 'line-color': 'grey', // 'line-opacity': 0.4 // 'fill-outline-color': 'white' 'line-width': 1, 'line-opacity': ['to-number', ['feature-state', 'opacity'], 0] } }], labels), created: '2021-01-19T16:03:02.856Z', modified: '2021-01-19T16:03:12.179Z', id: 'ckk46s3x60lpm17p4jr850sux', owner: 'nbcdatateam', visibility: 'private', draft: false }; (function() { /* from https://davidwalsh.name/javascript-debounce-function */ function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; var later = function later() { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; } window.graphicDoneLoading = function graphicDoneLoading() { if (typeof Android === 'undefined') return; Android.loadingFinished(); }; document.addEventListener('DOMContentLoaded', function() { var pymChild = pym.Child({ polling: 500 }); var map; var getExpressionToMuteDotsOutsideCounty = function getExpressionToMuteDotsOutsideCounty(fips) { return Array.isArray(fips) ? ['case'].concat(_toConsumableArray(fips.flatMap(function(oneFips) { return [ ['==', ['get', 'fips'], oneFips], '#FA3A3A' ]; })), ['grey']) : ['match', ['get', 'fips'], fips, '#FA3A3A', 'grey']; }; var resetDots = function resetDots() { return map.setPaintProperty('covid-points', 'circle-color', '#FA3A3A'); }; var config = { style: 'mapbox://styles/mapbox/streets-v11', accessToken: 'pk.eyJ1IjoibmJjZGF0YXRlYW0iLCJhIjoiY2pzMHVhbXlqMHJkODQ0bWdzbnpqZWZheCJ9.KXxevZdcUQLI0GnNWbea6w', showMarkers: false, markerColor: '#555555', theme: 'dark', use3dTerrain: false, title: 'The Title Text of this Story', subtitle: 'A descriptive and interesting subtitle to draw in the reader', byline: 'By a Digital Storyteller', footer: 'Source: source citations, etc.', chapters: [{ id: 'intro', alignment: 'center', hidden: false, title: '', description: "Each dot on the map represents a person who died from Covid-19.", rotateAnimation: false, onChapterEnter: [], onChapterExit: [] }, { id: 'slug-style-id', alignment: 'left', hidden: false, title: '
Kirkland, King County Wash.
', description: "The first reported U.S. death from Covid-19 was a man in his 50s in Washington state last Feb. 29. That same day, the Centers for Disease Control and Prevention reported its first outbreak, at a long-term care facility in that state.", location: [ [-122.58152386549379, 47.380619167542136], [-121.76891885035707, 47.9537299492267] ], options: { zoom: 10.045419985439006, bearing: -55.65000000000005, pitch: 60 }, mapAnimation: 'fitBounds', rotateAnimation: false, callback: function callback() { map.setPaintProperty('settlement-minor-label', 'text-opacity', ['case', ['==', ['get', 'name'], 'Kirkland'], 1, ['==', ['get', 'name'], 'Cold Spring'], 1, 0]); map.setFeatureState({ id: 11001, sourceLayer: 'countiescovid', source: 'covidCounties' }, { opacity: 0.4 }); window.setExpression = function() { return map.setPaintProperty('covid-points', 'circle-color', getExpressionToMuteDotsOutsideCounty('53033')); }; map.on('moveend', setExpression); }, exitcallback: function exitcallback() { map.off('moveend', setExpression); resetDots(); map.setPaintProperty('settlement-minor-label', 'text-opacity', 1); }, onChapterEnter: [], onChapterExit: [] }, { id: 'other-identifier', alignment: 'left', hidden: false, title: '
Santa Clara County, Calif.
', description: "It was later revealed that the country\u2019s first actual Covid-19 death was in Santa Clara County, Calif., weeks earlier.", location: [ [-122.51488613475054, 36.830065978088626], [-121.37996631989401, 37.72616163434586] ], options: { pitch: 60, bearing: -43.2 }, mapAnimation: 'fitBounds', rotateAnimation: false, callback: function callback() { map.setPaintProperty('settlement-major-label', 'text-opacity', ['match', ['get', 'name'], 'Santa Clara', 1, 0]); window.setExpression = function() { map.setPaintProperty('covid-points', 'circle-color', ['match', ['get', 'fips'], '06085', '#FA3A3A', 'darkgrey']); map.setLayoutProperty('settlement-major-label', 'text-allow-overlap', true); }; map.on('moveend', setExpression); }, exitcallback: function exitcallback() { map.off('moveend', setExpression); map.setLayoutProperty('settlement-major-label', 'text-allow-overlap', false); resetDots(); map.setPaintProperty('settlement-major-label', 'text-opacity', 1); }, onChapterEnter: [], onChapterExit: [] }, { id: 'New York', alignment: 'left', hidden: false, title: '
New York City
', description: "The first reported case of Covid-19 in New York state was on March 1. The first two Covid deaths followed two weeks later. By the end of the month, New York City had surpassed 1,000 deaths. The death toll in the city is now nearly 29,000.", location: [ [-74.14770376239926, 40.56502170756556], [-73.75926522818276, 40.79514108863091] ], options: { bearing: -12.075678827680122, pitch: 59.69082638889295 }, mapAnimation: 'fitBounds', rotateAnimation: false, callback: function callback() { window.setExpression = function() { return map.setPaintProperty('covid-points', 'circle-color', getExpressionToMuteDotsOutsideCounty(['36081', '36005', '36013', '36061', '36047', '36085'])); }; map.on('moveend', setExpression); }, exitcallback: function exitcallback() { resetDots(); map.off('moveend', setExpression); }, onChapterEnter: [], onChapterExit: [] }, { id: 'Chicago', alignment: 'left', hidden: false, title: '
', description: "In Sioux Falls, a Smithfield Foods meat processing plant became a Covid-19 hot spot, and was linked to nearly 900 cases, a figure that was later revised to more than 1,000. Four people eventually died in the outbreak. Minnehaha County, where the city is, would eventually see more than 320 Covid-19-related deaths.", location: [ [-96.92001244939769, 43.424350518723685], [-96.58899473396492, 43.61186647712] ], options: { bearing: -3.854465260900042, pitch: 59.69082638889295 }, mapAnimation: 'fitBounds', rotateAnimation: false, callback: '', onChapterEnter: [], onChapterExit: [] }, { id: 'Cold Spring', alignment: 'left', hidden: false, title: '
Cold Spring, Minn.
', description: "The case highlighted how meatpacking plants became virus hot spots in their communities, such as a Pilgrim\u2019s Pride plant in Cold Spring, Minn., which was linked to a 454 percent jump in cases in Stearns County. The county would eventually record nearly 200 deaths from the virus.", location: [ [-94.51513787531658, 45.40093316743145], [-94.35776846364435, 45.514553200672765] ], options: { bearing: 51.7062227179332, pitch: 59.69082638889295 }, mapAnimation: 'fitBounds', rotateAnimation: false, callback: '', halfwaycallback: function halfwaycallback() { map.setPaintProperty('covid-points', 'circle-color', getExpressionToMuteDotsOutsideCounty('27145')); map.fitBounds([ [-94.46170616896077, 45.41006828096292], [-94.01315685355553, 45.683478966822435] ], { pitch: 54.009999999999984, bearing: -15.569999999999897, duration: 800 }); }, exitcallback: function exitcallback() { resetDots(); }, onChapterEnter: [], onChapterExit: [] }, { id: 'Texas', alignment: 'left', hidden: false, title: '
Houston
', description: "Last summer, when coronavirus cases surged in June, Houston\u2019s Latino community was hit especially hard. Hospitalizations in Harris County were found to be mostly of Hispanic residents, and the county would eventually record more than 4,700 deaths from the virus.", location: [ [-95.95049972435363, 29.379325349613467], [-94.77791466774222, 30.284384470948453] ], options: { bearing: 19.599932764130592, pitch: 59.69082638889295 }, mapAnimation: 'fitBounds', rotateAnimation: false, callback: function callback() { window.setExpression = function() { return map.setPaintProperty('covid-points', 'circle-color', getExpressionToMuteDotsOutsideCounty('48201')); }; map.on('moveend', setExpression); }, exitcallback: function exitcallback() { map.off('moveend', setExpression); resetDots(); }, onChapterEnter: [], onChapterExit: [] }, { id: 'miami', alignment: 'left', hidden: false, title: '
Miami
', description: "On July 30, Florida recorded 253 deaths in one day, the state\u2019s highest in one day, after breaking two records days before. Many of the deaths came from Miami-Dade County, which would eventually lose more than 5,200 lives.", location: [ [-80.7966522852921, 25.338280631821377], [-79.8519438554419, 26.003428221339632] ], optiosn: { pitch: 44.01, bearing: -37.82 }, mapAnimation: 'fitBounds', rotateAnimation: false, callback: function callback() { window.setExpression = function() { return map.setPaintProperty('covid-points', 'circle-color', getExpressionToMuteDotsOutsideCounty('12086')); }; map.on('moveend', setExpression); // document // .querySelector('.mapboxgl-control-container') // .setAttribute('style', 'opacity: 0') map.dragPan.disable(); map.dragRotate.disable(); map.touchZoomRotate.disableRotation(); map.doubleClickZoom.disable(); map.scrollZoom.disable(); map.touchPitch.disable(); document.querySelector('#story').setAttribute('style', ''); }, exitcallback: function exitcallback() { map.off('moveend', setExpression); resetDots(); window.setExpression = function() { if (!isMobile) map.dragPan.enable(); map.dragRotate.enable(); map.doubleClickZoom.enable(); map.setMaxZoom(10); }; map.on('moveend', setExpression); }, onChapterEnter: [], onChapterExit: [] }, { id: 'last', alignment: 'left', hidden: true, location: [ [-127.08785704613271, 16.027775562318794], [-65.23996815656886, 54.08527271051253] ], options: { minzoom: 5, pitch: 0, bearing: 0 }, mapAnimation: 'fitBounds', rotateAnimation: false, callback: function callback() { map.setPaintProperty('covid-points', 'circle-color', ['to-color', ['feature-state', 'color'], '#FA3A3A']); map.dragPan.enable(); document.querySelector('.mapboxgl-control-container').setAttribute('style', 'opacity: 1'); document.querySelector('.suggestions').setAttribute('style', 'display: block!important;'); var suggestions = d3.select('.suggestions div.suggestion-text-container').node(); if (!suggestions) { d3.select('.suggestions').append('div').classed('suggestion-text-container', true).html("
".concat(isMobile ? 'Tap the map to see county details.' : 'Hover over the map to see county details.', " ").concat(isMobile ? 'Use two fingers to pan map.' : '', "
")); } document.querySelector('#story').setAttribute('style', 'pointer-events: none;'); document.querySelector('#graphic').setAttribute('style', 'z-index: 0;'); }, exitcallback: function exitcallback() { map.off('moveend', setExpression); }, onChapterEnter: [], onChapterExit: [] }] // change everythign to fit bounds }; mapboxgl.accessToken = config.accessToken; var layerTypes = { fill: ['fill-opacity'], line: ['line-opacity'], circle: ['circle-opacity', 'circle-stroke-opacity'], symbol: ['icon-opacity', 'text-opacity'], raster: ['raster-opacity'], 'fill-extrusion': ['fill-extrusion-opacity'], heatmap: ['heatmap-opacity'] }; var alignments = { left: 'lefty', center: 'centered', right: 'righty', full: 'fully' }; function getLayerPaintType(layer) { var layerType = map.getLayer(layer).type; return layerTypes[layerType]; } window.mbmap = map; function setLayerOpacity(layer) { var paintProps = getLayerPaintType(layer.layer); paintProps.forEach(function(prop) { var options = {}; if (layer.duration) { var transitionProp = prop + '-transition'; options = { duration: layer.duration }; map.setPaintProperty(layer.layer, transitionProp, options); } map.setPaintProperty(layer.layer, prop, layer.opacity, options); }); } var map = new mapboxgl.Map({ container: 'mapb', style: style, bounds: [ [-66.66579630109005, 53.30383812069897], [-124.81573737919335, 5.875291360183255] ], maxzoom: 10 }); // Create a popup, but don't add it to the map yet. var popup = new mapboxgl.Popup({ closeButton: false, closeOnClick: false, anchor: 'top' }); var lastFeat = 0; var format = d3.format(','); var formatOnedecimal = d3.format(',.1f'); map.on('mousemove', 'covid-counties-fill', function(e) { // Change the cursor style as a UI indicator. map.getCanvas().style.cursor = 'pointer'; var feat = e.features[0]; var properties = feat.properties; map.removeFeatureState({ source: 'covidPoints', sourceLayer: 'coviddeathpoints', id: lastFeat }); map.removeFeatureState({ id: lastFeat, source: 'covidCounties', sourceLayer: 'countiescovid' }); lastFeat = feat.id; map.setFeatureState({ source: 'covidPoints', sourceLayer: 'coviddeathpoints', id: feat.id }, { color: 'black' //,size: 2 } }); // choose dot color for selection map.setFeatureState({ id: feat.id, source: 'covidCounties', sourceLayer: 'countiescovid' }, { opacity: 1 }); // Populate the popup and set its coordinates // based on the feature found. popup.setLngLat(e.lngLat).setHTML("\n