<!doctype html>
<html lang="en" data-theme="light">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Tachyon Profiler - Flamegraph Report</title>
    <script>
// https://d3js.org v7.8.5 Copyright 2010-2023 Mike Bostock
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).d3=t.d3||{})}(this,(function(t){"use strict";function n(t,n){return null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function e(t,n){return null==t||null==n?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function r(t){let r,o,a;function u(t,n,e=0,i=t.length){if(e<i){if(0!==r(n,n))return i;do{const r=e+i>>>1;o(t[r],n)<0?e=r+1:i=r}while(e<i)}return e}return 2!==t.length?(r=n,o=(e,r)=>n(t(e),r),a=(n,e)=>t(n)-e):(r=t===n||t===e?t:i,o=t,a=t),{left:u,center:function(t,n,e=0,r=t.length){const i=u(t,n,e,r-1);return i>e&&a(t[i-1],n)>-a(t[i],n)?i-1:i},right:function(t,n,e=0,i=t.length){if(e<i){if(0!==r(n,n))return i;do{const r=e+i>>>1;o(t[r],n)<=0?e=r+1:i=r}while(e<i)}return e}}}function i(){return 0}function o(t){return null===t?NaN:+t}const a=r(n),u=a.right,c=a.left,f=r(o).center;var s=u;const l=d(y),h=d((function(t){const n=y(t);return(t,e,r,i,o)=>{n(t,e,(r<<=2)+0,(i<<=2)+0,o<<=2),n(t,e,r+1,i+1,o),n(t,e,r+2,i+2,o),n(t,e,r+3,i+3,o)}}));function d(t){return function(n,e,r=e){if(!((e=+e)>=0))throw new RangeError("invalid rx");if(!((r=+r)>=0))throw new RangeError("invalid ry");let{data:i,width:o,height:a}=n;if(!((o=Math.floor(o))>=0))throw new RangeError("invalid width");if(!((a=Math.floor(void 0!==a?a:i.length/o))>=0))throw new RangeError("invalid height");if(!o||!a||!e&&!r)return n;const u=e&&t(e),c=r&&t(r),f=i.slice();return u&&c?(p(u,f,i,o,a),p(u,i,f,o,a),p(u,f,i,o,a),g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)):u?(p(u,i,f,o,a),p(u,f,i,o,a),p(u,i,f,o,a)):c&&(g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)),n}}function p(t,n,e,r,i){for(let o=0,a=r*i;o<a;)t(n,e,o,o+=r,1)}function g(t,n,e,r,i){for(let o=0,a=r*i;o<r;++o)t(n,e,o,o+a,r)}function y(t){const n=Math.floor(t);if(n===t)return function(t){const n=2*t+1;return(e,r,i,o,a)=>{if(!((o-=a)>=i))return;let u=t*r[i];const c=a*t;for(let t=i,n=i+c;t<n;t+=a)u+=r[Math.min(o,t)];for(let t=i,f=o;t<=f;t+=a)u+=r[Math.min(o,t+c)],e[t]=u/n,u-=r[Math.max(i,t-c)]}}(t);const e=t-n,r=2*t+1;return(t,i,o,a,u)=>{if(!((a-=u)>=o))return;let c=n*i[o];const f=u*n,s=f+u;for(let t=o,n=o+f;t<n;t+=u)c+=i[Math.min(a,t)];for(let n=o,l=a;n<=l;n+=u)c+=i[Math.min(a,n+f)],t[n]=(c+e*(i[Math.max(o,n-s)]+i[Math.min(a,n+s)]))/r,c-=i[Math.max(o,n-f)]}}function v(t,n){let e=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&++e;else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(i=+i)>=i&&++e}return e}function _(t){return 0|t.length}function b(t){return!(t>0)}function m(t){return"object"!=typeof t||"length"in t?t:Array.from(t)}function x(t,n){let e,r=0,i=0,o=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(e=n-i,i+=e/++r,o+=e*(n-i));else{let a=-1;for(let u of t)null!=(u=n(u,++a,t))&&(u=+u)>=u&&(e=u-i,i+=e/++r,o+=e*(u-i))}if(r>1)return o/(r-1)}function w(t,n){const e=x(t,n);return e?Math.sqrt(e):e}function M(t,n){let e,r;if(void 0===n)for(const n of t)null!=n&&(void 0===e?n>=n&&(e=r=n):(e>n&&(e=n),r<n&&(r=n)));else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(void 0===e?o>=o&&(e=r=o):(e>o&&(e=o),r<o&&(r=o)))}return[e,r]}class T{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const n=this._partials;let e=0;for(let r=0;r<this._n&&r<32;r++){const i=n[r],o=t+i,a=Math.abs(t)<Math.abs(i)?t-(o-i):i-(o-t);a&&(n[e++]=a),t=o}return n[e]=t,this._n=e+1,this}valueOf(){const t=this._partials;let n,e,r,i=this._n,o=0;if(i>0){for(o=t[--i];i>0&&(n=o,e=t[--i],o=n+e,r=e-(o-n),!r););i>0&&(r<0&&t[i-1]<0||r>0&&t[i-1]>0)&&(e=2*r,n=o+e,e==n-o&&(o=n))}return o}}class InternMap extends Map{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const[n,e]of t)this.set(n,e)}get(t){return super.get(A(this,t))}has(t){return super.has(A(this,t))}set(t,n){return super.set(S(this,t),n)}delete(t){return super.delete(E(this,t))}}class InternSet extends Set{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const n of t)this.add(n)}has(t){return super.has(A(this,t))}add(t){return super.add(S(this,t))}delete(t){return super.delete(E(this,t))}}function A({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):e}function S({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):(t.set(r,e),e)}function E({_intern:t,_key:n},e){const r=n(e);return t.has(r)&&(e=t.get(r),t.delete(r)),e}function N(t){return null!==t&&"object"==typeof t?t.valueOf():t}function k(t){return t}function C(t,...n){return F(t,k,k,n)}function P(t,...n){return F(t,Array.from,k,n)}function z(t,n){for(let e=1,r=n.length;e<r;++e)t=t.flatMap((t=>t.pop().map((([n,e])=>[...t,n,e]))));return t}function $(t,n,...e){return F(t,k,n,e)}function D(t,n,...e){return F(t,Array.from,n,e)}function R(t){if(1!==t.length)throw new Error("duplicate key");return t[0]}function F(t,n,e,r){return function t(i,o){if(o>=r.length)return e(i);const a=new InternMap,u=r[o++];let c=-1;for(const t of i){const n=u(t,++c,i),e=a.get(n);e?e.push(t):a.set(n,[t])}for(const[n,e]of a)a.set(n,t(e,o));return n(a)}(t,0)}function q(t,n){return Array.from(n,(n=>t[n]))}function U(t,...n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");t=Array.from(t);let[e]=n;if(e&&2!==e.length||n.length>1){const r=Uint32Array.from(t,((t,n)=>n));return n.length>1?(n=n.map((n=>t.map(n))),r.sort(((t,e)=>{for(const r of n){const n=O(r[t],r[e]);if(n)return n}}))):(e=t.map(e),r.sort(((t,n)=>O(e[t],e[n])))),q(t,r)}return t.sort(I(e))}function I(t=n){if(t===n)return O;if("function"!=typeof t)throw new TypeError("compare is not a function");return(n,e)=>{const r=t(n,e);return r||0===r?r:(0===t(e,e))-(0===t(n,n))}}function O(t,n){return(null==t||!(t>=t))-(null==n||!(n>=n))||(t<n?-1:t>n?1:0)}var B=Array.prototype.slice;function Y(t){return()=>t}const L=Math.sqrt(50),j=Math.sqrt(10),H=Math.sqrt(2);function X(t,n,e){const r=(n-t)/Math.max(0,e),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),a=o>=L?10:o>=j?5:o>=H?2:1;let u,c,f;return i<0?(f=Math.pow(10,-i)/a,u=Math.round(t*f),c=Math.round(n*f),u/f<t&&++u,c/f>n&&--c,f=-f):(f=Math.pow(10,i)*a,u=Math.round(t/f),c=Math.round(n/f),u*f<t&&++u,c*f>n&&--c),c<u&&.5<=e&&e<2?X(t,n,2*e):[u,c,f]}function G(t,n,e){if(!((e=+e)>0))return[];if((t=+t)===(n=+n))return[t];const r=n<t,[i,o,a]=r?X(n,t,e):X(t,n,e);if(!(o>=i))return[];const u=o-i+1,c=new Array(u);if(r)if(a<0)for(let t=0;t<u;++t)c[t]=(o-t)/-a;else for(let t=0;t<u;++t)c[t]=(o-t)*a;else if(a<0)for(let t=0;t<u;++t)c[t]=(i+t)/-a;else for(let t=0;t<u;++t)c[t]=(i+t)*a;return c}function V(t,n,e){return X(t=+t,n=+n,e=+e)[2]}function W(t,n,e){e=+e;const r=(n=+n)<(t=+t),i=r?V(n,t,e):V(t,n,e);return(r?-1:1)*(i<0?1/-i:i)}function Z(t,n,e){let r;for(;;){const i=V(t,n,e);if(i===r||0===i||!isFinite(i))return[t,n];i>0?(t=Math.floor(t/i)*i,n=Math.ceil(n/i)*i):i<0&&(t=Math.ceil(t*i)/i,n=Math.floor(n*i)/i),r=i}}function K(t){return Math.max(1,Math.ceil(Math.log(v(t))/Math.LN2)+1)}function Q(){var t=k,n=M,e=K;function r(r){Array.isArray(r)||(r=Array.from(r));var i,o,a,u=r.length,c=new Array(u);for(i=0;i<u;++i)c[i]=t(r[i],i,r);var f=n(c),l=f[0],h=f[1],d=e(c,l,h);if(!Array.isArray(d)){const t=h,e=+d;if(n===M&&([l,h]=Z(l,h,e)),(d=G(l,h,e))[0]<=l&&(a=V(l,h,e)),d[d.length-1]>=h)if(t>=h&&n===M){const t=V(l,h,e);isFinite(t)&&(t>0?h=(Math.floor(h/t)+1)*t:t<0&&(h=(Math.ceil(h*-t)+1)/-t))}else d.pop()}for(var p=d.length,g=0,y=p;d[g]<=l;)++g;for(;d[y-1]>h;)--y;(g||y<p)&&(d=d.slice(g,y),p=y-g);var v,_=new Array(p+1);for(i=0;i<=p;++i)(v=_[i]=[]).x0=i>0?d[i-1]:l,v.x1=i<p?d[i]:h;if(isFinite(a)){if(a>0)for(i=0;i<u;++i)null!=(o=c[i])&&l<=o&&o<=h&&_[Math.min(p,Math.floor((o-l)/a))].push(r[i]);else if(a<0)for(i=0;i<u;++i)if(null!=(o=c[i])&&l<=o&&o<=h){const t=Math.floor((l-o)*a);_[Math.min(p,t+(d[t]<=o))].push(r[i])}}else for(i=0;i<u;++i)null!=(o=c[i])&&l<=o&&o<=h&&_[s(d,o,0,p)].push(r[i]);return _}return r.value=function(n){return arguments.length?(t="function"==typeof n?n:Y(n),r):t},r.domain=function(t){return arguments.length?(n="function"==typeof t?t:Y([t[0],t[1]]),r):n},r.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Y(Array.isArray(t)?B.call(t):t),r):e},r}function J(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e<n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e<i||void 0===e&&i>=i)&&(e=i)}return e}function tt(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e<n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e<o||void 0===e&&o>=o)&&(e=o,r=i);return r}function nt(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e>n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e>i||void 0===e&&i>=i)&&(e=i)}return e}function et(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e>n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e>o||void 0===e&&o>=o)&&(e=o,r=i);return r}function rt(t,n,e=0,r=1/0,i){if(n=Math.floor(n),e=Math.floor(Math.max(0,e)),r=Math.floor(Math.min(t.length-1,r)),!(e<=n&&n<=r))return t;for(i=void 0===i?O:I(i);r>e;){if(r-e>600){const o=r-e+1,a=n-e+1,u=Math.log(o),c=.5*Math.exp(2*u/3),f=.5*Math.sqrt(u*c*(o-c)/o)*(a-o/2<0?-1:1);rt(t,n,Math.max(e,Math.floor(n-a*c/o+f)),Math.min(r,Math.floor(n+(o-a)*c/o+f)),i)}const o=t[n];let a=e,u=r;for(it(t,e,n),i(t[r],o)>0&&it(t,e,r);a<u;){for(it(t,a,u),++a,--u;i(t[a],o)<0;)++a;for(;i(t[u],o)>0;)--u}0===i(t[e],o)?it(t,e,u):(++u,it(t,u,r)),u<=n&&(e=u+1),n<=u&&(r=u-1)}return t}function it(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function ot(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)>0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)>0:0===e(n,n))&&(r=n,i=!0);return r}function at(t,n,e){if(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}(t,e)),(r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return nt(t);if(n>=1)return J(t);var r,i=(r-1)*n,o=Math.floor(i),a=J(rt(t,o).subarray(0,o+1));return a+(nt(t.subarray(o+1))-a)*(i-o)}}function ut(t,n,e=o){if((r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,a=Math.floor(i),u=+e(t[a],a,t);return u+(+e(t[a+1],a+1,t)-u)*(i-a)}}function ct(t,n,e=o){if(!isNaN(n=+n)){if(r=Float64Array.from(t,((n,r)=>o(e(t[r],r,t)))),n<=0)return et(r);if(n>=1)return tt(r);var r,i=Uint32Array.from(t,((t,n)=>n)),a=r.length-1,u=Math.floor(a*n);return rt(i,u,0,a,((t,n)=>O(r[t],r[n]))),(u=ot(i.subarray(0,u+1),(t=>r[t])))>=0?u:-1}}function ft(t){return Array.from(function*(t){for(const n of t)yield*n}(t))}function st(t,n){return[t,n]}function lt(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o}function ht(t,e=n){if(1===e.length)return et(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)<0)&&(r=n,i=o);return i}var dt=pt(Math.random);function pt(t){return function(n,e=0,r=n.length){let i=r-(e=+e);for(;i;){const r=t()*i--|0,o=n[i+e];n[i+e]=n[r+e],n[r+e]=o}return n}}function gt(t){if(!(i=t.length))return[];for(var n=-1,e=nt(t,yt),r=new Array(e);++n<e;)for(var i,o=-1,a=r[n]=new Array(i);++o<i;)a[o]=t[o][n];return r}function yt(t){return t.length}function vt(t){return t instanceof InternSet?t:new InternSet(t)}function _t(t,n){const e=t[Symbol.iterator](),r=new Set;for(const t of n){const n=bt(t);if(r.has(n))continue;let i,o;for(;({value:i,done:o}=e.next());){if(o)return!1;const t=bt(i);if(r.add(t),Object.is(n,t))break}}return!0}function bt(t){return null!==t&&"object"==typeof t?t.valueOf():t}function mt(t){return t}var xt=1,wt=2,Mt=3,Tt=4,At=1e-6;function St(t){return"translate("+t+",0)"}function Et(t){return"translate(0,"+t+")"}function Nt(t){return n=>+t(n)}function kt(t,n){return n=Math.max(0,t.bandwidth()-2*n)/2,t.round()&&(n=Math.round(n)),e=>+t(e)+n}function Ct(){return!this.__axis}function Pt(t,n){var e=[],r=null,i=null,o=6,a=6,u=3,c="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,f=t===xt||t===Tt?-1:1,s=t===Tt||t===wt?"x":"y",l=t===xt||t===Mt?St:Et;function h(h){var d=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,p=null==i?n.tickFormat?n.tickFormat.apply(n,e):mt:i,g=Math.max(o,0)+u,y=n.range(),v=+y[0]+c,_=+y[y.length-1]+c,b=(n.bandwidth?kt:Nt)(n.copy(),c),m=h.selection?h.selection():h,x=m.selectAll(".domain").data([null]),w=m.selectAll(".tick").data(d,n).order(),M=w.exit(),T=w.enter().append("g").attr("class","tick"),A=w.select("line"),S=w.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(T),A=A.merge(T.append("line").attr("stroke","currentColor").attr(s+"2",f*o)),S=S.merge(T.append("text").attr("fill","currentColor").attr(s,f*g).attr("dy",t===xt?"0em":t===Mt?"0.71em":"0.32em")),h!==m&&(x=x.transition(h),w=w.transition(h),A=A.transition(h),S=S.transition(h),M=M.transition(h).attr("opacity",At).attr("transform",(function(t){return isFinite(t=b(t))?l(t+c):this.getAttribute("transform")})),T.attr("opacity",At).attr("transform",(function(t){var n=this.parentNode.__axis;return l((n&&isFinite(n=n(t))?n:b(t))+c)}))),M.remove(),x.attr("d",t===Tt||t===wt?a?"M"+f*a+","+v+"H"+c+"V"+_+"H"+f*a:"M"+c+","+v+"V"+_:a?"M"+v+","+f*a+"V"+c+"H"+_+"V"+f*a:"M"+v+","+c+"H"+_),w.attr("opacity",1).attr("transform",(function(t){return l(b(t)+c)})),A.attr(s+"2",f*o),S.attr(s,f*g).text(p),m.filter(Ct).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===wt?"start":t===Tt?"end":"middle"),m.each((function(){this.__axis=b}))}return h.scale=function(t){return arguments.length?(n=t,h):n},h.ticks=function(){return e=Array.from(arguments),h},h.tickArguments=function(t){return arguments.length?(e=null==t?[]:Array.from(t),h):e.slice()},h.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),h):r&&r.slice()},h.tickFormat=function(t){return arguments.length?(i=t,h):i},h.tickSize=function(t){return arguments.length?(o=a=+t,h):o},h.tickSizeInner=function(t){return arguments.length?(o=+t,h):o},h.tickSizeOuter=function(t){return arguments.length?(a=+t,h):a},h.tickPadding=function(t){return arguments.length?(u=+t,h):u},h.offset=function(t){return arguments.length?(c=+t,h):c},h}var zt={value:()=>{}};function $t(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new Dt(r)}function Dt(t){this._=t}function Rt(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function Ft(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=zt,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}Dt.prototype=$t.prototype={constructor:Dt,on:function(t,n){var e,r,i=this._,o=(r=i,(t+"").trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");if(e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))),a=-1,u=o.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++a<u;)if(e=(t=o[a]).type)i[e]=Ft(i[e],t.name,n);else if(null==n)for(e in i)i[e]=Ft(i[e],t.name,null);return this}for(;++a<u;)if((e=(t=o[a]).type)&&(e=Rt(i[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new Dt(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 qt="http://www.w3.org/1999/xhtml",Ut={svg:"http://www.w3.org/2000/svg",xhtml:qt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function It(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Ut.hasOwnProperty(n)?{space:Ut[n],local:t}:t}function Ot(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===qt&&n.documentElement.namespaceURI===qt?n.createElement(t):n.createElementNS(e,t)}}function Bt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Yt(t){var n=It(t);return(n.local?Bt:Ot)(n)}function Lt(){}function jt(t){return null==t?Lt:function(){return this.querySelector(t)}}function Ht(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function Xt(){return[]}function Gt(t){return null==t?Xt:function(){return this.querySelectorAll(t)}}function Vt(t){return function(){return this.matches(t)}}function Wt(t){return function(n){return n.matches(t)}}var Zt=Array.prototype.find;function Kt(){return this.firstElementChild}var Qt=Array.prototype.filter;function Jt(){return Array.from(this.children)}function tn(t){return new Array(t.length)}function nn(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function en(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;u<f;++u)(a=n[u])?(a.__data__=o[u],r[u]=a):e[u]=new nn(t,o[u]);for(;u<c;++u)(a=n[u])&&(i[u]=a)}function rn(t,n,e,r,i,o,a){var u,c,f,s=new Map,l=n.length,h=o.length,d=new Array(l);for(u=0;u<l;++u)(c=n[u])&&(d[u]=f=a.call(c,c.__data__,u,n)+"",s.has(f)?i[u]=c:s.set(f,c));for(u=0;u<h;++u)f=a.call(t,o[u],u,o)+"",(c=s.get(f))?(r[u]=c,c.__data__=o[u],s.delete(f)):e[u]=new nn(t,o[u]);for(u=0;u<l;++u)(c=n[u])&&s.get(d[u])===c&&(i[u]=c)}function on(t){return t.__data__}function an(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function un(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function cn(t){return function(){this.removeAttribute(t)}}function fn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function sn(t,n){return function(){this.setAttribute(t,n)}}function ln(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function hn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function dn(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 pn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function gn(t){return function(){this.style.removeProperty(t)}}function yn(t,n,e){return function(){this.style.setProperty(t,n,e)}}function vn(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function _n(t,n){return t.style.getPropertyValue(n)||pn(t).getComputedStyle(t,null).getPropertyValue(n)}function bn(t){return function(){delete this[t]}}function mn(t,n){return function(){this[t]=n}}function xn(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function wn(t){return t.trim().split(/^|\s+/)}function Mn(t){return t.classList||new Tn(t)}function Tn(t){this._node=t,this._names=wn(t.getAttribute("class")||"")}function An(t,n){for(var e=Mn(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function Sn(t,n){for(var e=Mn(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function En(t){return function(){An(this,t)}}function Nn(t){return function(){Sn(this,t)}}function kn(t,n){return function(){(n.apply(this,arguments)?An:Sn)(this,t)}}function Cn(){this.textContent=""}function Pn(t){return function(){this.textContent=t}}function zn(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function $n(){this.innerHTML=""}function Dn(t){return function(){this.innerHTML=t}}function Rn(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function Fn(){this.nextSibling&&this.parentNode.appendChild(this)}function qn(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Un(){return null}function In(){var t=this.parentNode;t&&t.removeChild(this)}function On(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Bn(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Yn(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function Ln(t,n,e){return function(){var r,i=this.__on,o=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var a=0,u=i.length;a<u;++a)if((r=i[a]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),void(r.value=n);this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}function jn(t,n,e){var r=pn(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function Hn(t,n){return function(){return jn(this,t,n)}}function Xn(t,n){return function(){return jn(this,t,n.apply(this,arguments))}}nn.prototype={constructor:nn,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)}},Tn.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 Gn=[null];function Vn(t,n){this._groups=t,this._parents=n}function Wn(){return new Vn([[document.documentElement]],Gn)}function Zn(t){return"string"==typeof t?new Vn([[document.querySelector(t)]],[document.documentElement]):new Vn([[t]],Gn)}Vn.prototype=Wn.prototype={constructor:Vn,select:function(t){"function"!=typeof t&&(t=jt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a,u=n[i],c=u.length,f=r[i]=new Array(c),s=0;s<c;++s)(o=u[s])&&(a=t.call(o,o.__data__,s,u))&&("__data__"in o&&(a.__data__=o.__data__),f[s]=a);return new Vn(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return Ht(t.apply(this,arguments))}}(t):Gt(t);for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var a,u=n[o],c=u.length,f=0;f<c;++f)(a=u[f])&&(r.push(t.call(a,a.__data__,f,u)),i.push(a));return new Vn(r,i)},selectChild:function(t){return this.select(null==t?Kt:function(t){return function(){return Zt.call(this.children,t)}}("function"==typeof t?t:Wt(t)))},selectChildren:function(t){return this.selectAll(null==t?Jt:function(t){return function(){return Qt.call(this.children,t)}}("function"==typeof t?t:Wt(t)))},filter:function(t){"function"!=typeof t&&(t=Vt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Vn(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,on);var e=n?rn:en,r=this._parents,i=this._groups;"function"!=typeof t&&(t=function(t){return function(){return t}}(t));for(var o=i.length,a=new Array(o),u=new Array(o),c=new Array(o),f=0;f<o;++f){var s=r[f],l=i[f],h=l.length,d=an(t.call(s,s&&s.__data__,f,r)),p=d.length,g=u[f]=new Array(p),y=a[f]=new Array(p);e(s,l,g,y,c[f]=new Array(h),d,n);for(var v,_,b=0,m=0;b<p;++b)if(v=g[b]){for(b>=m&&(m=b+1);!(_=y[m])&&++m<p;);v._next=_||null}}return(a=new Vn(a,r))._enter=u,a._exit=c,a},enter:function(){return new Vn(this._enter||this._groups.map(tn),this._parents)},exit:function(){return new Vn(this._exit||this._groups.map(tn),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,a=Math.min(i,o),u=new Array(i),c=0;c<a;++c)for(var f,s=e[c],l=r[c],h=s.length,d=u[c]=new Array(h),p=0;p<h;++p)(f=s[p]||l[p])&&(d[p]=f);for(;c<i;++c)u[c]=e[c];return new Vn(u,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=un);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var a,u=e[o],c=u.length,f=i[o]=new Array(c),s=0;s<c;++s)(a=u[s])&&(f[s]=a);f.sort(n)}return new Vn(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},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 a=r[i];if(a)return a}return null},size:function(){let t=0;for(const n of this)++t;return 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],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,n){var e=It(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?fn:cn:"function"==typeof n?e.local?dn:hn:e.local?ln:sn)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?gn:"function"==typeof n?vn:yn)(t,n,null==e?"":e)):_n(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?bn:"function"==typeof n?xn:mn)(t,n)):this.node()[t]},classed:function(t,n){var e=wn(t+"");if(arguments.length<2){for(var r=Mn(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?kn:n?En:Nn)(e,n))},text:function(t){return arguments.length?this.each(null==t?Cn:("function"==typeof t?zn:Pn)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?$n:("function"==typeof t?Rn:Dn)(t)):this.node().innerHTML},raise:function(){return this.each(Fn)},lower:function(){return this.each(qn)},append:function(t){var n="function"==typeof t?t:Yt(t);return this.select((function(){return this.appendChild(n.apply(this,arguments))}))},insert:function(t,n){var e="function"==typeof t?t:Yt(t),r=null==n?Un:"function"==typeof n?n:jt(n);return this.select((function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(In)},clone:function(t){return this.select(t?Bn:On)},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+""),a=o.length;if(!(arguments.length<2)){for(u=n?Ln:Yn,r=0;r<a;++r)this.each(u(o[r],n,e));return this}var u=this.node().__on;if(u)for(var c,f=0,s=u.length;f<s;++f)for(r=0,c=u[f];r<a;++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?Xn:Hn)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,a=i.length;o<a;++o)(r=i[o])&&(yield r)}};var Kn=0;function Qn(){return new Jn}function Jn(){this._="@"+(++Kn).toString(36)}function te(t){let n;for(;n=t.sourceEvent;)t=n;return t}function ne(t,n){if(t=te(t),void 0===n&&(n=t.currentTarget),n){var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,[(r=r.matrixTransform(n.getScreenCTM().inverse())).x,r.y]}if(n.getBoundingClientRect){var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}}return[t.pageX,t.pageY]}Jn.prototype=Qn.prototype={constructor:Jn,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._}};const ee={passive:!1},re={capture:!0,passive:!1};function ie(t){t.stopImmediatePropagation()}function oe(t){t.preventDefault(),t.stopImmediatePropagation()}function ae(t){var n=t.document.documentElement,e=Zn(t).on("dragstart.drag",oe,re);"onselectstart"in n?e.on("selectstart.drag",oe,re):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function ue(t,n){var e=t.document.documentElement,r=Zn(t).on("dragstart.drag",null);n&&(r.on("click.drag",oe,re),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}var ce=t=>()=>t;function fe(t,{sourceEvent:n,subject:e,target:r,identifier:i,active:o,x:a,y:u,dx:c,dy:f,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:u,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:f,enumerable:!0,configurable:!0},_:{value:s}})}function se(t){return!t.ctrlKey&&!t.button}function le(){return this.parentNode}function he(t,n){return null==n?{x:t.x,y:t.y}:n}function de(){return navigator.maxTouchPoints||"ontouchstart"in this}function pe(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function ge(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function ye(){}fe.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var ve=.7,_e=1/ve,be="\\s*([+-]?\\d+)\\s*",me="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",xe="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",we=/^#([0-9a-f]{3,8})$/,Me=new RegExp(`^rgb\\(${be},${be},${be}\\)$`),Te=new RegExp(`^rgb\\(${xe},${xe},${xe}\\)$`),Ae=new RegExp(`^rgba\\(${be},${be},${be},${me}\\)$`),Se=new RegExp(`^rgba\\(${xe},${xe},${xe},${me}\\)$`),Ee=new RegExp(`^hsl\\(${me},${xe},${xe}\\)$`),Ne=new RegExp(`^hsla\\(${me},${xe},${xe},${me}\\)$`),ke={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};function Ce(){return this.rgb().formatHex()}function Pe(){return this.rgb().formatRgb()}function ze(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=we.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?$e(n):3===e?new qe(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?De(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?De(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=Me.exec(t))?new qe(n[1],n[2],n[3],1):(n=Te.exec(t))?new qe(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Ae.exec(t))?De(n[1],n[2],n[3],n[4]):(n=Se.exec(t))?De(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Ee.exec(t))?Le(n[1],n[2]/100,n[3]/100,1):(n=Ne.exec(t))?Le(n[1],n[2]/100,n[3]/100,n[4]):ke.hasOwnProperty(t)?$e(ke[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function $e(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function De(t,n,e,r){return r<=0&&(t=n=e=NaN),new qe(t,n,e,r)}function Re(t){return t instanceof ye||(t=ze(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function Fe(t,n,e,r){return 1===arguments.length?Re(t):new qe(t,n,e,null==r?1:r)}function qe(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Ue(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function Ie(){const t=Oe(this.opacity);return`${1===t?"rgb(":"rgba("}${Be(this.r)}, ${Be(this.g)}, ${Be(this.b)}${1===t?")":`, ${t})`}`}function Oe(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Be(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ye(t){return((t=Be(t))<16?"0":"")+t.toString(16)}function Le(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Xe(t,n,e,r)}function je(t){if(t instanceof Xe)return new Xe(t.h,t.s,t.l,t.opacity);if(t instanceof ye||(t=ze(t)),!t)return new Xe;if(t instanceof Xe)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e<r):e===o?(r-n)/u+2:(n-e)/u+4,u/=c<.5?o+i:2-o-i,a*=60):u=c>0&&c<1?0:a,new Xe(a,u,c,t.opacity)}function He(t,n,e,r){return 1===arguments.length?je(t):new Xe(t,n,e,null==r?1:r)}function Xe(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Ge(t){return(t=(t||0)%360)<0?t+360:t}function Ve(t){return Math.max(0,Math.min(1,t||0))}function We(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}pe(ye,ze,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ce,formatHex:Ce,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return je(this).formatHsl()},formatRgb:Pe,toString:Pe}),pe(qe,Fe,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new qe(Be(this.r),Be(this.g),Be(this.b),Oe(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ue,formatHex:Ue,formatHex8:function(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Ie,toString:Ie})),pe(Xe,He,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Xe(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new Xe(this.h,this.s,this.l*t,this.opacity)},rgb(){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 qe(We(t>=240?t-240:t+120,i,r),We(t,i,r),We(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Xe(Ge(this.h),Ve(this.s),Ve(this.l),Oe(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Oe(this.opacity);return`${1===t?"hsl(":"hsla("}${Ge(this.h)}, ${100*Ve(this.s)}%, ${100*Ve(this.l)}%${1===t?")":`, ${t})`}`}}));const Ze=Math.PI/180,Ke=180/Math.PI,Qe=.96422,Je=1,tr=.82521,nr=4/29,er=6/29,rr=3*er*er,ir=er*er*er;function or(t){if(t instanceof ur)return new ur(t.l,t.a,t.b,t.opacity);if(t instanceof pr)return gr(t);t instanceof qe||(t=Re(t));var n,e,r=lr(t.r),i=lr(t.g),o=lr(t.b),a=cr((.2225045*r+.7168786*i+.0606169*o)/Je);return r===i&&i===o?n=e=a:(n=cr((.4360747*r+.3850649*i+.1430804*o)/Qe),e=cr((.0139322*r+.0971045*i+.7141733*o)/tr)),new ur(116*a-16,500*(n-a),200*(a-e),t.opacity)}function ar(t,n,e,r){return 1===arguments.length?or(t):new ur(t,n,e,null==r?1:r)}function ur(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function cr(t){return t>ir?Math.pow(t,1/3):t/rr+nr}function fr(t){return t>er?t*t*t:rr*(t-nr)}function sr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function lr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function hr(t){if(t instanceof pr)return new pr(t.h,t.c,t.l,t.opacity);if(t instanceof ur||(t=or(t)),0===t.a&&0===t.b)return new pr(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*Ke;return new pr(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function dr(t,n,e,r){return 1===arguments.length?hr(t):new pr(t,n,e,null==r?1:r)}function pr(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function gr(t){if(isNaN(t.h))return new ur(t.l,0,0,t.opacity);var n=t.h*Ze;return new ur(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}pe(ur,ar,ge(ye,{brighter(t){return new ur(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker(t){return new ur(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb(){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 new qe(sr(3.1338561*(n=Qe*fr(n))-1.6168667*(t=Je*fr(t))-.4906146*(e=tr*fr(e))),sr(-.9787684*n+1.9161415*t+.033454*e),sr(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),pe(pr,dr,ge(ye,{brighter(t){return new pr(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker(t){return new pr(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb(){return gr(this).rgb()}}));var yr=-.14861,vr=1.78277,_r=-.29227,br=-.90649,mr=1.97294,xr=mr*br,wr=mr*vr,Mr=vr*_r-br*yr;function Tr(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Ar)return new Ar(t.h,t.s,t.l,t.opacity);t instanceof qe||(t=Re(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Mr*r+xr*n-wr*e)/(Mr+xr-wr),o=r-i,a=(mr*(e-i)-_r*o)/br,u=Math.sqrt(a*a+o*o)/(mr*i*(1-i)),c=u?Math.atan2(a,o)*Ke-120:NaN;return new Ar(c<0?c+360:c,u,i,t.opacity)}(t):new Ar(t,n,e,null==r?1:r)}function Ar(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Sr(t,n,e,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*n+(4-6*o+3*a)*e+(1+3*t+3*o-3*a)*r+a*i)/6}function Er(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r<n-1?t[r+2]:2*o-i;return Sr((e-r/n)*n,a,i,o,u)}}function Nr(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],a=t[(r+1)%n],u=t[(r+2)%n];return Sr((e-r/n)*n,i,o,a,u)}}pe(Ar,Tr,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Ar(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new Ar(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Ze,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new qe(255*(n+e*(yr*r+vr*i)),255*(n+e*(_r*r+br*i)),255*(n+e*(mr*r)),this.opacity)}}));var kr=t=>()=>t;function Cr(t,n){return function(e){return t+e*n}}function Pr(t,n){var e=n-t;return e?Cr(t,e>180||e<-180?e-360*Math.round(e/360):e):kr(isNaN(t)?n:t)}function zr(t){return 1==(t=+t)?$r:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):kr(isNaN(n)?e:n)}}function $r(t,n){var e=n-t;return e?Cr(t,e):kr(isNaN(t)?n:t)}var Dr=function t(n){var e=zr(n);function r(t,n){var r=e((t=Fe(t)).r,(n=Fe(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=$r(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function Rr(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;e<i;++e)r=Fe(n[e]),o[e]=r.r||0,a[e]=r.g||0,u[e]=r.b||0;return o=t(o),a=t(a),u=t(u),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=u(t),r+""}}}var Fr=Rr(Er),qr=Rr(Nr);function Ur(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;e<r;++e)i[e]=t[e]*(1-o)+n[e]*o;return i}}function Ir(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Or(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),a=new Array(r);for(e=0;e<i;++e)o[e]=Gr(t[e],n[e]);for(;e<r;++e)a[e]=n[e];return function(t){for(e=0;e<i;++e)a[e]=o[e](t);return a}}function Br(t,n){var e=new Date;return t=+t,n=+n,function(r){return e.setTime(t*(1-r)+n*r),e}}function Yr(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function Lr(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=Gr(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var jr=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Hr=new RegExp(jr.source,"g");function Xr(t,n){var e,r,i,o=jr.lastIndex=Hr.lastIndex=0,a=-1,u=[],c=[];for(t+="",n+="";(e=jr.exec(t))&&(r=Hr.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:Yr(e,r)})),o=Hr.lastIndex;return o<n.length&&(i=n.slice(o),u[a]?u[a]+=i:u[++a]=i),u.length<2?c[0]?function(t){return function(n){return t(n)+""}}(c[0].x):function(t){return function(){return t}}(n):(n=c.length,function(t){for(var e,r=0;r<n;++r)u[(e=c[r]).i]=e.x(t);return u.join("")})}function Gr(t,n){var e,r=typeof n;return null==n||"boolean"===r?kr(n):("number"===r?Yr:"string"===r?(e=ze(n))?(n=e,Dr):Xr:n instanceof ze?Dr:n instanceof Date?Br:Ir(n)?Ur:Array.isArray(n)?Or:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?Lr:Yr)(t,n)}function Vr(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}var Wr,Zr=180/Math.PI,Kr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Qr(t,n,e,r,i,o){var a,u,c;return(a=Math.sqrt(t*t+n*n))&&(t/=a,n/=a),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(u=Math.sqrt(e*e+r*r))&&(e/=u,r/=u,c/=u),t*r<n*e&&(t=-t,n=-n,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Zr,skewX:Math.atan(c)*Zr,scaleX:a,scaleY:u}}function Jr(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var u=[],c=[];return o=t(o),a=t(a),function(t,r,i,o,a,u){if(t!==i||r!==o){var c=a.push("translate(",null,n,null,e);u.push({i:c-4,x:Yr(t,i)},{i:c-2,x:Yr(r,o)})}else(i||o)&&a.push("translate("+i+n+o+e)}(o.translateX,o.translateY,a.translateX,a.translateY,u,c),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Yr(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Yr(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:Yr(t,e)},{i:u-2,x:Yr(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e<r;)u[(n=c[e]).i]=n.x(t);return u.join("")}}}var ti=Jr((function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Kr:Qr(n.a,n.b,n.c,n.d,n.e,n.f)}),"px, ","px)","deg)"),ni=Jr((function(t){return null==t?Kr:(Wr||(Wr=document.createElementNS("http://www.w3.org/2000/svg","g")),Wr.setAttribute("transform",t),(t=Wr.transform.baseVal.consolidate())?Qr((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Kr)}),", ",")",")");function ei(t){return((t=Math.exp(t))+1/t)/2}var ri=function t(n,e,r){function i(t,i){var o,a,u=t[0],c=t[1],f=t[2],s=i[0],l=i[1],h=i[2],d=s-u,p=l-c,g=d*d+p*p;if(g<1e-12)a=Math.log(h/f)/n,o=function(t){return[u+t*d,c+t*p,f*Math.exp(n*t*a)]};else{var y=Math.sqrt(g),v=(h*h-f*f+r*g)/(2*f*e*y),_=(h*h-f*f-r*g)/(2*h*e*y),b=Math.log(Math.sqrt(v*v+1)-v),m=Math.log(Math.sqrt(_*_+1)-_);a=(m-b)/n,o=function(t){var r=t*a,i=ei(b),o=f/(e*y)*(i*function(t){return((t=Math.exp(2*t))-1)/(t+1)}(n*r+b)-function(t){return((t=Math.exp(t))-1/t)/2}(b));return[u+o*d,c+o*p,f*i/ei(n*r+b)]}}return o.duration=1e3*a*n/Math.SQRT2,o}return i.rho=function(n){var e=Math.max(.001,+n),r=e*e;return t(e,r,r*r)},i}(Math.SQRT2,2,4);function ii(t){return function(n,e){var r=t((n=He(n)).h,(e=He(e)).h),i=$r(n.s,e.s),o=$r(n.l,e.l),a=$r(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var oi=ii(Pr),ai=ii($r);function ui(t){return function(n,e){var r=t((n=dr(n)).h,(e=dr(e)).h),i=$r(n.c,e.c),o=$r(n.l,e.l),a=$r(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var ci=ui(Pr),fi=ui($r);function si(t){return function n(e){function r(n,r){var i=t((n=Tr(n)).h,(r=Tr(r)).h),o=$r(n.s,r.s),a=$r(n.l,r.l),u=$r(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=o(t),n.l=a(Math.pow(t,e)),n.opacity=u(t),n+""}}return e=+e,r.gamma=n,r}(1)}var li=si(Pr),hi=si($r);function di(t,n){void 0===n&&(n=t,t=Gr);for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e<r;)o[e]=t(i,i=n[++e]);return function(t){var n=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return o[n](t-n)}}var pi,gi,yi=0,vi=0,_i=0,bi=1e3,mi=0,xi=0,wi=0,Mi="object"==typeof performance&&performance.now?performance:Date,Ti="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Ai(){return xi||(Ti(Si),xi=Mi.now()+wi)}function Si(){xi=0}function Ei(){this._call=this._time=this._next=null}function Ni(t,n,e){var r=new Ei;return r.restart(t,n,e),r}function ki(){Ai(),++yi;for(var t,n=pi;n;)(t=xi-n._time)>=0&&n._call.call(void 0,t),n=n._next;--yi}function Ci(){xi=(mi=Mi.now())+wi,yi=vi=0;try{ki()}finally{yi=0,function(){var t,n,e=pi,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:pi=n);gi=t,zi(r)}(),xi=0}}function Pi(){var t=Mi.now(),n=t-mi;n>bi&&(wi-=n,mi=t)}function zi(t){yi||(vi&&(vi=clearTimeout(vi)),t-xi>24?(t<1/0&&(vi=setTimeout(Ci,t-Mi.now()-wi)),_i&&(_i=clearInterval(_i))):(_i||(mi=Mi.now(),_i=setInterval(Pi,bi)),yi=1,Ti(Ci)))}function $i(t,n,e){var r=new Ei;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Ei.prototype=Ni.prototype={constructor:Ei,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Ai():+e)+(null==n?0:+n),this._next||gi===this||(gi?gi._next=this:pi=this,gi=this),this._call=t,this._time=e,zi()},stop:function(){this._call&&(this._call=null,this._time=1/0,zi())}};var Di=$t("start","end","cancel","interrupt"),Ri=[],Fi=0,qi=1,Ui=2,Ii=3,Oi=4,Bi=5,Yi=6;function Li(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=qi,e.timer.restart(a,e.delay,e.time),e.delay<=t&&a(t-e.delay)}function a(o){var f,s,l,h;if(e.state!==qi)return c();for(f in i)if((h=i[f]).name===e.name){if(h.state===Ii)return $i(a);h.state===Oi?(h.state=Yi,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+f<n&&(h.state=Yi,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[f])}if($i((function(){e.state===Ii&&(e.state=Oi,e.timer.restart(u,e.delay,e.time),u(o))})),e.state=Ui,e.on.call("start",t,t.__data__,e.index,e.group),e.state===Ui){for(e.state=Ii,r=new Array(l=e.tween.length),f=0,s=-1;f<l;++f)(h=e.tween[f].value.call(t,t.__data__,e.index,e.group))&&(r[++s]=h);r.length=s+1}}function u(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(c),e.state=Bi,1),o=-1,a=r.length;++o<a;)r[o].call(t,i);e.state===Bi&&(e.on.call("end",t,t.__data__,e.index,e.group),c())}function c(){for(var r in e.state=Yi,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=Ni(o,0,e.time)}(t,e,{name:n,index:r,group:i,on:Di,tween:Ri,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Fi})}function ji(t,n){var e=Xi(t,n);if(e.state>Fi)throw new Error("too late; already scheduled");return e}function Hi(t,n){var e=Xi(t,n);if(e.state>Ii)throw new Error("too late; already running");return e}function Xi(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Gi(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>Ui&&e.state<Bi,e.state=Yi,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}function Vi(t,n){var e,r;return function(){var i=Hi(this,t),o=i.tween;if(o!==e)for(var a=0,u=(r=e=o).length;a<u;++a)if(r[a].name===n){(r=r.slice()).splice(a,1);break}i.tween=r}}function Wi(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Hi(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var u={name:n,value:e},c=0,f=i.length;c<f;++c)if(i[c].name===n){i[c]=u;break}c===f&&i.push(u)}o.tween=i}}function Zi(t,n,e){var r=t._id;return t.each((function(){var t=Hi(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)})),function(t){return Xi(t,r).value[n]}}function Ki(t,n){var e;return("number"==typeof n?Yr:n instanceof ze?Dr:(e=ze(n))?(n=e,Dr):Xr)(t,n)}function Qi(t){return function(){this.removeAttribute(t)}}function Ji(t){return function(){this.removeAttributeNS(t.space,t.local)}}function to(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=n(r=a,e)}}function no(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=n(r=a,e)}}function eo(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttribute(t))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttribute(t)}}function ro(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttributeNS(t.space,t.local))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttributeNS(t.space,t.local)}}function io(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}(t,i)),e}return i._value=n,i}function oo(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}(t,i)),e}return i._value=n,i}function ao(t,n){return function(){ji(this,t).delay=+n.apply(this,arguments)}}function uo(t,n){return n=+n,function(){ji(this,t).delay=n}}function co(t,n){return function(){Hi(this,t).duration=+n.apply(this,arguments)}}function fo(t,n){return n=+n,function(){Hi(this,t).duration=n}}var so=Wn.prototype.constructor;function lo(t){return function(){this.style.removeProperty(t)}}var ho=0;function po(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function go(t){return Wn().transition(t)}function yo(){return++ho}var vo=Wn.prototype;po.prototype=go.prototype={constructor:po,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=jt(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;a<i;++a)for(var u,c,f=r[a],s=f.length,l=o[a]=new Array(s),h=0;h<s;++h)(u=f[h])&&(c=t.call(u,u.__data__,h,f))&&("__data__"in u&&(c.__data__=u.__data__),l[h]=c,Li(l[h],n,e,h,l,Xi(u,e)));return new po(o,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=Gt(t));for(var r=this._groups,i=r.length,o=[],a=[],u=0;u<i;++u)for(var c,f=r[u],s=f.length,l=0;l<s;++l)if(c=f[l]){for(var h,d=t.call(c,c.__data__,l,f),p=Xi(c,e),g=0,y=d.length;g<y;++g)(h=d[g])&&Li(h,n,e,g,d,p);o.push(d),a.push(c)}return new po(o,a,n,e)},selectChild:vo.selectChild,selectChildren:vo.selectChildren,filter:function(t){"function"!=typeof t&&(t=Vt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new po(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),a=new Array(r),u=0;u<o;++u)for(var c,f=n[u],s=e[u],l=f.length,h=a[u]=new Array(l),d=0;d<l;++d)(c=f[d]||s[d])&&(h[d]=c);for(;u<r;++u)a[u]=n[u];return new po(a,this._parents,this._name,this._id)},selection:function(){return new so(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=yo(),r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)if(a=u[f]){var s=Xi(a,n);Li(a,t,e,f,u,{time:s.time+s.delay+s.duration,delay:0,duration:s.duration,ease:s.ease})}return new po(r,this._parents,t,e)},call:vo.call,nodes:vo.nodes,node:vo.node,size:vo.size,empty:vo.empty,each:vo.each,on:function(t,n){var e=this._id;return arguments.length<2?Xi(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)?ji:Hi;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}(e,t,n))},attr:function(t,n){var e=It(t),r="transform"===e?ni:Ki;return this.attrTween(t,"function"==typeof n?(e.local?ro:eo)(e,r,Zi(this,"attr."+t,n)):null==n?(e.local?Ji:Qi)(e):(e.local?no:to)(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=It(t);return this.tween(e,(r.local?io:oo)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?ti:Ki;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=_n(this,t),a=(this.style.removeProperty(t),_n(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on("end.style."+t,lo(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=_n(this,t),u=e(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=_n(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,Zi(this,"style."+t,n))).each(function(t,n){var e,r,i,o,a="style."+n,u="end."+a;return function(){var c=Hi(this,t),f=c.on,s=null==c.value[a]?o||(o=lo(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var a=_n(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on("end.style."+t,null)},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){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}(t,o,e)),r}return o._value=n,o}(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}}(Zi(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){return function(n){this.textContent=t.call(this,n)}}(r)),n}return r._value=t,r}(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=Xi(this.node(),e).tween,o=0,a=i.length;o<a;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?Vi:Wi)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ao:uo)(n,t)):Xi(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?co:fo)(n,t)):Xi(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(){Hi(this,t).ease=n}}(n,t)):Xi(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;Hi(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise((function(o,a){var u={value:a},c={value:function(){0==--i&&o()}};e.each((function(){var e=Hi(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(u),n._.interrupt.push(u),n._.end.push(c)),e.on=n})),0===i&&o()}))},[Symbol.iterator]:vo[Symbol.iterator]};function _o(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function bo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var mo=function t(n){function e(t){return Math.pow(t,n)}return n=+n,e.exponent=t,e}(3),xo=function t(n){function e(t){return 1-Math.pow(1-t,n)}return n=+n,e.exponent=t,e}(3),wo=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),Mo=Math.PI,To=Mo/2;function Ao(t){return(1-Math.cos(Mo*t))/2}function So(t){return 1.0009775171065494*(Math.pow(2,-10*t)-.0009765625)}function Eo(t){return((t*=2)<=1?So(1-t):2-So(t-1))/2}function No(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var ko=4/11,Co=6/11,Po=8/11,zo=3/4,$o=9/11,Do=10/11,Ro=15/16,Fo=21/22,qo=63/64,Uo=1/ko/ko;function Io(t){return(t=+t)<ko?Uo*t*t:t<Po?Uo*(t-=Co)*t+zo:t<Do?Uo*(t-=$o)*t+Ro:Uo*(t-=Fo)*t+qo}var Oo=1.70158,Bo=function t(n){function e(t){return(t=+t)*t*(n*(t-1)+t)}return n=+n,e.overshoot=t,e}(Oo),Yo=function t(n){function e(t){return--t*t*((t+1)*n+t)+1}return n=+n,e.overshoot=t,e}(Oo),Lo=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}(Oo),jo=2*Math.PI,Ho=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return n*So(- --t)*Math.sin((r-t)/e)}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Xo=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return 1-n*So(t=+t)*Math.sin((t+r)/e)}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Go=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return((t=2*t-1)<0?n*So(-t)*Math.sin((r-t)/e):2-n*So(t)*Math.sin((r+t)/e))/2}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Vo={time:null,delay:0,duration:250,ease:bo};function Wo(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}Wn.prototype.interrupt=function(t){return this.each((function(){Gi(this,t)}))},Wn.prototype.transition=function(t){var n,e;t instanceof po?(n=t._id,t=t._name):(n=yo(),(e=Vo).time=Ai(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)(a=u[f])&&Li(a,t,n,f,u,e||Wo(a,n));return new po(r,this._parents,t,n)};var Zo=[null];var Ko=t=>()=>t;function Qo(t,{sourceEvent:n,target:e,selection:r,mode:i,dispatch:o}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:r,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:o}})}function Jo(t){t.preventDefault(),t.stopImmediatePropagation()}var ta={name:"drag"},na={name:"space"},ea={name:"handle"},ra={name:"center"};const{abs:ia,max:oa,min:aa}=Math;function ua(t){return[+t[0],+t[1]]}function ca(t){return[ua(t[0]),ua(t[1])]}var fa={name:"x",handles:["w","e"].map(va),input:function(t,n){return null==t?null:[[+t[0],n[0][1]],[+t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},sa={name:"y",handles:["n","s"].map(va),input:function(t,n){return null==t?null:[[n[0][0],+t[0]],[n[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},la={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(va),input:function(t){return null==t?null:ca(t)},output:function(t){return t}},ha={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"},da={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},pa={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},ga={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},ya={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function va(t){return{type:t}}function _a(t){return!t.ctrlKey&&!t.button}function ba(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function ma(){return navigator.maxTouchPoints||"ontouchstart"in this}function xa(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function wa(t){var n,e=ba,r=_a,i=ma,o=!0,a=$t("start","brush","end"),u=6;function c(n){var e=n.property("__brush",g).selectAll(".overlay").data([va("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",ha.overlay).merge(e).each((function(){var t=xa(this).extent;Zn(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),n.selectAll(".selection").data([va("selection")]).enter().append("rect").attr("class","selection").attr("cursor",ha.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=n.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return ha[t.type]})),n.each(f).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function f(){var t=Zn(this),n=xa(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?n[1][0]-u/2:n[0][0]-u/2})).attr("y",(function(t){return"s"===t.type[0]?n[1][1]-u/2:n[0][1]-u/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+u:u})).attr("height",(function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+u:u}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function s(t,n,e){var r=t.__brush.emitter;return!r||e&&r.clean?new l(t,n,e):r}function l(t,n,e){this.that=t,this.args=n,this.state=t.__brush,this.active=0,this.clean=e}function h(e){if((!n||e.touches)&&r.apply(this,arguments)){var i,a,u,c,l,h,d,p,g,y,v,_=this,b=e.target.__data__.type,m="selection"===(o&&e.metaKey?b="overlay":b)?ta:o&&e.altKey?ra:ea,x=t===sa?null:ga[b],w=t===fa?null:ya[b],M=xa(_),T=M.extent,A=M.selection,S=T[0][0],E=T[0][1],N=T[1][0],k=T[1][1],C=0,P=0,z=x&&w&&o&&e.shiftKey,$=Array.from(e.touches||[e],(t=>{const n=t.identifier;return(t=ne(t,_)).point0=t.slice(),t.identifier=n,t}));Gi(_);var D=s(_,arguments,!0).beforestart();if("overlay"===b){A&&(g=!0);const n=[$[0],$[1]||$[0]];M.selection=A=[[i=t===sa?S:aa(n[0][0],n[1][0]),u=t===fa?E:aa(n[0][1],n[1][1])],[l=t===sa?N:oa(n[0][0],n[1][0]),d=t===fa?k:oa(n[0][1],n[1][1])]],$.length>1&&I(e)}else i=A[0][0],u=A[0][1],l=A[1][0],d=A[1][1];a=i,c=u,h=l,p=d;var R=Zn(_).attr("pointer-events","none"),F=R.selectAll(".overlay").attr("cursor",ha[b]);if(e.touches)D.moved=U,D.ended=O;else{var q=Zn(e.view).on("mousemove.brush",U,!0).on("mouseup.brush",O,!0);o&&q.on("keydown.brush",(function(t){switch(t.keyCode){case 16:z=x&&w;break;case 18:m===ea&&(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra,I(t));break;case 32:m!==ea&&m!==ra||(x<0?l=h-C:x>0&&(i=a-C),w<0?d=p-P:w>0&&(u=c-P),m=na,F.attr("cursor",ha.selection),I(t));break;default:return}Jo(t)}),!0).on("keyup.brush",(function(t){switch(t.keyCode){case 16:z&&(y=v=z=!1,I(t));break;case 18:m===ra&&(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea,I(t));break;case 32:m===na&&(t.altKey?(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra):(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea),F.attr("cursor",ha[b]),I(t));break;default:return}Jo(t)}),!0),ae(e.view)}f.call(_),D.start(e,m.name)}function U(t){for(const n of t.changedTouches||[t])for(const t of $)t.identifier===n.identifier&&(t.cur=ne(n,_));if(z&&!y&&!v&&1===$.length){const t=$[0];ia(t.cur[0]-t[0])>ia(t.cur[1]-t[1])?v=!0:y=!0}for(const t of $)t.cur&&(t[0]=t.cur[0],t[1]=t.cur[1]);g=!0,Jo(t),I(t)}function I(t){const n=$[0],e=n.point0;var r;switch(C=n[0]-e[0],P=n[1]-e[1],m){case na:case ta:x&&(C=oa(S-i,aa(N-l,C)),a=i+C,h=l+C),w&&(P=oa(E-u,aa(k-d,P)),c=u+P,p=d+P);break;case ea:$[1]?(x&&(a=oa(S,aa(N,$[0][0])),h=oa(S,aa(N,$[1][0])),x=1),w&&(c=oa(E,aa(k,$[0][1])),p=oa(E,aa(k,$[1][1])),w=1)):(x<0?(C=oa(S-i,aa(N-i,C)),a=i+C,h=l):x>0&&(C=oa(S-l,aa(N-l,C)),a=i,h=l+C),w<0?(P=oa(E-u,aa(k-u,P)),c=u+P,p=d):w>0&&(P=oa(E-d,aa(k-d,P)),c=u,p=d+P));break;case ra:x&&(a=oa(S,aa(N,i-C*x)),h=oa(S,aa(N,l+C*x))),w&&(c=oa(E,aa(k,u-P*w)),p=oa(E,aa(k,d+P*w)))}h<a&&(x*=-1,r=i,i=l,l=r,r=a,a=h,h=r,b in da&&F.attr("cursor",ha[b=da[b]])),p<c&&(w*=-1,r=u,u=d,d=r,r=c,c=p,p=r,b in pa&&F.attr("cursor",ha[b=pa[b]])),M.selection&&(A=M.selection),y&&(a=A[0][0],h=A[1][0]),v&&(c=A[0][1],p=A[1][1]),A[0][0]===a&&A[0][1]===c&&A[1][0]===h&&A[1][1]===p||(M.selection=[[a,c],[h,p]],f.call(_),D.brush(t,m.name))}function O(t){if(function(t){t.stopImmediatePropagation()}(t),t.touches){if(t.touches.length)return;n&&clearTimeout(n),n=setTimeout((function(){n=null}),500)}else ue(t.view,g),q.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);R.attr("pointer-events","all"),F.attr("cursor",ha.overlay),M.selection&&(A=M.selection),function(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}(A)&&(M.selection=null,f.call(_)),D.end(t,m.name)}}function d(t){s(this,arguments).moved(t)}function p(t){s(this,arguments).ended(t)}function g(){var n=this.__brush||{selection:null};return n.extent=ca(e.apply(this,arguments)),n.dim=t,n}return c.move=function(n,e,r){n.tween?n.on("start.brush",(function(t){s(this,arguments).beforestart().start(t)})).on("interrupt.brush end.brush",(function(t){s(this,arguments).end(t)})).tween("brush",(function(){var n=this,r=n.__brush,i=s(n,arguments),o=r.selection,a=t.input("function"==typeof e?e.apply(this,arguments):e,r.extent),u=Gr(o,a);function c(t){r.selection=1===t&&null===a?null:u(t),f.call(n),i.brush()}return null!==o&&null!==a?c:c(1)})):n.each((function(){var n=this,i=arguments,o=n.__brush,a=t.input("function"==typeof e?e.apply(n,i):e,o.extent),u=s(n,i).beforestart();Gi(n),o.selection=null===a?null:a,f.call(n),u.start(r).brush(r).end(r)}))},c.clear=function(t,n){c.move(t,null,n)},l.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(t,n){return this.starting?(this.starting=!1,this.emit("start",t,n)):this.emit("brush",t),this},brush:function(t,n){return this.emit("brush",t,n),this},end:function(t,n){return 0==--this.active&&(delete this.state.emitter,this.emit("end",t,n)),this},emit:function(n,e,r){var i=Zn(this.that).datum();a.call(n,this.that,new Qo(n,{sourceEvent:e,target:c,selection:t.output(this.state.selection),mode:r,dispatch:a}),i)}},c.extent=function(t){return arguments.length?(e="function"==typeof t?t:Ko(ca(t)),c):e},c.filter=function(t){return arguments.length?(r="function"==typeof t?t:Ko(!!t),c):r},c.touchable=function(t){return arguments.length?(i="function"==typeof t?t:Ko(!!t),c):i},c.handleSize=function(t){return arguments.length?(u=+t,c):u},c.keyModifiers=function(t){return arguments.length?(o=!!t,c):o},c.on=function(){var t=a.on.apply(a,arguments);return t===a?c:t},c}var Ma=Math.abs,Ta=Math.cos,Aa=Math.sin,Sa=Math.PI,Ea=Sa/2,Na=2*Sa,ka=Math.max,Ca=1e-12;function Pa(t,n){return Array.from({length:n-t},((n,e)=>t+e))}function za(t,n){var e=0,r=null,i=null,o=null;function a(a){var u,c=a.length,f=new Array(c),s=Pa(0,c),l=new Array(c*c),h=new Array(c),d=0;a=Float64Array.from({length:c*c},n?(t,n)=>a[n%c][n/c|0]:(t,n)=>a[n/c|0][n%c]);for(let n=0;n<c;++n){let e=0;for(let r=0;r<c;++r)e+=a[n*c+r]+t*a[r*c+n];d+=f[n]=e}u=(d=ka(0,Na-e*c)/d)?e:Na/c;{let n=0;r&&s.sort(((t,n)=>r(f[t],f[n])));for(const e of s){const r=n;if(t){const t=Pa(1+~c,c).filter((t=>t<0?a[~t*c+e]:a[e*c+t]));i&&t.sort(((t,n)=>i(t<0?-a[~t*c+e]:a[e*c+t],n<0?-a[~n*c+e]:a[e*c+n])));for(const r of t)if(r<0){(l[~r*c+e]||(l[~r*c+e]={source:null,target:null})).target={index:e,startAngle:n,endAngle:n+=a[~r*c+e]*d,value:a[~r*c+e]}}else{(l[e*c+r]||(l[e*c+r]={source:null,target:null})).source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}else{const t=Pa(0,c).filter((t=>a[e*c+t]||a[t*c+e]));i&&t.sort(((t,n)=>i(a[e*c+t],a[e*c+n])));for(const r of t){let t;if(e<r?(t=l[e*c+r]||(l[e*c+r]={source:null,target:null}),t.source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}):(t=l[r*c+e]||(l[r*c+e]={source:null,target:null}),t.target={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]},e===r&&(t.source=t.target)),t.source&&t.target&&t.source.value<t.target.value){const n=t.source;t.source=t.target,t.target=n}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}n+=u}}return(l=Object.values(l)).groups=h,o?l.sort(o):l}return a.padAngle=function(t){return arguments.length?(e=ka(0,t),a):e},a.sortGroups=function(t){return arguments.length?(r=t,a):r},a.sortSubgroups=function(t){return arguments.length?(i=t,a):i},a.sortChords=function(t){return arguments.length?(null==t?o=null:(n=t,o=function(t,e){return n(t.source.value+t.target.value,e.source.value+e.target.value)})._=t,a):o&&o._;var n},a}const $a=Math.PI,Da=2*$a,Ra=1e-6,Fa=Da-Ra;function qa(t){this._+=t[0];for(let n=1,e=t.length;n<e;++n)this._+=arguments[n]+t[n]}let Ua=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?qa:function(t){let n=Math.floor(t);if(!(n>=0))throw new Error(`invalid digits: ${t}`);if(n>15)return qa;const e=10**n;return function(t){this._+=t[0];for(let n=1,r=t.length;n<r;++n)this._+=Math.round(arguments[n]*e)/e+t[n]}}(t)}moveTo(t,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,n){this._append`L${this._x1=+t},${this._y1=+n}`}quadraticCurveTo(t,n,e,r){this._append`Q${+t},${+n},${this._x1=+e},${this._y1=+r}`}bezierCurveTo(t,n,e,r,i,o){this._append`C${+t},${+n},${+e},${+r},${this._x1=+i},${this._y1=+o}`}arcTo(t,n,e,r,i){if(t=+t,n=+n,e=+e,r=+r,(i=+i)<0)throw new Error(`negative radius: ${i}`);let o=this._x1,a=this._y1,u=e-t,c=r-n,f=o-t,s=a-n,l=f*f+s*s;if(null===this._x1)this._append`M${this._x1=t},${this._y1=n}`;else if(l>Ra)if(Math.abs(s*u-c*f)>Ra&&i){let h=e-o,d=r-a,p=u*u+c*c,g=h*h+d*d,y=Math.sqrt(p),v=Math.sqrt(l),_=i*Math.tan(($a-Math.acos((p+l-g)/(2*y*v)))/2),b=_/v,m=_/y;Math.abs(b-1)>Ra&&this._append`L${t+b*f},${n+b*s}`,this._append`A${i},${i},0,0,${+(s*h>f*d)},${this._x1=t+m*u},${this._y1=n+m*c}`}else this._append`L${this._x1=t},${this._y1=n}`;else;}arc(t,n,e,r,i,o){if(t=+t,n=+n,o=!!o,(e=+e)<0)throw new Error(`negative radius: ${e}`);let a=e*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;null===this._x1?this._append`M${c},${f}`:(Math.abs(this._x1-c)>Ra||Math.abs(this._y1-f)>Ra)&&this._append`L${c},${f}`,e&&(l<0&&(l=l%Da+Da),l>Fa?this._append`A${e},${e},0,1,${s},${t-a},${n-u}A${e},${e},0,1,${s},${this._x1=c},${this._y1=f}`:l>Ra&&this._append`A${e},${e},0,${+(l>=$a)},${s},${this._x1=t+e*Math.cos(i)},${this._y1=n+e*Math.sin(i)}`)}rect(t,n,e,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${e=+e}v${+r}h${-e}Z`}toString(){return this._}};function Ia(){return new Ua}Ia.prototype=Ua.prototype;var Oa=Array.prototype.slice;function Ba(t){return function(){return t}}function Ya(t){return t.source}function La(t){return t.target}function ja(t){return t.radius}function Ha(t){return t.startAngle}function Xa(t){return t.endAngle}function Ga(){return 0}function Va(){return 10}function Wa(t){var n=Ya,e=La,r=ja,i=ja,o=Ha,a=Xa,u=Ga,c=null;function f(){var f,s=n.apply(this,arguments),l=e.apply(this,arguments),h=u.apply(this,arguments)/2,d=Oa.call(arguments),p=+r.apply(this,(d[0]=s,d)),g=o.apply(this,d)-Ea,y=a.apply(this,d)-Ea,v=+i.apply(this,(d[0]=l,d)),_=o.apply(this,d)-Ea,b=a.apply(this,d)-Ea;if(c||(c=f=Ia()),h>Ca&&(Ma(y-g)>2*h+Ca?y>g?(g+=h,y-=h):(g-=h,y+=h):g=y=(g+y)/2,Ma(b-_)>2*h+Ca?b>_?(_+=h,b-=h):(_-=h,b+=h):_=b=(_+b)/2),c.moveTo(p*Ta(g),p*Aa(g)),c.arc(0,0,p,g,y),g!==_||y!==b)if(t){var m=v-+t.apply(this,arguments),x=(_+b)/2;c.quadraticCurveTo(0,0,m*Ta(_),m*Aa(_)),c.lineTo(v*Ta(x),v*Aa(x)),c.lineTo(m*Ta(b),m*Aa(b))}else c.quadraticCurveTo(0,0,v*Ta(_),v*Aa(_)),c.arc(0,0,v,_,b);if(c.quadraticCurveTo(0,0,p*Ta(g),p*Aa(g)),c.closePath(),f)return c=null,f+""||null}return t&&(f.headRadius=function(n){return arguments.length?(t="function"==typeof n?n:Ba(+n),f):t}),f.radius=function(t){return arguments.length?(r=i="function"==typeof t?t:Ba(+t),f):r},f.sourceRadius=function(t){return arguments.length?(r="function"==typeof t?t:Ba(+t),f):r},f.targetRadius=function(t){return arguments.length?(i="function"==typeof t?t:Ba(+t),f):i},f.startAngle=function(t){return arguments.length?(o="function"==typeof t?t:Ba(+t),f):o},f.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:Ba(+t),f):a},f.padAngle=function(t){return arguments.length?(u="function"==typeof t?t:Ba(+t),f):u},f.source=function(t){return arguments.length?(n=t,f):n},f.target=function(t){return arguments.length?(e=t,f):e},f.context=function(t){return arguments.length?(c=null==t?null:t,f):c},f}var Za=Array.prototype.slice;function Ka(t,n){return t-n}var Qa=t=>()=>t;function Ja(t,n){for(var e,r=-1,i=n.length;++r<i;)if(e=tu(t,n[r]))return e;return 0}function tu(t,n){for(var e=n[0],r=n[1],i=-1,o=0,a=t.length,u=a-1;o<a;u=o++){var c=t[o],f=c[0],s=c[1],l=t[u],h=l[0],d=l[1];if(nu(c,l,n))return 0;s>r!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function nu(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function eu(){}var ru=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function iu(){var t=1,n=1,e=K,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(Ka);else{const e=M(t,ou);for(n=G(...Z(e[0],e[1],n),n);n[n.length-1]>=e[1];)n.pop();for(;n[1]<e[0];)n.shift()}return n.map((n=>o(t,n)))}function o(e,i){const o=null==i?NaN:+i;if(isNaN(o))throw new Error(`invalid value: ${i}`);var u=[],c=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=au(e[0],r),ru[f<<1].forEach(p);for(;++o<t-1;)c=f,f=au(e[o+1],r),ru[c|f<<1].forEach(p);ru[f<<0].forEach(p);for(;++u<n-1;){for(o=-1,f=au(e[u*t+t],r),s=au(e[u*t],r),ru[f<<1|s<<2].forEach(p);++o<t-1;)c=f,f=au(e[u*t+t+o+1],r),l=s,s=au(e[u*t+o+1],r),ru[c|f<<1|s<<2|l<<3].forEach(p);ru[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,ru[s<<2].forEach(p);for(;++o<t-1;)l=s,s=au(e[u*t+o+1],r),ru[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}ru[s<<3].forEach(p)}(e,o,(function(t){r(t,e,o),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n<e;)r+=t[n-1][1]*t[n][0]-t[n-1][0]*t[n][1];return r}(t)>0?u.push([t]):c.push(t)})),c.forEach((function(t){for(var n,e=0,r=u.length;e<r;++e)if(-1!==Ja((n=u[e])[0],t))return void n.push(t)})),{type:"MultiPolygon",value:i,coordinates:u}}function a(n){return 2*n[0]+n[1]*(t+1)*4}function u(e,r,i){e.forEach((function(e){var o=e[0],a=e[1],u=0|o,c=0|a,f=uu(r[c*t+u]);o>0&&o<t&&u===o&&(e[0]=cu(o,uu(r[c*t+u-1]),f,i)),a>0&&a<n&&c===a&&(e[1]=cu(a,uu(r[(c-1)*t+u]),f,i))}))}return i.contour=o,i.size=function(e){if(!arguments.length)return[t,n];var r=Math.floor(e[0]),o=Math.floor(e[1]);if(!(r>=0&&o>=0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:eu,i):r===u},i}function ou(t){return isFinite(t)?t:NaN}function au(t,n){return null!=t&&+t>=n}function uu(t){return null==t||isNaN(t=+t)?-1/0:t}function cu(t,n,e,r){const i=r-n,o=e-n,a=isFinite(i)||isFinite(o)?i/o:Math.sign(i)/Math.sign(o);return isNaN(a)?t:t+a-.5}function fu(t){return t[0]}function su(t){return t[1]}function lu(){return 1}const hu=134217729,du=33306690738754706e-32;function pu(t,n,e,r,i){let o,a,u,c,f=n[0],s=r[0],l=0,h=0;s>f==s>-f?(o=f,f=n[++l]):(o=s,s=r[++h]);let d=0;if(l<t&&h<e)for(s>f==s>-f?(a=f+o,u=o-(a-f),f=n[++l]):(a=s+o,u=o-(a-s),s=r[++h]),o=a,0!==u&&(i[d++]=u);l<t&&h<e;)s>f==s>-f?(a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l]):(a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h]),o=a,0!==u&&(i[d++]=u);for(;l<t;)a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l],o=a,0!==u&&(i[d++]=u);for(;h<e;)a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h],o=a,0!==u&&(i[d++]=u);return 0===o&&0!==d||(i[d++]=o),d}function gu(t){return new Float64Array(t)}const yu=22204460492503146e-32,vu=11093356479670487e-47,_u=gu(4),bu=gu(8),mu=gu(12),xu=gu(16),wu=gu(4);function Mu(t,n,e,r,i,o){const a=(n-o)*(e-i),u=(t-i)*(r-o),c=a-u,f=Math.abs(a+u);return Math.abs(c)>=33306690738754716e-32*f?c:-function(t,n,e,r,i,o,a){let u,c,f,s,l,h,d,p,g,y,v,_,b,m,x,w,M,T;const A=t-i,S=e-i,E=n-o,N=r-o;m=A*N,h=hu*A,d=h-(h-A),p=A-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=E*S,h=hu*E,d=h-(h-E),p=E-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,_u[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,_u[1]=b-(v+l)+(l-w),T=_+v,l=T-_,_u[2]=_-(T-l)+(v-l),_u[3]=T;let k=function(t,n){let e=n[0];for(let r=1;r<t;r++)e+=n[r];return e}(4,_u),C=yu*a;if(k>=C||-k>=C)return k;if(l=t-A,u=t-(A+l)+(l-i),l=e-S,f=e-(S+l)+(l-i),l=n-E,c=n-(E+l)+(l-o),l=r-N,s=r-(N+l)+(l-o),0===u&&0===c&&0===f&&0===s)return k;if(C=vu*a+du*Math.abs(k),k+=A*s+N*u-(E*f+S*c),k>=C||-k>=C)return k;m=u*N,h=hu*u,d=h-(h-u),p=u-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=c*S,h=hu*c,d=h-(h-c),p=c-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const P=pu(4,_u,4,wu,bu);m=A*s,h=hu*A,d=h-(h-A),p=A-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=E*f,h=hu*E,d=h-(h-E),p=E-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const z=pu(P,bu,4,wu,mu);m=u*s,h=hu*u,d=h-(h-u),p=u-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=c*f,h=hu*c,d=h-(h-c),p=c-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const $=pu(z,mu,4,wu,xu);return xu[$-1]}(t,n,e,r,i,o,f)}const Tu=Math.pow(2,-52),Au=new Uint32Array(512);class Su{static from(t,n=zu,e=$u){const r=t.length,i=new Float64Array(2*r);for(let o=0;o<r;o++){const r=t[o];i[2*o]=n(r),i[2*o+1]=e(r)}return new Su(i)}constructor(t){const n=t.length>>1;if(n>0&&"number"!=typeof t[0])throw new Error("Expected coords to contain numbers.");this.coords=t;const e=Math.max(2*n-5,0);this._triangles=new Uint32Array(3*e),this._halfedges=new Int32Array(3*e),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize).fill(-1),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}update(){const{coords:t,_hullPrev:n,_hullNext:e,_hullTri:r,_hullHash:i}=this,o=t.length>>1;let a=1/0,u=1/0,c=-1/0,f=-1/0;for(let n=0;n<o;n++){const e=t[2*n],r=t[2*n+1];e<a&&(a=e),r<u&&(u=r),e>c&&(c=e),r>f&&(f=r),this._ids[n]=n}const s=(a+c)/2,l=(u+f)/2;let h,d,p,g=1/0;for(let n=0;n<o;n++){const e=Eu(s,l,t[2*n],t[2*n+1]);e<g&&(h=n,g=e)}const y=t[2*h],v=t[2*h+1];g=1/0;for(let n=0;n<o;n++){if(n===h)continue;const e=Eu(y,v,t[2*n],t[2*n+1]);e<g&&e>0&&(d=n,g=e)}let _=t[2*d],b=t[2*d+1],m=1/0;for(let n=0;n<o;n++){if(n===h||n===d)continue;const e=ku(y,v,_,b,t[2*n],t[2*n+1]);e<m&&(p=n,m=e)}let x=t[2*p],w=t[2*p+1];if(m===1/0){for(let n=0;n<o;n++)this._dists[n]=t[2*n]-t[0]||t[2*n+1]-t[1];Cu(this._ids,this._dists,0,o-1);const n=new Uint32Array(o);let e=0;for(let t=0,r=-1/0;t<o;t++){const i=this._ids[t];this._dists[i]>r&&(n[e++]=i,r=this._dists[i])}return this.hull=n.subarray(0,e),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(Mu(y,v,_,b,x,w)<0){const t=d,n=_,e=b;d=p,_=x,b=w,p=t,x=n,w=e}const M=function(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c),d=t+(f*s-u*l)*h,p=n+(a*l-c*s)*h;return{x:d,y:p}}(y,v,_,b,x,w);this._cx=M.x,this._cy=M.y;for(let n=0;n<o;n++)this._dists[n]=Eu(t[2*n],t[2*n+1],M.x,M.y);Cu(this._ids,this._dists,0,o-1),this._hullStart=h;let T=3;e[h]=n[p]=d,e[d]=n[h]=p,e[p]=n[d]=h,r[h]=0,r[d]=1,r[p]=2,i.fill(-1),i[this._hashKey(y,v)]=h,i[this._hashKey(_,b)]=d,i[this._hashKey(x,w)]=p,this.trianglesLen=0,this._addTriangle(h,d,p,-1,-1,-1);for(let o,a,u=0;u<this._ids.length;u++){const c=this._ids[u],f=t[2*c],s=t[2*c+1];if(u>0&&Math.abs(f-o)<=Tu&&Math.abs(s-a)<=Tu)continue;if(o=f,a=s,c===h||c===d||c===p)continue;let l=0;for(let t=0,n=this._hashKey(f,s);t<this._hashSize&&(l=i[(n+t)%this._hashSize],-1===l||l===e[l]);t++);l=n[l];let g,y=l;for(;g=e[y],Mu(f,s,t[2*y],t[2*y+1],t[2*g],t[2*g+1])>=0;)if(y=g,y===l){y=-1;break}if(-1===y)continue;let v=this._addTriangle(y,c,e[y],-1,-1,r[y]);r[c]=this._legalize(v+2),r[y]=v,T++;let _=e[y];for(;g=e[_],Mu(f,s,t[2*_],t[2*_+1],t[2*g],t[2*g+1])<0;)v=this._addTriangle(_,c,g,r[c],-1,r[_]),r[c]=this._legalize(v+2),e[_]=_,T--,_=g;if(y===l)for(;g=n[y],Mu(f,s,t[2*g],t[2*g+1],t[2*y],t[2*y+1])<0;)v=this._addTriangle(g,c,y,-1,r[y],r[g]),this._legalize(v+2),r[g]=v,e[y]=y,T--,y=g;this._hullStart=n[c]=y,e[y]=n[_]=c,e[c]=_,i[this._hashKey(f,s)]=c,i[this._hashKey(t[2*y],t[2*y+1])]=y}this.hull=new Uint32Array(T);for(let t=0,n=this._hullStart;t<T;t++)this.hull[t]=n,n=e[n];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}_hashKey(t,n){return Math.floor(function(t,n){const e=t/(Math.abs(t)+Math.abs(n));return(n>0?3-e:1+e)/4}(t-this._cx,n-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:n,_halfedges:e,coords:r}=this;let i=0,o=0;for(;;){const a=e[t],u=t-t%3;if(o=u+(t+2)%3,-1===a){if(0===i)break;t=Au[--i];continue}const c=a-a%3,f=u+(t+1)%3,s=c+(a+2)%3,l=n[o],h=n[t],d=n[f],p=n[s];if(Nu(r[2*l],r[2*l+1],r[2*h],r[2*h+1],r[2*d],r[2*d+1],r[2*p],r[2*p+1])){n[t]=p,n[a]=l;const r=e[s];if(-1===r){let n=this._hullStart;do{if(this._hullTri[n]===s){this._hullTri[n]=t;break}n=this._hullPrev[n]}while(n!==this._hullStart)}this._link(t,r),this._link(a,e[o]),this._link(o,s);const u=c+(a+1)%3;i<Au.length&&(Au[i++]=u)}else{if(0===i)break;t=Au[--i]}}return o}_link(t,n){this._halfedges[t]=n,-1!==n&&(this._halfedges[n]=t)}_addTriangle(t,n,e,r,i,o){const a=this.trianglesLen;return this._triangles[a]=t,this._triangles[a+1]=n,this._triangles[a+2]=e,this._link(a,r),this._link(a+1,i),this._link(a+2,o),this.trianglesLen+=3,a}}function Eu(t,n,e,r){const i=t-e,o=n-r;return i*i+o*o}function Nu(t,n,e,r,i,o,a,u){const c=t-a,f=n-u,s=e-a,l=r-u,h=i-a,d=o-u,p=s*s+l*l,g=h*h+d*d;return c*(l*g-p*d)-f*(s*g-p*h)+(c*c+f*f)*(s*d-l*h)<0}function ku(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c),d=(f*s-u*l)*h,p=(a*l-c*s)*h;return d*d+p*p}function Cu(t,n,e,r){if(r-e<=20)for(let i=e+1;i<=r;i++){const r=t[i],o=n[r];let a=i-1;for(;a>=e&&n[t[a]]>o;)t[a+1]=t[a--];t[a+1]=r}else{let i=e+1,o=r;Pu(t,e+r>>1,i),n[t[e]]>n[t[r]]&&Pu(t,e,r),n[t[i]]>n[t[r]]&&Pu(t,i,r),n[t[e]]>n[t[i]]&&Pu(t,e,i);const a=t[i],u=n[a];for(;;){do{i++}while(n[t[i]]<u);do{o--}while(n[t[o]]>u);if(o<i)break;Pu(t,i,o)}t[e+1]=t[o],t[o]=a,r-i+1>=o-e?(Cu(t,n,i,r),Cu(t,n,e,o-1)):(Cu(t,n,e,o-1),Cu(t,n,i,r))}}function Pu(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function zu(t){return t[0]}function $u(t){return t[1]}const Du=1e-6;class Ru{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,n){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,n){this._+=`L${this._x1=+t},${this._y1=+n}`}arc(t,n,e){const r=(t=+t)+(e=+e),i=n=+n;if(e<0)throw new Error("negative radius");null===this._x1?this._+=`M${r},${i}`:(Math.abs(this._x1-r)>Du||Math.abs(this._y1-i)>Du)&&(this._+="L"+r+","+i),e&&(this._+=`A${e},${e},0,1,1,${t-e},${n}A${e},${e},0,1,1,${this._x1=r},${this._y1=i}`)}rect(t,n,e,r){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${+e}v${+r}h${-e}Z`}value(){return this._||null}}class Fu{constructor(){this._=[]}moveTo(t,n){this._.push([t,n])}closePath(){this._.push(this._[0].slice())}lineTo(t,n){this._.push([t,n])}value(){return this._.length?this._:null}}class qu{constructor(t,[n,e,r,i]=[0,0,960,500]){if(!((r=+r)>=(n=+n)&&(i=+i)>=(e=+e)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(2*t.points.length),this.vectors=new Float64Array(2*t.points.length),this.xmax=r,this.xmin=n,this.ymax=i,this.ymin=e,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:n,triangles:e},vectors:r}=this;let i,o;const a=this.circumcenters=this._circumcenters.subarray(0,e.length/3*2);for(let r,u,c=0,f=0,s=e.length;c<s;c+=3,f+=2){const s=2*e[c],l=2*e[c+1],h=2*e[c+2],d=t[s],p=t[s+1],g=t[l],y=t[l+1],v=t[h],_=t[h+1],b=g-d,m=y-p,x=v-d,w=_-p,M=2*(b*w-m*x);if(Math.abs(M)<1e-9){if(void 0===i){i=o=0;for(const e of n)i+=t[2*e],o+=t[2*e+1];i/=n.length,o/=n.length}const e=1e9*Math.sign((i-d)*w-(o-p)*x);r=(d+v)/2-e*w,u=(p+_)/2+e*x}else{const t=1/M,n=b*b+m*m,e=x*x+w*w;r=d+(w*n-m*e)*t,u=p+(b*e-x*n)*t}a[f]=r,a[f+1]=u}let u,c,f,s=n[n.length-1],l=4*s,h=t[2*s],d=t[2*s+1];r.fill(0);for(let e=0;e<n.length;++e)s=n[e],u=l,c=h,f=d,l=4*s,h=t[2*s],d=t[2*s+1],r[u+2]=r[l]=f-d,r[u+3]=r[l+1]=h-c}render(t){const n=null==t?t=new Ru:void 0,{delaunay:{halfedges:e,inedges:r,hull:i},circumcenters:o,vectors:a}=this;if(i.length<=1)return null;for(let n=0,r=e.length;n<r;++n){const r=e[n];if(r<n)continue;const i=2*Math.floor(n/3),a=2*Math.floor(r/3),u=o[i],c=o[i+1],f=o[a],s=o[a+1];this._renderSegment(u,c,f,s,t)}let u,c=i[i.length-1];for(let n=0;n<i.length;++n){u=c,c=i[n];const e=2*Math.floor(r[c]/3),f=o[e],s=o[e+1],l=4*u,h=this._project(f,s,a[l+2],a[l+3]);h&&this._renderSegment(f,s,h[0],h[1],t)}return n&&n.value()}renderBounds(t){const n=null==t?t=new Ru:void 0;return t.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),n&&n.value()}renderCell(t,n){const e=null==n?n=new Ru:void 0,r=this._clip(t);if(null===r||!r.length)return;n.moveTo(r[0],r[1]);let i=r.length;for(;r[0]===r[i-2]&&r[1]===r[i-1]&&i>1;)i-=2;for(let t=2;t<i;t+=2)r[t]===r[t-2]&&r[t+1]===r[t-1]||n.lineTo(r[t],r[t+1]);return n.closePath(),e&&e.value()}*cellPolygons(){const{delaunay:{points:t}}=this;for(let n=0,e=t.length/2;n<e;++n){const t=this.cellPolygon(n);t&&(t.index=n,yield t)}}cellPolygon(t){const n=new Fu;return this.renderCell(t,n),n.value()}_renderSegment(t,n,e,r,i){let o;const a=this._regioncode(t,n),u=this._regioncode(e,r);0===a&&0===u?(i.moveTo(t,n),i.lineTo(e,r)):(o=this._clipSegment(t,n,e,r,a,u))&&(i.moveTo(o[0],o[1]),i.lineTo(o[2],o[3]))}contains(t,n,e){return(n=+n)==n&&(e=+e)==e&&this.delaunay._step(t,n,e)===t}*neighbors(t){const n=this._clip(t);if(n)for(const e of this.delaunay.neighbors(t)){const t=this._clip(e);if(t)t:for(let r=0,i=n.length;r<i;r+=2)for(let o=0,a=t.length;o<a;o+=2)if(n[r]===t[o]&&n[r+1]===t[o+1]&&n[(r+2)%i]===t[(o+a-2)%a]&&n[(r+3)%i]===t[(o+a-1)%a]){yield e;break t}}}_cell(t){const{circumcenters:n,delaunay:{inedges:e,halfedges:r,triangles:i}}=this,o=e[t];if(-1===o)return null;const a=[];let u=o;do{const e=Math.floor(u/3);if(a.push(n[2*e],n[2*e+1]),u=u%3==2?u-2:u+1,i[u]!==t)break;u=r[u]}while(u!==o&&-1!==u);return a}_clip(t){if(0===t&&1===this.delaunay.hull.length)return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];const n=this._cell(t);if(null===n)return null;const{vectors:e}=this,r=4*t;return this._simplify(e[r]||e[r+1]?this._clipInfinite(t,n,e[r],e[r+1],e[r+2],e[r+3]):this._clipFinite(t,n))}_clipFinite(t,n){const e=n.length;let r,i,o,a,u=null,c=n[e-2],f=n[e-1],s=this._regioncode(c,f),l=0;for(let h=0;h<e;h+=2)if(r=c,i=f,c=n[h],f=n[h+1],o=s,s=this._regioncode(c,f),0===o&&0===s)a=l,l=0,u?u.push(c,f):u=[c,f];else{let n,e,h,d,p;if(0===o){if(null===(n=this._clipSegment(r,i,c,f,o,s)))continue;[e,h,d,p]=n}else{if(null===(n=this._clipSegment(c,f,r,i,s,o)))continue;[d,p,e,h]=n,a=l,l=this._edgecode(e,h),a&&l&&this._edge(t,a,l,u,u.length),u?u.push(e,h):u=[e,h]}a=l,l=this._edgecode(d,p),a&&l&&this._edge(t,a,l,u,u.length),u?u.push(d,p):u=[d,p]}if(u)a=l,l=this._edgecode(u[0],u[1]),a&&l&&this._edge(t,a,l,u,u.length);else if(this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return u}_clipSegment(t,n,e,r,i,o){const a=i<o;for(a&&([t,n,e,r,i,o]=[e,r,t,n,o,i]);;){if(0===i&&0===o)return a?[e,r,t,n]:[t,n,e,r];if(i&o)return null;let u,c,f=i||o;8&f?(u=t+(e-t)*(this.ymax-n)/(r-n),c=this.ymax):4&f?(u=t+(e-t)*(this.ymin-n)/(r-n),c=this.ymin):2&f?(c=n+(r-n)*(this.xmax-t)/(e-t),u=this.xmax):(c=n+(r-n)*(this.xmin-t)/(e-t),u=this.xmin),i?(t=u,n=c,i=this._regioncode(t,n)):(e=u,r=c,o=this._regioncode(e,r))}}_clipInfinite(t,n,e,r,i,o){let a,u=Array.from(n);if((a=this._project(u[0],u[1],e,r))&&u.unshift(a[0],a[1]),(a=this._project(u[u.length-2],u[u.length-1],i,o))&&u.push(a[0],a[1]),u=this._clipFinite(t,u))for(let n,e=0,r=u.length,i=this._edgecode(u[r-2],u[r-1]);e<r;e+=2)n=i,i=this._edgecode(u[e],u[e+1]),n&&i&&(e=this._edge(t,n,i,u,e),r=u.length);else this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(u=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return u}_edge(t,n,e,r,i){for(;n!==e;){let e,o;switch(n){case 5:n=4;continue;case 4:n=6,e=this.xmax,o=this.ymin;break;case 6:n=2;continue;case 2:n=10,e=this.xmax,o=this.ymax;break;case 10:n=8;continue;case 8:n=9,e=this.xmin,o=this.ymax;break;case 9:n=1;continue;case 1:n=5,e=this.xmin,o=this.ymin}r[i]===e&&r[i+1]===o||!this.contains(t,e,o)||(r.splice(i,0,e,o),i+=2)}return i}_project(t,n,e,r){let i,o,a,u=1/0;if(r<0){if(n<=this.ymin)return null;(i=(this.ymin-n)/r)<u&&(a=this.ymin,o=t+(u=i)*e)}else if(r>0){if(n>=this.ymax)return null;(i=(this.ymax-n)/r)<u&&(a=this.ymax,o=t+(u=i)*e)}if(e>0){if(t>=this.xmax)return null;(i=(this.xmax-t)/e)<u&&(o=this.xmax,a=n+(u=i)*r)}else if(e<0){if(t<=this.xmin)return null;(i=(this.xmin-t)/e)<u&&(o=this.xmin,a=n+(u=i)*r)}return[o,a]}_edgecode(t,n){return(t===this.xmin?1:t===this.xmax?2:0)|(n===this.ymin?4:n===this.ymax?8:0)}_regioncode(t,n){return(t<this.xmin?1:t>this.xmax?2:0)|(n<this.ymin?4:n>this.ymax?8:0)}_simplify(t){if(t&&t.length>4){for(let n=0;n<t.length;n+=2){const e=(n+2)%t.length,r=(n+4)%t.length;(t[n]===t[e]&&t[e]===t[r]||t[n+1]===t[e+1]&&t[e+1]===t[r+1])&&(t.splice(e,2),n-=2)}t.length||(t=null)}return t}}const Uu=2*Math.PI,Iu=Math.pow;function Ou(t){return t[0]}function Bu(t){return t[1]}function Yu(t,n,e){return[t+Math.sin(t+n)*e,n+Math.cos(t-n)*e]}class Lu{static from(t,n=Ou,e=Bu,r){return new Lu("length"in t?function(t,n,e,r){const i=t.length,o=new Float64Array(2*i);for(let a=0;a<i;++a){const i=t[a];o[2*a]=n.call(r,i,a,t),o[2*a+1]=e.call(r,i,a,t)}return o}(t,n,e,r):Float64Array.from(function*(t,n,e,r){let i=0;for(const o of t)yield n.call(r,o,i,t),yield e.call(r,o,i,t),++i}(t,n,e,r)))}constructor(t){this._delaunator=new Su(t),this.inedges=new Int32Array(t.length/2),this._hullIndex=new Int32Array(t.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const t=this._delaunator,n=this.points;if(t.hull&&t.hull.length>2&&function(t){const{triangles:n,coords:e}=t;for(let t=0;t<n.length;t+=3){const r=2*n[t],i=2*n[t+1],o=2*n[t+2];if((e[o]-e[r])*(e[i+1]-e[r+1])-(e[i]-e[r])*(e[o+1]-e[r+1])>1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:n.length/2},((t,n)=>n)).sort(((t,e)=>n[2*t]-n[2*e]||n[2*t+1]-n[2*e+1]));const t=this.collinear[0],e=this.collinear[this.collinear.length-1],r=[n[2*t],n[2*t+1],n[2*e],n[2*e+1]],i=1e-8*Math.hypot(r[3]-r[1],r[2]-r[0]);for(let t=0,e=n.length/2;t<e;++t){const e=Yu(n[2*t],n[2*t+1],i);n[2*t]=e[0],n[2*t+1]=e[1]}this._delaunator=new Su(n)}else delete this.collinear;const e=this.halfedges=this._delaunator.halfedges,r=this.hull=this._delaunator.hull,i=this.triangles=this._delaunator.triangles,o=this.inedges.fill(-1),a=this._hullIndex.fill(-1);for(let t=0,n=e.length;t<n;++t){const n=i[t%3==2?t-2:t+1];-1!==e[t]&&-1!==o[n]||(o[n]=t)}for(let t=0,n=r.length;t<n;++t)a[r[t]]=t;r.length<=2&&r.length>0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=r[0],o[r[0]]=1,2===r.length&&(o[r[1]]=0,this.triangles[1]=r[1],this.triangles[2]=r[1]))}voronoi(t){return new qu(this,t)}*neighbors(t){const{inedges:n,hull:e,_hullIndex:r,halfedges:i,triangles:o,collinear:a}=this;if(a){const n=a.indexOf(t);return n>0&&(yield a[n-1]),void(n<a.length-1&&(yield a[n+1]))}const u=n[t];if(-1===u)return;let c=u,f=-1;do{if(yield f=o[c],c=c%3==2?c-2:c+1,o[c]!==t)return;if(c=i[c],-1===c){const n=e[(r[t]+1)%e.length];return void(n!==f&&(yield n))}}while(c!==u)}find(t,n,e=0){if((t=+t)!=t||(n=+n)!=n)return-1;const r=e;let i;for(;(i=this._step(e,t,n))>=0&&i!==e&&i!==r;)e=i;return i}_step(t,n,e){const{inedges:r,hull:i,_hullIndex:o,halfedges:a,triangles:u,points:c}=this;if(-1===r[t]||!c.length)return(t+1)%(c.length>>1);let f=t,s=Iu(n-c[2*t],2)+Iu(e-c[2*t+1],2);const l=r[t];let h=l;do{let r=u[h];const l=Iu(n-c[2*r],2)+Iu(e-c[2*r+1],2);if(l<s&&(s=l,f=r),h=h%3==2?h-2:h+1,u[h]!==t)break;if(h=a[h],-1===h){if(h=i[(o[t]+1)%i.length],h!==r&&Iu(n-c[2*h],2)+Iu(e-c[2*h+1],2)<s)return h;break}}while(h!==l);return f}render(t){const n=null==t?t=new Ru:void 0,{points:e,halfedges:r,triangles:i}=this;for(let n=0,o=r.length;n<o;++n){const o=r[n];if(o<n)continue;const a=2*i[n],u=2*i[o];t.moveTo(e[a],e[a+1]),t.lineTo(e[u],e[u+1])}return this.renderHull(t),n&&n.value()}renderPoints(t,n){void 0!==n||t&&"function"==typeof t.moveTo||(n=t,t=null),n=null==n?2:+n;const e=null==t?t=new Ru:void 0,{points:r}=this;for(let e=0,i=r.length;e<i;e+=2){const i=r[e],o=r[e+1];t.moveTo(i+n,o),t.arc(i,o,n,0,Uu)}return e&&e.value()}renderHull(t){const n=null==t?t=new Ru:void 0,{hull:e,points:r}=this,i=2*e[0],o=e.length;t.moveTo(r[i],r[i+1]);for(let n=1;n<o;++n){const i=2*e[n];t.lineTo(r[i],r[i+1])}return t.closePath(),n&&n.value()}hullPolygon(){const t=new Fu;return this.renderHull(t),t.value()}renderTriangle(t,n){const e=null==n?n=new Ru:void 0,{points:r,triangles:i}=this,o=2*i[t*=3],a=2*i[t+1],u=2*i[t+2];return n.moveTo(r[o],r[o+1]),n.lineTo(r[a],r[a+1]),n.lineTo(r[u],r[u+1]),n.closePath(),e&&e.value()}*trianglePolygons(){const{triangles:t}=this;for(let n=0,e=t.length/3;n<e;++n)yield this.trianglePolygon(n)}trianglePolygon(t){const n=new Fu;return this.renderTriangle(t,n),n.value()}}var ju={},Hu={},Xu=34,Gu=10,Vu=13;function Wu(t){return new Function("d","return {"+t.map((function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'})).join(",")+"}")}function Zu(t){var n=Object.create(null),e=[];return t.forEach((function(t){for(var r in t)r in n||e.push(n[r]=r)})),e}function Ku(t,n){var e=t+"",r=e.length;return r<n?new Array(n-r+1).join(0)+e:e}function Qu(t){var n,e=t.getUTCHours(),r=t.getUTCMinutes(),i=t.getUTCSeconds(),o=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":((n=t.getUTCFullYear())<0?"-"+Ku(-n,6):n>9999?"+"+Ku(n,6):Ku(n,4))+"-"+Ku(t.getUTCMonth()+1,2)+"-"+Ku(t.getUTCDate(),2)+(o?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"."+Ku(o,3)+"Z":i?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"Z":r||e?"T"+Ku(e,2)+":"+Ku(r,2)+"Z":"")}function Ju(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return Hu;if(f)return f=!1,ju;var n,r,i=a;if(t.charCodeAt(i)===Xu){for(;a++<o&&t.charCodeAt(a)!==Xu||t.charCodeAt(++a)===Xu;);return(n=a)>=o?c=!0:(r=t.charCodeAt(a++))===Gu?f=!0:r===Vu&&(f=!0,t.charCodeAt(a)===Gu&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;a<o;){if((r=t.charCodeAt(n=a++))===Gu)f=!0;else if(r===Vu)f=!0,t.charCodeAt(a)===Gu&&++a;else if(r!==e)continue;return t.slice(i,n)}return c=!0,t.slice(i,o)}for(t.charCodeAt(o-1)===Gu&&--o,t.charCodeAt(o-1)===Vu&&--o;(r=s())!==Hu;){for(var l=[];r!==ju&&r!==Hu;)l.push(r),r=s();n&&null==(l=n(l,u++))||i.push(l)}return i}function i(n,e){return n.map((function(n){return e.map((function(t){return a(n[t])})).join(t)}))}function o(n){return n.map(a).join(t)}function a(t){return null==t?"":t instanceof Date?Qu(t):n.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,n){var e,i,o=r(t,(function(t,r){if(e)return e(t,r-1);i=t,e=n?function(t,n){var e=Wu(t);return function(r,i){return n(e(r),i,t)}}(t,n):Wu(t)}));return o.columns=i||[],o},parseRows:r,format:function(n,e){return null==e&&(e=Zu(n)),[e.map(a).join(t)].concat(i(n,e)).join("\n")},formatBody:function(t,n){return null==n&&(n=Zu(t)),i(t,n).join("\n")},formatRows:function(t){return t.map(o).join("\n")},formatRow:o,formatValue:a}}var tc=Ju(","),nc=tc.parse,ec=tc.parseRows,rc=tc.format,ic=tc.formatBody,oc=tc.formatRows,ac=tc.formatRow,uc=tc.formatValue,cc=Ju("\t"),fc=cc.parse,sc=cc.parseRows,lc=cc.format,hc=cc.formatBody,dc=cc.formatRows,pc=cc.formatRow,gc=cc.formatValue;const yc=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function vc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}function _c(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}function bc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function mc(t,n){return fetch(t,n).then(bc)}function xc(t){return function(n,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=void 0),mc(n,e).then((function(n){return t(n,r)}))}}var wc=xc(nc),Mc=xc(fc);function Tc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(204!==t.status&&205!==t.status)return t.json()}function Ac(t){return(n,e)=>mc(n,e).then((n=>(new DOMParser).parseFromString(n,t)))}var Sc=Ac("application/xml"),Ec=Ac("text/html"),Nc=Ac("image/svg+xml");function kc(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,a,u,c,f,s,l,h,d=t._root,p={data:r},g=t._x0,y=t._y0,v=t._x1,_=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function Cc(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Pc(t){return t[0]}function zc(t){return t[1]}function $c(t,n,e){var r=new Dc(null==n?Pc:n,null==e?zc:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Dc(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Rc(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Fc=$c.prototype=Dc.prototype;function qc(t){return function(){return t}}function Uc(t){return 1e-6*(t()-.5)}function Ic(t){return t.x+t.vx}function Oc(t){return t.y+t.vy}function Bc(t){return t.index}function Yc(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}Fc.copy=function(){var t,n,e=new Dc(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=Rc(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]=Rc(n));return e},Fc.add=function(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return kc(this.cover(n,e),n,e,t)},Fc.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-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))||(a[e]=r,u[e]=i,r<c&&(c=r),r>s&&(s=r),i<f&&(f=i),i>l&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;e<o;++e)kc(this,a[e],u[e],t[e]);return this},Fc.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{for(var a,u,c=i-e||1,f=this._root;e>t||t>=i||r>n||n>=o;)switch(u=(n<r)<<1|t<e,(a=new Array(4))[u]=f,f=a,c*=2,u){case 0:i=e+c,o=r+c;break;case 1:e=i-c,o=r+c;break;case 2:i=e+c,r=o-c;break;case 3:e=i-c,r=o-c}this._root&&this._root.length&&(this._root=f)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},Fc.data=function(){var t=[];return this.visit((function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)})),t},Fc.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]]},Fc.find=function(t,n,e){var r,i,o,a,u,c,f,s=this._x0,l=this._y0,h=this._x1,d=this._y1,p=[],g=this._root;for(g&&p.push(new Cc(g,s,l,h,d)),null==e?e=1/0:(s=t-e,l=n-e,h=t+e,d=n+e,e*=e);c=p.pop();)if(!(!(g=c.node)||(i=c.x0)>h||(o=c.y0)>d||(a=c.x1)<s||(u=c.y1)<l))if(g.length){var y=(i+a)/2,v=(o+u)/2;p.push(new Cc(g[3],y,v,a,u),new Cc(g[2],i,v,y,u),new Cc(g[1],y,o,a,v),new Cc(g[0],i,o,y,v)),(f=(n>=v)<<1|t>=y)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,g.data),b=n-+this._y.call(null,g.data),m=_*_+b*b;if(m<e){var x=Math.sqrt(e=m);s=t-x,l=n-x,h=t+x,d=n+x,r=g.data}}return r},Fc.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var n,e,r,i,o,a,u,c,f,s,l,h,d=this._root,p=this._x0,g=this._y0,y=this._x1,v=this._y1;if(!d)return this;if(d.length)for(;;){if((f=o>=(u=(p+y)/2))?p=u:y=u,(s=a>=(c=(g+v)/2))?g=c:v=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Fc.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},Fc.root=function(){return this._root},Fc.size=function(){var t=0;return this.visit((function(n){if(!n.length)do{++t}while(n=n.next)})),t},Fc.visit=function(t){var n,e,r,i,o,a,u=[],c=this._root;for(c&&u.push(new Cc(c,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(c=n.node,r=n.x0,i=n.y0,o=n.x1,a=n.y1)&&c.length){var f=(r+o)/2,s=(i+a)/2;(e=c[3])&&u.push(new Cc(e,f,s,o,a)),(e=c[2])&&u.push(new Cc(e,r,s,f,a)),(e=c[1])&&u.push(new Cc(e,f,i,o,s)),(e=c[0])&&u.push(new Cc(e,r,i,f,s))}return this},Fc.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new Cc(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,a=n.x0,u=n.y0,c=n.x1,f=n.y1,s=(a+c)/2,l=(u+f)/2;(o=i[0])&&e.push(new Cc(o,a,u,s,l)),(o=i[1])&&e.push(new Cc(o,s,u,c,l)),(o=i[2])&&e.push(new Cc(o,a,l,s,f)),(o=i[3])&&e.push(new Cc(o,s,l,c,f))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},Fc.x=function(t){return arguments.length?(this._x=t,this):this._x},Fc.y=function(t){return arguments.length?(this._y=t,this):this._y};const Lc=1664525,jc=1013904223,Hc=4294967296;function Xc(t){return t.x}function Gc(t){return t.y}var Vc=Math.PI*(3-Math.sqrt(5));function Wc(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function Zc(t){return(t=Wc(Math.abs(t)))?t[1]:NaN}var Kc,Qc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Jc(t){if(!(n=Qc.exec(t)))throw new Error("invalid format: "+t);var n;return new tf({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function tf(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function nf(t,n){var e=Wc(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Jc.prototype=tf.prototype,tf.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ef={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>nf(100*t,n),r:nf,s:function(t,n){var e=Wc(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(Kc=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Wc(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function rf(t){return t}var of,af=Array.prototype.map,uf=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function cf(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?rf:(n=af.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?rf:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(af.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"−":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=Jc(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,v=t.trim,_=t.type;"n"===_?(g=!0,_="g"):ef[_]||(void 0===y&&(y=12),v=!0,_="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",m="$"===h?o:/[%p]/.test(_)?c:"",x=ef[_],w=/[defgprs%]/.test(_);function M(t){var i,o,c,h=b,M=m;if("c"===_)M=x(t)+M,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),y),v&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),T&&0==+t&&"+"!==l&&(T=!1),h=(T?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===_?uf[8+Kc/3]:"")+M+(T&&"("===l?")":""),w)for(i=-1,o=t.length;++i<o;)if(48>(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var A=h.length+t.length+M.length,S=A<p?new Array(p-A+1).join(n):"";switch(g&&d&&(t=r(S+t,S.length?p-M.length:1/0),S=""),e){case"<":t=h+t+M+S;break;case"=":t=h+S+t+M;break;case"^":t=S.slice(0,A=S.length>>1)+h+t+M+S.slice(A);break;default:t=S+h+t+M}return u(t)}return y=void 0===y?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=Jc(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3))),i=Math.pow(10,-r),o=uf[8+r/3];return function(t){return e(i*t)+o}}}}function ff(n){return of=cf(n),t.format=of.format,t.formatPrefix=of.formatPrefix,of}function sf(t){return Math.max(0,-Zc(Math.abs(t)))}function lf(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3)))-Zc(Math.abs(t)))}function hf(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Zc(n)-Zc(t))+1}t.format=void 0,t.formatPrefix=void 0,ff({thousands:",",grouping:[3],currency:["$",""]});var df=1e-6,pf=1e-12,gf=Math.PI,yf=gf/2,vf=gf/4,_f=2*gf,bf=180/gf,mf=gf/180,xf=Math.abs,wf=Math.atan,Mf=Math.atan2,Tf=Math.cos,Af=Math.ceil,Sf=Math.exp,Ef=Math.hypot,Nf=Math.log,kf=Math.pow,Cf=Math.sin,Pf=Math.sign||function(t){return t>0?1:t<0?-1:0},zf=Math.sqrt,$f=Math.tan;function Df(t){return t>1?0:t<-1?gf:Math.acos(t)}function Rf(t){return t>1?yf:t<-1?-yf:Math.asin(t)}function Ff(t){return(t=Cf(t/2))*t}function qf(){}function Uf(t,n){t&&Of.hasOwnProperty(t.type)&&Of[t.type](t,n)}var If={Feature:function(t,n){Uf(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)Uf(e[r].geometry,n)}},Of={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){Bf(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Bf(e[r],n,0)},Polygon:function(t,n){Yf(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Yf(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)Uf(e[r],n)}};function Bf(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function Yf(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)Bf(t[e],n,1);n.polygonEnd()}function Lf(t,n){t&&If.hasOwnProperty(t.type)?If[t.type](t,n):Uf(t,n)}var jf,Hf,Xf,Gf,Vf,Wf,Zf,Kf,Qf,Jf,ts,ns,es,rs,is,os,as=new T,us=new T,cs={point:qf,lineStart:qf,lineEnd:qf,polygonStart:function(){as=new T,cs.lineStart=fs,cs.lineEnd=ss},polygonEnd:function(){var t=+as;us.add(t<0?_f+t:t),this.lineStart=this.lineEnd=this.point=qf},sphere:function(){us.add(_f)}};function fs(){cs.point=ls}function ss(){hs(jf,Hf)}function ls(t,n){cs.point=hs,jf=t,Hf=n,Xf=t*=mf,Gf=Tf(n=(n*=mf)/2+vf),Vf=Cf(n)}function hs(t,n){var e=(t*=mf)-Xf,r=e>=0?1:-1,i=r*e,o=Tf(n=(n*=mf)/2+vf),a=Cf(n),u=Vf*a,c=Gf*o+u*Tf(i),f=u*r*Cf(i);as.add(Mf(f,c)),Xf=t,Gf=o,Vf=a}function ds(t){return[Mf(t[1],t[0]),Rf(t[2])]}function ps(t){var n=t[0],e=t[1],r=Tf(e);return[r*Tf(n),r*Cf(n),Cf(e)]}function gs(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function ys(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function vs(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function _s(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function bs(t){var n=zf(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var ms,xs,ws,Ms,Ts,As,Ss,Es,Ns,ks,Cs,Ps,zs,$s,Ds,Rs,Fs={point:qs,lineStart:Is,lineEnd:Os,polygonStart:function(){Fs.point=Bs,Fs.lineStart=Ys,Fs.lineEnd=Ls,rs=new T,cs.polygonStart()},polygonEnd:function(){cs.polygonEnd(),Fs.point=qs,Fs.lineStart=Is,Fs.lineEnd=Os,as<0?(Wf=-(Kf=180),Zf=-(Qf=90)):rs>df?Qf=90:rs<-df&&(Zf=-90),os[0]=Wf,os[1]=Kf},sphere:function(){Wf=-(Kf=180),Zf=-(Qf=90)}};function qs(t,n){is.push(os=[Wf=t,Kf=t]),n<Zf&&(Zf=n),n>Qf&&(Qf=n)}function Us(t,n){var e=ps([t*mf,n*mf]);if(es){var r=ys(es,e),i=ys([r[1],-r[0],0],r);bs(i),i=ds(i);var o,a=t-Jf,u=a>0?1:-1,c=i[0]*bf*u,f=xf(a)>180;f^(u*Jf<c&&c<u*t)?(o=i[1]*bf)>Qf&&(Qf=o):f^(u*Jf<(c=(c+360)%360-180)&&c<u*t)?(o=-i[1]*bf)<Zf&&(Zf=o):(n<Zf&&(Zf=n),n>Qf&&(Qf=n)),f?t<Jf?js(Wf,t)>js(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t):Kf>=Wf?(t<Wf&&(Wf=t),t>Kf&&(Kf=t)):t>Jf?js(Wf,t)>js(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t)}else is.push(os=[Wf=t,Kf=t]);n<Zf&&(Zf=n),n>Qf&&(Qf=n),es=e,Jf=t}function Is(){Fs.point=Us}function Os(){os[0]=Wf,os[1]=Kf,Fs.point=qs,es=null}function Bs(t,n){if(es){var e=t-Jf;rs.add(xf(e)>180?e+(e>0?360:-360):e)}else ts=t,ns=n;cs.point(t,n),Us(t,n)}function Ys(){cs.lineStart()}function Ls(){Bs(ts,ns),cs.lineEnd(),xf(rs)>df&&(Wf=-(Kf=180)),os[0]=Wf,os[1]=Kf,es=null}function js(t,n){return(n-=t)<0?n+360:n}function Hs(t,n){return t[0]-n[0]}function Xs(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var Gs={sphere:qf,point:Vs,lineStart:Zs,lineEnd:Js,polygonStart:function(){Gs.lineStart=tl,Gs.lineEnd=nl},polygonEnd:function(){Gs.lineStart=Zs,Gs.lineEnd=Js}};function Vs(t,n){t*=mf;var e=Tf(n*=mf);Ws(e*Tf(t),e*Cf(t),Cf(n))}function Ws(t,n,e){++ms,ws+=(t-ws)/ms,Ms+=(n-Ms)/ms,Ts+=(e-Ts)/ms}function Zs(){Gs.point=Ks}function Ks(t,n){t*=mf;var e=Tf(n*=mf);$s=e*Tf(t),Ds=e*Cf(t),Rs=Cf(n),Gs.point=Qs,Ws($s,Ds,Rs)}function Qs(t,n){t*=mf;var e=Tf(n*=mf),r=e*Tf(t),i=e*Cf(t),o=Cf(n),a=Mf(zf((a=Ds*o-Rs*i)*a+(a=Rs*r-$s*o)*a+(a=$s*i-Ds*r)*a),$s*r+Ds*i+Rs*o);xs+=a,As+=a*($s+($s=r)),Ss+=a*(Ds+(Ds=i)),Es+=a*(Rs+(Rs=o)),Ws($s,Ds,Rs)}function Js(){Gs.point=Vs}function tl(){Gs.point=el}function nl(){rl(Ps,zs),Gs.point=Vs}function el(t,n){Ps=t,zs=n,t*=mf,n*=mf,Gs.point=rl;var e=Tf(n);$s=e*Tf(t),Ds=e*Cf(t),Rs=Cf(n),Ws($s,Ds,Rs)}function rl(t,n){t*=mf;var e=Tf(n*=mf),r=e*Tf(t),i=e*Cf(t),o=Cf(n),a=Ds*o-Rs*i,u=Rs*r-$s*o,c=$s*i-Ds*r,f=Ef(a,u,c),s=Rf(f),l=f&&-s/f;Ns.add(l*a),ks.add(l*u),Cs.add(l*c),xs+=s,As+=s*($s+($s=r)),Ss+=s*(Ds+(Ds=i)),Es+=s*(Rs+(Rs=o)),Ws($s,Ds,Rs)}function il(t){return function(){return t}}function ol(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function al(t,n){return xf(t)>gf&&(t-=Math.round(t/_f)*_f),[t,n]}function ul(t,n,e){return(t%=_f)?n||e?ol(fl(t),sl(n,e)):fl(t):n||e?sl(n,e):al}function cl(t){return function(n,e){return xf(n+=t)>gf&&(n-=Math.round(n/_f)*_f),[n,e]}}function fl(t){var n=cl(t);return n.invert=cl(-t),n}function sl(t,n){var e=Tf(t),r=Cf(t),i=Tf(n),o=Cf(n);function a(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*e+u*r;return[Mf(c*i-s*o,u*e-f*r),Rf(s*i+c*o)]}return a.invert=function(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*i-c*o;return[Mf(c*i+f*o,u*e+s*r),Rf(s*e-u*r)]},a}function ll(t){function n(n){return(n=t(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n}return t=ul(t[0]*mf,t[1]*mf,t.length>2?t[2]*mf:0),n.invert=function(n){return(n=t.invert(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n},n}function hl(t,n,e,r,i,o){if(e){var a=Tf(n),u=Cf(n),c=r*e;null==i?(i=n+r*_f,o=n-c/2):(i=dl(a,i),o=dl(a,o),(r>0?i<o:i>o)&&(i+=r*_f));for(var f,s=i;r>0?s>o:s<o;s-=c)f=ds([a,-u*Tf(s),-u*Cf(s)]),t.point(f[0],f[1])}}function dl(t,n){(n=ps(n))[0]-=t,bs(n);var e=Df(-n[1]);return((-n[2]<0?-e:e)+_f-df)%_f}function pl(){var t,n=[];return{point:function(n,e,r){t.push([n,e,r])},lineStart:function(){n.push(t=[])},lineEnd:qf,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function gl(t,n){return xf(t[0]-n[0])<df&&xf(t[1]-n[1])<df}function yl(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function vl(t,n,e,r,i){var o,a,u=[],c=[];if(t.forEach((function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],a=t[n];if(gl(r,a)){if(!r[2]&&!a[2]){for(i.lineStart(),o=0;o<n;++o)i.point((r=t[o])[0],r[1]);return void i.lineEnd()}a[0]+=2*df}u.push(e=new yl(r,t,null,!0)),c.push(e.o=new yl(r,null,e,!1)),u.push(e=new yl(a,t,null,!1)),c.push(e.o=new yl(a,null,e,!0))}})),u.length){for(c.sort(n),_l(u),_l(c),o=0,a=c.length;o<a;++o)c[o].e=e=!e;for(var f,s,l=u[0];;){for(var h=l,d=!0;h.v;)if((h=h.n)===l)return;f=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(o=0,a=f.length;o<a;++o)i.point((s=f[o])[0],s[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(f=h.p.z,o=f.length-1;o>=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function _l(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}function bl(t){return xf(t[0])<=gf?t[0]:Pf(t[0])*((xf(t[0])+gf)%_f-gf)}function ml(t,n){var e=bl(n),r=n[1],i=Cf(r),o=[Cf(e),-Tf(e),0],a=0,u=0,c=new T;1===i?r=yf+df:-1===i&&(r=-yf-df);for(var f=0,s=t.length;f<s;++f)if(h=(l=t[f]).length)for(var l,h,d=l[h-1],p=bl(d),g=d[1]/2+vf,y=Cf(g),v=Tf(g),_=0;_<h;++_,p=m,y=w,v=M,d=b){var b=l[_],m=bl(b),x=b[1]/2+vf,w=Cf(x),M=Tf(x),A=m-p,S=A>=0?1:-1,E=S*A,N=E>gf,k=y*w;if(c.add(Mf(k*S*Cf(E),v*M+k*Tf(E))),a+=N?A+S*_f:A,N^p>=e^m>=e){var C=ys(ps(d),ps(b));bs(C);var P=ys(o,C);bs(P);var z=(N^A>=0?-1:1)*Rf(P[2]);(r>z||r===z&&(C[0]||C[1]))&&(u+=N^A>=0?1:-1)}}return(a<-df||a<df&&c<-pf)^1&u}function xl(t,n,e,r){return function(i){var o,a,u,c=n(i),f=pl(),s=n(f),l=!1,h={point:d,lineStart:g,lineEnd:y,polygonStart:function(){h.point=v,h.lineStart=_,h.lineEnd=b,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=g,h.lineEnd=y,a=ft(a);var t=ml(o,r);a.length?(l||(i.polygonStart(),l=!0),vl(a,Ml,t,e,i)):t&&(l||(i.polygonStart(),l=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),l&&(i.polygonEnd(),l=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){c.point(t,n)}function g(){h.point=p,c.lineStart()}function y(){h.point=d,c.lineEnd()}function v(t,n){u.push([t,n]),s.point(t,n)}function _(){s.lineStart(),u=[]}function b(){v(u[0][0],u[0][1]),s.lineEnd();var t,n,e,r,c=s.clean(),h=f.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&c){if((n=(e=h[0]).length-1)>0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else d>1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(wl))}return h}}function wl(t){return t.length>1}function Ml(t,n){return((t=t.x)[0]<0?t[1]-yf-df:yf-t[1])-((n=n.x)[0]<0?n[1]-yf-df:yf-n[1])}al.invert=al;var Tl=xl((function(){return!0}),(function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?gf:-gf,c=xf(o-e);xf(c-gf)<df?(t.point(e,r=(r+a)/2>0?yf:-yf),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=gf&&(xf(e-i)<df&&(e-=i*df),xf(o-u)<df&&(o-=u*df),r=function(t,n,e,r){var i,o,a=Cf(t-e);return xf(a)>df?wf((Cf(n)*(o=Tf(r))*Cf(e)-Cf(r)*(i=Tf(n))*Cf(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}}),(function(t,n,e,r){var i;if(null==t)i=e*yf,r.point(-gf,i),r.point(0,i),r.point(gf,i),r.point(gf,0),r.point(gf,-i),r.point(0,-i),r.point(-gf,-i),r.point(-gf,0),r.point(-gf,i);else if(xf(t[0]-n[0])>df){var o=t[0]<n[0]?gf:-gf;i=e*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(n[0],n[1])}),[-gf,-yf]);function Al(t){var n=Tf(t),e=6*mf,r=n>0,i=xf(n)>df;function o(t,e){return Tf(t)*Tf(e)>n}function a(t,e,r){var i=[1,0,0],o=ys(ps(t),ps(e)),a=gs(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=ys(i,o),h=_s(i,f);vs(h,_s(o,s));var d=l,p=gs(h,d),g=gs(d,d),y=p*p-g*(gs(h,h)-1);if(!(y<0)){var v=zf(y),_=_s(d,(-p-v)/g);if(vs(_,h),_=ds(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x<m&&(b=m,m=x,x=b);var T=x-m,A=xf(T-gf)<df;if(!A&&M<w&&(b=w,w=M,M=b),A||T<df?A?w+M>0^_[1]<(xf(_[0]-m)<df?w:M):w<=_[1]&&_[1]<=M:T>gf^(m<=_[0]&&_[0]<=x)){var S=_s(d,(-p+v)/g);return vs(S,h),[_,ds(S)]}}}function u(n,e){var i=r?t:gf-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return xl(o,(function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],g=o(l,h),y=r?g?0:u(l,h):g?u(l+(l<0?gf:-gf),h):0;if(!n&&(f=c=g)&&t.lineStart(),g!==c&&(!(d=a(n,p))||gl(n,d)||gl(p,d))&&(p[2]=1),g!==c)s=0,g?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1],2),t.lineEnd()),n=d;else if(i&&n&&r^g){var v;y&e||!(v=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1],3)))}!g||n&&gl(n,p)||t.point(p[0],p[1]),n=p,c=g,e=y},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}}),(function(n,r,i,o){hl(o,t,e,i,n,r)}),r?[0,-t]:[-gf,t-gf])}var Sl,El,Nl,kl,Cl=1e9,Pl=-Cl;function zl(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return xf(r[0]-t)<df?i>0?0:3:xf(r[0]-e)<df?i>0?2:1:xf(r[1]-n)<df?i>0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,g,y,v,_,b=a,m=pl(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){c&&(M(l,h),d&&y&&m.rejoin(),c.push(m.result()));x.point=w,y&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;e<i;++e)for(var o,a,u=f[e],c=1,s=u.length,l=u[0],h=l[0],d=l[1];c<s;++c)o=h,a=d,h=(l=u[c])[0],d=l[1],a<=r?d>r&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=ft(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&vl(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),v)l=o,h=a,d=u,v=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&y)b.point(o,a);else{var c=[p=Math.max(Pl,Math.min(Cl,p)),g=Math.max(Pl,Math.min(Cl,g))],m=[o=Math.max(Pl,Math.min(Cl,o)),a=Math.max(Pl,Math.min(Cl,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a<f)return;a<s&&(s=a)}else if(l>0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a<f)return;a<s&&(s=a)}if(a=r-c,h||!(a>0)){if(a/=h,h<0){if(a<f)return;a<s&&(s=a)}else if(h>0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a<f)return;a<s&&(s=a)}return f>0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(y||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,g=a,y=u}return x}}var $l={sphere:qf,point:qf,lineStart:function(){$l.point=Rl,$l.lineEnd=Dl},lineEnd:qf,polygonStart:qf,polygonEnd:qf};function Dl(){$l.point=$l.lineEnd=qf}function Rl(t,n){El=t*=mf,Nl=Cf(n*=mf),kl=Tf(n),$l.point=Fl}function Fl(t,n){t*=mf;var e=Cf(n*=mf),r=Tf(n),i=xf(t-El),o=Tf(i),a=r*Cf(i),u=kl*e-Nl*r*o,c=Nl*e+kl*r*o;Sl.add(Mf(zf(a*a+u*u),c)),El=t,Nl=e,kl=r}function ql(t){return Sl=new T,Lf(t,$l),+Sl}var Ul=[null,null],Il={type:"LineString",coordinates:Ul};function Ol(t,n){return Ul[0]=t,Ul[1]=n,ql(Il)}var Bl={Feature:function(t,n){return Ll(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(Ll(e[r].geometry,n))return!0;return!1}},Yl={Sphere:function(){return!0},Point:function(t,n){return jl(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(jl(e[r],n))return!0;return!1},LineString:function(t,n){return Hl(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Hl(e[r],n))return!0;return!1},Polygon:function(t,n){return Xl(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Xl(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(Ll(e[r],n))return!0;return!1}};function Ll(t,n){return!(!t||!Yl.hasOwnProperty(t.type))&&Yl[t.type](t,n)}function jl(t,n){return 0===Ol(t,n)}function Hl(t,n){for(var e,r,i,o=0,a=t.length;o<a;o++){if(0===(r=Ol(t[o],n)))return!0;if(o>0&&(i=Ol(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<pf*i)return!0;e=r}return!1}function Xl(t,n){return!!ml(t.map(Gl),Vl(n))}function Gl(t){return(t=t.map(Vl)).pop(),t}function Vl(t){return[t[0]*mf,t[1]*mf]}function Wl(t,n,e){var r=lt(t,n-df,e).concat(n);return function(t){return r.map((function(n){return[t,n]}))}}function Zl(t,n,e){var r=lt(t,n-df,e).concat(n);return function(t){return r.map((function(n){return[n,t]}))}}function Kl(){var t,n,e,r,i,o,a,u,c,f,s,l,h=10,d=h,p=90,g=360,y=2.5;function v(){return{type:"MultiLineString",coordinates:_()}}function _(){return lt(Af(r/p)*p,e,p).map(s).concat(lt(Af(u/g)*g,a,g).map(l)).concat(lt(Af(n/h)*h,t,h).filter((function(t){return xf(t%p)>df})).map(c)).concat(lt(Af(o/d)*d,i,d).filter((function(t){return xf(t%g)>df})).map(f))}return v.lines=function(){return _().map((function(t){return{type:"LineString",coordinates:t}}))},v.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),v.precision(y)):[[r,u],[e,a]]},v.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),v.precision(y)):[[n,o],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(y=+h,c=Wl(o,i,90),f=Zl(n,t,y),s=Wl(u,a,90),l=Zl(r,e,y),v):y},v.extentMajor([[-180,-90+df],[180,90-df]]).extentMinor([[-180,-80-df],[180,80+df]])}var Ql,Jl,th,nh,eh=t=>t,rh=new T,ih=new T,oh={point:qf,lineStart:qf,lineEnd:qf,polygonStart:function(){oh.lineStart=ah,oh.lineEnd=fh},polygonEnd:function(){oh.lineStart=oh.lineEnd=oh.point=qf,rh.add(xf(ih)),ih=new T},result:function(){var t=rh/2;return rh=new T,t}};function ah(){oh.point=uh}function uh(t,n){oh.point=ch,Ql=th=t,Jl=nh=n}function ch(t,n){ih.add(nh*t-th*n),th=t,nh=n}function fh(){ch(Ql,Jl)}var sh=oh,lh=1/0,hh=lh,dh=-lh,ph=dh,gh={point:function(t,n){t<lh&&(lh=t);t>dh&&(dh=t);n<hh&&(hh=n);n>ph&&(ph=n)},lineStart:qf,lineEnd:qf,polygonStart:qf,polygonEnd:qf,result:function(){var t=[[lh,hh],[dh,ph]];return dh=ph=-(hh=lh=1/0),t}};var yh,vh,_h,bh,mh=gh,xh=0,wh=0,Mh=0,Th=0,Ah=0,Sh=0,Eh=0,Nh=0,kh=0,Ch={point:Ph,lineStart:zh,lineEnd:Rh,polygonStart:function(){Ch.lineStart=Fh,Ch.lineEnd=qh},polygonEnd:function(){Ch.point=Ph,Ch.lineStart=zh,Ch.lineEnd=Rh},result:function(){var t=kh?[Eh/kh,Nh/kh]:Sh?[Th/Sh,Ah/Sh]:Mh?[xh/Mh,wh/Mh]:[NaN,NaN];return xh=wh=Mh=Th=Ah=Sh=Eh=Nh=kh=0,t}};function Ph(t,n){xh+=t,wh+=n,++Mh}function zh(){Ch.point=$h}function $h(t,n){Ch.point=Dh,Ph(_h=t,bh=n)}function Dh(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Ph(_h=t,bh=n)}function Rh(){Ch.point=Ph}function Fh(){Ch.point=Uh}function qh(){Ih(yh,vh)}function Uh(t,n){Ch.point=Ih,Ph(yh=_h=t,vh=bh=n)}function Ih(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Eh+=(i=bh*t-_h*n)*(_h+t),Nh+=i*(bh+n),kh+=3*i,Ph(_h=t,bh=n)}var Oh=Ch;function Bh(t){this._context=t}Bh.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,_f)}},result:qf};var Yh,Lh,jh,Hh,Xh,Gh=new T,Vh={point:qf,lineStart:function(){Vh.point=Wh},lineEnd:function(){Yh&&Zh(Lh,jh),Vh.point=qf},polygonStart:function(){Yh=!0},polygonEnd:function(){Yh=null},result:function(){var t=+Gh;return Gh=new T,t}};function Wh(t,n){Vh.point=Zh,Lh=Hh=t,jh=Xh=n}function Zh(t,n){Hh-=t,Xh-=n,Gh.add(zf(Hh*Hh+Xh*Xh)),Hh=t,Xh=n}var Kh=Vh;let Qh,Jh,td,nd;class ed{constructor(t){this._append=null==t?rd:function(t){const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);if(n>15)return rd;if(n!==Qh){const t=10**n;Qh=n,Jh=function(n){let e=1;this._+=n[0];for(const r=n.length;e<r;++e)this._+=Math.round(arguments[e]*t)/t+n[e]}}return Jh}(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){0===this._line&&(this._+="Z"),this._point=NaN}point(t,n){switch(this._point){case 0:this._append`M${t},${n}`,this._point=1;break;case 1:this._append`L${t},${n}`;break;default:if(this._append`M${t},${n}`,this._radius!==td||this._append!==Jh){const t=this._radius,n=this._;this._="",this._append`m0,${t}a${t},${t} 0 1,1 0,${-2*t}a${t},${t} 0 1,1 0,${2*t}z`,td=t,Jh=this._append,nd=this._,this._=n}this._+=nd}}result(){const t=this._;return this._="",t.length?t:null}}function rd(t){let n=1;this._+=t[0];for(const e=t.length;n<e;++n)this._+=arguments[n]+t[n]}function id(t){return function(n){var e=new od;for(var r in t)e[r]=t[r];return e.stream=n,e}}function od(){}function ad(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Lf(e,t.stream(mh)),n(mh.result()),null!=r&&t.clipExtent(r),t}function ud(t,n,e){return ad(t,(function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])}),e)}function cd(t,n,e){return ud(t,[[0,0],n],e)}function fd(t,n,e){return ad(t,(function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])}),e)}function sd(t,n,e){return ad(t,(function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])}),e)}od.prototype={constructor:od,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 ld=16,hd=Tf(30*mf);function dd(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,g,y){var v=f-r,_=s-i,b=v*v+_*_;if(b>4*n&&g--){var m=a+h,x=u+d,w=c+p,M=zf(m*m+x*x+w*w),T=Rf(w/=M),A=xf(xf(w)-1)<df||xf(o-l)<df?(o+l)/2:Mf(x,m),S=t(A,T),E=S[0],N=S[1],k=E-r,C=N-i,P=_*k-v*C;(P*P/b>n||xf((v*k+_*C)/b-.5)>.3||a*h+u*d+c*p<hd)&&(e(r,i,o,a,u,c,E,N,A,m/=M,x/=M,w,g,y),y.point(E,N),e(E,N,A,m,x,w,f,s,l,h,d,p,g,y))}}return function(n){var r,i,o,a,u,c,f,s,l,h,d,p,g={point:y,lineStart:v,lineEnd:b,polygonStart:function(){n.polygonStart(),g.lineStart=m},polygonEnd:function(){n.polygonEnd(),g.lineStart=v}};function y(e,r){e=t(e,r),n.point(e[0],e[1])}function v(){s=NaN,g.point=_,n.lineStart()}function _(r,i){var o=ps([r,i]),a=t(r,i);e(s,l,f,h,d,p,s=a[0],l=a[1],f=r,h=o[0],d=o[1],p=o[2],ld,n),n.point(s,l)}function b(){g.point=y,n.lineEnd()}function m(){v(),g.point=x,g.lineEnd=w}function x(t,n){_(r=t,n),i=s,o=l,a=h,u=d,c=p,g.point=_}function w(){e(s,l,f,h,d,p,i,o,r,a,u,c,ld,n),g.lineEnd=b,b()}return g}}(t,n):function(t){return id({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}var pd=id({point:function(t,n){this.stream.point(t*mf,n*mf)}});function gd(t,n,e,r,i,o){if(!o)return function(t,n,e,r,i){function o(o,a){return[n+t*(o*=r),e-t*(a*=i)]}return o.invert=function(o,a){return[(o-n)/t*r,(e-a)/t*i]},o}(t,n,e,r,i);var a=Tf(o),u=Cf(o),c=a*t,f=u*t,s=a/t,l=u/t,h=(u*e-a*n)/t,d=(u*n+a*e)/t;function p(t,o){return[c*(t*=r)-f*(o*=i)+n,e-f*t-c*o]}return p.invert=function(t,n){return[r*(s*t-l*n+h),i*(d-l*t-s*n)]},p}function yd(t){return vd((function(){return t}))()}function vd(t){var n,e,r,i,o,a,u,c,f,s,l=150,h=480,d=250,p=0,g=0,y=0,v=0,_=0,b=0,m=1,x=1,w=null,M=Tl,T=null,A=eh,S=.5;function E(t){return c(t[0]*mf,t[1]*mf)}function N(t){return(t=c.invert(t[0],t[1]))&&[t[0]*bf,t[1]*bf]}function k(){var t=gd(l,0,0,m,x,b).apply(null,n(p,g)),r=gd(l,h-t[0],d-t[1],m,x,b);return e=ul(y,v,_),u=ol(n,r),c=ol(e,u),a=dd(u,S),C()}function C(){return f=s=null,E}return E.stream=function(t){return f&&s===t?f:f=pd(function(t){return id({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(e)(M(a(A(s=t)))))},E.preclip=function(t){return arguments.length?(M=t,w=void 0,C()):M},E.postclip=function(t){return arguments.length?(A=t,T=r=i=o=null,C()):A},E.clipAngle=function(t){return arguments.length?(M=+t?Al(w=t*mf):(w=null,Tl),C()):w*bf},E.clipExtent=function(t){return arguments.length?(A=null==t?(T=r=i=o=null,eh):zl(T=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),C()):null==T?null:[[T,r],[i,o]]},E.scale=function(t){return arguments.length?(l=+t,k()):l},E.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],k()):[h,d]},E.center=function(t){return arguments.length?(p=t[0]%360*mf,g=t[1]%360*mf,k()):[p*bf,g*bf]},E.rotate=function(t){return arguments.length?(y=t[0]%360*mf,v=t[1]%360*mf,_=t.length>2?t[2]%360*mf:0,k()):[y*bf,v*bf,_*bf]},E.angle=function(t){return arguments.length?(b=t%360*mf,k()):b*bf},E.reflectX=function(t){return arguments.length?(m=t?-1:1,k()):m<0},E.reflectY=function(t){return arguments.length?(x=t?-1:1,k()):x<0},E.precision=function(t){return arguments.length?(a=dd(u,S=t*t),C()):zf(S)},E.fitExtent=function(t,n){return ud(E,t,n)},E.fitSize=function(t,n){return cd(E,t,n)},E.fitWidth=function(t,n){return fd(E,t,n)},E.fitHeight=function(t,n){return sd(E,t,n)},function(){return n=t.apply(this,arguments),E.invert=n.invert&&N,k()}}function _d(t){var n=0,e=gf/3,r=vd(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*mf,e=t[1]*mf):[n*bf,e*bf]},i}function bd(t,n){var e=Cf(t),r=(e+Cf(n))/2;if(xf(r)<df)return function(t){var n=Tf(t);function e(t,e){return[t*n,Cf(e)/n]}return e.invert=function(t,e){return[t/n,Rf(e*n)]},e}(t);var i=1+e*(2*r-e),o=zf(i)/r;function a(t,n){var e=zf(i-2*r*Cf(n))/r;return[e*Cf(t*=r),o-e*Tf(t)]}return a.invert=function(t,n){var e=o-n,a=Mf(t,xf(e))*Pf(e);return e*r<0&&(a-=gf*Pf(t)*Pf(e)),[a/r,Rf((i-(t*t+e*e)*r*r)/(2*r))]},a}function md(){return _d(bd).scale(155.424).center([0,33.6442])}function xd(){return md().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function wd(t){return function(n,e){var r=Tf(n),i=Tf(e),o=t(r*i);return o===1/0?[2,0]:[o*i*Cf(n),o*Cf(e)]}}function Md(t){return function(n,e){var r=zf(n*n+e*e),i=t(r),o=Cf(i),a=Tf(i);return[Mf(n*o,r*a),Rf(r&&e*o/r)]}}var Td=wd((function(t){return zf(2/(1+t))}));Td.invert=Md((function(t){return 2*Rf(t/2)}));var Ad=wd((function(t){return(t=Df(t))&&t/Cf(t)}));function Sd(t,n){return[t,Nf($f((yf+n)/2))]}function Ed(t){var n,e,r,i=yd(t),o=i.center,a=i.scale,u=i.translate,c=i.clipExtent,f=null;function s(){var o=gf*a(),u=i(ll(i.rotate()).invert([0,0]));return c(null==f?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===Sd?[[Math.max(u[0]-o,f),n],[Math.min(u[0]+o,e),r]]:[[f,Math.max(u[1]-o,n)],[e,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(u(t),s()):u()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?f=n=e=r=null:(f=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),s()):null==f?null:[[f,n],[e,r]]},s()}function Nd(t){return $f((yf+t)/2)}function kd(t,n){var e=Tf(t),r=t===n?Cf(t):Nf(e/Tf(n))/Nf(Nd(n)/Nd(t)),i=e*kf(Nd(t),r)/r;if(!r)return Sd;function o(t,n){i>0?n<-yf+df&&(n=-yf+df):n>yf-df&&(n=yf-df);var e=i/kf(Nd(n),r);return[e*Cf(r*t),i-e*Tf(r*t)]}return o.invert=function(t,n){var e=i-n,o=Pf(r)*zf(t*t+e*e),a=Mf(t,xf(e))*Pf(e);return e*r<0&&(a-=gf*Pf(t)*Pf(e)),[a/r,2*wf(kf(i/o,1/r))-yf]},o}function Cd(t,n){return[t,n]}function Pd(t,n){var e=Tf(t),r=t===n?Cf(t):(e-Tf(n))/(n-t),i=e/r+t;if(xf(r)<df)return Cd;function o(t,n){var e=i-n,o=r*t;return[e*Cf(o),i-e*Tf(o)]}return o.invert=function(t,n){var e=i-n,o=Mf(t,xf(e))*Pf(e);return e*r<0&&(o-=gf*Pf(t)*Pf(e)),[o/r,i-Pf(r)*zf(t*t+e*e)]},o}Ad.invert=Md((function(t){return t})),Sd.invert=function(t,n){return[t,2*wf(Sf(n))-yf]},Cd.invert=Cd;var zd=1.340264,$d=-.081106,Dd=893e-6,Rd=.003796,Fd=zf(3)/2;function qd(t,n){var e=Rf(Fd*Cf(n)),r=e*e,i=r*r*r;return[t*Tf(e)/(Fd*(zd+3*$d*r+i*(7*Dd+9*Rd*r))),e*(zd+$d*r+i*(Dd+Rd*r))]}function Ud(t,n){var e=Tf(n),r=Tf(t)*e;return[e*Cf(t)/r,Cf(n)/r]}function Id(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function Od(t,n){return[Tf(n)*Cf(t),Cf(n)]}function Bd(t,n){var e=Tf(n),r=1+Tf(t)*e;return[e*Cf(t)/r,Cf(n)/r]}function Yd(t,n){return[Nf($f((yf+n)/2)),-t]}function Ld(t,n){return t.parent===n.parent?1:2}function jd(t,n){return t+n.x}function Hd(t,n){return Math.max(t,n.y)}function Xd(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function Gd(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=Wd)):void 0===n&&(n=Vd);for(var e,r,i,o,a,u=new Qd(t),c=[u];e=c.pop();)if((i=n(e.data))&&(a=(i=Array.from(i)).length))for(e.children=i,o=a-1;o>=0;--o)c.push(r=i[o]=new Qd(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(Kd)}function Vd(t){return t.children}function Wd(t){return Array.isArray(t)?t[1]:null}function Zd(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Kd(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function Qd(t){this.data=t,this.depth=this.height=0,this.parent=null}function Jd(t){return null==t?null:tp(t)}function tp(t){if("function"!=typeof t)throw new Error;return t}function np(){return 0}function ep(t){return function(){return t}}qd.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(zd+$d*i+o*(Dd+Rd*i))-n)/(zd+3*$d*i+o*(7*Dd+9*Rd*i)))*r)*i*i,!(xf(e)<pf));++a);return[Fd*t*(zd+3*$d*i+o*(7*Dd+9*Rd*i))/Tf(r),Rf(Cf(r)/Fd)]},Ud.invert=Md(wf),Id.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,a=o*o;r-=e=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-n)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(xf(e)>df&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},Od.invert=Md(Rf),Bd.invert=Md((function(t){return 2*wf(t)})),Yd.invert=function(t,n){return[-n,2*wf(Sf(t))-yf]},Qd.prototype=Gd.prototype={constructor:Qd,count:function(){return this.eachAfter(Xd)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,o=this,a=[o],u=[],c=-1;o=a.pop();)if(u.push(o),e=o.children)for(r=0,i=e.length;r<i;++r)a.push(e[r]);for(;o=u.pop();)t.call(n,o,++c,this);return this},eachBefore:function(t,n){for(var e,r,i=this,o=[i],a=-1;i=o.pop();)if(t.call(n,i,++a,this),e=i.children)for(r=e.length-1;r>=0;--r)o.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},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;t=e.pop(),n=r.pop();for(;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(){return Array.from(this)},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 Gd(this).eachBefore(Zd)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,o=[i];do{for(t=o.reverse(),o=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e])}while(o.length)}};const rp=1664525,ip=1013904223,op=4294967296;function ap(){let t=1;return()=>(t=(rp*t+ip)%op)/op}function up(t,n){for(var e,r,i=0,o=(t=function(t,n){let e,r,i=t.length;for(;i;)r=n()*i--|0,e=t[i],t[i]=t[r],t[r]=e;return t}(Array.from(t),n)).length,a=[];i<o;)e=t[i],r&&sp(r,e)?++i:(r=hp(a=cp(a,e)),i=0);return r}function cp(t,n){var e,r;if(lp(n,t))return[n];for(e=0;e<t.length;++e)if(fp(n,t[e])&&lp(dp(t[e],n),t))return[t[e],n];for(e=0;e<t.length-1;++e)for(r=e+1;r<t.length;++r)if(fp(dp(t[e],t[r]),n)&&fp(dp(t[e],n),t[r])&&fp(dp(t[r],n),t[e])&&lp(pp(t[e],t[r],n),t))return[t[e],t[r],n];throw new Error}function fp(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e<r*r+i*i}function sp(t,n){var e=t.r-n.r+1e-9*Math.max(t.r,n.r,1),r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function lp(t,n){for(var e=0;e<n.length;++e)if(!sp(t,n[e]))return!1;return!0}function hp(t){switch(t.length){case 1:return function(t){return{x:t.x,y:t.y,r:t.r}}(t[0]);case 2:return dp(t[0],t[1]);case 3:return pp(t[0],t[1],t[2])}}function dp(t,n){var e=t.x,r=t.y,i=t.r,o=n.x,a=n.y,u=n.r,c=o-e,f=a-r,s=u-i,l=Math.sqrt(c*c+f*f);return{x:(e+o+c/l*s)/2,y:(r+a+f/l*s)/2,r:(l+i+u)/2}}function pp(t,n,e){var r=t.x,i=t.y,o=t.r,a=n.x,u=n.y,c=n.r,f=e.x,s=e.y,l=e.r,h=r-a,d=r-f,p=i-u,g=i-s,y=c-o,v=l-o,_=r*r+i*i-o*o,b=_-a*a-u*u+c*c,m=_-f*f-s*s+l*l,x=d*p-h*g,w=(p*m-g*b)/(2*x)-r,M=(g*y-p*v)/x,T=(d*b-h*m)/(2*x)-i,A=(h*v-d*y)/x,S=M*M+A*A-1,E=2*(o+w*M+T*A),N=w*w+T*T-o*o,k=-(Math.abs(S)>1e-6?(E+Math.sqrt(E*E-4*S*N))/(2*S):N/E);return{x:r+w+M*k,y:i+T+A*k,r:k}}function gp(t,n,e){var r,i,o,a,u=t.x-n.x,c=t.y-n.y,f=u*u+c*c;f?(i=n.r+e.r,i*=i,a=t.r+e.r,i>(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function yp(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function vp(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function _p(t){this._=t,this.next=null,this.previous=null}function bp(t,n){if(!(o=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var e,r,i,o,a,u,c,f,s,l,h;if((e=t[0]).x=0,e.y=0,!(o>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(o>2))return e.r+r.r;gp(r,e,i=t[2]),e=new _p(e),r=new _p(r),i=new _p(i),e.next=i.previous=r,r.next=e.previous=i,i.next=r.previous=e;t:for(c=3;c<o;++c){gp(e._,r._,i=t[c]),i=new _p(i),f=r.next,s=e.previous,l=r._.r,h=e._.r;do{if(l<=h){if(yp(f._,i._)){r=f,e.next=r,r.previous=e,--c;continue t}l+=f._.r,f=f.next}else{if(yp(s._,i._)){(e=s).next=r,r.previous=e,--c;continue t}h+=s._.r,s=s.previous}}while(f!==s.next);for(i.previous=e,i.next=r,e.next=r.previous=r=i,a=vp(e);(i=i.next)!==r;)(u=vp(i))<a&&(e=i,a=u);r=e.next}for(e=[r._],i=r;(i=i.next)!==r;)e.push(i._);for(i=up(e,n),c=0;c<o;++c)(e=t[c]).x-=i.x,e.y-=i.y;return i.r}function mp(t){return Math.sqrt(t.value)}function xp(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function wp(t,n,e){return function(r){if(i=r.children){var i,o,a,u=i.length,c=t(r)*n||0;if(c)for(o=0;o<u;++o)i[o].r+=c;if(a=bp(i,e),c)for(o=0;o<u;++o)i[o].r-=c;r.r=a+c}}}function Mp(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function Tp(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Ap(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(r-n)/t.value;++u<c;)(o=a[u]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*f}var Sp={depth:-1},Ep={},Np={};function kp(t){return t.id}function Cp(t){return t.parentId}function Pp(t){let n=t.length;if(n<2)return"";for(;--n>1&&!zp(t,n););return t.slice(0,n)}function zp(t,n){if("/"===t[n]){let e=0;for(;n>0&&"\\"===t[--n];)++e;if(0==(1&e))return!0}return!1}function $p(t,n){return t.parent===n.parent?1:2}function Dp(t){var n=t.children;return n?n[0]:t.t}function Rp(t){var n=t.children;return n?n[n.length-1]:t.t}function Fp(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function qp(t,n,e){return t.a.parent===n.parent?t.a:e}function Up(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function Ip(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(i-e)/t.value;++u<c;)(o=a[u]).x0=n,o.x1=r,o.y0=e,o.y1=e+=o.value*f}Up.prototype=Object.create(Qd.prototype);var Op=(1+Math.sqrt(5))/2;function Bp(t,n,e,r,i,o){for(var a,u,c,f,s,l,h,d,p,g,y,v=[],_=n.children,b=0,m=0,x=_.length,w=n.value;b<x;){c=i-e,f=o-r;do{s=_[m++].value}while(!s&&m<x);for(l=h=s,y=s*s*(g=Math.max(f/c,c/f)/(w*t)),p=Math.max(h/y,y/l);m<x;++m){if(s+=u=_[m].value,u<l&&(l=u),u>h&&(h=u),y=s*s*g,(d=Math.max(h/y,y/l))>p){s-=u;break}p=d}v.push(a={value:s,dice:c<f,children:_.slice(b,m)}),a.dice?Ap(a,e,r,i,w?r+=f*s/w:o):Ip(a,e,r,w?e+=c*s/w:i,o),w-=s,b=m}return v}var Yp=function t(n){function e(t,e,r,i,o){Bp(n,t,e,r,i,o)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Op);var Lp=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l<h;){for(c=(u=a[l]).children,f=u.value=0,s=c.length;f<s;++f)u.value+=c[f].value;u.dice?Ap(u,e,r,i,d?r+=(o-r)*u.value/d:o):Ip(u,e,r,d?e+=(i-e)*u.value/d:i,o),d-=u.value}else t._squarify=a=Bp(n,t,e,r,i,o),a.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Op);function jp(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function Hp(t,n){return t[0]-n[0]||t[1]-n[1]}function Xp(t){const n=t.length,e=[0,1];let r,i=2;for(r=2;r<n;++r){for(;i>1&&jp(t[e[i-2]],t[e[i-1]],t[r])<=0;)--i;e[i++]=r}return e.slice(0,i)}var Gp=Math.random,Vp=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}(Gp),Wp=function t(n){function e(t,e){return arguments.length<2&&(e=t,t=0),t=Math.floor(t),e=Math.floor(e)-t,function(){return Math.floor(n()*e+t)}}return e.source=t,e}(Gp),Zp=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}(Gp),Kp=function t(n){var e=Zp.source(n);function r(){var t=e.apply(this,arguments);return function(){return Math.exp(t())}}return r.source=t,r}(Gp),Qp=function t(n){function e(t){return(t=+t)<=0?()=>0:function(){for(var e=0,r=t;r>1;--r)e+=n();return e+r*n()}}return e.source=t,e}(Gp),Jp=function t(n){var e=Qp.source(n);function r(t){if(0==(t=+t))return n;var r=e(t);return function(){return r()/t}}return r.source=t,r}(Gp),tg=function t(n){function e(t){return function(){return-Math.log1p(-n())/t}}return e.source=t,e}(Gp),ng=function t(n){function e(t){if((t=+t)<0)throw new RangeError("invalid alpha");return t=1/-t,function(){return Math.pow(1-n(),t)}}return e.source=t,e}(Gp),eg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return function(){return Math.floor(n()+t)}}return e.source=t,e}(Gp),rg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return 0===t?()=>1/0:1===t?()=>1:(t=Math.log1p(-t),function(){return 1+Math.floor(Math.log1p(-n())/t)})}return e.source=t,e}(Gp),ig=function t(n){var e=Zp.source(n)();function r(t,r){if((t=+t)<0)throw new RangeError("invalid k");if(0===t)return()=>0;if(r=null==r?1:+r,1===t)return()=>-Math.log1p(-n())*r;var i=(t<1?t+1:t)-1/3,o=1/(3*Math.sqrt(i)),a=t<1?()=>Math.pow(n(),1/t):()=>1;return function(){do{do{var t=e(),u=1+o*t}while(u<=0);u*=u*u;var c=1-n()}while(c>=1-.0331*t*t*t*t&&Math.log(c)>=.5*t*t+i*(1-u+Math.log(u)));return i*u*a()*r}}return r.source=t,r}(Gp),og=function t(n){var e=ig.source(n);function r(t,n){var r=e(t),i=e(n);return function(){var t=r();return 0===t?0:t/(t+i())}}return r.source=t,r}(Gp),ag=function t(n){var e=rg.source(n),r=og.source(n);function i(t,n){return t=+t,(n=+n)>=1?()=>t:n<=0?()=>0:function(){for(var i=0,o=t,a=n;o*a>16&&o*(1-a)>16;){var u=Math.floor((o+1)*a),c=r(u,o-u+1)();c<=a?(i+=u,o-=u,a=(a-c)/(1-c)):(o=u-1,a/=c)}for(var f=a<.5,s=e(f?a:1-a),l=s(),h=0;l<=o;++h)l+=s();return i+(f?h:o-h)}}return i.source=t,i}(Gp),ug=function t(n){function e(t,e,r){var i;return 0==(t=+t)?i=t=>-Math.log(t):(t=1/t,i=n=>Math.pow(n,t)),e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*i(-Math.log1p(-n()))}}return e.source=t,e}(Gp),cg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){return t+e*Math.tan(Math.PI*n())}}return e.source=t,e}(Gp),fg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){var r=n();return t+e*Math.log(r/(1-r))}}return e.source=t,e}(Gp),sg=function t(n){var e=ig.source(n),r=ag.source(n);function i(t){return function(){for(var i=0,o=t;o>16;){var a=Math.floor(.875*o),u=e(a)();if(u>o)return i+r(a-1,o/u)();i+=a,o-=u}for(var c=-Math.log1p(-n()),f=0;c<=o;++f)c-=Math.log1p(-n());return i+f}}return i.source=t,i}(Gp);const lg=1/4294967296;function hg(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function dg(t,n){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof n?this.interpolator(n):this.range(n)}return this}const pg=Symbol("implicit");function gg(){var t=new InternMap,n=[],e=[],r=pg;function i(i){let o=t.get(i);if(void 0===o){if(r!==pg)return r;t.set(i,o=n.push(i)-1)}return e[o%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=new InternMap;for(const r of e)t.has(r)||t.set(r,n.push(r)-1);return i},i.range=function(t){return arguments.length?(e=Array.from(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return gg(n,e).unknown(r)},hg.apply(i,arguments),i}function yg(){var t,n,e=gg().unknown(void 0),r=e.domain,i=e.range,o=0,a=1,u=!1,c=0,f=0,s=.5;function l(){var e=r().length,l=a<o,h=l?a:o,d=l?o:a;t=(d-h)/Math.max(1,e-c+2*f),u&&(t=Math.floor(t)),h+=(d-h-t*(e-c))*s,n=t*(1-c),u&&(h=Math.round(h),n=Math.round(n));var p=lt(e).map((function(n){return h+t*n}));return i(l?p.reverse():p)}return delete e.unknown,e.domain=function(t){return arguments.length?(r(t),l()):r()},e.range=function(t){return arguments.length?([o,a]=t,o=+o,a=+a,l()):[o,a]},e.rangeRound=function(t){return[o,a]=t,o=+o,a=+a,u=!0,l()},e.bandwidth=function(){return n},e.step=function(){return t},e.round=function(t){return arguments.length?(u=!!t,l()):u},e.padding=function(t){return arguments.length?(c=Math.min(1,f=+t),l()):c},e.paddingInner=function(t){return arguments.length?(c=Math.min(1,t),l()):c},e.paddingOuter=function(t){return arguments.length?(f=+t,l()):f},e.align=function(t){return arguments.length?(s=Math.max(0,Math.min(1,t)),l()):s},e.copy=function(){return yg(r(),[o,a]).round(u).paddingInner(c).paddingOuter(f).align(s)},hg.apply(l(),arguments)}function vg(t){var n=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return vg(n())},t}function _g(t){return+t}var bg=[0,1];function mg(t){return t}function xg(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:function(t){return function(){return t}}(isNaN(n)?NaN:.5)}function wg(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i<r?(r=xg(i,r),o=e(a,o)):(r=xg(r,i),o=e(o,a)),function(t){return o(r(t))}}function Mg(t,n,e){var r=Math.min(t.length,n.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++a<r;)i[a]=xg(t[a],t[a+1]),o[a]=e(n[a],n[a+1]);return function(n){var e=s(t,n,1,r)-1;return o[e](i[e](n))}}function Tg(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ag(){var t,n,e,r,i,o,a=bg,u=bg,c=Gr,f=mg;function s(){var t=Math.min(a.length,u.length);return f!==mg&&(f=function(t,n){var e;return t>n&&(e=t,t=n,n=e),function(e){return Math.max(t,Math.min(n,e))}}(a[0],a[t-1])),r=t>2?Mg:wg,i=o=null,l}function l(n){return null==n||isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),Yr)))(e)))},l.domain=function(t){return arguments.length?(a=Array.from(t,_g),s()):a.slice()},l.range=function(t){return arguments.length?(u=Array.from(t),s()):u.slice()},l.rangeRound=function(t){return u=Array.from(t),c=Vr,s()},l.clamp=function(t){return arguments.length?(f=!!t||mg,s()):f!==mg},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function Sg(){return Ag()(mg,mg)}function Eg(n,e,r,i){var o,a=W(n,e,r);switch((i=Jc(null==i?",f":i)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=lf(a,u))||(i.precision=o),t.formatPrefix(i,u);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=hf(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=sf(a))||(i.precision=o-2*("%"===i.type))}return t.format(i)}function Ng(t){var n=t.domain;return t.ticks=function(t){var e=n();return G(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Eg(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i,o=n(),a=0,u=o.length-1,c=o[a],f=o[u],s=10;for(f<c&&(i=c,c=f,f=i,i=a,a=u,u=i);s-- >0;){if((i=V(c,f,e))===r)return o[a]=c,o[u]=f,n(o);if(i>0)c=Math.floor(c/i)*i,f=Math.ceil(f/i)*i;else{if(!(i<0))break;c=Math.ceil(c*i)/i,f=Math.floor(f*i)/i}r=i}return t},t}function kg(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a<o&&(e=r,r=i,i=e,e=o,o=a,a=e),t[r]=n.floor(o),t[i]=n.ceil(a),t}function Cg(t){return Math.log(t)}function Pg(t){return Math.exp(t)}function zg(t){return-Math.log(-t)}function $g(t){return-Math.exp(-t)}function Dg(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Rg(t){return(n,e)=>-t(-n,e)}function Fg(n){const e=n(Cg,Pg),r=e.domain;let i,o,a=10;function u(){return i=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),n=>Math.log(n)/t)}(a),o=function(t){return 10===t?Dg:t===Math.E?Math.exp:n=>Math.pow(t,n)}(a),r()[0]<0?(i=Rg(i),o=Rg(o),n(zg,$g)):n(Cg,Pg),e}return e.base=function(t){return arguments.length?(a=+t,u()):a},e.domain=function(t){return arguments.length?(r(t),u()):r()},e.ticks=t=>{const n=r();let e=n[0],u=n[n.length-1];const c=u<e;c&&([e,u]=[u,e]);let f,s,l=i(e),h=i(u);const d=null==t?10:+t;let p=[];if(!(a%1)&&h-l<d){if(l=Math.floor(l),h=Math.ceil(h),e>0){for(;l<=h;++l)for(f=1;f<a;++f)if(s=l<0?f/o(-l):f*o(l),!(s<e)){if(s>u)break;p.push(s)}}else for(;l<=h;++l)for(f=a-1;f>=1;--f)if(s=l>0?f/o(-l):f*o(l),!(s<e)){if(s>u)break;p.push(s)}2*p.length<d&&(p=G(e,u,d))}else p=G(l,h,Math.min(h-l,d)).map(o);return c?p.reverse():p},e.tickFormat=(n,r)=>{if(null==n&&(n=10),null==r&&(r=10===a?"s":","),"function"!=typeof r&&(a%1||null!=(r=Jc(r)).precision||(r.trim=!0),r=t.format(r)),n===1/0)return r;const u=Math.max(1,a*n/e.ticks().length);return t=>{let n=t/o(Math.round(i(t)));return n*a<a-.5&&(n*=a),n<=u?r(t):""}},e.nice=()=>r(kg(r(),{floor:t=>o(Math.floor(i(t))),ceil:t=>o(Math.ceil(i(t)))})),e}function qg(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function Ug(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function Ig(t){var n=1,e=t(qg(n),Ug(n));return e.constant=function(e){return arguments.length?t(qg(n=+e),Ug(n)):n},Ng(e)}function Og(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function Bg(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Yg(t){return t<0?-t*t:t*t}function Lg(t){var n=t(mg,mg),e=1;return n.exponent=function(n){return arguments.length?1===(e=+n)?t(mg,mg):.5===e?t(Bg,Yg):t(Og(e),Og(1/e)):e},Ng(n)}function jg(){var t=Lg(Ag());return t.copy=function(){return Tg(t,jg()).exponent(t.exponent())},hg.apply(t,arguments),t}function Hg(t){return Math.sign(t)*t*t}const Xg=new Date,Gg=new Date;function Vg(t,n,e,r){function i(n){return t(n=0===arguments.length?new Date:new Date(+n)),n}return i.floor=n=>(t(n=new Date(+n)),n),i.ceil=e=>(t(e=new Date(e-1)),n(e,1),t(e),e),i.round=t=>{const n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=(t,e)=>(n(t=new Date(+t),null==e?1:Math.floor(e)),t),i.range=(e,r,o)=>{const a=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e<r&&o>0))return a;let u;do{a.push(u=new Date(+e)),n(e,o),t(e)}while(u<e&&e<r);return a},i.filter=e=>Vg((n=>{if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)}),((t,r)=>{if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})),e&&(i.count=(n,r)=>(Xg.setTime(+n),Gg.setTime(+r),t(Xg),t(Gg),Math.floor(e(Xg,Gg))),i.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?n=>r(n)%t==0:n=>i.count(0,n)%t==0):i:null)),i}const Wg=Vg((()=>{}),((t,n)=>{t.setTime(+t+n)}),((t,n)=>n-t));Wg.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Vg((n=>{n.setTime(Math.floor(n/t)*t)}),((n,e)=>{n.setTime(+n+e*t)}),((n,e)=>(e-n)/t)):Wg:null);const Zg=Wg.range,Kg=1e3,Qg=6e4,Jg=36e5,ty=864e5,ny=6048e5,ey=2592e6,ry=31536e6,iy=Vg((t=>{t.setTime(t-t.getMilliseconds())}),((t,n)=>{t.setTime(+t+n*Kg)}),((t,n)=>(n-t)/Kg),(t=>t.getUTCSeconds())),oy=iy.range,ay=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getMinutes())),uy=ay.range,cy=Vg((t=>{t.setUTCSeconds(0,0)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getUTCMinutes())),fy=cy.range,sy=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg-t.getMinutes()*Qg)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getHours())),ly=sy.range,hy=Vg((t=>{t.setUTCMinutes(0,0,0)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getUTCHours())),dy=hy.range,py=Vg((t=>t.setHours(0,0,0,0)),((t,n)=>t.setDate(t.getDate()+n)),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ty),(t=>t.getDate()-1)),gy=py.range,yy=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>t.getUTCDate()-1)),vy=yy.range,_y=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>Math.floor(t/ty))),by=_y.range;function my(t){return Vg((n=>{n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)}),((t,n)=>{t.setDate(t.getDate()+7*n)}),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ny))}const xy=my(0),wy=my(1),My=my(2),Ty=my(3),Ay=my(4),Sy=my(5),Ey=my(6),Ny=xy.range,ky=wy.range,Cy=My.range,Py=Ty.range,zy=Ay.range,$y=Sy.range,Dy=Ey.range;function Ry(t){return Vg((n=>{n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+7*n)}),((t,n)=>(n-t)/ny))}const Fy=Ry(0),qy=Ry(1),Uy=Ry(2),Iy=Ry(3),Oy=Ry(4),By=Ry(5),Yy=Ry(6),Ly=Fy.range,jy=qy.range,Hy=Uy.range,Xy=Iy.range,Gy=Oy.range,Vy=By.range,Wy=Yy.range,Zy=Vg((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,n)=>{t.setMonth(t.getMonth()+n)}),((t,n)=>n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())),(t=>t.getMonth())),Ky=Zy.range,Qy=Vg((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCMonth(t.getUTCMonth()+n)}),((t,n)=>n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth())),Jy=Qy.range,tv=Vg((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,n)=>{t.setFullYear(t.getFullYear()+n)}),((t,n)=>n.getFullYear()-t.getFullYear()),(t=>t.getFullYear()));tv.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)}),((n,e)=>{n.setFullYear(n.getFullYear()+e*t)})):null;const nv=tv.range,ev=Vg((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n)}),((t,n)=>n.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));ev.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)}),((n,e)=>{n.setUTCFullYear(n.getUTCFullYear()+e*t)})):null;const rv=ev.range;function iv(t,n,e,i,o,a){const u=[[iy,1,Kg],[iy,5,5e3],[iy,15,15e3],[iy,30,3e4],[a,1,Qg],[a,5,3e5],[a,15,9e5],[a,30,18e5],[o,1,Jg],[o,3,108e5],[o,6,216e5],[o,12,432e5],[i,1,ty],[i,2,1728e5],[e,1,ny],[n,1,ey],[n,3,7776e6],[t,1,ry]];function c(n,e,i){const o=Math.abs(e-n)/i,a=r((([,,t])=>t)).right(u,o);if(a===u.length)return t.every(W(n/ry,e/ry,i));if(0===a)return Wg.every(Math.max(W(n,e,i),1));const[c,f]=u[o/u[a-1][2]<u[a][2]/o?a-1:a];return c.every(f)}return[function(t,n,e){const r=n<t;r&&([t,n]=[n,t]);const i=e&&"function"==typeof e.range?e:c(t,n,e),o=i?i.range(t,+n+1):[];return r?o.reverse():o},c]}const[ov,av]=iv(ev,Qy,Fy,_y,hy,cy),[uv,cv]=iv(tv,Zy,xy,py,sy,ay);function fv(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function sv(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function lv(t,n,e){return{y:t,m:n,d:e,H:0,M:0,S:0,L:0}}function hv(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=mv(i),s=xv(i),l=mv(o),h=xv(o),d=mv(a),p=xv(a),g=mv(u),y=xv(u),v=mv(c),_=xv(c),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Yv,e:Yv,f:Gv,g:i_,G:a_,H:Lv,I:jv,j:Hv,L:Xv,m:Vv,M:Wv,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:k_,s:C_,S:Zv,u:Kv,U:Qv,V:t_,w:n_,W:e_,x:null,X:null,y:r_,Y:o_,Z:u_,"%":N_},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:c_,e:c_,f:d_,g:T_,G:S_,H:f_,I:s_,j:l_,L:h_,m:p_,M:g_,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:k_,s:C_,S:y_,u:v_,U:__,V:m_,w:x_,W:w_,x:null,X:null,y:M_,Y:A_,Z:E_,"%":N_},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p.get(r[0].toLowerCase()),e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h.get(r[0].toLowerCase()),e+r[0].length):-1},b:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=_.get(r[0].toLowerCase()),e+r[0].length):-1},B:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.m=y.get(r[0].toLowerCase()),e+r[0].length):-1},c:function(t,e,r){return T(t,n,e,r)},d:zv,e:zv,f:Uv,g:Nv,G:Ev,H:Dv,I:Dv,j:$v,L:qv,m:Pv,M:Rv,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s.get(r[0].toLowerCase()),e+r[0].length):-1},q:Cv,Q:Ov,s:Bv,S:Fv,u:Mv,U:Tv,V:Av,w:wv,W:Sv,x:function(t,n,r){return T(t,e,n,r)},X:function(t,n,e){return T(t,r,n,e)},y:Nv,Y:Ev,Z:kv,"%":Iv};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u<f;)37===t.charCodeAt(u)&&(a.push(t.slice(c,u)),null!=(i=pv[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(o=n[r])&&(r=o(e,i)),a.push(r),c=u+1);return a.push(t.slice(c,u)),a.join("")}}function M(t,n){return function(e){var r,i,o=lv(1900,void 0,1);if(T(o,t,e+="",0)!=e.length)return null;if("Q"in o)return new Date(o.Q);if("s"in o)return new Date(1e3*o.s+("L"in o?o.L:0));if(n&&!("Z"in o)&&(o.Z=0),"p"in o&&(o.H=o.H%12+12*o.p),void 0===o.m&&(o.m="q"in o?o.q:0),"V"in o){if(o.V<1||o.V>53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=sv(lv(o.y,0,1))).getUTCDay(),r=i>4||0===i?qy.ceil(r):qy(r),r=yy.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=fv(lv(o.y,0,1))).getDay(),r=i>4||0===i?wy.ceil(r):wy(r),r=py.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?sv(lv(o.y,0,1)).getUTCDay():fv(lv(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,sv(o)):fv(o)}}function T(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a<u;){if(r>=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in pv?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var dv,pv={"-":"",_:" ",0:"0"},gv=/^\s*\d+/,yv=/^%/,vv=/[\\^$*+?|[\]().{}]/g;function _v(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<e?new Array(e-o+1).join(n)+i:i)}function bv(t){return t.replace(vv,"\\$&")}function mv(t){return new RegExp("^(?:"+t.map(bv).join("|")+")","i")}function xv(t){return new Map(t.map(((t,n)=>[t.toLowerCase(),n])))}function wv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function Mv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function Tv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function Av(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function Sv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function Ev(t,n,e){var r=gv.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function Nv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function kv(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 Cv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function Pv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function zv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function $v(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Dv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Rv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Fv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function qv(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Uv(t,n,e){var r=gv.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Iv(t,n,e){var r=yv.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Ov(t,n,e){var r=gv.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function Bv(t,n,e){var r=gv.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function Yv(t,n){return _v(t.getDate(),n,2)}function Lv(t,n){return _v(t.getHours(),n,2)}function jv(t,n){return _v(t.getHours()%12||12,n,2)}function Hv(t,n){return _v(1+py.count(tv(t),t),n,3)}function Xv(t,n){return _v(t.getMilliseconds(),n,3)}function Gv(t,n){return Xv(t,n)+"000"}function Vv(t,n){return _v(t.getMonth()+1,n,2)}function Wv(t,n){return _v(t.getMinutes(),n,2)}function Zv(t,n){return _v(t.getSeconds(),n,2)}function Kv(t){var n=t.getDay();return 0===n?7:n}function Qv(t,n){return _v(xy.count(tv(t)-1,t),n,2)}function Jv(t){var n=t.getDay();return n>=4||0===n?Ay(t):Ay.ceil(t)}function t_(t,n){return t=Jv(t),_v(Ay.count(tv(t),t)+(4===tv(t).getDay()),n,2)}function n_(t){return t.getDay()}function e_(t,n){return _v(wy.count(tv(t)-1,t),n,2)}function r_(t,n){return _v(t.getFullYear()%100,n,2)}function i_(t,n){return _v((t=Jv(t)).getFullYear()%100,n,2)}function o_(t,n){return _v(t.getFullYear()%1e4,n,4)}function a_(t,n){var e=t.getDay();return _v((t=e>=4||0===e?Ay(t):Ay.ceil(t)).getFullYear()%1e4,n,4)}function u_(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+_v(n/60|0,"0",2)+_v(n%60,"0",2)}function c_(t,n){return _v(t.getUTCDate(),n,2)}function f_(t,n){return _v(t.getUTCHours(),n,2)}function s_(t,n){return _v(t.getUTCHours()%12||12,n,2)}function l_(t,n){return _v(1+yy.count(ev(t),t),n,3)}function h_(t,n){return _v(t.getUTCMilliseconds(),n,3)}function d_(t,n){return h_(t,n)+"000"}function p_(t,n){return _v(t.getUTCMonth()+1,n,2)}function g_(t,n){return _v(t.getUTCMinutes(),n,2)}function y_(t,n){return _v(t.getUTCSeconds(),n,2)}function v_(t){var n=t.getUTCDay();return 0===n?7:n}function __(t,n){return _v(Fy.count(ev(t)-1,t),n,2)}function b_(t){var n=t.getUTCDay();return n>=4||0===n?Oy(t):Oy.ceil(t)}function m_(t,n){return t=b_(t),_v(Oy.count(ev(t),t)+(4===ev(t).getUTCDay()),n,2)}function x_(t){return t.getUTCDay()}function w_(t,n){return _v(qy.count(ev(t)-1,t),n,2)}function M_(t,n){return _v(t.getUTCFullYear()%100,n,2)}function T_(t,n){return _v((t=b_(t)).getUTCFullYear()%100,n,2)}function A_(t,n){return _v(t.getUTCFullYear()%1e4,n,4)}function S_(t,n){var e=t.getUTCDay();return _v((t=e>=4||0===e?Oy(t):Oy.ceil(t)).getUTCFullYear()%1e4,n,4)}function E_(){return"+0000"}function N_(){return"%"}function k_(t){return+t}function C_(t){return Math.floor(+t/1e3)}function P_(n){return dv=hv(n),t.timeFormat=dv.format,t.timeParse=dv.parse,t.utcFormat=dv.utcFormat,t.utcParse=dv.utcParse,dv}t.timeFormat=void 0,t.timeParse=void 0,t.utcFormat=void 0,t.utcParse=void 0,P_({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 z_="%Y-%m-%dT%H:%M:%S.%LZ";var $_=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(z_),D_=$_;var R_=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse(z_),F_=R_;function q_(t){return new Date(t)}function U_(t){return t instanceof Date?+t:+new Date(+t)}function I_(t,n,e,r,i,o,a,u,c,f){var s=Sg(),l=s.invert,h=s.domain,d=f(".%L"),p=f(":%S"),g=f("%I:%M"),y=f("%I %p"),v=f("%a %d"),_=f("%b %d"),b=f("%B"),m=f("%Y");function x(t){return(c(t)<t?d:u(t)<t?p:a(t)<t?g:o(t)<t?y:r(t)<t?i(t)<t?v:_:e(t)<t?b:m)(t)}return s.invert=function(t){return new Date(l(t))},s.domain=function(t){return arguments.length?h(Array.from(t,U_)):h().map(q_)},s.ticks=function(n){var e=h();return t(e[0],e[e.length-1],null==n?10:n)},s.tickFormat=function(t,n){return null==n?x:f(n)},s.nice=function(t){var e=h();return t&&"function"==typeof t.range||(t=n(e[0],e[e.length-1],null==t?10:t)),t?h(kg(e,t)):s},s.copy=function(){return Tg(s,I_(t,n,e,r,i,o,a,u,c,f))},s}function O_(){var t,n,e,r,i,o=0,a=1,u=mg,c=!1;function f(n){return null==n||isNaN(n=+n)?i:u(0===e?.5:(n=(r(n)-t)*e,c?Math.max(0,Math.min(1,n)):n))}function s(t){return function(n){var e,r;return arguments.length?([e,r]=n,u=t(e,r),f):[u(0),u(1)]}}return f.domain=function(i){return arguments.length?([o,a]=i,t=r(o=+o),n=r(a=+a),e=t===n?0:1/(n-t),f):[o,a]},f.clamp=function(t){return arguments.length?(c=!!t,f):c},f.interpolator=function(t){return arguments.length?(u=t,f):u},f.range=s(Gr),f.rangeRound=s(Vr),f.unknown=function(t){return arguments.length?(i=t,f):i},function(i){return r=i,t=i(o),n=i(a),e=t===n?0:1/(n-t),f}}function B_(t,n){return n.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Y_(){var t=Lg(O_());return t.copy=function(){return B_(t,Y_()).exponent(t.exponent())},dg.apply(t,arguments)}function L_(){var t,n,e,r,i,o,a,u=0,c=.5,f=1,s=1,l=mg,h=!1;function d(t){return isNaN(t=+t)?a:(t=.5+((t=+o(t))-n)*(s*t<s*n?r:i),l(h?Math.max(0,Math.min(1,t)):t))}function p(t){return function(n){var e,r,i;return arguments.length?([e,r,i]=n,l=di(t,[e,r,i]),d):[l(0),l(.5),l(1)]}}return d.domain=function(a){return arguments.length?([u,c,f]=a,t=o(u=+u),n=o(c=+c),e=o(f=+f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),s=n<t?-1:1,d):[u,c,f]},d.clamp=function(t){return arguments.length?(h=!!t,d):h},d.interpolator=function(t){return arguments.length?(l=t,d):l},d.range=p(Gr),d.rangeRound=p(Vr),d.unknown=function(t){return arguments.length?(a=t,d):a},function(a){return o=a,t=a(u),n=a(c),e=a(f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),s=n<t?-1:1,d}}function j_(){var t=Lg(L_());return t.copy=function(){return B_(t,j_()).exponent(t.exponent())},dg.apply(t,arguments)}function H_(t){for(var n=t.length/6|0,e=new Array(n),r=0;r<n;)e[r]="#"+t.slice(6*r,6*++r);return e}var X_=H_("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),G_=H_("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),V_=H_("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),W_=H_("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),Z_=H_("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),K_=H_("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),Q_=H_("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),J_=H_("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),tb=H_("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),nb=H_("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"),eb=t=>Fr(t[t.length-1]),rb=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(H_),ib=eb(rb),ob=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(H_),ab=eb(ob),ub=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(H_),cb=eb(ub),fb=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(H_),sb=eb(fb),lb=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(H_),hb=eb(lb),db=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(H_),pb=eb(db),gb=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(H_),yb=eb(gb),vb=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(H_),_b=eb(vb),bb=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(H_),mb=eb(bb),xb=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(H_),wb=eb(xb),Mb=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(H_),Tb=eb(Mb),Ab=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(H_),Sb=eb(Ab),Eb=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(H_),Nb=eb(Eb),kb=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(H_),Cb=eb(kb),Pb=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(H_),zb=eb(Pb),$b=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(H_),Db=eb($b),Rb=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(H_),Fb=eb(Rb),qb=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(H_),Ub=eb(qb),Ib=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(H_),Ob=eb(Ib),Bb=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(H_),Yb=eb(Bb),Lb=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(H_),jb=eb(Lb),Hb=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(H_),Xb=eb(Hb),Gb=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(H_),Vb=eb(Gb),Wb=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(H_),Zb=eb(Wb),Kb=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(H_),Qb=eb(Kb),Jb=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(H_),tm=eb(Jb),nm=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(H_),em=eb(nm);var rm=hi(Tr(300,.5,0),Tr(-240,.5,1)),im=hi(Tr(-100,.75,.35),Tr(80,1.5,.8)),om=hi(Tr(260,.75,.35),Tr(80,1.5,.8)),am=Tr();var um=Fe(),cm=Math.PI/3,fm=2*Math.PI/3;function sm(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}var lm=sm(H_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),hm=sm(H_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),dm=sm(H_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),pm=sm(H_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function gm(t){return function(){return t}}const ym=Math.abs,vm=Math.atan2,_m=Math.cos,bm=Math.max,mm=Math.min,xm=Math.sin,wm=Math.sqrt,Mm=1e-12,Tm=Math.PI,Am=Tm/2,Sm=2*Tm;function Em(t){return t>=1?Am:t<=-1?-Am:Math.asin(t)}function Nm(t){let n=3;return t.digits=function(e){if(!arguments.length)return n;if(null==e)n=null;else{const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);n=t}return t},()=>new Ua(n)}function km(t){return t.innerRadius}function Cm(t){return t.outerRadius}function Pm(t){return t.startAngle}function zm(t){return t.endAngle}function $m(t){return t&&t.padAngle}function Dm(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/wm(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,g=r+l,y=(h+p)/2,v=(d+g)/2,_=p-h,b=g-d,m=_*_+b*b,x=i-o,w=h*g-p*d,M=(b<0?-1:1)*wm(bm(0,x*x*m-w*w)),T=(w*b-_*M)/m,A=(-w*_-b*M)/m,S=(w*b+_*M)/m,E=(-w*_+b*M)/m,N=T-y,k=A-v,C=S-y,P=E-v;return N*N+k*k>C*C+P*P&&(T=S,A=E),{cx:T,cy:A,x01:-s,y01:-l,x11:T*(i/x-1),y11:A*(i/x-1)}}var Rm=Array.prototype.slice;function Fm(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function qm(t){this._context=t}function Um(t){return new qm(t)}function Im(t){return t[0]}function Om(t){return t[1]}function Bm(t,n){var e=gm(!0),r=null,i=Um,o=null,a=Nm(u);function u(u){var c,f,s,l=(u=Fm(u)).length,h=!1;for(null==r&&(o=i(s=a())),c=0;c<=l;++c)!(c<l&&e(f=u[c],c,u))===h&&((h=!h)?o.lineStart():o.lineEnd()),h&&o.point(+t(f,c,u),+n(f,c,u));if(s)return o=null,s+""||null}return t="function"==typeof t?t:void 0===t?Im:gm(t),n="function"==typeof n?n:void 0===n?Om:gm(n),u.x=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),u):t},u.y=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),u):n},u.defined=function(t){return arguments.length?(e="function"==typeof t?t:gm(!!t),u):e},u.curve=function(t){return arguments.length?(i=t,null!=r&&(o=i(r)),u):i},u.context=function(t){return arguments.length?(null==t?r=o=null:o=i(r=t),u):r},u}function Ym(t,n,e){var r=null,i=gm(!0),o=null,a=Um,u=null,c=Nm(f);function f(f){var s,l,h,d,p,g=(f=Fm(f)).length,y=!1,v=new Array(g),_=new Array(g);for(null==o&&(u=a(p=c())),s=0;s<=g;++s){if(!(s<g&&i(d=f[s],s,f))===y)if(y=!y)l=s,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),h=s-1;h>=l;--h)u.point(v[h],_[h]);u.lineEnd(),u.areaEnd()}y&&(v[s]=+t(d,s,f),_[s]=+n(d,s,f),u.point(r?+r(d,s,f):v[s],e?+e(d,s,f):_[s]))}if(p)return u=null,p+""||null}function s(){return Bm().defined(i).curve(a).context(o)}return t="function"==typeof t?t:void 0===t?Im:gm(+t),n="function"==typeof n?n:gm(void 0===n?0:+n),e="function"==typeof e?e:void 0===e?Om:gm(+e),f.x=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),r=null,f):t},f.x0=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),f):t},f.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:gm(+t),f):r},f.y=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),e=null,f):n},f.y0=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),f):n},f.y1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:gm(+t),f):e},f.lineX0=f.lineY0=function(){return s().x(t).y(n)},f.lineY1=function(){return s().x(t).y(e)},f.lineX1=function(){return s().x(r).y(n)},f.defined=function(t){return arguments.length?(i="function"==typeof t?t:gm(!!t),f):i},f.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),f):a},f.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),f):o},f}function Lm(t,n){return n<t?-1:n>t?1:n>=t?0:NaN}function jm(t){return t}qm.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 Hm=Gm(Um);function Xm(t){this._curve=t}function Gm(t){function n(n){return new Xm(t(n))}return n._curve=t,n}function Vm(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(Gm(t)):n()._curve},t}function Wm(){return Vm(Bm().curve(Hm))}function Zm(){var t=Ym().curve(Hm),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 Vm(e())},delete t.lineX0,t.lineEndAngle=function(){return Vm(r())},delete t.lineX1,t.lineInnerRadius=function(){return Vm(i())},delete t.lineY0,t.lineOuterRadius=function(){return Vm(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Gm(t)):n()._curve},t}function Km(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}Xm.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))}};class Qm{constructor(t,n){this._context=t,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(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._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,n,t,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,t,this._y0,t,n)}this._x0=t,this._y0=n}}class Jm{constructor(t){this._context=t}lineStart(){this._point=0}lineEnd(){}point(t,n){if(t=+t,n=+n,0===this._point)this._point=1;else{const e=Km(this._x0,this._y0),r=Km(this._x0,this._y0=(this._y0+n)/2),i=Km(t,this._y0),o=Km(t,n);this._context.moveTo(...e),this._context.bezierCurveTo(...r,...i,...o)}this._x0=t,this._y0=n}}function tx(t){return new Qm(t,!0)}function nx(t){return new Qm(t,!1)}function ex(t){return new Jm(t)}function rx(t){return t.source}function ix(t){return t.target}function ox(t){let n=rx,e=ix,r=Im,i=Om,o=null,a=null,u=Nm(c);function c(){let c;const f=Rm.call(arguments),s=n.apply(this,f),l=e.apply(this,f);if(null==o&&(a=t(c=u())),a.lineStart(),f[0]=s,a.point(+r.apply(this,f),+i.apply(this,f)),f[0]=l,a.point(+r.apply(this,f),+i.apply(this,f)),a.lineEnd(),c)return a=null,c+""||null}return c.source=function(t){return arguments.length?(n=t,c):n},c.target=function(t){return arguments.length?(e=t,c):e},c.x=function(t){return arguments.length?(r="function"==typeof t?t:gm(+t),c):r},c.y=function(t){return arguments.length?(i="function"==typeof t?t:gm(+t),c):i},c.context=function(n){return arguments.length?(null==n?o=a=null:a=t(o=n),c):o},c}const ax=wm(3);var ux={draw(t,n){const e=.59436*wm(n+mm(n/28,.75)),r=e/2,i=r*ax;t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-i,-r),t.lineTo(i,r),t.moveTo(-i,r),t.lineTo(i,-r)}},cx={draw(t,n){const e=wm(n/Tm);t.moveTo(e,0),t.arc(0,0,e,0,Sm)}},fx={draw(t,n){const e=wm(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()}};const sx=wm(1/3),lx=2*sx;var hx={draw(t,n){const e=wm(n/lx),r=e*sx;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},dx={draw(t,n){const e=.62625*wm(n);t.moveTo(0,-e),t.lineTo(e,0),t.lineTo(0,e),t.lineTo(-e,0),t.closePath()}},px={draw(t,n){const e=.87559*wm(n-mm(n/7,2));t.moveTo(-e,0),t.lineTo(e,0),t.moveTo(0,e),t.lineTo(0,-e)}},gx={draw(t,n){const e=wm(n),r=-e/2;t.rect(r,r,e,e)}},yx={draw(t,n){const e=.4431*wm(n);t.moveTo(e,e),t.lineTo(e,-e),t.lineTo(-e,-e),t.lineTo(-e,e),t.closePath()}};const vx=xm(Tm/10)/xm(7*Tm/10),_x=xm(Sm/10)*vx,bx=-_m(Sm/10)*vx;var mx={draw(t,n){const e=wm(.8908130915292852*n),r=_x*e,i=bx*e;t.moveTo(0,-e),t.lineTo(r,i);for(let n=1;n<5;++n){const o=Sm*n/5,a=_m(o),u=xm(o);t.lineTo(u*e,-a*e),t.lineTo(a*r-u*i,u*r+a*i)}t.closePath()}};const xx=wm(3);var wx={draw(t,n){const e=-wm(n/(3*xx));t.moveTo(0,2*e),t.lineTo(-xx*e,-e),t.lineTo(xx*e,-e),t.closePath()}};const Mx=wm(3);var Tx={draw(t,n){const e=.6824*wm(n),r=e/2,i=e*Mx/2;t.moveTo(0,-e),t.lineTo(i,r),t.lineTo(-i,r),t.closePath()}};const Ax=-.5,Sx=wm(3)/2,Ex=1/wm(12),Nx=3*(Ex/2+1);var kx={draw(t,n){const e=wm(n/Nx),r=e/2,i=e*Ex,o=r,a=e*Ex+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(Ax*r-Sx*i,Sx*r+Ax*i),t.lineTo(Ax*o-Sx*a,Sx*o+Ax*a),t.lineTo(Ax*u-Sx*c,Sx*u+Ax*c),t.lineTo(Ax*r+Sx*i,Ax*i-Sx*r),t.lineTo(Ax*o+Sx*a,Ax*a-Sx*o),t.lineTo(Ax*u+Sx*c,Ax*c-Sx*u),t.closePath()}},Cx={draw(t,n){const e=.6189*wm(n-mm(n/6,1.7));t.moveTo(-e,-e),t.lineTo(e,e),t.moveTo(-e,e),t.lineTo(e,-e)}};const Px=[cx,fx,hx,gx,mx,wx,kx],zx=[cx,px,Cx,Tx,ux,yx,dx];function $x(){}function Dx(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 Rx(t){this._context=t}function Fx(t){this._context=t}function qx(t){this._context=t}function Ux(t,n){this._basis=new Rx(t),this._beta=n}Rx.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:Dx(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:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Fx.prototype={areaStart:$x,areaEnd:$x,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:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},qx.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:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Ux.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],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var Ix=function t(n){function e(t){return 1===n?new Rx(t):new Ux(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function Ox(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 Bx(t,n){this._context=t,this._k=(1-n)/6}Bx.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:Ox(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:Ox(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 Yx=function t(n){function e(t){return new Bx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Lx(t,n){this._context=t,this._k=(1-n)/6}Lx.prototype={areaStart:$x,areaEnd:$x,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:Ox(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 jx=function t(n){function e(t){return new Lx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Hx(t,n){this._context=t,this._k=(1-n)/6}Hx.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:Ox(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 Xx=function t(n){function e(t){return new Hx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Gx(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>Mm){var u=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*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Mm){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function Vx(t,n){this._context=t,this._alpha=n}Vx.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:Gx(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 Wx=function t(n){function e(t){return n?new Vx(t,n):new Bx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Zx(t,n){this._context=t,this._alpha=n}Zx.prototype={areaStart:$x,areaEnd:$x,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:Gx(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 Kx=function t(n){function e(t){return n?new Zx(t,n):new Lx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Qx(t,n){this._context=t,this._alpha=n}Qx.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:Gx(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 Jx=function t(n){function e(t){return n?new Qx(t,n):new Hx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function tw(t){this._context=t}function nw(t){return t<0?-1:1}function ew(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(nw(o)+nw(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function rw(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function iw(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function ow(t){this._context=t}function aw(t){this._context=new uw(t)}function uw(t){this._context=t}function cw(t){this._context=t}function fw(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,o[n]=4,a[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)e=i[n]/o[n-1],o[n]-=e,a[n]-=e*a[n-1];for(i[r-1]=a[r-1]/o[r-1],n=r-2;n>=0;--n)i[n]=(a[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 sw(t,n){this._context=t,this._t=n}function lw(t,n){if((i=t.length)>1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o<i;++o)for(r=a,a=t[n[o]],e=0;e<u;++e)a[e][1]+=a[e][0]=isNaN(r[e][1])?r[e][0]:r[e][1]}function hw(t){for(var n=t.length,e=new Array(n);--n>=0;)e[n]=n;return e}function dw(t,n){return t[n]}function pw(t){const n=[];return n.key=t,n}function gw(t){var n=t.map(yw);return hw(t).sort((function(t,e){return n[t]-n[e]}))}function yw(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++e<i;)(n=+t[e][1])>o&&(o=n,r=e);return r}function vw(t){var n=t.map(_w);return hw(t).sort((function(t,e){return n[t]-n[e]}))}function _w(t){for(var n,e=0,r=-1,i=t.length;++r<i;)(n=+t[r][1])&&(e+=n);return e}tw.prototype={areaStart:$x,areaEnd:$x,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))}},ow.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:iw(this,this._t0,rw(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(n=+n,(t=+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,iw(this,rw(this,e=ew(this,t,n)),e);break;default:iw(this,this._t0,e=ew(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(aw.prototype=Object.create(ow.prototype)).point=function(t,n){ow.prototype.point.call(this,n,t)},uw.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)}},cw.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=fw(t),i=fw(n),o=0,a=1;a<e;++o,++a)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[a],n[a]);(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)}},sw.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}};var bw=t=>()=>t;function mw(t,{sourceEvent:n,target:e,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function xw(t,n,e){this.k=t,this.x=n,this.y=e}xw.prototype={constructor:xw,scale:function(t){return 1===t?this:new xw(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new xw(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 ww=new xw(1,0,0);function Mw(t){for(;!t.__zoom;)if(!(t=t.parentNode))return ww;return t.__zoom}function Tw(t){t.stopImmediatePropagation()}function Aw(t){t.preventDefault(),t.stopImmediatePropagation()}function Sw(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function Ew(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function Nw(){return this.__zoom||ww}function kw(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Cw(){return navigator.maxTouchPoints||"ontouchstart"in this}function Pw(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],a=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Mw.prototype=xw.prototype,t.Adder=T,t.Delaunay=Lu,t.FormatSpecifier=tf,t.InternMap=InternMap,t.InternSet=InternSet,t.Node=Qd,t.Path=Ua,t.Voronoi=qu,t.ZoomTransform=xw,t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+"",i)if((e=i[r]).state>qi&&e.name===n)return new po([[t]],Zo,n,+r);return null},t.arc=function(){var t=km,n=Cm,e=gm(0),r=null,i=Pm,o=zm,a=$m,u=null,c=Nm(f);function f(){var f,s,l=+t.apply(this,arguments),h=+n.apply(this,arguments),d=i.apply(this,arguments)-Am,p=o.apply(this,arguments)-Am,g=ym(p-d),y=p>d;if(u||(u=f=c()),h<l&&(s=h,h=l,l=s),h>Mm)if(g>Sm-Mm)u.moveTo(h*_m(d),h*xm(d)),u.arc(0,0,h,d,p,!y),l>Mm&&(u.moveTo(l*_m(p),l*xm(p)),u.arc(0,0,l,p,d,y));else{var v,_,b=d,m=p,x=d,w=p,M=g,T=g,A=a.apply(this,arguments)/2,S=A>Mm&&(r?+r.apply(this,arguments):wm(l*l+h*h)),E=mm(ym(h-l)/2,+e.apply(this,arguments)),N=E,k=E;if(S>Mm){var C=Em(S/l*xm(A)),P=Em(S/h*xm(A));(M-=2*C)>Mm?(x+=C*=y?1:-1,w-=C):(M=0,x=w=(d+p)/2),(T-=2*P)>Mm?(b+=P*=y?1:-1,m-=P):(T=0,b=m=(d+p)/2)}var z=h*_m(b),$=h*xm(b),D=l*_m(w),R=l*xm(w);if(E>Mm){var F,q=h*_m(m),U=h*xm(m),I=l*_m(x),O=l*xm(x);if(g<Tm)if(F=function(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h<Mm))return[t+(h=(s*(n-o)-l*(t-i))/h)*c,n+h*f]}(z,$,I,O,q,U,D,R)){var B=z-F[0],Y=$-F[1],L=q-F[0],j=U-F[1],H=1/xm(function(t){return t>1?0:t<-1?Tm:Math.acos(t)}((B*L+Y*j)/(wm(B*B+Y*Y)*wm(L*L+j*j)))/2),X=wm(F[0]*F[0]+F[1]*F[1]);N=mm(E,(l-X)/(H-1)),k=mm(E,(h-X)/(H+1))}else N=k=0}T>Mm?k>Mm?(v=Dm(I,O,z,$,h,k,y),_=Dm(q,U,D,R,h,k,y),u.moveTo(v.cx+v.x01,v.cy+v.y01),k<E?u.arc(v.cx,v.cy,k,vm(v.y01,v.x01),vm(_.y01,_.x01),!y):(u.arc(v.cx,v.cy,k,vm(v.y01,v.x01),vm(v.y11,v.x11),!y),u.arc(0,0,h,vm(v.cy+v.y11,v.cx+v.x11),vm(_.cy+_.y11,_.cx+_.x11),!y),u.arc(_.cx,_.cy,k,vm(_.y11,_.x11),vm(_.y01,_.x01),!y))):(u.moveTo(z,$),u.arc(0,0,h,b,m,!y)):u.moveTo(z,$),l>Mm&&M>Mm?N>Mm?(v=Dm(D,R,q,U,l,-N,y),_=Dm(z,$,I,O,l,-N,y),u.lineTo(v.cx+v.x01,v.cy+v.y01),N<E?u.arc(v.cx,v.cy,N,vm(v.y01,v.x01),vm(_.y01,_.x01),!y):(u.arc(v.cx,v.cy,N,vm(v.y01,v.x01),vm(v.y11,v.x11),!y),u.arc(0,0,l,vm(v.cy+v.y11,v.cx+v.x11),vm(_.cy+_.y11,_.cx+_.x11),y),u.arc(_.cx,_.cy,N,vm(_.y11,_.x11),vm(_.y01,_.x01),!y))):u.arc(0,0,l,w,x,y):u.lineTo(D,R)}else u.moveTo(0,0);if(u.closePath(),f)return u=null,f+""||null}return f.centroid=function(){var e=(+t.apply(this,arguments)+ +n.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-Tm/2;return[_m(r)*e,xm(r)*e]},f.innerRadius=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),f):t},f.outerRadius=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),f):n},f.cornerRadius=function(t){return arguments.length?(e="function"==typeof t?t:gm(+t),f):e},f.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:gm(+t),f):r},f.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:gm(+t),f):i},f.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:gm(+t),f):o},f.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:gm(+t),f):a},f.context=function(t){return arguments.length?(u=null==t?null:t,f):u},f},t.area=Ym,t.areaRadial=Zm,t.ascending=n,t.autoType=function(t){for(var n in t){var e,r,i=t[n].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(e=+i)){if(!(r=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;yc&&r[4]&&!r[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=e;else i=null;t[n]=i}return t},t.axisBottom=function(t){return Pt(Mt,t)},t.axisLeft=function(t){return Pt(Tt,t)},t.axisRight=function(t){return Pt(wt,t)},t.axisTop=function(t){return Pt(xt,t)},t.bin=Q,t.bisect=s,t.bisectCenter=f,t.bisectLeft=c,t.bisectRight=u,t.bisector=r,t.blob=function(t,n){return fetch(t,n).then(vc)},t.blur=function(t,n){if(!((n=+n)>=0))throw new RangeError("invalid r");let e=t.length;if(!((e=Math.floor(e))>=0))throw new RangeError("invalid length");if(!e||!n)return t;const r=y(n),i=t.slice();return r(t,i,0,e,1),r(i,t,0,e,1),r(t,i,0,e,1),t},t.blur2=l,t.blurImage=h,t.brush=function(){return wa(la)},t.brushSelection=function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},t.brushX=function(){return wa(fa)},t.brushY=function(){return wa(sa)},t.buffer=function(t,n){return fetch(t,n).then(_c)},t.chord=function(){return za(!1,!1)},t.chordDirected=function(){return za(!0,!1)},t.chordTranspose=function(){return za(!1,!0)},t.cluster=function(){var t=Ld,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter((function(n){var e=n.children;e?(n.x=function(t){return t.reduce(jd,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Hd,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)}));var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.color=ze,t.contourDensity=function(){var t=fu,n=su,e=lu,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=Qa(20);function h(r){var i=new Float32Array(c*f),s=Math.pow(2,-a),h=-1;for(const o of r){var d=(t(o,++h,r)+u)*s,p=(n(o,h,r)+u)*s,g=+e(o,h,r);if(g&&d>=0&&d<c&&p>=0&&p<f){var y=Math.floor(d),v=Math.floor(p),_=d-y-.5,b=p-v-.5;i[y+v*c]+=(1-_)*(1-b)*g,i[y+1+v*c]+=_*(1-b)*g,i[y+1+(v+1)*c]+=_*b*g,i[y+(v+1)*c]+=(1-_)*b*g}}return l({data:i,width:c,height:f},o*s),i}function d(t){var n=h(t),e=s(n),r=Math.pow(2,2*a);return Array.isArray(e)||(e=G(Number.MIN_VALUE,J(n)/r,e)),iu().size([c,f]).thresholds(e.map((t=>t*r)))(n).map(((t,n)=>(t.value=+e[n],p(t))))}function p(t){return t.coordinates.forEach(g),t}function g(t){t.forEach(y)}function y(t){t.forEach(v)}function v(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function _(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,d}return d.contours=function(t){var n=h(t),e=iu().size([c,f]),r=Math.pow(2,2*a),i=t=>{t=+t;var i=p(e.contour(n,t*r));return i.value=t,i};return Object.defineProperty(i,"max",{get:()=>J(n)/r}),i},d.x=function(n){return arguments.length?(t="function"==typeof n?n:Qa(+n),d):t},d.y=function(t){return arguments.length?(n="function"==typeof t?t:Qa(+t),d):n},d.weight=function(t){return arguments.length?(e="function"==typeof t?t:Qa(+t),d):e},d.size=function(t){if(!arguments.length)return[r,i];var n=+t[0],e=+t[1];if(!(n>=0&&e>=0))throw new Error("invalid size");return r=n,i=e,_()},d.cellSize=function(t){if(!arguments.length)return 1<<a;if(!((t=+t)>=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),_()},d.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),d):s},d.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=(Math.sqrt(4*t*t+1)-1)/2,_()},d},t.contours=iu,t.count=v,t.create=function(t){return Zn(Yt(t).call(document.documentElement))},t.creator=Yt,t.cross=function(...t){const n="function"==typeof t[t.length-1]&&function(t){return n=>t(...n)}(t.pop()),e=(t=t.map(m)).map(_),r=t.length-1,i=new Array(r+1).fill(0),o=[];if(r<0||e.some(b))return o;for(;;){o.push(i.map(((n,e)=>t[e][n])));let a=r;for(;++i[a]===e[a];){if(0===a)return n?o.map(n):o;i[a--]=0}}},t.csv=wc,t.csvFormat=rc,t.csvFormatBody=ic,t.csvFormatRow=ac,t.csvFormatRows=oc,t.csvFormatValue=uc,t.csvParse=nc,t.csvParseRows=ec,t.cubehelix=Tr,t.cumsum=function(t,n){var e=0,r=0;return Float64Array.from(t,void 0===n?t=>e+=+t||0:i=>e+=+n(i,r++,t)||0)},t.curveBasis=function(t){return new Rx(t)},t.curveBasisClosed=function(t){return new Fx(t)},t.curveBasisOpen=function(t){return new qx(t)},t.curveBumpX=tx,t.curveBumpY=nx,t.curveBundle=Ix,t.curveCardinal=Yx,t.curveCardinalClosed=jx,t.curveCardinalOpen=Xx,t.curveCatmullRom=Wx,t.curveCatmullRomClosed=Kx,t.curveCatmullRomOpen=Jx,t.curveLinear=Um,t.curveLinearClosed=function(t){return new tw(t)},t.curveMonotoneX=function(t){return new ow(t)},t.curveMonotoneY=function(t){return new aw(t)},t.curveNatural=function(t){return new cw(t)},t.curveStep=function(t){return new sw(t,.5)},t.curveStepAfter=function(t){return new sw(t,1)},t.curveStepBefore=function(t){return new sw(t,0)},t.descending=e,t.deviation=w,t.difference=function(t,...n){t=new InternSet(t);for(const e of n)for(const n of e)t.delete(n);return t},t.disjoint=function(t,n){const e=n[Symbol.iterator](),r=new InternSet;for(const n of t){if(r.has(n))return!1;let t,i;for(;({value:t,done:i}=e.next())&&!i;){if(Object.is(n,t))return!1;r.add(t)}}return!0},t.dispatch=$t,t.drag=function(){var t,n,e,r,i=se,o=le,a=he,u=de,c={},f=$t("start","drag","end"),s=0,l=0;function h(t){t.on("mousedown.drag",d).filter(u).on("touchstart.drag",y).on("touchmove.drag",v,ee).on("touchend.drag touchcancel.drag",_).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(a,u){if(!r&&i.call(this,a,u)){var c=b(this,o.call(this,a,u),a,u,"mouse");c&&(Zn(a.view).on("mousemove.drag",p,re).on("mouseup.drag",g,re),ae(a.view),ie(a),e=!1,t=a.clientX,n=a.clientY,c("start",a))}}function p(r){if(oe(r),!e){var i=r.clientX-t,o=r.clientY-n;e=i*i+o*o>l}c.mouse("drag",r)}function g(t){Zn(t.view).on("mousemove.drag mouseup.drag",null),ue(t.view,e),oe(t),c.mouse("end",t)}function y(t,n){if(i.call(this,t,n)){var e,r,a=t.changedTouches,u=o.call(this,t,n),c=a.length;for(e=0;e<c;++e)(r=b(this,u,t,n,a[e].identifier,a[e]))&&(ie(t),r("start",t,a[e]))}}function v(t){var n,e,r=t.changedTouches,i=r.length;for(n=0;n<i;++n)(e=c[r[n].identifier])&&(oe(t),e("drag",t,r[n]))}function _(t){var n,e,i=t.changedTouches,o=i.length;for(r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),n=0;n<o;++n)(e=c[i[n].identifier])&&(ie(t),e("end",t,i[n]))}function b(t,n,e,r,i,o){var u,l,d,p=f.copy(),g=ne(o||e,n);if(null!=(d=a.call(t,new fe("beforestart",{sourceEvent:e,target:h,identifier:i,active:s,x:g[0],y:g[1],dx:0,dy:0,dispatch:p}),r)))return u=d.x-g[0]||0,l=d.y-g[1]||0,function e(o,a,f){var y,v=g;switch(o){case"start":c[i]=e,y=s++;break;case"end":delete c[i],--s;case"drag":g=ne(f||a,n),y=s}p.call(o,t,new fe(o,{sourceEvent:a,subject:d,target:h,identifier:i,active:y,x:g[0]+u,y:g[1]+l,dx:g[0]-v[0],dy:g[1]-v[1],dispatch:p}),r)}}return h.filter=function(t){return arguments.length?(i="function"==typeof t?t:ce(!!t),h):i},h.container=function(t){return arguments.length?(o="function"==typeof t?t:ce(t),h):o},h.subject=function(t){return arguments.length?(a="function"==typeof t?t:ce(t),h):a},h.touchable=function(t){return arguments.length?(u="function"==typeof t?t:ce(!!t),h):u},h.on=function(){var t=f.on.apply(f,arguments);return t===f?h:t},h.clickDistance=function(t){return arguments.length?(l=(t=+t)*t,h):Math.sqrt(l)},h},t.dragDisable=ae,t.dragEnable=ue,t.dsv=function(t,n,e,r){3===arguments.length&&"function"==typeof e&&(r=e,e=void 0);var i=Ju(t);return mc(n,e).then((function(t){return i.parse(t,r)}))},t.dsvFormat=Ju,t.easeBack=Lo,t.easeBackIn=Bo,t.easeBackInOut=Lo,t.easeBackOut=Yo,t.easeBounce=Io,t.easeBounceIn=function(t){return 1-Io(1-t)},t.easeBounceInOut=function(t){return((t*=2)<=1?1-Io(1-t):Io(t-1)+1)/2},t.easeBounceOut=Io,t.easeCircle=No,t.easeCircleIn=function(t){return 1-Math.sqrt(1-t*t)},t.easeCircleInOut=No,t.easeCircleOut=function(t){return Math.sqrt(1- --t*t)},t.easeCubic=bo,t.easeCubicIn=function(t){return t*t*t},t.easeCubicInOut=bo,t.easeCubicOut=function(t){return--t*t*t+1},t.easeElastic=Xo,t.easeElasticIn=Ho,t.easeElasticInOut=Go,t.easeElasticOut=Xo,t.easeExp=Eo,t.easeExpIn=function(t){return So(1-+t)},t.easeExpInOut=Eo,t.easeExpOut=function(t){return 1-So(t)},t.easeLinear=t=>+t,t.easePoly=wo,t.easePolyIn=mo,t.easePolyInOut=wo,t.easePolyOut=xo,t.easeQuad=_o,t.easeQuadIn=function(t){return t*t},t.easeQuadInOut=_o,t.easeQuadOut=function(t){return t*(2-t)},t.easeSin=Ao,t.easeSinIn=function(t){return 1==+t?1:1-Math.cos(t*To)},t.easeSinInOut=Ao,t.easeSinOut=function(t){return Math.sin(t*To)},t.every=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(!n(r,++e,t))return!1;return!0},t.extent=M,t.fcumsum=function(t,n){const e=new T;let r=-1;return Float64Array.from(t,void 0===n?t=>e.add(+t||0):i=>e.add(+n(i,++r,t)||0))},t.filter=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");const e=[];let r=-1;for(const i of t)n(i,++r,t)&&e.push(i);return e},t.flatGroup=function(t,...n){return z(P(t,...n),n)},t.flatRollup=function(t,n,...e){return z(D(t,n,...e),e)},t.forceCenter=function(t,n){var e,r=1;function i(){var i,o,a=e.length,u=0,c=0;for(i=0;i<a;++i)u+=(o=e[i]).x,c+=o.y;for(u=(u/a-t)*r,c=(c/a-n)*r,i=0;i<a;++i)(o=e[i]).x-=u,o.y-=c}return null==t&&(t=0),null==n&&(n=0),i.initialize=function(t){e=t},i.x=function(n){return arguments.length?(t=+n,i):t},i.y=function(t){return arguments.length?(n=+t,i):n},i.strength=function(t){return arguments.length?(r=+t,i):r},i},t.forceCollide=function(t){var n,e,r,i=1,o=1;function a(){for(var t,a,c,f,s,l,h,d=n.length,p=0;p<o;++p)for(a=$c(n,Ic,Oc).visitAfter(u),t=0;t<d;++t)c=n[t],l=e[c.index],h=l*l,f=c.x+c.vx,s=c.y+c.vy,a.visit(g);function g(t,n,e,o,a){var u=t.data,d=t.r,p=l+d;if(!u)return n>f+p||o<f-p||e>s+p||a<s-p;if(u.index>c.index){var g=f-u.x-u.vx,y=s-u.y-u.vy,v=g*g+y*y;v<p*p&&(0===g&&(v+=(g=Uc(r))*g),0===y&&(v+=(y=Uc(r))*y),v=(p-(v=Math.sqrt(v)))/v*i,c.vx+=(g*=v)*(p=(d*=d)/(h+d)),c.vy+=(y*=v)*p,u.vx-=g*(p=1-p),u.vy-=y*p)}}}function u(t){if(t.data)return t.r=e[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 c(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r<o;++r)i=n[r],e[i.index]=+t(i,r,n)}}return"function"!=typeof t&&(t=qc(null==t?1:+t)),a.initialize=function(t,e){n=t,r=e,c()},a.iterations=function(t){return arguments.length?(o=+t,a):o},a.strength=function(t){return arguments.length?(i=+t,a):i},a.radius=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),c(),a):t},a},t.forceLink=function(t){var n,e,r,i,o,a,u=Bc,c=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},f=qc(30),s=1;function l(r){for(var i=0,u=t.length;i<s;++i)for(var c,f,l,h,d,p,g,y=0;y<u;++y)f=(c=t[y]).source,h=(l=c.target).x+l.vx-f.x-f.vx||Uc(a),d=l.y+l.vy-f.y-f.vy||Uc(a),h*=p=((p=Math.sqrt(h*h+d*d))-e[y])/p*r*n[y],d*=p,l.vx-=h*(g=o[y]),l.vy-=d*g,f.vx+=h*(g=1-g),f.vy+=d*g}function h(){if(r){var a,c,f=r.length,s=t.length,l=new Map(r.map(((t,n)=>[u(t,n,r),t])));for(a=0,i=new Array(f);a<s;++a)(c=t[a]).index=a,"object"!=typeof c.source&&(c.source=Yc(l,c.source)),"object"!=typeof c.target&&(c.target=Yc(l,c.target)),i[c.source.index]=(i[c.source.index]||0)+1,i[c.target.index]=(i[c.target.index]||0)+1;for(a=0,o=new Array(s);a<s;++a)c=t[a],o[a]=i[c.source.index]/(i[c.source.index]+i[c.target.index]);n=new Array(s),d(),e=new Array(s),p()}}function d(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+c(t[e],e,t)}function p(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+f(t[n],n,t)}return null==t&&(t=[]),l.initialize=function(t,n){r=t,a=n,h()},l.links=function(n){return arguments.length?(t=n,h(),l):t},l.id=function(t){return arguments.length?(u=t,l):u},l.iterations=function(t){return arguments.length?(s=+t,l):s},l.strength=function(t){return arguments.length?(c="function"==typeof t?t:qc(+t),d(),l):c},l.distance=function(t){return arguments.length?(f="function"==typeof t?t:qc(+t),p(),l):f},l},t.forceManyBody=function(){var t,n,e,r,i,o=qc(-30),a=1,u=1/0,c=.81;function f(e){var i,o=t.length,a=$c(t,Xc,Gc).visitAfter(l);for(r=e,i=0;i<o;++i)n=t[i],a.visit(h)}function s(){if(t){var n,e,r=t.length;for(i=new Array(r),n=0;n<r;++n)e=t[n],i[e.index]=+o(e,n,t)}}function l(t){var n,e,r,o,a,u=0,c=0;if(t.length){for(r=o=a=0;a<4;++a)(n=t[a])&&(e=Math.abs(n.value))&&(u+=n.value,c+=e,r+=e*n.x,o+=e*n.y);t.x=r/c,t.y=o/c}else{(n=t).x=n.data.x,n.y=n.data.y;do{u+=i[n.data.index]}while(n=n.next)}t.value=u}function h(t,o,f,s){if(!t.value)return!0;var l=t.x-n.x,h=t.y-n.y,d=s-o,p=l*l+h*h;if(d*d/c<p)return p<u&&(0===l&&(p+=(l=Uc(e))*l),0===h&&(p+=(h=Uc(e))*h),p<a&&(p=Math.sqrt(a*p)),n.vx+=l*t.value*r/p,n.vy+=h*t.value*r/p),!0;if(!(t.length||p>=u)){(t.data!==n||t.next)&&(0===l&&(p+=(l=Uc(e))*l),0===h&&(p+=(h=Uc(e))*h),p<a&&(p=Math.sqrt(a*p)));do{t.data!==n&&(d=i[t.data.index]*r/p,n.vx+=l*d,n.vy+=h*d)}while(t=t.next)}}return f.initialize=function(n,r){t=n,e=r,s()},f.strength=function(t){return arguments.length?(o="function"==typeof t?t:qc(+t),s(),f):o},f.distanceMin=function(t){return arguments.length?(a=t*t,f):Math.sqrt(a)},f.distanceMax=function(t){return arguments.length?(u=t*t,f):Math.sqrt(u)},f.theta=function(t){return arguments.length?(c=t*t,f):Math.sqrt(c)},f},t.forceRadial=function(t,n,e){var r,i,o,a=qc(.1);function u(t){for(var a=0,u=r.length;a<u;++a){var c=r[a],f=c.x-n||1e-6,s=c.y-e||1e-6,l=Math.sqrt(f*f+s*s),h=(o[a]-l)*i[a]*t/l;c.vx+=f*h,c.vy+=s*h}}function c(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)o[n]=+t(r[n],n,r),i[n]=isNaN(o[n])?0:+a(r[n],n,r)}}return"function"!=typeof t&&(t=qc(+t)),null==n&&(n=0),null==e&&(e=0),u.initialize=function(t){r=t,c()},u.strength=function(t){return arguments.length?(a="function"==typeof t?t:qc(+t),c(),u):a},u.radius=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),c(),u):t},u.x=function(t){return arguments.length?(n=+t,u):n},u.y=function(t){return arguments.length?(e=+t,u):e},u},t.forceSimulation=function(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,u=new Map,c=Ni(l),f=$t("tick","end"),s=function(){let t=1;return()=>(t=(Lc*t+jc)%Hc)/Hc}();function l(){h(),f.call("tick",n),e<r&&(c.stop(),f.call("end",n))}function h(r){var c,f,s=t.length;void 0===r&&(r=1);for(var l=0;l<r;++l)for(e+=(o-e)*i,u.forEach((function(t){t(e)})),c=0;c<s;++c)null==(f=t[c]).fx?f.x+=f.vx*=a:(f.x=f.fx,f.vx=0),null==f.fy?f.y+=f.vy*=a:(f.y=f.fy,f.vy=0);return n}function d(){for(var n,e=0,r=t.length;e<r;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=10*Math.sqrt(.5+e),o=e*Vc;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function p(n){return n.initialize&&n.initialize(t,s),n}return null==t&&(t=[]),d(),n={tick:h,restart:function(){return c.restart(l),n},stop:function(){return c.stop(),n},nodes:function(e){return arguments.length?(t=e,d(),u.forEach(p),n):t},alpha:function(t){return arguments.length?(e=+t,n):e},alphaMin:function(t){return arguments.length?(r=+t,n):r},alphaDecay:function(t){return arguments.length?(i=+t,n):+i},alphaTarget:function(t){return arguments.length?(o=+t,n):o},velocityDecay:function(t){return arguments.length?(a=1-t,n):1-a},randomSource:function(t){return arguments.length?(s=t,u.forEach(p),n):s},force:function(t,e){return arguments.length>1?(null==e?u.delete(t):u.set(t,p(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f<s;++f)(a=(i=n-(u=t[f]).x)*i+(o=e-u.y)*o)<r&&(c=u,r=a);return c},on:function(t,e){return arguments.length>1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=qc(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vx+=(r[o]-i.x)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=qc(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:qc(+t),a(),o):i},o.x=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),a(),o):t},o},t.forceY=function(t){var n,e,r,i=qc(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vy+=(r[o]-i.y)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=qc(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:qc(+t),a(),o):i},o.y=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),a(),o):t},o},t.formatDefaultLocale=ff,t.formatLocale=cf,t.formatSpecifier=Jc,t.fsum=function(t,n){const e=new T;if(void 0===n)for(let n of t)(n=+n)&&e.add(n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&e.add(i)}return+e},t.geoAlbers=xd,t.geoAlbersUsa=function(){var t,n,e,r,i,o,a=xd(),u=md().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=md().rotate([157,0]).center([-3,19.9]).parallels([8,18]),f={point:function(t,n){o=[t,n]}};function s(t){var n=t[0],a=t[1];return o=null,e.point(n,a),o||(r.point(n,a),o)||(i.point(n,a),o)}function l(){return t=n=null,s}return s.invert=function(t){var n=a.scale(),e=a.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e<i;)r[e].point(t,n)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},s.precision=function(t){return arguments.length?(a.precision(t),u.precision(t),c.precision(t),l()):a.precision()},s.scale=function(t){return arguments.length?(a.scale(t),u.scale(.35*t),c.scale(t),s.translate(a.translate())):a.scale()},s.translate=function(t){if(!arguments.length)return a.translate();var n=a.scale(),o=+t[0],s=+t[1];return e=a.translate(t).clipExtent([[o-.455*n,s-.238*n],[o+.455*n,s+.238*n]]).stream(f),r=u.translate([o-.307*n,s+.201*n]).clipExtent([[o-.425*n+df,s+.12*n+df],[o-.214*n-df,s+.234*n-df]]).stream(f),i=c.translate([o-.205*n,s+.212*n]).clipExtent([[o-.214*n+df,s+.166*n+df],[o-.115*n-df,s+.234*n-df]]).stream(f),l()},s.fitExtent=function(t,n){return ud(s,t,n)},s.fitSize=function(t,n){return cd(s,t,n)},s.fitWidth=function(t,n){return fd(s,t,n)},s.fitHeight=function(t,n){return sd(s,t,n)},s.scale(1070)},t.geoArea=function(t){return us=new T,Lf(t,cs),2*us},t.geoAzimuthalEqualArea=function(){return yd(Td).scale(124.75).clipAngle(179.999)},t.geoAzimuthalEqualAreaRaw=Td,t.geoAzimuthalEquidistant=function(){return yd(Ad).scale(79.4188).clipAngle(179.999)},t.geoAzimuthalEquidistantRaw=Ad,t.geoBounds=function(t){var n,e,r,i,o,a,u;if(Qf=Kf=-(Wf=Zf=1/0),is=[],Lf(t,Fs),e=is.length){for(is.sort(Hs),n=1,o=[r=is[0]];n<e;++n)Xs(r,(i=is[n])[0])||Xs(r,i[1])?(js(r[0],i[1])>js(r[0],r[1])&&(r[1]=i[1]),js(i[0],r[1])>js(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=js(r[1],i[0]))>a&&(a=u,Wf=i[0],Kf=r[1])}return is=os=null,Wf===1/0||Zf===1/0?[[NaN,NaN],[NaN,NaN]]:[[Wf,Zf],[Kf,Qf]]},t.geoCentroid=function(t){ms=xs=ws=Ms=Ts=As=Ss=Es=0,Ns=new T,ks=new T,Cs=new T,Lf(t,Gs);var n=+Ns,e=+ks,r=+Cs,i=Ef(n,e,r);return i<pf&&(n=As,e=Ss,r=Es,xs<df&&(n=ws,e=Ms,r=Ts),(i=Ef(n,e,r))<pf)?[NaN,NaN]:[Mf(e,n)*bf,Rf(r/i)*bf]},t.geoCircle=function(){var t,n,e=il([0,0]),r=il(90),i=il(6),o={point:function(e,r){t.push(e=n(e,r)),e[0]*=bf,e[1]*=bf}};function a(){var a=e.apply(this,arguments),u=r.apply(this,arguments)*mf,c=i.apply(this,arguments)*mf;return t=[],n=ul(-a[0]*mf,-a[1]*mf,0).invert,hl(o,u,c,1),a={type:"Polygon",coordinates:[t]},t=n=null,a}return a.center=function(t){return arguments.length?(e="function"==typeof t?t:il([+t[0],+t[1]]),a):e},a.radius=function(t){return arguments.length?(r="function"==typeof t?t:il(+t),a):r},a.precision=function(t){return arguments.length?(i="function"==typeof t?t:il(+t),a):i},a},t.geoClipAntimeridian=Tl,t.geoClipCircle=Al,t.geoClipExtent=function(){var t,n,e,r=0,i=0,o=960,a=500;return e={stream:function(e){return t&&n===e?t:t=zl(r,i,o,a)(n=e)},extent:function(u){return arguments.length?(r=+u[0][0],i=+u[0][1],o=+u[1][0],a=+u[1][1],t=n=null,e):[[r,i],[o,a]]}}},t.geoClipRectangle=zl,t.geoConicConformal=function(){return _d(kd).scale(109.5).parallels([30,30])},t.geoConicConformalRaw=kd,t.geoConicEqualArea=md,t.geoConicEqualAreaRaw=bd,t.geoConicEquidistant=function(){return _d(Pd).scale(131.154).center([0,13.9389])},t.geoConicEquidistantRaw=Pd,t.geoContains=function(t,n){return(t&&Bl.hasOwnProperty(t.type)?Bl[t.type]:Ll)(t,n)},t.geoDistance=Ol,t.geoEqualEarth=function(){return yd(qd).scale(177.158)},t.geoEqualEarthRaw=qd,t.geoEquirectangular=function(){return yd(Cd).scale(152.63)},t.geoEquirectangularRaw=Cd,t.geoGnomonic=function(){return yd(Ud).scale(144.049).clipAngle(60)},t.geoGnomonicRaw=Ud,t.geoGraticule=Kl,t.geoGraticule10=function(){return Kl()()},t.geoIdentity=function(){var t,n,e,r,i,o,a,u=1,c=0,f=0,s=1,l=1,h=0,d=null,p=1,g=1,y=id({point:function(t,n){var e=b([t,n]);this.stream.point(e[0],e[1])}}),v=eh;function _(){return p=u*s,g=u*l,o=a=null,b}function b(e){var r=e[0]*p,i=e[1]*g;if(h){var o=i*t-r*n;r=r*t+i*n,i=o}return[r+c,i+f]}return b.invert=function(e){var r=e[0]-c,i=e[1]-f;if(h){var o=i*t+r*n;r=r*t-i*n,i=o}return[r/p,i/g]},b.stream=function(t){return o&&a===t?o:o=y(v(a=t))},b.postclip=function(t){return arguments.length?(v=t,d=e=r=i=null,_()):v},b.clipExtent=function(t){return arguments.length?(v=null==t?(d=e=r=i=null,eh):zl(d=+t[0][0],e=+t[0][1],r=+t[1][0],i=+t[1][1]),_()):null==d?null:[[d,e],[r,i]]},b.scale=function(t){return arguments.length?(u=+t,_()):u},b.translate=function(t){return arguments.length?(c=+t[0],f=+t[1],_()):[c,f]},b.angle=function(e){return arguments.length?(n=Cf(h=e%360*mf),t=Tf(h),_()):h*bf},b.reflectX=function(t){return arguments.length?(s=t?-1:1,_()):s<0},b.reflectY=function(t){return arguments.length?(l=t?-1:1,_()):l<0},b.fitExtent=function(t,n){return ud(b,t,n)},b.fitSize=function(t,n){return cd(b,t,n)},b.fitWidth=function(t,n){return fd(b,t,n)},b.fitHeight=function(t,n){return sd(b,t,n)},b},t.geoInterpolate=function(t,n){var e=t[0]*mf,r=t[1]*mf,i=n[0]*mf,o=n[1]*mf,a=Tf(r),u=Cf(r),c=Tf(o),f=Cf(o),s=a*Tf(e),l=a*Cf(e),h=c*Tf(i),d=c*Cf(i),p=2*Rf(zf(Ff(o-r)+a*c*Ff(i-e))),g=Cf(p),y=p?function(t){var n=Cf(t*=p)/g,e=Cf(p-t)/g,r=e*s+n*h,i=e*l+n*d,o=e*u+n*f;return[Mf(i,r)*bf,Mf(o,zf(r*r+i*i))*bf]}:function(){return[e*bf,r*bf]};return y.distance=p,y},t.geoLength=ql,t.geoMercator=function(){return Ed(Sd).scale(961/_f)},t.geoMercatorRaw=Sd,t.geoNaturalEarth1=function(){return yd(Id).scale(175.295)},t.geoNaturalEarth1Raw=Id,t.geoOrthographic=function(){return yd(Od).scale(249.5).clipAngle(90+df)},t.geoOrthographicRaw=Od,t.geoPath=function(t,n){let e,r,i=3,o=4.5;function a(t){return t&&("function"==typeof o&&r.pointRadius(+o.apply(this,arguments)),Lf(t,e(r))),r.result()}return a.area=function(t){return Lf(t,e(sh)),sh.result()},a.measure=function(t){return Lf(t,e(Kh)),Kh.result()},a.bounds=function(t){return Lf(t,e(mh)),mh.result()},a.centroid=function(t){return Lf(t,e(Oh)),Oh.result()},a.projection=function(n){return arguments.length?(e=null==n?(t=null,eh):(t=n).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(n=null,new ed(i)):new Bh(n=t),"function"!=typeof o&&r.pointRadius(o),a):n},a.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(r.pointRadius(+t),+t),a):o},a.digits=function(t){if(!arguments.length)return i;if(null==t)i=null;else{const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);i=n}return null===n&&(r=new ed(i)),a},a.projection(t).digits(i).context(n)},t.geoProjection=yd,t.geoProjectionMutator=vd,t.geoRotation=ll,t.geoStereographic=function(){return yd(Bd).scale(250).clipAngle(142)},t.geoStereographicRaw=Bd,t.geoStream=Lf,t.geoTransform=function(t){return{stream:id(t)}},t.geoTransverseMercator=function(){var t=Ed(Yd),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=Yd,t.gray=function(t,n){return new ur(t,0,0,null==n?1:n)},t.greatest=ot,t.greatestIndex=function(t,e=n){if(1===e.length)return tt(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)>0)&&(r=n,i=o);return i},t.group=C,t.groupSort=function(t,e,r){return(2!==e.length?U($(t,e,r),(([t,e],[r,i])=>n(e,i)||n(t,r))):U(C(t,r),(([t,r],[i,o])=>e(r,o)||n(t,i)))).map((([t])=>t))},t.groups=P,t.hcl=dr,t.hierarchy=Gd,t.histogram=Q,t.hsl=He,t.html=Ec,t.image=function(t,n){return new Promise((function(e,r){var i=new Image;for(var o in n)i[o]=n[o];i.onerror=r,i.onload=function(){e(i)},i.src=t}))},t.index=function(t,...n){return F(t,k,R,n)},t.indexes=function(t,...n){return F(t,Array.from,R,n)},t.interpolate=Gr,t.interpolateArray=function(t,n){return(Ir(n)?Ur:Or)(t,n)},t.interpolateBasis=Er,t.interpolateBasisClosed=Nr,t.interpolateBlues=Xb,t.interpolateBrBG=ib,t.interpolateBuGn=wb,t.interpolateBuPu=Tb,t.interpolateCividis=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},t.interpolateCool=om,t.interpolateCubehelix=li,t.interpolateCubehelixDefault=rm,t.interpolateCubehelixLong=hi,t.interpolateDate=Br,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateGnBu=Sb,t.interpolateGreens=Vb,t.interpolateGreys=Zb,t.interpolateHcl=ci,t.interpolateHclLong=fi,t.interpolateHsl=oi,t.interpolateHslLong=ai,t.interpolateHue=function(t,n){var e=Pr(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateInferno=dm,t.interpolateLab=function(t,n){var e=$r((t=ar(t)).l,(n=ar(n)).l),r=$r(t.a,n.a),i=$r(t.b,n.b),o=$r(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.interpolateMagma=hm,t.interpolateNumber=Yr,t.interpolateNumberArray=Ur,t.interpolateObject=Lr,t.interpolateOrRd=Nb,t.interpolateOranges=em,t.interpolatePRGn=ab,t.interpolatePiYG=cb,t.interpolatePlasma=pm,t.interpolatePuBu=zb,t.interpolatePuBuGn=Cb,t.interpolatePuOr=sb,t.interpolatePuRd=Db,t.interpolatePurples=Qb,t.interpolateRainbow=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return am.h=360*t-100,am.s=1.5-1.5*n,am.l=.8-.9*n,am+""},t.interpolateRdBu=hb,t.interpolateRdGy=pb,t.interpolateRdPu=Fb,t.interpolateRdYlBu=yb,t.interpolateRdYlGn=_b,t.interpolateReds=tm,t.interpolateRgb=Dr,t.interpolateRgbBasis=Fr,t.interpolateRgbBasisClosed=qr,t.interpolateRound=Vr,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,um.r=255*(n=Math.sin(t))*n,um.g=255*(n=Math.sin(t+cm))*n,um.b=255*(n=Math.sin(t+fm))*n,um+""},t.interpolateSpectral=mb,t.interpolateString=Xr,t.interpolateTransformCss=ti,t.interpolateTransformSvg=ni,t.interpolateTurbo=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},t.interpolateViridis=lm,t.interpolateWarm=im,t.interpolateYlGn=Ob,t.interpolateYlGnBu=Ub,t.interpolateYlOrBr=Yb,t.interpolateYlOrRd=jb,t.interpolateZoom=ri,t.interrupt=Gi,t.intersection=function(t,...n){t=new InternSet(t),n=n.map(vt);t:for(const e of t)for(const r of n)if(!r.has(e)){t.delete(e);continue t}return t},t.interval=function(t,n,e){var r=new Ei,i=n;return null==n?(r.restart(t,n,e),r):(r._restart=r.restart,r.restart=function(t,n,e){n=+n,e=null==e?Ai():+e,r._restart((function o(a){a+=i,r._restart(o,i+=n,e),t(a)}),n,e)},r.restart(t,n,e),r)},t.isoFormat=D_,t.isoParse=F_,t.json=function(t,n){return fetch(t,n).then(Tc)},t.lab=ar,t.lch=function(t,n,e,r){return 1===arguments.length?hr(t):new pr(e,n,t,null==r?1:r)},t.least=function(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)<0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)<0:0===e(n,n))&&(r=n,i=!0);return r},t.leastIndex=ht,t.line=Bm,t.lineRadial=Wm,t.link=ox,t.linkHorizontal=function(){return ox(tx)},t.linkRadial=function(){const t=ox(ex);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.linkVertical=function(){return ox(nx)},t.local=Qn,t.map=function(t,n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof n)throw new TypeError("mapper is not a function");return Array.from(t,((e,r)=>n(e,r,t)))},t.matcher=Vt,t.max=J,t.maxIndex=tt,t.mean=function(t,n){let e=0,r=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(++e,r+=n);else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(o=+o)>=o&&(++e,r+=o)}if(e)return r/e},t.median=function(t,n){return at(t,.5,n)},t.medianIndex=function(t,n){return ct(t,.5,n)},t.merge=ft,t.min=nt,t.minIndex=et,t.mode=function(t,n){const e=new InternMap;if(void 0===n)for(let n of t)null!=n&&n>=n&&e.set(n,(e.get(n)||0)+1);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&i>=i&&e.set(i,(e.get(i)||0)+1)}let r,i=0;for(const[t,n]of e)n>i&&(i=n,r=t);return r},t.namespace=It,t.namespaces=Ut,t.nice=Z,t.now=Ai,t.pack=function(){var t=null,n=1,e=1,r=np;function i(i){const o=ap();return i.x=n/2,i.y=e/2,t?i.eachBefore(xp(t)).eachAfter(wp(r,.5,o)).eachBefore(Mp(1)):i.eachBefore(xp(mp)).eachAfter(wp(np,1,o)).eachAfter(wp(r,i.r/Math.min(n,e),o)).eachBefore(Mp(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=Jd(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:ep(+t),i):r},i},t.packEnclose=function(t){return up(t,ap())},t.packSiblings=function(t){return bp(t,ap()),t},t.pairs=function(t,n=st){const e=[];let r,i=!1;for(const o of t)i&&e.push(n(r,o)),r=o,i=!0;return e},t.partition=function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&Ap(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a<i&&(i=a=(i+a)/2),u<o&&(o=u=(o+u)/2),r.x0=i,r.y0=o,r.x1=a,r.y1=u}}(n,o)),r&&i.eachBefore(Tp),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i},t.path=Ia,t.pathRound=function(t=3){return new Ua(+t)},t.permute=q,t.pie=function(){var t=jm,n=Lm,e=null,r=gm(0),i=gm(Sm),o=gm(0);function a(a){var u,c,f,s,l,h=(a=Fm(a)).length,d=0,p=new Array(h),g=new Array(h),y=+r.apply(this,arguments),v=Math.min(Sm,Math.max(-Sm,i.apply(this,arguments)-y)),_=Math.min(Math.abs(v)/h,o.apply(this,arguments)),b=_*(v<0?-1:1);for(u=0;u<h;++u)(l=g[p[u]=u]=+t(a[u],u,a))>0&&(d+=l);for(null!=n?p.sort((function(t,e){return n(g[t],g[e])})):null!=e&&p.sort((function(t,n){return e(a[t],a[n])})),u=0,f=d?(v-h*b)/d:0;u<h;++u,y=s)c=p[u],s=y+((l=g[c])>0?l*f:0)+b,g[c]={data:a[c],index:u,value:l,startAngle:y,endAngle:s,padAngle:_};return g}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:gm(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:gm(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:gm(+t),a):o},a},t.piecewise=di,t.pointRadial=Km,t.pointer=ne,t.pointers=function(t,n){return t.target&&(t=te(t),void 0===n&&(n=t.currentTarget),t=t.touches||[t]),Array.from(t,(t=>ne(t,n)))},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,a=0,u=t[i-1],c=0;++r<i;)n=u,u=t[r],c+=e=n[0]*u[1]-u[0]*n[1],o+=(n[0]+u[0])*e,a+=(n[1]+u[1])*e;return[o/(c*=3),a/c]},t.polygonContains=function(t,n){for(var e,r,i=t.length,o=t[i-1],a=n[0],u=n[1],c=o[0],f=o[1],s=!1,l=0;l<i;++l)e=(o=t[l])[0],(r=o[1])>u!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},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(Hp),n=0;n<e;++n)i[n]=[r[n][0],-r[n][1]];var o=Xp(r),a=Xp(i),u=a[0]===o[0],c=a[a.length-1]===o[o.length-1],f=[];for(n=o.length-1;n>=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;n<a.length-c;++n)f.push(t[r[a[n]][2]]);return f},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r<i;)n=a,e=u,n-=a=(o=t[r])[0],e-=u=o[1],c+=Math.hypot(n,e);return c},t.precisionFixed=sf,t.precisionPrefix=lf,t.precisionRound=hf,t.quadtree=$c,t.quantile=at,t.quantileIndex=ct,t.quantileSorted=ut,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.quickselect=rt,t.radialArea=Zm,t.radialLine=Wm,t.randomBates=Jp,t.randomBernoulli=eg,t.randomBeta=og,t.randomBinomial=ag,t.randomCauchy=cg,t.randomExponential=tg,t.randomGamma=ig,t.randomGeometric=rg,t.randomInt=Wp,t.randomIrwinHall=Qp,t.randomLcg=function(t=Math.random()){let n=0|(0<=t&&t<1?t/lg:Math.abs(t));return()=>(n=1664525*n+1013904223|0,lg*(n>>>0))},t.randomLogNormal=Kp,t.randomLogistic=fg,t.randomNormal=Zp,t.randomPareto=ng,t.randomPoisson=sg,t.randomUniform=Vp,t.randomWeibull=ug,t.range=lt,t.rank=function(t,e=n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");let r=Array.from(t);const i=new Float64Array(r.length);2!==e.length&&(r=r.map(e),e=n);const o=(t,n)=>e(r[t],r[n]);let a,u;return(t=Uint32Array.from(r,((t,n)=>n))).sort(e===n?(t,n)=>O(r[t],r[n]):I(o)),t.forEach(((t,n)=>{const e=o(t,void 0===a?t:a);e>=0?((void 0===a||e>0)&&(a=t,u=n),i[t]=u):i[t]=NaN})),i},t.reduce=function(t,n,e){if("function"!=typeof n)throw new TypeError("reducer is not a function");const r=t[Symbol.iterator]();let i,o,a=-1;if(arguments.length<3){if(({done:i,value:e}=r.next()),i)return;++a}for(;({done:i,value:o}=r.next()),!i;)e=n(e,o,++a,t);return e},t.reverse=function(t){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(t).reverse()},t.rgb=Fe,t.ribbon=function(){return Wa()},t.ribbonArrow=function(){return Wa(Va)},t.rollup=$,t.rollups=D,t.scaleBand=yg,t.scaleDiverging=function t(){var n=Ng(L_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleDivergingLog=function t(){var n=Fg(L_()).domain([.1,1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleDivergingPow=j_,t.scaleDivergingSqrt=function(){return j_.apply(null,arguments).exponent(.5)},t.scaleDivergingSymlog=function t(){var n=Ig(L_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleIdentity=function t(n){var e;function r(t){return null==t||isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=Array.from(t,_g),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?Array.from(n,_g):[0,1],Ng(r)},t.scaleImplicit=pg,t.scaleLinear=function t(){var n=Sg();return n.copy=function(){return Tg(n,t())},hg.apply(n,arguments),Ng(n)},t.scaleLog=function t(){const n=Fg(Ag()).domain([1,10]);return n.copy=()=>Tg(n,t()).base(n.base()),hg.apply(n,arguments),n},t.scaleOrdinal=gg,t.scalePoint=function(){return vg(yg.apply(null,arguments).paddingInner(1))},t.scalePow=jg,t.scaleQuantile=function t(){var e,r=[],i=[],o=[];function a(){var t=0,n=Math.max(1,i.length);for(o=new Array(n-1);++t<n;)o[t-1]=ut(r,t/n);return u}function u(t){return null==t||isNaN(t=+t)?e:i[s(o,t)]}return u.invertExtent=function(t){var n=i.indexOf(t);return n<0?[NaN,NaN]:[n>0?o[n-1]:r[0],n<o.length?o[n]:r[r.length-1]]},u.domain=function(t){if(!arguments.length)return r.slice();r=[];for(let n of t)null==n||isNaN(n=+n)||r.push(n);return r.sort(n),a()},u.range=function(t){return arguments.length?(i=Array.from(t),a()):i.slice()},u.unknown=function(t){return arguments.length?(e=t,u):e},u.quantiles=function(){return o.slice()},u.copy=function(){return t().domain(r).range(i).unknown(e)},hg.apply(u,arguments)},t.scaleQuantize=function t(){var n,e=0,r=1,i=1,o=[.5],a=[0,1];function u(t){return null!=t&&t<=t?a[s(o,t,0,i)]:n}function c(){var t=-1;for(o=new Array(i);++t<i;)o[t]=((t+1)*r-(t-i)*e)/(i+1);return u}return u.domain=function(t){return arguments.length?([e,r]=t,e=+e,r=+r,c()):[e,r]},u.range=function(t){return arguments.length?(i=(a=Array.from(t)).length-1,c()):a.slice()},u.invertExtent=function(t){var n=a.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,o[0]]:n>=i?[o[i-1],r]:[o[n-1],o[n]]},u.unknown=function(t){return arguments.length?(n=t,u):u},u.thresholds=function(){return o.slice()},u.copy=function(){return t().domain([e,r]).range(a).unknown(n)},hg.apply(Ng(u),arguments)},t.scaleRadial=function t(){var n,e=Sg(),r=[0,1],i=!1;function o(t){var r=function(t){return Math.sign(t)*Math.sqrt(Math.abs(t))}(e(t));return isNaN(r)?n:i?Math.round(r):r}return o.invert=function(t){return e.invert(Hg(t))},o.domain=function(t){return arguments.length?(e.domain(t),o):e.domain()},o.range=function(t){return arguments.length?(e.range((r=Array.from(t,_g)).map(Hg)),o):r.slice()},o.rangeRound=function(t){return o.range(t).round(!0)},o.round=function(t){return arguments.length?(i=!!t,o):i},o.clamp=function(t){return arguments.length?(e.clamp(t),o):e.clamp()},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t(e.domain(),r).round(i).clamp(e.clamp()).unknown(n)},hg.apply(o,arguments),Ng(o)},t.scaleSequential=function t(){var n=Ng(O_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=Fg(O_()).domain([1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleSequentialPow=Y_,t.scaleSequentialQuantile=function t(){var e=[],r=mg;function i(t){if(null!=t&&!isNaN(t=+t))return r((s(e,t,1)-1)/(e.length-1))}return i.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)null==n||isNaN(n=+n)||e.push(n);return e.sort(n),i},i.interpolator=function(t){return arguments.length?(r=t,i):r},i.range=function(){return e.map(((t,n)=>r(n/(e.length-1))))},i.quantiles=function(t){return Array.from({length:t+1},((n,r)=>at(e,r/t)))},i.copy=function(){return t(r).domain(e)},dg.apply(i,arguments)},t.scaleSequentialSqrt=function(){return Y_.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=Ig(O_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleSqrt=function(){return jg.apply(null,arguments).exponent(.5)},t.scaleSymlog=function t(){var n=Ig(Ag());return n.copy=function(){return Tg(n,t()).constant(n.constant())},hg.apply(n,arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],i=1;function o(t){return null!=t&&t<=t?r[s(e,t,0,i)]:n}return o.domain=function(t){return arguments.length?(e=Array.from(t),i=Math.min(e.length,r.length-1),o):e.slice()},o.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(e.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t().domain(e).range(r).unknown(n)},hg.apply(o,arguments)},t.scaleTime=function(){return hg.apply(I_(uv,cv,tv,Zy,xy,py,sy,ay,iy,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return hg.apply(I_(ov,av,ev,Qy,Fy,yy,hy,cy,iy,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scan=function(t,n){const e=ht(t,n);return e<0?void 0:e},t.schemeAccent=G_,t.schemeBlues=Hb,t.schemeBrBG=rb,t.schemeBuGn=xb,t.schemeBuPu=Mb,t.schemeCategory10=X_,t.schemeDark2=V_,t.schemeGnBu=Ab,t.schemeGreens=Gb,t.schemeGreys=Wb,t.schemeOrRd=Eb,t.schemeOranges=nm,t.schemePRGn=ob,t.schemePaired=W_,t.schemePastel1=Z_,t.schemePastel2=K_,t.schemePiYG=ub,t.schemePuBu=Pb,t.schemePuBuGn=kb,t.schemePuOr=fb,t.schemePuRd=$b,t.schemePurples=Kb,t.schemeRdBu=lb,t.schemeRdGy=db,t.schemeRdPu=Rb,t.schemeRdYlBu=gb,t.schemeRdYlGn=vb,t.schemeReds=Jb,t.schemeSet1=Q_,t.schemeSet2=J_,t.schemeSet3=tb,t.schemeSpectral=bb,t.schemeTableau10=nb,t.schemeYlGn=Ib,t.schemeYlGnBu=qb,t.schemeYlOrBr=Bb,t.schemeYlOrRd=Lb,t.select=Zn,t.selectAll=function(t){return"string"==typeof t?new Vn([document.querySelectorAll(t)],[document.documentElement]):new Vn([Ht(t)],Gn)},t.selection=Wn,t.selector=jt,t.selectorAll=Gt,t.shuffle=dt,t.shuffler=pt,t.some=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(n(r,++e,t))return!0;return!1},t.sort=U,t.stack=function(){var t=gm([]),n=hw,e=lw,r=dw;function i(i){var o,a,u=Array.from(t.apply(this,arguments),pw),c=u.length,f=-1;for(const t of i)for(o=0,++f;o<c;++o)(u[o][f]=[0,+r(t,u[o].key,f,i)]).data=t;for(o=0,a=Fm(n(u));o<c;++o)u[a[o]].index=o;return e(u,a),u}return i.keys=function(n){return arguments.length?(t="function"==typeof n?n:gm(Array.from(n)),i):t},i.value=function(t){return arguments.length?(r="function"==typeof t?t:gm(+t),i):r},i.order=function(t){return arguments.length?(n=null==t?hw:"function"==typeof t?t:gm(Array.from(t)),i):n},i.offset=function(t){return arguments.length?(e=null==t?lw:t,i):e},i},t.stackOffsetDiverging=function(t,n){if((u=t.length)>0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c<f;++c)for(o=a=0,e=0;e<u;++e)(i=(r=t[n[e]][c])[1]-r[0])>0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,a=t[0].length;o<a;++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}lw(t,n)}},t.stackOffsetNone=lw,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 a=0,u=0;a<e;++a)u+=t[a][r][1]||0;i[r][1]+=i[r][0]=-u/2}lw(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,a=1;a<r;++a){for(var u=0,c=0,f=0;u<i;++u){for(var s=t[n[u]],l=s[a][1]||0,h=(l-(s[a-1][1]||0))/2,d=0;d<u;++d){var p=t[n[d]];h+=(p[a][1]||0)-(p[a-1][1]||0)}c+=l,f+=h*l}e[a-1][1]+=e[a-1][0]=o,c&&(o-=f/c)}e[a-1][1]+=e[a-1][0]=o,lw(t,n)}},t.stackOrderAppearance=gw,t.stackOrderAscending=vw,t.stackOrderDescending=function(t){return vw(t).reverse()},t.stackOrderInsideOut=function(t){var n,e,r=t.length,i=t.map(_w),o=gw(t),a=0,u=0,c=[],f=[];for(n=0;n<r;++n)e=o[n],a<u?(a+=i[e],c.push(e)):(u+=i[e],f.push(e));return f.reverse().concat(c)},t.stackOrderNone=hw,t.stackOrderReverse=function(t){return hw(t).reverse()},t.stratify=function(){var t,n=kp,e=Cp;function r(r){var i,o,a,u,c,f,s,l,h=Array.from(r),d=n,p=e,g=new Map;if(null!=t){const n=h.map(((n,e)=>function(t){t=`${t}`;let n=t.length;zp(t,n-1)&&!zp(t,n-2)&&(t=t.slice(0,-1));return"/"===t[0]?t:`/${t}`}(t(n,e,r)))),e=n.map(Pp),i=new Set(n).add("");for(const t of e)i.has(t)||(i.add(t),n.push(t),e.push(Pp(t)),h.push(Np));d=(t,e)=>n[e],p=(t,n)=>e[n]}for(a=0,i=h.length;a<i;++a)o=h[a],f=h[a]=new Qd(o),null!=(s=d(o,a,r))&&(s+="")&&(l=f.id=s,g.set(l,g.has(l)?Ep:f)),null!=(s=p(o,a,r))&&(s+="")&&(f.parent=s);for(a=0;a<i;++a)if(s=(f=h[a]).parent){if(!(c=g.get(s)))throw new Error("missing: "+s);if(c===Ep)throw new Error("ambiguous: "+s);c.children?c.children.push(f):c.children=[f],f.parent=c}else{if(u)throw new Error("multiple roots");u=f}if(!u)throw new Error("no root");if(null!=t){for(;u.data===Np&&1===u.children.length;)u=u.children[0],--i;for(let t=h.length-1;t>=0&&(f=h[t]).data===Np;--t)f.data=null}if(u.parent=Sp,u.eachBefore((function(t){t.depth=t.parent.depth+1,--i})).eachBefore(Kd),u.parent=null,i>0)throw new Error("cycle");return u}return r.id=function(t){return arguments.length?(n=Jd(t),r):n},r.parentId=function(t){return arguments.length?(e=Jd(t),r):e},r.path=function(n){return arguments.length?(t=Jd(n),r):t},r},t.style=_n,t.subset=function(t,n){return _t(n,t)},t.sum=function(t,n){let e=0;if(void 0===n)for(let n of t)(n=+n)&&(e+=n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&(e+=i)}return e},t.superset=_t,t.svg=Nc,t.symbol=function(t,n){let e=null,r=Nm(i);function i(){let i;if(e||(e=i=r()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),i)return e=null,i+""||null}return t="function"==typeof t?t:gm(t||cx),n="function"==typeof n?n:gm(void 0===n?64:+n),i.type=function(n){return arguments.length?(t="function"==typeof n?n:gm(n),i):t},i.size=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),i):n},i.context=function(t){return arguments.length?(e=null==t?null:t,i):e},i},t.symbolAsterisk=ux,t.symbolCircle=cx,t.symbolCross=fx,t.symbolDiamond=hx,t.symbolDiamond2=dx,t.symbolPlus=px,t.symbolSquare=gx,t.symbolSquare2=yx,t.symbolStar=mx,t.symbolTimes=Cx,t.symbolTriangle=wx,t.symbolTriangle2=Tx,t.symbolWye=kx,t.symbolX=Cx,t.symbols=Px,t.symbolsFill=Px,t.symbolsStroke=zx,t.text=mc,t.thresholdFreedmanDiaconis=function(t,n,e){const r=v(t),i=at(t,.75)-at(t,.25);return r&&i?Math.ceil((e-n)/(2*i*Math.pow(r,-1/3))):1},t.thresholdScott=function(t,n,e){const r=v(t),i=w(t);return r&&i?Math.ceil((e-n)*Math.cbrt(r)/(3.49*i)):1},t.thresholdSturges=K,t.tickFormat=Eg,t.tickIncrement=V,t.tickStep=W,t.ticks=G,t.timeDay=py,t.timeDays=gy,t.timeFormatDefaultLocale=P_,t.timeFormatLocale=hv,t.timeFriday=Sy,t.timeFridays=$y,t.timeHour=sy,t.timeHours=ly,t.timeInterval=Vg,t.timeMillisecond=Wg,t.timeMilliseconds=Zg,t.timeMinute=ay,t.timeMinutes=uy,t.timeMonday=wy,t.timeMondays=ky,t.timeMonth=Zy,t.timeMonths=Ky,t.timeSaturday=Ey,t.timeSaturdays=Dy,t.timeSecond=iy,t.timeSeconds=oy,t.timeSunday=xy,t.timeSundays=Ny,t.timeThursday=Ay,t.timeThursdays=zy,t.timeTickInterval=cv,t.timeTicks=uv,t.timeTuesday=My,t.timeTuesdays=Cy,t.timeWednesday=Ty,t.timeWednesdays=Py,t.timeWeek=xy,t.timeWeeks=Ny,t.timeYear=tv,t.timeYears=nv,t.timeout=$i,t.timer=Ni,t.timerFlush=ki,t.transition=go,t.transpose=gt,t.tree=function(){var t=$p,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new Up(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new Up(r[i],i)),e.parent=n;return(a.parent=new Up(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore((function(t){t.x<f.x&&(f=t),t.x>s.x&&(s=t),t.depth>l.depth&&(l=t)}));var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),g=e/(l.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!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)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=Rp(u),o=Dp(o),u&&o;)c=Dp(c),(a=Rp(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(Fp(qp(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!Rp(a)&&(a.t=u,a.m+=l-s),o&&!Dp(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=Yp,n=!1,e=1,r=1,i=[0],o=np,a=np,u=np,c=np,f=np;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(Tp),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l<r&&(r=l=(r+l)/2),h<s&&(s=h=(s+h)/2),n.x0=r,n.y0=s,n.x1=l,n.y1=h,n.children&&(e=i[n.depth+1]=o(n)/2,r+=f(n)-e,s+=a(n)-e,(l-=u(n)-e)<r&&(r=l=(r+l)/2),(h-=c(n)-e)<s&&(s=h=(s+h)/2),t(n,r,s,l,h))}return s.round=function(t){return arguments.length?(n=!!t,s):n},s.size=function(t){return arguments.length?(e=+t[0],r=+t[1],s):[e,r]},s.tile=function(n){return arguments.length?(t=tp(n),s):t},s.padding=function(t){return arguments.length?s.paddingInner(t).paddingOuter(t):s.paddingInner()},s.paddingInner=function(t){return arguments.length?(o="function"==typeof t?t:ep(+t),s):o},s.paddingOuter=function(t){return arguments.length?s.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):s.paddingTop()},s.paddingTop=function(t){return arguments.length?(a="function"==typeof t?t:ep(+t),s):a},s.paddingRight=function(t){return arguments.length?(u="function"==typeof t?t:ep(+t),s):u},s.paddingBottom=function(t){return arguments.length?(c="function"==typeof t?t:ep(+t),s):c},s.paddingLeft=function(t){return arguments.length?(f="function"==typeof t?t:ep(+t),s):f},s},t.treemapBinary=function(t,n,e,r,i){var o,a,u=t.children,c=u.length,f=new Array(c+1);for(f[0]=a=o=0;o<c;++o)f[o+1]=a+=u[o].value;!function t(n,e,r,i,o,a,c){if(n>=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}var l=f[n],h=r/2+l,d=n+1,p=e-1;for(;d<p;){var g=d+p>>>1;f[g]<h?d=g+1:p=g}h-f[d-1]<f[d]-h&&n+1<d&&--d;var y=f[d]-l,v=r-y;if(a-i>c-o){var _=r?(i*v+a*y)/r:a;t(n,d,y,i,o,_,c),t(d,e,v,_,o,a,c)}else{var b=r?(o*v+c*y)/r:c;t(n,d,y,i,o,a,b),t(d,e,v,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=Ap,t.treemapResquarify=Lp,t.treemapSlice=Ip,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?Ip:Ap)(t,n,e,r,i)},t.treemapSquarify=Yp,t.tsv=Mc,t.tsvFormat=lc,t.tsvFormatBody=hc,t.tsvFormatRow=pc,t.tsvFormatRows=dc,t.tsvFormatValue=gc,t.tsvParse=fc,t.tsvParseRows=sc,t.union=function(...t){const n=new InternSet;for(const e of t)for(const t of e)n.add(t);return n},t.unixDay=_y,t.unixDays=by,t.utcDay=yy,t.utcDays=vy,t.utcFriday=By,t.utcFridays=Vy,t.utcHour=hy,t.utcHours=dy,t.utcMillisecond=Wg,t.utcMilliseconds=Zg,t.utcMinute=cy,t.utcMinutes=fy,t.utcMonday=qy,t.utcMondays=jy,t.utcMonth=Qy,t.utcMonths=Jy,t.utcSaturday=Yy,t.utcSaturdays=Wy,t.utcSecond=iy,t.utcSeconds=oy,t.utcSunday=Fy,t.utcSundays=Ly,t.utcThursday=Oy,t.utcThursdays=Gy,t.utcTickInterval=av,t.utcTicks=ov,t.utcTuesday=Uy,t.utcTuesdays=Hy,t.utcWednesday=Iy,t.utcWednesdays=Xy,t.utcWeek=Fy,t.utcWeeks=Ly,t.utcYear=ev,t.utcYears=rv,t.variance=x,t.version="7.8.5",t.window=pn,t.xml=Sc,t.zip=function(){return gt(arguments)},t.zoom=function(){var t,n,e,r=Sw,i=Ew,o=Pw,a=kw,u=Cw,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=ri,h=$t("start","zoom","end"),d=500,p=150,g=0,y=10;function v(t){t.property("__zoom",Nw).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",S).filter(u).on("touchstart.zoom",E).on("touchmove.zoom",N).on("touchend.zoom touchcancel.zoom",k).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function _(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new xw(n,t.x,t.y)}function b(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 xw(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,n,e,r){t.on("start.zoom",(function(){w(this,arguments).event(r).start()})).on("interrupt.zoom end.zoom",(function(){w(this,arguments).event(r).end()})).tween("zoom",(function(){var t=this,o=arguments,a=w(t,o).event(r),u=i.apply(t,o),c=null==e?m(u):"function"==typeof e?e.apply(t,o):e,f=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),s=t.__zoom,h="function"==typeof n?n.apply(t,o):n,d=l(s.invert(c).concat(f/s.k),h.invert(c).concat(f/h.k));return function(t){if(1===t)t=h;else{var n=d(t),e=f/n[2];t=new xw(e,c[0]-n[0]*e,c[1]-n[1]*e)}a.zoom(null,t)}}))}function w(t,n,e){return!e&&t.__zooming||new M(t,n)}function M(t,n){this.that=t,this.args=n,this.active=0,this.sourceEvent=null,this.extent=i.apply(t,n),this.taps=0}function T(t,...n){if(r.apply(this,arguments)){var e=w(this,n).event(t),i=this.__zoom,u=Math.max(c[0],Math.min(c[1],i.k*Math.pow(2,a.apply(this,arguments)))),s=ne(t);if(e.wheel)e.mouse[0][0]===s[0]&&e.mouse[0][1]===s[1]||(e.mouse[1]=i.invert(e.mouse[0]=s)),clearTimeout(e.wheel);else{if(i.k===u)return;e.mouse=[s,i.invert(s)],Gi(this),e.start()}Aw(t),e.wheel=setTimeout((function(){e.wheel=null,e.end()}),p),e.zoom("mouse",o(b(_(i,u),e.mouse[0],e.mouse[1]),e.extent,f))}}function A(t,...n){if(!e&&r.apply(this,arguments)){var i=t.currentTarget,a=w(this,n,!0).event(t),u=Zn(t.view).on("mousemove.zoom",(function(t){if(Aw(t),!a.moved){var n=t.clientX-s,e=t.clientY-l;a.moved=n*n+e*e>g}a.event(t).zoom("mouse",o(b(a.that.__zoom,a.mouse[0]=ne(t,i),a.mouse[1]),a.extent,f))}),!0).on("mouseup.zoom",(function(t){u.on("mousemove.zoom mouseup.zoom",null),ue(t.view,a.moved),Aw(t),a.event(t).end()}),!0),c=ne(t,i),s=t.clientX,l=t.clientY;ae(t.view),Tw(t),a.mouse=[c,this.__zoom.invert(c)],Gi(this),a.start()}}function S(t,...n){if(r.apply(this,arguments)){var e=this.__zoom,a=ne(t.changedTouches?t.changedTouches[0]:t,this),u=e.invert(a),c=e.k*(t.shiftKey?.5:2),l=o(b(_(e,c),a,u),i.apply(this,n),f);Aw(t),s>0?Zn(this).transition().duration(s).call(x,l,a,t):Zn(this).call(v.transform,l,a,t)}}function E(e,...i){if(r.apply(this,arguments)){var o,a,u,c,f=e.touches,s=f.length,l=w(this,i,e.changedTouches.length===s).event(e);for(Tw(e),a=0;a<s;++a)c=[c=ne(u=f[a],this),this.__zoom.invert(c),u.identifier],l.touch0?l.touch1||l.touch0[2]===c[2]||(l.touch1=c,l.taps=0):(l.touch0=c,o=!0,l.taps=1+!!t);t&&(t=clearTimeout(t)),o&&(l.taps<2&&(n=c[0],t=setTimeout((function(){t=null}),d)),Gi(this),l.start())}}function N(t,...n){if(this.__zooming){var e,r,i,a,u=w(this,n).event(t),c=t.changedTouches,s=c.length;for(Aw(t),e=0;e<s;++e)i=ne(r=c[e],this),u.touch0&&u.touch0[2]===r.identifier?u.touch0[0]=i:u.touch1&&u.touch1[2]===r.identifier&&(u.touch1[0]=i);if(r=u.that.__zoom,u.touch1){var l=u.touch0[0],h=u.touch0[1],d=u.touch1[0],p=u.touch1[1],g=(g=d[0]-l[0])*g+(g=d[1]-l[1])*g,y=(y=p[0]-h[0])*y+(y=p[1]-h[1])*y;r=_(r,Math.sqrt(g/y)),i=[(l[0]+d[0])/2,(l[1]+d[1])/2],a=[(h[0]+p[0])/2,(h[1]+p[1])/2]}else{if(!u.touch0)return;i=u.touch0[0],a=u.touch0[1]}u.zoom("touch",o(b(r,i,a),u.extent,f))}}function k(t,...r){if(this.__zooming){var i,o,a=w(this,r).event(t),u=t.changedTouches,c=u.length;for(Tw(t),e&&clearTimeout(e),e=setTimeout((function(){e=null}),d),i=0;i<c;++i)o=u[i],a.touch0&&a.touch0[2]===o.identifier?delete a.touch0:a.touch1&&a.touch1[2]===o.identifier&&delete a.touch1;if(a.touch1&&!a.touch0&&(a.touch0=a.touch1,delete a.touch1),a.touch0)a.touch0[1]=this.__zoom.invert(a.touch0[0]);else if(a.end(),2===a.taps&&(o=ne(o,this),Math.hypot(n[0]-o[0],n[1]-o[1])<y)){var f=Zn(this).on("dblclick.zoom");f&&f.apply(this,arguments)}}}return v.transform=function(t,n,e,r){var i=t.selection?t.selection():t;i.property("__zoom",Nw),t!==i?x(t,n,e,r):i.interrupt().each((function(){w(this,arguments).event(r).start().zoom(null,"function"==typeof n?n.apply(this,arguments):n).end()}))},v.scaleBy=function(t,n,e,r){v.scaleTo(t,(function(){return this.__zoom.k*("function"==typeof n?n.apply(this,arguments):n)}),e,r)},v.scaleTo=function(t,n,e,r){v.transform(t,(function(){var t=i.apply(this,arguments),r=this.__zoom,a=null==e?m(t):"function"==typeof e?e.apply(this,arguments):e,u=r.invert(a),c="function"==typeof n?n.apply(this,arguments):n;return o(b(_(r,c),a,u),t,f)}),e,r)},v.translateBy=function(t,n,e,r){v.transform(t,(function(){return o(this.__zoom.translate("function"==typeof n?n.apply(this,arguments):n,"function"==typeof e?e.apply(this,arguments):e),i.apply(this,arguments),f)}),null,r)},v.translateTo=function(t,n,e,r,a){v.transform(t,(function(){var t=i.apply(this,arguments),a=this.__zoom,u=null==r?m(t):"function"==typeof r?r.apply(this,arguments):r;return o(ww.translate(u[0],u[1]).scale(a.k).translate("function"==typeof n?-n.apply(this,arguments):-n,"function"==typeof e?-e.apply(this,arguments):-e),t,f)}),r,a)},M.prototype={event:function(t){return t&&(this.sourceEvent=t),this},start:function(){return 1==++this.active&&(this.that.__zooming=this,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&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){var n=Zn(this.that).datum();h.call(t,this.that,new mw(t,{sourceEvent:this.sourceEvent,target:v,type:t,transform:this.that.__zoom,dispatch:h}),n)}},v.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:bw(+t),v):a},v.filter=function(t){return arguments.length?(r="function"==typeof t?t:bw(!!t),v):r},v.touchable=function(t){return arguments.length?(u="function"==typeof t?t:bw(!!t),v):u},v.extent=function(t){return arguments.length?(i="function"==typeof t?t:bw([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),v):i},v.scaleExtent=function(t){return arguments.length?(c[0]=+t[0],c[1]=+t[1],v):[c[0],c[1]]},v.translateExtent=function(t){return arguments.length?(f[0][0]=+t[0][0],f[1][0]=+t[1][0],f[0][1]=+t[0][1],f[1][1]=+t[1][1],v):[[f[0][0],f[0][1]],[f[1][0],f[1][1]]]},v.constrain=function(t){return arguments.length?(o=t,v):o},v.duration=function(t){return arguments.length?(s=+t,v):s},v.interpolate=function(t){return arguments.length?(l=t,v):l},v.on=function(){var t=h.on.apply(h,arguments);return t===h?v:t},v.clickDistance=function(t){return arguments.length?(g=(t=+t)*t,v):Math.sqrt(g)},v.tapDistance=function(t){return arguments.length?(y=+t,v):y},v},t.zoomIdentity=ww,t.zoomTransform=Mw}));

</script>
    <style>
.d3-flame-graph rect {
  stroke: #EEEEEE;
  fill-opacity: .8;
}

.d3-flame-graph rect:hover {
  stroke: #474747;
  stroke-width: 0.5;
  cursor: pointer;
}

.d3-flame-graph-label {
  pointer-events: none;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  font-size: 12px;
  font-family: Verdana;
  margin-left: 4px;
  margin-right: 4px;
  line-height: 1.5;
  padding: 0 0 0;
  font-weight: 400;
  color: black;
  text-align: left;
}

.d3-flame-graph .fade {
  opacity: 0.6 !important;
}

.d3-flame-graph .title {
  font-size: 20px;
  font-family: Verdana;
}

.d3-flame-graph-tip {
    background-color: black;
    border: none;
    border-radius: 3px;
    padding: 5px 10px 5px 10px;
    min-width: 250px;
    text-align: left;
    color: white;
    z-index: 10;
}
</style>
    <script>
!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.flamegraph=n():t.flamegraph=n()}(self,(function(){return(()=>{"use strict";var t={d:(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n)},n={};function e(){}function r(t){return null==t?e:function(){return this.querySelector(t)}}function i(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function o(){return[]}function u(t){return null==t?o:function(){return this.querySelectorAll(t)}}function a(t){return function(){return this.matches(t)}}function l(t){return function(n){return n.matches(t)}}t.d(n,{default:()=>xr});var s=Array.prototype.find;function c(){return this.firstElementChild}var h=Array.prototype.filter;function f(){return Array.from(this.children)}function p(t){return new Array(t.length)}function d(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function g(t){return function(){return t}}function v(t,n,e,r,i,o){for(var u,a=0,l=n.length,s=o.length;a<s;++a)(u=n[a])?(u.__data__=o[a],r[a]=u):e[a]=new d(t,o[a]);for(;a<l;++a)(u=n[a])&&(i[a]=u)}function y(t,n,e,r,i,o,u){var a,l,s,c=new Map,h=n.length,f=o.length,p=new Array(h);for(a=0;a<h;++a)(l=n[a])&&(p[a]=s=u.call(l,l.__data__,a,n)+"",c.has(s)?i[a]=l:c.set(s,l));for(a=0;a<f;++a)s=u.call(t,o[a],a,o)+"",(l=c.get(s))?(r[a]=l,l.__data__=o[a],c.delete(s)):e[a]=new d(t,o[a]);for(a=0;a<h;++a)(l=n[a])&&c.get(p[a])===l&&(i[a]=l)}function m(t){return t.__data__}function w(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function _(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}d.prototype={constructor:d,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 b="http://www.w3.org/1999/xhtml";const x={svg:"http://www.w3.org/2000/svg",xhtml:b,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function M(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),x.hasOwnProperty(n)?{space:x[n],local:t}:t}function A(t){return function(){this.removeAttribute(t)}}function N(t){return function(){this.removeAttributeNS(t.space,t.local)}}function k(t,n){return function(){this.setAttribute(t,n)}}function E(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function S(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function C(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 j(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function q(t){return function(){this.style.removeProperty(t)}}function O(t,n,e){return function(){this.style.setProperty(t,n,e)}}function P(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function H(t,n){return t.style.getPropertyValue(n)||j(t).getComputedStyle(t,null).getPropertyValue(n)}function L(t){return function(){delete this[t]}}function T(t,n){return function(){this[t]=n}}function D(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function B(t){return t.trim().split(/^|\s+/)}function X(t){return t.classList||new z(t)}function z(t){this._node=t,this._names=B(t.getAttribute("class")||"")}function R(t,n){for(var e=X(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function I(t,n){for(var e=X(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function $(t){return function(){R(this,t)}}function V(t){return function(){I(this,t)}}function Y(t,n){return function(){(n.apply(this,arguments)?R:I)(this,t)}}function F(){this.textContent=""}function U(t){return function(){this.textContent=t}}function Z(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function G(){this.innerHTML=""}function K(t){return function(){this.innerHTML=t}}function W(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function J(){this.nextSibling&&this.parentNode.appendChild(this)}function Q(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function tt(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===b&&n.documentElement.namespaceURI===b?n.createElement(t):n.createElementNS(e,t)}}function nt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function et(t){var n=M(t);return(n.local?nt:tt)(n)}function rt(){return null}function it(){var t=this.parentNode;t&&t.removeChild(this)}function ot(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function ut(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function at(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}}))}function lt(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function st(t,n,e){return function(){var r,i=this.__on,o=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var u=0,a=i.length;u<a;++u)if((r=i[u]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),void(r.value=n);this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}function ct(t,n,e){var r=j(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function ht(t,n){return function(){return ct(this,t,n)}}function ft(t,n){return function(){return ct(this,t,n.apply(this,arguments))}}z.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 pt=[null];function dt(t,n){this._groups=t,this._parents=n}function gt(){return new dt([[document.documentElement]],pt)}dt.prototype=gt.prototype={constructor:dt,select:function(t){"function"!=typeof t&&(t=r(t));for(var n=this._groups,e=n.length,i=new Array(e),o=0;o<e;++o)for(var u,a,l=n[o],s=l.length,c=i[o]=new Array(s),h=0;h<s;++h)(u=l[h])&&(a=t.call(u,u.__data__,h,l))&&("__data__"in u&&(a.__data__=u.__data__),c[h]=a);return new dt(i,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return i(t.apply(this,arguments))}}(t):u(t);for(var n=this._groups,e=n.length,r=[],o=[],a=0;a<e;++a)for(var l,s=n[a],c=s.length,h=0;h<c;++h)(l=s[h])&&(r.push(t.call(l,l.__data__,h,s)),o.push(l));return new dt(r,o)},selectChild:function(t){return this.select(null==t?c:function(t){return function(){return s.call(this.children,t)}}("function"==typeof t?t:l(t)))},selectChildren:function(t){return this.selectAll(null==t?f:function(t){return function(){return h.call(this.children,t)}}("function"==typeof t?t:l(t)))},filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],l=u.length,s=r[i]=[],c=0;c<l;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&s.push(o);return new dt(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,m);var e=n?y:v,r=this._parents,i=this._groups;"function"!=typeof t&&(t=g(t));for(var o=i.length,u=new Array(o),a=new Array(o),l=new Array(o),s=0;s<o;++s){var c=r[s],h=i[s],f=h.length,p=w(t.call(c,c&&c.__data__,s,r)),d=p.length,_=a[s]=new Array(d),b=u[s]=new Array(d),x=l[s]=new Array(f);e(c,h,_,b,x,p,n);for(var M,A,N=0,k=0;N<d;++N)if(M=_[N]){for(N>=k&&(k=N+1);!(A=b[k])&&++k<d;);M._next=A||null}}return(u=new dt(u,r))._enter=a,u._exit=l,u},enter:function(){return new dt(this._enter||this._groups.map(p),this._parents)},exit:function(){return new dt(this._exit||this._groups.map(p),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,u=Math.min(i,o),a=new Array(i),l=0;l<u;++l)for(var s,c=e[l],h=r[l],f=c.length,p=a[l]=new Array(f),d=0;d<f;++d)(s=c[d]||h[d])&&(p[d]=s);for(;l<i;++l)a[l]=e[l];return new dt(a,this._parents)},selection:function(){return this},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&&4^r.compareDocumentPosition(u)&&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=_);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var u,a=e[o],l=a.length,s=i[o]=new Array(l),c=0;c<l;++c)(u=a[c])&&(s[c]=u);s.sort(n)}return new dt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},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(){let t=0;for(const n of this)++t;return 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=M(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?N:A:"function"==typeof n?e.local?C:S:e.local?E:k)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?q:"function"==typeof n?P:O)(t,n,null==e?"":e)):H(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?L:"function"==typeof n?D:T)(t,n)):this.node()[t]},classed:function(t,n){var e=B(t+"");if(arguments.length<2){for(var r=X(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?Y:n?$:V)(e,n))},text:function(t){return arguments.length?this.each(null==t?F:("function"==typeof t?Z:U)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?G:("function"==typeof t?W:K)(t)):this.node().innerHTML},raise:function(){return this.each(J)},lower:function(){return this.each(Q)},append:function(t){var n="function"==typeof t?t:et(t);return this.select((function(){return this.appendChild(n.apply(this,arguments))}))},insert:function(t,n){var e="function"==typeof t?t:et(t),i=null==n?rt:"function"==typeof n?n:r(n);return this.select((function(){return this.insertBefore(e.apply(this,arguments),i.apply(this,arguments)||null)}))},remove:function(){return this.each(it)},clone:function(t){return this.select(t?ut:ot)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=at(t+""),u=o.length;if(!(arguments.length<2)){for(a=n?st:lt,r=0;r<u;++r)this.each(a(o[r],n,e));return this}var a=this.node().__on;if(a)for(var l,s=0,c=a.length;s<c;++s)for(r=0,l=a[s];r<u;++r)if((i=o[r]).type===l.type&&i.name===l.name)return l.value},dispatch:function(t,n){return this.each(("function"==typeof n?ft:ht)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,u=i.length;o<u;++o)(r=i[o])&&(yield r)}};const vt=gt;function yt(t){return"string"==typeof t?new dt([[document.querySelector(t)]],[document.documentElement]):new dt([[t]],pt)}function mt(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function wt(t){return(t=mt(Math.abs(t)))?t[1]:NaN}var _t,bt=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function xt(t){if(!(n=bt.exec(t)))throw new Error("invalid format: "+t);var n;return new Mt({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function Mt(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function At(t,n){var e=mt(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}xt.prototype=Mt.prototype,Mt.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Nt={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>At(100*t,n),r:At,s:function(t,n){var e=mt(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(_t=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")+mt(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function kt(t){return t}var Et,St,Ct,jt=Array.prototype.map,qt=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Ot(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?kt:(n=jt.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],u=0,a=n[0],l=0;i>0&&a>0&&(l+a+1>r&&(a=Math.max(1,r-l)),o.push(t.substring(i-=a,i+a)),!((l+=a+1)>r));)a=n[u=(u+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",u=void 0===t.decimal?".":t.decimal+"",a=void 0===t.numerals?kt:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(jt.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",s=void 0===t.minus?"−":t.minus+"",c=void 0===t.nan?"NaN":t.nan+"";function h(t){var n=(t=xt(t)).fill,e=t.align,h=t.sign,f=t.symbol,p=t.zero,d=t.width,g=t.comma,v=t.precision,y=t.trim,m=t.type;"n"===m?(g=!0,m="g"):Nt[m]||(void 0===v&&(v=12),y=!0,m="g"),(p||"0"===n&&"="===e)&&(p=!0,n="0",e="=");var w="$"===f?i:"#"===f&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",_="$"===f?o:/[%p]/.test(m)?l:"",b=Nt[m],x=/[defgprs%]/.test(m);function M(t){var i,o,l,f=w,M=_;if("c"===m)M=b(t)+M,t="";else{var A=(t=+t)<0||1/t<0;if(t=isNaN(t)?c:b(Math.abs(t),v),y&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),A&&0==+t&&"+"!==h&&(A=!1),f=(A?"("===h?h:s:"-"===h||"("===h?"":h)+f,M=("s"===m?qt[8+_t/3]:"")+M+(A&&"("===h?")":""),x)for(i=-1,o=t.length;++i<o;)if(48>(l=t.charCodeAt(i))||l>57){M=(46===l?u+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!p&&(t=r(t,1/0));var N=f.length+t.length+M.length,k=N<d?new Array(d-N+1).join(n):"";switch(g&&p&&(t=r(k+t,k.length?d-M.length:1/0),k=""),e){case"<":t=f+t+M+k;break;case"=":t=f+k+t+M;break;case"^":t=k.slice(0,N=k.length>>1)+f+t+M+k.slice(N);break;default:t=k+f+t+M}return a(t)}return v=void 0===v?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),M.toString=function(){return t+""},M}return{format:h,formatPrefix:function(t,n){var e=h(((t=xt(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(wt(n)/3))),i=Math.pow(10,-r),o=qt[8+r/3];return function(t){return e(i*t)+o}}}}function Pt(t,n){return null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function Ht(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Lt(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&function(t,n,e,r,i){for(var o,u=t.children,a=-1,l=u.length,s=t.value&&(r-n)/t.value;++a<l;)(o=u[a]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*s}(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,u=r.x1-e,a=r.y1-e;u<i&&(i=u=(i+u)/2),a<o&&(o=a=(o+a)/2),r.x0=i,r.y0=o,r.x1=u,r.y1=a}}(n,o)),r&&i.eachBefore(Ht),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i}function Tt(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function Dt(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=Xt)):void 0===n&&(n=Bt);for(var e,r,i,o,u,a=new It(t),l=[a];e=l.pop();)if((i=n(e.data))&&(u=(i=Array.from(i)).length))for(e.children=i,o=u-1;o>=0;--o)l.push(r=i[o]=new It(i[o])),r.parent=e,r.depth=e.depth+1;return a.eachBefore(Rt)}function Bt(t){return t.children}function Xt(t){return Array.isArray(t)?t[1]:null}function zt(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Rt(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function It(t){this.data=t,this.depth=this.height=0,this.parent=null}Et=Ot({thousands:",",grouping:[3],currency:["$",""]}),St=Et.format,Ct=Et.formatPrefix,It.prototype=Dt.prototype={constructor:It,count:function(){return this.eachAfter(Tt)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,o=this,u=[o],a=[],l=-1;o=u.pop();)if(a.push(o),e=o.children)for(r=0,i=e.length;r<i;++r)u.push(e[r]);for(;o=a.pop();)t.call(n,o,++l,this);return this},eachBefore:function(t,n){for(var e,r,i=this,o=[i],u=-1;i=o.pop();)if(t.call(n,i,++u,this),e=i.children)for(r=e.length-1;r>=0;--r)o.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},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;t=e.pop(),n=r.pop();for(;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(){return Array.from(this)},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 Dt(this).eachBefore(zt)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,o=[i];do{for(t=o.reverse(),o=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e])}while(o.length)}};var $t=Math.sqrt(50),Vt=Math.sqrt(10),Yt=Math.sqrt(2);function Ft(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=$t?10:o>=Vt?5:o>=Yt?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=$t?10:o>=Vt?5:o>=Yt?2:1)}function Ut(t){let n=t,e=t,r=t;function i(t,n,i=0,o=t.length){if(i<o){if(0!==e(n,n))return o;do{const e=i+o>>>1;r(t[e],n)<0?i=e+1:o=e}while(i<o)}return i}return 2!==t.length&&(n=(n,e)=>t(n)-e,e=Pt,r=(n,e)=>Pt(t(n),e)),{left:i,center:function(t,e,r=0,o=t.length){const u=i(t,e,r,o-1);return u>r&&n(t[u-1],e)>-n(t[u],e)?u-1:u},right:function(t,n,i=0,o=t.length){if(i<o){if(0!==e(n,n))return o;do{const e=i+o>>>1;r(t[e],n)<=0?i=e+1:o=e}while(i<o)}return i}}}const Zt=Ut(Pt),Gt=Zt.right,Kt=(Zt.left,Ut((function(t){return null===t?NaN:+t})).center,Gt);function Wt(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Jt(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Qt(){}var tn=.7,nn=1/tn,en="\\s*([+-]?\\d+)\\s*",rn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",on="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",un=/^#([0-9a-f]{3,8})$/,an=new RegExp("^rgb\\("+[en,en,en]+"\\)$"),ln=new RegExp("^rgb\\("+[on,on,on]+"\\)$"),sn=new RegExp("^rgba\\("+[en,en,en,rn]+"\\)$"),cn=new RegExp("^rgba\\("+[on,on,on,rn]+"\\)$"),hn=new RegExp("^hsl\\("+[rn,on,on]+"\\)$"),fn=new RegExp("^hsla\\("+[rn,on,on,rn]+"\\)$"),pn={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};function dn(){return this.rgb().formatHex()}function gn(){return this.rgb().formatRgb()}function vn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=un.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?yn(n):3===e?new bn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?mn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?mn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=an.exec(t))?new bn(n[1],n[2],n[3],1):(n=ln.exec(t))?new bn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=sn.exec(t))?mn(n[1],n[2],n[3],n[4]):(n=cn.exec(t))?mn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=hn.exec(t))?Nn(n[1],n[2]/100,n[3]/100,1):(n=fn.exec(t))?Nn(n[1],n[2]/100,n[3]/100,n[4]):pn.hasOwnProperty(t)?yn(pn[t]):"transparent"===t?new bn(NaN,NaN,NaN,0):null}function yn(t){return new bn(t>>16&255,t>>8&255,255&t,1)}function mn(t,n,e,r){return r<=0&&(t=n=e=NaN),new bn(t,n,e,r)}function wn(t){return t instanceof Qt||(t=vn(t)),t?new bn((t=t.rgb()).r,t.g,t.b,t.opacity):new bn}function _n(t,n,e,r){return 1===arguments.length?wn(t):new bn(t,n,e,null==r?1:r)}function bn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function xn(){return"#"+An(this.r)+An(this.g)+An(this.b)}function Mn(){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+")")}function An(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Nn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new En(t,n,e,r)}function kn(t){if(t instanceof En)return new En(t.h,t.s,t.l,t.opacity);if(t instanceof Qt||(t=vn(t)),!t)return new En;if(t instanceof En)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,l=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e<r):e===o?(r-n)/a+2:(n-e)/a+4,a/=l<.5?o+i:2-o-i,u*=60):a=l>0&&l<1?0:u,new En(u,a,l,t.opacity)}function En(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Sn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Cn(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}Wt(Qt,vn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:dn,formatHex:dn,formatHsl:function(){return kn(this).formatHsl()},formatRgb:gn,toString:gn}),Wt(bn,_n,Jt(Qt,{brighter:function(t){return t=null==t?nn:Math.pow(nn,t),new bn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?tn:Math.pow(tn,t),new bn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:xn,formatHex:xn,formatRgb:Mn,toString:Mn})),Wt(En,(function(t,n,e,r){return 1===arguments.length?kn(t):new En(t,n,e,null==r?1:r)}),Jt(Qt,{brighter:function(t){return t=null==t?nn:Math.pow(nn,t),new En(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?tn:Math.pow(tn,t),new En(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 bn(Sn(t>=240?t-240:t+120,i,r),Sn(t,i,r),Sn(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},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const jn=t=>()=>t;function qn(t,n){return function(e){return t+e*n}}function On(t){return 1==(t=+t)?Pn:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):jn(isNaN(n)?e:n)}}function Pn(t,n){var e=n-t;return e?qn(t,e):jn(isNaN(t)?n:t)}const Hn=function t(n){var e=On(n);function r(t,n){var r=e((t=_n(t)).r,(n=_n(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),u=Pn(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=u(n),t+""}}return r.gamma=t,r}(1);function Ln(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e<i;++e)r=_n(n[e]),o[e]=r.r||0,u[e]=r.g||0,a[e]=r.b||0;return o=t(o),u=t(u),a=t(a),r.opacity=1,function(t){return r.r=o(t),r.g=u(t),r.b=a(t),r+""}}}Ln((function(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=r<n-1?t[r+2]:2*o-i;return Cn((e-r/n)*n,u,i,o,a)}})),Ln((function(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],u=t[(r+1)%n],a=t[(r+2)%n];return Cn((e-r/n)*n,i,o,u,a)}}));function Tn(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),u=new Array(r);for(e=0;e<i;++e)o[e]=Vn(t[e],n[e]);for(;e<r;++e)u[e]=n[e];return function(t){for(e=0;e<i;++e)u[e]=o[e](t);return u}}function Dn(t,n){var e=new Date;return t=+t,n=+n,function(r){return e.setTime(t*(1-r)+n*r),e}}function Bn(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function Xn(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=Vn(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var zn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Rn=new RegExp(zn.source,"g");function In(t,n){var e,r,i,o=zn.lastIndex=Rn.lastIndex=0,u=-1,a=[],l=[];for(t+="",n+="";(e=zn.exec(t))&&(r=Rn.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,l.push({i:u,x:Bn(e,r)})),o=Rn.lastIndex;return o<n.length&&(i=n.slice(o),a[u]?a[u]+=i:a[++u]=i),a.length<2?l[0]?function(t){return function(n){return t(n)+""}}(l[0].x):function(t){return function(){return t}}(n):(n=l.length,function(t){for(var e,r=0;r<n;++r)a[(e=l[r]).i]=e.x(t);return a.join("")})}function $n(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;e<r;++e)i[e]=t[e]*(1-o)+n[e]*o;return i}}function Vn(t,n){var e,r,i=typeof n;return null==n||"boolean"===i?jn(n):("number"===i?Bn:"string"===i?(e=vn(n))?(n=e,Hn):In:n instanceof vn?Hn:n instanceof Date?Dn:(r=n,!ArrayBuffer.isView(r)||r instanceof DataView?Array.isArray(n)?Tn:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?Xn:Bn:$n))(t,n)}function Yn(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}function Fn(t){return+t}var Un=[0,1];function Zn(t){return t}function Gn(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:(e=isNaN(n)?NaN:.5,function(){return e});var e}function Kn(t,n,e){var r=t[0],i=t[1],o=n[0],u=n[1];return i<r?(r=Gn(i,r),o=e(u,o)):(r=Gn(r,i),o=e(o,u)),function(t){return o(r(t))}}function Wn(t,n,e){var r=Math.min(t.length,n.length)-1,i=new Array(r),o=new Array(r),u=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++u<r;)i[u]=Gn(t[u],t[u+1]),o[u]=e(n[u],n[u+1]);return function(n){var e=Kt(t,n,1,r)-1;return o[e](i[e](n))}}function Jn(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Qn(){var t,n,e,r,i,o,u=Un,a=Un,l=Vn,s=Zn;function c(){var t,n,e,l=Math.min(u.length,a.length);return s!==Zn&&(t=u[0],n=u[l-1],t>n&&(e=t,t=n,n=e),s=function(e){return Math.max(t,Math.min(n,e))}),r=l>2?Wn:Kn,i=o=null,h}function h(n){return null==n||isNaN(n=+n)?e:(i||(i=r(u.map(t),a,l)))(t(s(n)))}return h.invert=function(e){return s(n((o||(o=r(a,u.map(t),Bn)))(e)))},h.domain=function(t){return arguments.length?(u=Array.from(t,Fn),c()):u.slice()},h.range=function(t){return arguments.length?(a=Array.from(t),c()):a.slice()},h.rangeRound=function(t){return a=Array.from(t),l=Yn,c()},h.clamp=function(t){return arguments.length?(s=!!t||Zn,c()):s!==Zn},h.interpolate=function(t){return arguments.length?(l=t,c()):l},h.unknown=function(t){return arguments.length?(e=t,h):e},function(e,r){return t=e,n=r,c()}}function te(){return Qn()(Zn,Zn)}function ne(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function ee(t,n,e,r){var i,o=function(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=$t?i*=10:o>=Vt?i*=5:o>=Yt&&(i*=2),n<t?-i:i}(t,n,e);switch((r=xt(null==r?",f":r)).type){case"s":var u=Math.max(Math.abs(t),Math.abs(n));return null!=r.precision||isNaN(i=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(wt(n)/3)))-wt(Math.abs(t)))}(o,u))||(r.precision=i),Ct(r,u);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,wt(n)-wt(t))+1}(o,Math.max(Math.abs(t),Math.abs(n))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-wt(Math.abs(t)))}(o))||(r.precision=i-2*("%"===r.type))}return St(r)}function re(t){var n=t.domain;return t.ticks=function(t){var e=n();return function(t,n,e){var r,i,o,u,a=-1;if(e=+e,(t=+t)==(n=+n)&&e>0)return[t];if((r=n<t)&&(i=t,t=n,n=i),0===(u=Ft(t,n,e))||!isFinite(u))return[];if(u>0){let e=Math.round(t/u),r=Math.round(n/u);for(e*u<t&&++e,r*u>n&&--r,o=new Array(i=r-e+1);++a<i;)o[a]=(e+a)*u}else{u=-u;let e=Math.round(t*u),r=Math.round(n*u);for(e/u<t&&++e,r/u>n&&--r,o=new Array(i=r-e+1);++a<i;)o[a]=(e+a)/u}return r&&o.reverse(),o}(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return ee(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i,o=n(),u=0,a=o.length-1,l=o[u],s=o[a],c=10;for(s<l&&(i=l,l=s,s=i,i=u,u=a,a=i);c-- >0;){if((i=Ft(l,s,e))===r)return o[u]=l,o[a]=s,n(o);if(i>0)l=Math.floor(l/i)*i,s=Math.ceil(s/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,s=Math.floor(s*i)/i}r=i}return t},t}function ie(){var t=te();return t.copy=function(){return Jn(t,ie())},ne.apply(t,arguments),re(t)}function oe(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var ue={value:()=>{}};function ae(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new le(r)}function le(t){this._=t}function se(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}}))}function ce(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function he(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=ue,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}le.prototype=ae.prototype={constructor:le,on:function(t,n){var e,r=this._,i=se(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]=he(r[e],t.name,n);else if(null==n)for(e in r)r[e]=he(r[e],t.name,null);return this}for(;++o<u;)if((e=(t=i[o]).type)&&(e=ce(r[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new le(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)}};const fe=ae;var pe,de,ge=0,ve=0,ye=0,me=0,we=0,_e=0,be="object"==typeof performance&&performance.now?performance:Date,xe="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Me(){return we||(xe(Ae),we=be.now()+_e)}function Ae(){we=0}function Ne(){this._call=this._time=this._next=null}function ke(t,n,e){var r=new Ne;return r.restart(t,n,e),r}function Ee(){we=(me=be.now())+_e,ge=ve=0;try{!function(){Me(),++ge;for(var t,n=pe;n;)(t=we-n._time)>=0&&n._call.call(void 0,t),n=n._next;--ge}()}finally{ge=0,function(){var t,n,e=pe,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:pe=n);de=t,Ce(r)}(),we=0}}function Se(){var t=be.now(),n=t-me;n>1e3&&(_e-=n,me=t)}function Ce(t){ge||(ve&&(ve=clearTimeout(ve)),t-we>24?(t<1/0&&(ve=setTimeout(Ee,t-be.now()-_e)),ye&&(ye=clearInterval(ye))):(ye||(me=be.now(),ye=setInterval(Se,1e3)),ge=1,xe(Ee)))}function je(t,n,e){var r=new Ne;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Ne.prototype=ke.prototype={constructor:Ne,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Me():+e)+(null==n?0:+n),this._next||de===this||(de?de._next=this:pe=this,de=this),this._call=t,this._time=e,Ce()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ce())}};var qe=fe("start","end","cancel","interrupt"),Oe=[];function Pe(t,n,e,r,i,o){var u=t.__transition;if(u){if(e in u)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=1,e.timer.restart(u,e.delay,e.time),e.delay<=t&&u(t-e.delay)}function u(o){var s,c,h,f;if(1!==e.state)return l();for(s in i)if((f=i[s]).name===e.name){if(3===f.state)return je(u);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[s]):+s<n&&(f.state=6,f.timer.stop(),f.on.call("cancel",t,t.__data__,f.index,f.group),delete i[s])}if(je((function(){3===e.state&&(e.state=4,e.timer.restart(a,e.delay,e.time),a(o))})),e.state=2,e.on.call("start",t,t.__data__,e.index,e.group),2===e.state){for(e.state=3,r=new Array(h=e.tween.length),s=0,c=-1;s<h;++s)(f=e.tween[s].value.call(t,t.__data__,e.index,e.group))&&(r[++c]=f);r.length=c+1}}function a(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(l),e.state=5,1),o=-1,u=r.length;++o<u;)r[o].call(t,i);5===e.state&&(e.on.call("end",t,t.__data__,e.index,e.group),l())}function l(){for(var r in e.state=6,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=ke(o,0,e.time)}(t,e,{name:n,index:r,group:i,on:qe,tween:Oe,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:0})}function He(t,n){var e=Te(t,n);if(e.state>0)throw new Error("too late; already scheduled");return e}function Le(t,n){var e=Te(t,n);if(e.state>3)throw new Error("too late; already running");return e}function Te(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}var De,Be=180/Math.PI,Xe={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ze(t,n,e,r,i,o){var u,a,l;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(l=t*e+n*r)&&(e-=t*l,r-=n*l),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,l/=a),t*r<n*e&&(t=-t,n=-n,l=-l,u=-u),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Be,skewX:Math.atan(l)*Be,scaleX:u,scaleY:a}}function Re(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,u){var a=[],l=[];return o=t(o),u=t(u),function(t,r,i,o,u,a){if(t!==i||r!==o){var l=u.push("translate(",null,n,null,e);a.push({i:l-4,x:Bn(t,i)},{i:l-2,x:Bn(r,o)})}else(i||o)&&u.push("translate("+i+n+o+e)}(o.translateX,o.translateY,u.translateX,u.translateY,a,l),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Bn(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,l),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Bn(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,l),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:Bn(t,e)},{i:a-2,x:Bn(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,l),o=u=null,function(t){for(var n,e=-1,r=l.length;++e<r;)a[(n=l[e]).i]=n.x(t);return a.join("")}}}var Ie=Re((function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Xe:ze(n.a,n.b,n.c,n.d,n.e,n.f)}),"px, ","px)","deg)"),$e=Re((function(t){return null==t?Xe:(De||(De=document.createElementNS("http://www.w3.org/2000/svg","g")),De.setAttribute("transform",t),(t=De.transform.baseVal.consolidate())?ze((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Xe)}),", ",")",")");function Ve(t,n){var e,r;return function(){var i=Le(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 Ye(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Le(this,t),u=o.tween;if(u!==r){i=(r=u).slice();for(var a={name:n,value:e},l=0,s=i.length;l<s;++l)if(i[l].name===n){i[l]=a;break}l===s&&i.push(a)}o.tween=i}}function Fe(t,n,e){var r=t._id;return t.each((function(){var t=Le(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)})),function(t){return Te(t,r).value[n]}}function Ue(t,n){var e;return("number"==typeof n?Bn:n instanceof vn?Hn:(e=vn(n))?(n=e,Hn):In)(t,n)}function Ze(t){return function(){this.removeAttribute(t)}}function Ge(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ke(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttribute(t);return u===o?null:u===r?i:i=n(r=u,e)}}function We(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttributeNS(t.space,t.local);return u===o?null:u===r?i:i=n(r=u,e)}}function Je(t,n,e){var r,i,o;return function(){var u,a,l=e(this);if(null!=l)return(u=this.getAttribute(t))===(a=l+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,l));this.removeAttribute(t)}}function Qe(t,n,e){var r,i,o;return function(){var u,a,l=e(this);if(null!=l)return(u=this.getAttributeNS(t.space,t.local))===(a=l+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,l));this.removeAttributeNS(t.space,t.local)}}function tr(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function nr(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function er(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&nr(t,i)),e}return i._value=n,i}function rr(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&tr(t,i)),e}return i._value=n,i}function ir(t,n){return function(){He(this,t).delay=+n.apply(this,arguments)}}function or(t,n){return n=+n,function(){He(this,t).delay=n}}function ur(t,n){return function(){Le(this,t).duration=+n.apply(this,arguments)}}function ar(t,n){return n=+n,function(){Le(this,t).duration=n}}function lr(t,n){if("function"!=typeof n)throw new Error;return function(){Le(this,t).ease=n}}function sr(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)?He:Le;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}var cr=vt.prototype.constructor;function hr(t){return function(){this.style.removeProperty(t)}}function fr(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function pr(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&fr(t,o,e)),r}return o._value=n,o}function dr(t){return function(n){this.textContent=t.call(this,n)}}function gr(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&dr(r)),n}return r._value=t,r}var vr=0;function yr(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function mr(){return++vr}var wr=vt.prototype;yr.prototype=function(t){return vt().transition(t)}.prototype={constructor:yr,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=r(t));for(var i=this._groups,o=i.length,u=new Array(o),a=0;a<o;++a)for(var l,s,c=i[a],h=c.length,f=u[a]=new Array(h),p=0;p<h;++p)(l=c[p])&&(s=t.call(l,l.__data__,p,c))&&("__data__"in l&&(s.__data__=l.__data__),f[p]=s,Pe(f[p],n,e,p,f,Te(l,e)));return new yr(u,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=u(t));for(var r=this._groups,i=r.length,o=[],a=[],l=0;l<i;++l)for(var s,c=r[l],h=c.length,f=0;f<h;++f)if(s=c[f]){for(var p,d=t.call(s,s.__data__,f,c),g=Te(s,e),v=0,y=d.length;v<y;++v)(p=d[v])&&Pe(p,n,e,v,d,g);o.push(d),a.push(s)}return new yr(o,a,n,e)},selectChild:wr.selectChild,selectChildren:wr.selectChildren,filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],l=u.length,s=r[i]=[],c=0;c<l;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&s.push(o);return new yr(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 l,s=n[a],c=e[a],h=s.length,f=u[a]=new Array(h),p=0;p<h;++p)(l=s[p]||c[p])&&(f[p]=l);for(;a<r;++a)u[a]=n[a];return new yr(u,this._parents,this._name,this._id)},selection:function(){return new cr(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=mr(),r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],l=a.length,s=0;s<l;++s)if(u=a[s]){var c=Te(u,n);Pe(u,t,e,s,a,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new yr(r,this._parents,t,e)},call:wr.call,nodes:wr.nodes,node:wr.node,size:wr.size,empty:wr.empty,each:wr.each,on:function(t,n){var e=this._id;return arguments.length<2?Te(this.node(),e).on.on(t):this.each(sr(e,t,n))},attr:function(t,n){var e=M(t),r="transform"===e?$e:Ue;return this.attrTween(t,"function"==typeof n?(e.local?Qe:Je)(e,r,Fe(this,"attr."+t,n)):null==n?(e.local?Ge:Ze)(e):(e.local?We:Ke)(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=M(t);return this.tween(e,(r.local?er:rr)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?Ie:Ue;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=H(this,t),u=(this.style.removeProperty(t),H(this,t));return o===u?null:o===e&&u===r?i:i=n(e=o,r=u)}}(t,r)).on("end.style."+t,hr(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var u=H(this,t),a=e(this),l=a+"";return null==a&&(this.style.removeProperty(t),l=a=H(this,t)),u===l?null:u===r&&l===i?o:(i=l,o=n(r=u,a))}}(t,r,Fe(this,"style."+t,n))).each(function(t,n){var e,r,i,o,u="style."+n,a="end."+u;return function(){var l=Le(this,t),s=l.on,c=null==l.value[u]?o||(o=hr(n)):void 0;s===e&&i===c||(r=(e=s).copy()).on(a,i=c),l.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var u=H(this,t);return u===o?null:u===r?i:i=n(r=u,e)}}(t,r,n),e).on("end.style."+t,null)},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,pr(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}}(Fe(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,gr(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=Te(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?Ve:Ye)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ir:or)(n,t)):Te(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ur:ar)(n,t)):Te(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(lr(n,t)):Te(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;Le(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise((function(o,u){var a={value:u},l={value:function(){0==--i&&o()}};e.each((function(){var e=Le(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(a),n._.interrupt.push(a),n._.end.push(l)),e.on=n})),0===i&&o()}))},[Symbol.iterator]:wr[Symbol.iterator]};var _r={time:null,delay:0,duration:250,ease:oe};function br(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}function xr(){let t=960,n=null,e=18,r=null,i=null,o="",u=750,a=oe,l=!1,s=!1,c=null,h=null,f=0,p=null,d=null,g=!1,v=!1,y=!1,m=null,w=!1,_=null,b=function(t){return t.data.n||t.data.name},x=function(t){return"v"in t?t.v:t.value},M=function(t){return t.c||t.children},A=function(t){return t.data.l||t.data.libtype},N=function(t){return"d"in t.data?t.data.d:t.data.delta},k=function(t,n,e){d=()=>{p&&(p.textContent="search: "+n+" of "+e+" total samples ( "+St(".3f")(n/e*100,3)+"%)")},d()};const E=k;let S=(t,n,e=!1)=>{if(!n)return!1;let r=b(t);e&&(n=n.toLowerCase(),r=r.toLowerCase());const i=new RegExp(n);return void 0!==r&&r&&r.match(i)};const C=S;let j=function(t){p&&(t?p.textContent=t:"function"==typeof d?d():p.textContent="")};const q=j;let O=function(t){return b(t)+" ("+St(".3f")(100*(t.x1-t.x0),3)+"%, "+x(t)+" samples)"},P=function(t){return t.highlight?"#E600E6":function(t,n){let e=_||"warm";_||void 0===n||""===n||(e="red",void 0!==t&&t&&t.match(/::/)&&(e="yellow"),"kernel"===n?e="orange":"jit"===n?e="green":"inlined"===n&&(e="aqua"));const r=function(t){let n=0;if(t){const e=t.split("`");e.length>1&&(t=e[e.length-1]),n=function(t){let n=0,e=0,r=1;if(t){for(let i=0;i<t.length&&!(i>6);i++)n+=r*(t.charCodeAt(i)%10),e+=9*r,r*=.7;e>0&&(n/=e)}return n}(t=t.split("(")[0])}return n}(t);return function(t,n){let e,r,i;return"red"===t?(e=200+Math.round(55*n),r=50+Math.round(80*n),i=r):"orange"===t?(e=190+Math.round(65*n),r=90+Math.round(65*n),i=0):"yellow"===t?(e=175+Math.round(55*n),r=e,i=50+Math.round(20*n)):"green"===t?(e=50+Math.round(60*n),r=200+Math.round(55*n),i=e):"pastelgreen"===t?(e=163+Math.round(75*n),r=195+Math.round(49*n),i=72+Math.round(149*n)):"blue"===t?(e=91+Math.round(126*n),r=156+Math.round(76*n),i=221+Math.round(26*n)):"aqua"===t?(e=50+Math.round(60*n),r=165+Math.round(55*n),i=r):"cold"===t?(e=0+Math.round(55*(1-n)),r=0+Math.round(230*(1-n)),i=200+Math.round(55*n)):(e=200+Math.round(55*n),r=0+Math.round(230*(1-n)),i=0+Math.round(55*(1-n))),"rgb("+e+","+r+","+i+")"}(e,r)}(b(t),A(t))};const H=P;function L(t){t.data.fade=!1,t.data.hide=!1,t.children&&t.children.forEach(L)}function T(t){t.parent&&(t.parent.data.fade=!0,T(t.parent))}function D(t){if(i&&i.hide(),function(t){let n,e,r,i=t,o=i.parent;for(;o;){for(n=o.children,e=n.length;e--;)r=n[e],r!==i&&(r.data.hide=!0);i=o,o=i.parent}}(t),L(t),T(t),I(),y){const n=yt(this).select("svg")._groups[0][0].parentNode.offsetTop,r=(window.innerHeight-n)/e,i=(t.height-r+10)*e;window.scrollTo({top:n+i,left:0,behavior:"smooth"})}"function"==typeof c&&c(t)}function B(t,n){if(t.id===n)return t;{const e=M(t);if(e)for(let t=0;t<e.length;t++){const r=B(e[t],n);if(r)return r}}}function X(t){t.highlight=!1,M(t)&&M(t).forEach((function(t){X(t)}))}function z(t,n){return"function"==typeof l?l(t,n):l?Pt(b(t),b(n)):void 0}const R=Lt();function I(){r.each((function(r){const o=ie().range([0,t]),c=ie().range([0,e]);V(r),l&&r.sort(z),R(r);const p=t/(r.x1-r.x0);function d(t){return(t.x1-t.x0)*p}const g=function(n){let e=n.descendants();if(f>0){const r=t/(n.x1-n.x0);e=e.filter((function(t){return(t.x1-t.x0)*r>f}))}return e}(r),y=yt(this).select("svg");y.attr("width",t);let w=y.selectAll("g").data(g,(function(t){return t.id}));if(!n||v){const t=Math.max.apply(null,g.map((function(t){return t.depth})));n=(t+3)*e,n<m&&(n=m),y.attr("height",n)}w.transition().duration(u).ease(a).attr("transform",(function(t){return"translate("+o(t.x0)+","+(s?c(t.depth):n-c(t.depth)-e)+")"})),w.select("rect").transition().duration(u).ease(a).attr("width",d);const _=w.enter().append("svg:g").attr("transform",(function(t){return"translate("+o(t.x0)+","+(s?c(t.depth):n-c(t.depth)-e)+")"}));_.append("svg:rect").transition().delay(u/2).attr("width",d),i||_.append("svg:title"),_.append("foreignObject").append("xhtml:div"),w=y.selectAll("g").data(g,(function(t){return t.id})),w.attr("width",d).attr("height",(function(t){return e})).attr("name",(function(t){return b(t)})).attr("class",(function(t){return t.data.fade?"frame fade":"frame"})),w.select("rect").attr("height",(function(t){return e})).attr("fill",(function(t){return P(t)})),i||w.select("title").text(O),w.select("foreignObject").attr("width",d).attr("height",(function(t){return e})).select("div").attr("class","d3-flame-graph-label").style("display",(function(t){return d(t)<35?"none":"block"})).transition().delay(u).text(b),w.on("click",((t,n)=>{D(n)})),w.exit().remove(),w.on("mouseover",(function(t,n){i&&i.show(n,this),j(O(n)),"function"==typeof h&&h(n)})).on("mouseout",(function(){i&&i.hide(),j(null)}))}))}function $(t,n){n.forEach((function(n){const e=t.find((function(t){return t.name===n.name}));e?(e.value+=n.value,n.children&&(e.children||(e.children=[]),$(e.children,n.children))):t.push(n)}))}function V(t){let n,e,r,i,o,u,a,l;const s=[],c=[],h=[],f=!g;let p=t.data;for(p.hide?(t.value=0,e=t.children,e&&h.push(e)):(t.value=p.fade?0:x(p),s.push(t));n=s.pop();)if(e=n.children,e&&(o=e.length)){for(i=0;o--;)a=e[o],p=a.data,p.hide?(a.value=0,r=a.children,r&&h.push(r)):(p.fade?a.value=0:(l=x(p),a.value=l,i+=l),s.push(a));f&&n.value&&(n.value-=i),c.push(e)}for(o=c.length;o--;){for(e=c[o],i=0,u=e.length;u--;)i+=e[u].value;e[0].parent.value+=i}for(;h.length;)for(e=h.pop(),u=e.length;u--;)a=e[u],a.value=0,r=a.children,r&&h.push(r)}function Y(){r.datum((t=>{if("Node"!==t.constructor.name){const n=Dt(t,M);return function(t){let n=0;!function(t,n){n(t);let e=t.children;if(e){const t=[e];let r,i,o;for(;t.length;)for(e=t.pop(),r=e.length;r--;)i=e[r],n(i),o=i.children,o&&t.push(o)}}(t,(function(t){t.id=n++}))}(n),V(n),n.originalValue=n.value,w&&n.eachAfter((t=>{let n=N(t);const e=t.children;let r=e&&e.length;for(;--r>=0;)n+=e[r].delta;t.delta=n})),n}}))}function F(e){if(!arguments.length)return F;r=e,Y(),r.each((function(e){if(0===yt(this).select("svg").size()){const e=yt(this).append("svg:svg").attr("width",t).attr("class","partition d3-flame-graph");n&&(n<m&&(n=m),e.attr("height",n)),e.append("svg:text").attr("class","title").attr("text-anchor","middle").attr("y","25").attr("x",t/2).attr("fill","#808080").text(o),i&&e.call(i)}})),I()}return F.height=function(t){return arguments.length?(n=t,F):n},F.minHeight=function(t){return arguments.length?(m=t,F):m},F.width=function(n){return arguments.length?(t=n,F):t},F.cellHeight=function(t){return arguments.length?(e=t,F):e},F.tooltip=function(t){return arguments.length?("function"==typeof t&&(i=t),F):i},F.title=function(t){return arguments.length?(o=t,F):o},F.transitionDuration=function(t){return arguments.length?(u=t,F):u},F.transitionEase=function(t){return arguments.length?(a=t,F):a},F.sort=function(t){return arguments.length?(l=t,F):l},F.inverted=function(t){return arguments.length?(s=t,F):s},F.computeDelta=function(t){return arguments.length?(w=t,F):w},F.setLabelHandler=function(t){return arguments.length?(O=t,F):O},F.label=F.setLabelHandler,F.search=function(t){const n=[];let e=0,i=0;r.each((function(r){const o=function(t,n){const e=[];let r=0;return function t(i,o){let u=!1;S(i,n)?(i.highlight=!0,u=!0,o||(r+=x(i)),e.push(i)):i.highlight=!1,M(i)&&M(i).forEach((function(n){t(n,o||u)}))}(t,!1),[e,r]}(r,t);n.push(...o[0]),e+=o[1],i+=r.originalValue})),k(n,e,i),I()},F.findById=function(t){if(null==t)return null;let n=null;return r.each((function(e){null===n&&(n=B(e,t))})),n},F.clear=function(){j(null),r.each((function(t){X(t),I()}))},F.zoomTo=function(t){D(t)},F.resetZoom=function(){r.each((function(t){D(t)}))},F.onClick=function(t){return arguments.length?(c=t,F):c},F.onHover=function(t){return arguments.length?(h=t,F):h},F.merge=function(t){return r?(this.resetZoom(),d=null,j(null),r.datum((n=>($([n.data],[t]),n.data))),Y(),I(),F):F},F.update=function(t){return r?(t&&(r.datum(t),Y()),I(),F):F},F.destroy=function(){return r?(i&&(i.hide(),"function"==typeof i.destroy&&i.destroy()),r.selectAll("svg").remove(),F):F},F.setColorMapper=function(t){return arguments.length?(P=n=>{const e=H(n);return t(n,e)},F):(P=H,F)},F.color=F.setColorMapper,F.setColorHue=function(t){return arguments.length?(_=t,F):(_=null,F)},F.minFrameSize=function(t){return arguments.length?(f=t,F):f},F.setDetailsElement=function(t){return arguments.length?(p=t,F):p},F.details=F.setDetailsElement,F.selfValue=function(t){return arguments.length?(g=t,F):g},F.resetHeightOnZoom=function(t){return arguments.length?(v=t,F):v},F.scrollOnZoom=function(t){return arguments.length?(y=t,F):y},F.getName=function(t){return arguments.length?(b=t,F):b},F.getValue=function(t){return arguments.length?(x=t,F):x},F.getChildren=function(t){return arguments.length?(M=t,F):M},F.getLibtype=function(t){return arguments.length?(A=t,F):A},F.getDelta=function(t){return arguments.length?(N=t,F):N},F.setSearchHandler=function(t){return arguments.length?(k=t,F):(k=E,F)},F.setDetailsHandler=function(t){return arguments.length?(j=t,F):(j=q,F)},F.setSearchMatch=function(t){return arguments.length?(S=t,F):(S=C,F)},F}return vt.prototype.interrupt=function(t){return this.each((function(){!function(t,n){var e,r,i,o=t.__transition,u=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}}(this,t)}))},vt.prototype.transition=function(t){var n,e;t instanceof yr?(n=t._id,t=t._name):(n=mr(),(e=_r).time=Me(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],l=a.length,s=0;s<l;++s)(u=a[s])&&Pe(u,t,n,s,a,e||br(u,n));return new yr(r,this._parents,t,n)},n=n.default})()}));
</script>
    <script>
!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.flamegraph=n():(t.flamegraph=t.flamegraph||{},t.flamegraph.tooltip=n())}(self,(function(){return(()=>{"use strict";var t={d:(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},n={};function e(){}function r(t){return null==t?e:function(){return this.querySelector(t)}}function i(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function o(){return[]}function u(t){return null==t?o:function(){return this.querySelectorAll(t)}}function a(t){return function(){return this.matches(t)}}function s(t){return function(n){return n.matches(t)}}t.r(n),t.d(n,{defaultFlamegraphTooltip:()=>Ae});var l=Array.prototype.find;function c(){return this.firstElementChild}var f=Array.prototype.filter;function h(){return Array.from(this.children)}function p(t){return new Array(t.length)}function d(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function y(t){return function(){return t}}function v(t,n,e,r,i,o){for(var u,a=0,s=n.length,l=o.length;a<l;++a)(u=n[a])?(u.__data__=o[a],r[a]=u):e[a]=new d(t,o[a]);for(;a<s;++a)(u=n[a])&&(i[a]=u)}function g(t,n,e,r,i,o,u){var a,s,l,c=new Map,f=n.length,h=o.length,p=new Array(f);for(a=0;a<f;++a)(s=n[a])&&(p[a]=l=u.call(s,s.__data__,a,n)+"",c.has(l)?i[a]=s:c.set(l,s));for(a=0;a<h;++a)l=u.call(t,o[a],a,o)+"",(s=c.get(l))?(r[a]=s,s.__data__=o[a],c.delete(l)):e[a]=new d(t,o[a]);for(a=0;a<f;++a)(s=n[a])&&c.get(p[a])===s&&(i[a]=s)}function _(t){return t.__data__}function m(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function w(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}d.prototype={constructor:d,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 b="http://www.w3.org/1999/xhtml";const x={svg:"http://www.w3.org/2000/svg",xhtml:b,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function A(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),x.hasOwnProperty(n)?{space:x[n],local:t}:t}function N(t){return function(){this.removeAttribute(t)}}function k(t){return function(){this.removeAttributeNS(t.space,t.local)}}function M(t,n){return function(){this.setAttribute(t,n)}}function E(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function S(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function C(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 P(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function O(t){return function(){this.style.removeProperty(t)}}function q(t,n,e){return function(){this.style.setProperty(t,n,e)}}function j(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(t,n){return t.style.getPropertyValue(n)||P(t).getComputedStyle(t,null).getPropertyValue(n)}function X(t){return function(){delete this[t]}}function R(t,n){return function(){this[t]=n}}function I(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function L(t){return t.trim().split(/^|\s+/)}function D(t){return t.classList||new H(t)}function H(t){this._node=t,this._names=L(t.getAttribute("class")||"")}function Y(t,n){for(var e=D(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function B(t,n){for(var e=D(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function $(t){return function(){Y(this,t)}}function V(t){return function(){B(this,t)}}function z(t,n){return function(){(n.apply(this,arguments)?Y:B)(this,t)}}function U(){this.textContent=""}function F(t){return function(){this.textContent=t}}function K(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function W(){this.innerHTML=""}function G(t){return function(){this.innerHTML=t}}function J(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function Q(){this.nextSibling&&this.parentNode.appendChild(this)}function Z(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function tt(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===b&&n.documentElement.namespaceURI===b?n.createElement(t):n.createElementNS(e,t)}}function nt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function et(t){var n=A(t);return(n.local?nt:tt)(n)}function rt(){return null}function it(){var t=this.parentNode;t&&t.removeChild(this)}function ot(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function ut(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function at(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}}))}function st(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function lt(t,n,e){return function(){var r,i=this.__on,o=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var u=0,a=i.length;u<a;++u)if((r=i[u]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),void(r.value=n);this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}function ct(t,n,e){var r=P(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function ft(t,n){return function(){return ct(this,t,n)}}function ht(t,n){return function(){return ct(this,t,n.apply(this,arguments))}}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 pt=[null];function dt(t,n){this._groups=t,this._parents=n}function yt(){return new dt([[document.documentElement]],pt)}dt.prototype=yt.prototype={constructor:dt,select:function(t){"function"!=typeof t&&(t=r(t));for(var n=this._groups,e=n.length,i=new Array(e),o=0;o<e;++o)for(var u,a,s=n[o],l=s.length,c=i[o]=new Array(l),f=0;f<l;++f)(u=s[f])&&(a=t.call(u,u.__data__,f,s))&&("__data__"in u&&(a.__data__=u.__data__),c[f]=a);return new dt(i,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return i(t.apply(this,arguments))}}(t):u(t);for(var n=this._groups,e=n.length,r=[],o=[],a=0;a<e;++a)for(var s,l=n[a],c=l.length,f=0;f<c;++f)(s=l[f])&&(r.push(t.call(s,s.__data__,f,l)),o.push(s));return new dt(r,o)},selectChild:function(t){return this.select(null==t?c:function(t){return function(){return l.call(this.children,t)}}("function"==typeof t?t:s(t)))},selectChildren:function(t){return this.selectAll(null==t?h:function(t){return function(){return f.call(this.children,t)}}("function"==typeof t?t:s(t)))},filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],s=u.length,l=r[i]=[],c=0;c<s;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&l.push(o);return new dt(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,_);var e=n?g:v,r=this._parents,i=this._groups;"function"!=typeof t&&(t=y(t));for(var o=i.length,u=new Array(o),a=new Array(o),s=new Array(o),l=0;l<o;++l){var c=r[l],f=i[l],h=f.length,p=m(t.call(c,c&&c.__data__,l,r)),d=p.length,w=a[l]=new Array(d),b=u[l]=new Array(d),x=s[l]=new Array(h);e(c,f,w,b,x,p,n);for(var A,N,k=0,M=0;k<d;++k)if(A=w[k]){for(k>=M&&(M=k+1);!(N=b[M])&&++M<d;);A._next=N||null}}return(u=new dt(u,r))._enter=a,u._exit=s,u},enter:function(){return new dt(this._enter||this._groups.map(p),this._parents)},exit:function(){return new dt(this._exit||this._groups.map(p),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,u=Math.min(i,o),a=new Array(i),s=0;s<u;++s)for(var l,c=e[s],f=r[s],h=c.length,p=a[s]=new Array(h),d=0;d<h;++d)(l=c[d]||f[d])&&(p[d]=l);for(;s<i;++s)a[s]=e[s];return new dt(a,this._parents)},selection:function(){return this},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&&4^r.compareDocumentPosition(u)&&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=w);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var u,a=e[o],s=a.length,l=i[o]=new Array(s),c=0;c<s;++c)(u=a[c])&&(l[c]=u);l.sort(n)}return new dt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},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(){let t=0;for(const n of this)++t;return 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=A(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?k:N:"function"==typeof n?e.local?C:S:e.local?E:M)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?O:"function"==typeof n?j:q)(t,n,null==e?"":e)):T(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?X:"function"==typeof n?I:R)(t,n)):this.node()[t]},classed:function(t,n){var e=L(t+"");if(arguments.length<2){for(var r=D(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?z:n?$:V)(e,n))},text:function(t){return arguments.length?this.each(null==t?U:("function"==typeof t?K:F)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?W:("function"==typeof t?J:G)(t)):this.node().innerHTML},raise:function(){return this.each(Q)},lower:function(){return this.each(Z)},append:function(t){var n="function"==typeof t?t:et(t);return this.select((function(){return this.appendChild(n.apply(this,arguments))}))},insert:function(t,n){var e="function"==typeof t?t:et(t),i=null==n?rt:"function"==typeof n?n:r(n);return this.select((function(){return this.insertBefore(e.apply(this,arguments),i.apply(this,arguments)||null)}))},remove:function(){return this.each(it)},clone:function(t){return this.select(t?ut:ot)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=at(t+""),u=o.length;if(!(arguments.length<2)){for(a=n?lt:st,r=0;r<u;++r)this.each(a(o[r],n,e));return this}var a=this.node().__on;if(a)for(var s,l=0,c=a.length;l<c;++l)for(r=0,s=a[l];r<u;++r)if((i=o[r]).type===s.type&&i.name===s.name)return s.value},dispatch:function(t,n){return this.each(("function"==typeof n?ht:ft)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,u=i.length;o<u;++o)(r=i[o])&&(yield r)}};const vt=yt;var gt={value:()=>{}};function _t(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new mt(r)}function mt(t){this._=t}function wt(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}}))}function bt(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function xt(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=gt,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}mt.prototype=_t.prototype={constructor:mt,on:function(t,n){var e,r=this._,i=wt(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]=xt(r[e],t.name,n);else if(null==n)for(e in r)r[e]=xt(r[e],t.name,null);return this}for(;++o<u;)if((e=(t=i[o]).type)&&(e=bt(r[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new mt(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)}};const At=_t;var Nt,kt,Mt=0,Et=0,St=0,Ct=0,Pt=0,Ot=0,qt="object"==typeof performance&&performance.now?performance:Date,jt="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Tt(){return Pt||(jt(Xt),Pt=qt.now()+Ot)}function Xt(){Pt=0}function Rt(){this._call=this._time=this._next=null}function It(t,n,e){var r=new Rt;return r.restart(t,n,e),r}function Lt(){Pt=(Ct=qt.now())+Ot,Mt=Et=0;try{!function(){Tt(),++Mt;for(var t,n=Nt;n;)(t=Pt-n._time)>=0&&n._call.call(void 0,t),n=n._next;--Mt}()}finally{Mt=0,function(){var t,n,e=Nt,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Nt=n);kt=t,Ht(r)}(),Pt=0}}function Dt(){var t=qt.now(),n=t-Ct;n>1e3&&(Ot-=n,Ct=t)}function Ht(t){Mt||(Et&&(Et=clearTimeout(Et)),t-Pt>24?(t<1/0&&(Et=setTimeout(Lt,t-qt.now()-Ot)),St&&(St=clearInterval(St))):(St||(Ct=qt.now(),St=setInterval(Dt,1e3)),Mt=1,jt(Lt)))}function Yt(t,n,e){var r=new Rt;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Rt.prototype=It.prototype={constructor:Rt,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Tt():+e)+(null==n?0:+n),this._next||kt===this||(kt?kt._next=this:Nt=this,kt=this),this._call=t,this._time=e,Ht()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ht())}};var Bt=At("start","end","cancel","interrupt"),$t=[];function Vt(t,n,e,r,i,o){var u=t.__transition;if(u){if(e in u)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=1,e.timer.restart(u,e.delay,e.time),e.delay<=t&&u(t-e.delay)}function u(o){var l,c,f,h;if(1!==e.state)return s();for(l in i)if((h=i[l]).name===e.name){if(3===h.state)return Yt(u);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[l]):+l<n&&(h.state=6,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[l])}if(Yt((function(){3===e.state&&(e.state=4,e.timer.restart(a,e.delay,e.time),a(o))})),e.state=2,e.on.call("start",t,t.__data__,e.index,e.group),2===e.state){for(e.state=3,r=new Array(f=e.tween.length),l=0,c=-1;l<f;++l)(h=e.tween[l].value.call(t,t.__data__,e.index,e.group))&&(r[++c]=h);r.length=c+1}}function a(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(s),e.state=5,1),o=-1,u=r.length;++o<u;)r[o].call(t,i);5===e.state&&(e.on.call("end",t,t.__data__,e.index,e.group),s())}function s(){for(var r in e.state=6,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=It(o,0,e.time)}(t,e,{name:n,index:r,group:i,on:Bt,tween:$t,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:0})}function zt(t,n){var e=Ft(t,n);if(e.state>0)throw new Error("too late; already scheduled");return e}function Ut(t,n){var e=Ft(t,n);if(e.state>3)throw new Error("too late; already running");return e}function Ft(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Kt(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}var Wt,Gt=180/Math.PI,Jt={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Qt(t,n,e,r,i,o){var u,a,s;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(s=t*e+n*r)&&(e-=t*s,r-=n*s),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,s/=a),t*r<n*e&&(t=-t,n=-n,s=-s,u=-u),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Gt,skewX:Math.atan(s)*Gt,scaleX:u,scaleY:a}}function Zt(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,u){var a=[],s=[];return o=t(o),u=t(u),function(t,r,i,o,u,a){if(t!==i||r!==o){var s=u.push("translate(",null,n,null,e);a.push({i:s-4,x:Kt(t,i)},{i:s-2,x:Kt(r,o)})}else(i||o)&&u.push("translate("+i+n+o+e)}(o.translateX,o.translateY,u.translateX,u.translateY,a,s),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Kt(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,s),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Kt(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,s),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:Kt(t,e)},{i:a-2,x:Kt(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,s),o=u=null,function(t){for(var n,e=-1,r=s.length;++e<r;)a[(n=s[e]).i]=n.x(t);return a.join("")}}}var tn=Zt((function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Jt:Qt(n.a,n.b,n.c,n.d,n.e,n.f)}),"px, ","px)","deg)"),nn=Zt((function(t){return null==t?Jt:(Wt||(Wt=document.createElementNS("http://www.w3.org/2000/svg","g")),Wt.setAttribute("transform",t),(t=Wt.transform.baseVal.consolidate())?Qt((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Jt)}),", ",")",")");function en(t,n){var e,r;return function(){var i=Ut(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 rn(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Ut(this,t),u=o.tween;if(u!==r){i=(r=u).slice();for(var a={name:n,value:e},s=0,l=i.length;s<l;++s)if(i[s].name===n){i[s]=a;break}s===l&&i.push(a)}o.tween=i}}function on(t,n,e){var r=t._id;return t.each((function(){var t=Ut(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)})),function(t){return Ft(t,r).value[n]}}function un(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function an(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function sn(){}var ln=.7,cn=1/ln,fn="\\s*([+-]?\\d+)\\s*",hn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",pn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",dn=/^#([0-9a-f]{3,8})$/,yn=new RegExp("^rgb\\("+[fn,fn,fn]+"\\)$"),vn=new RegExp("^rgb\\("+[pn,pn,pn]+"\\)$"),gn=new RegExp("^rgba\\("+[fn,fn,fn,hn]+"\\)$"),_n=new RegExp("^rgba\\("+[pn,pn,pn,hn]+"\\)$"),mn=new RegExp("^hsl\\("+[hn,pn,pn]+"\\)$"),wn=new RegExp("^hsla\\("+[hn,pn,pn,hn]+"\\)$"),bn={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};function xn(){return this.rgb().formatHex()}function An(){return this.rgb().formatRgb()}function Nn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=dn.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?kn(n):3===e?new Cn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?Mn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?Mn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=yn.exec(t))?new Cn(n[1],n[2],n[3],1):(n=vn.exec(t))?new Cn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=gn.exec(t))?Mn(n[1],n[2],n[3],n[4]):(n=_n.exec(t))?Mn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=mn.exec(t))?jn(n[1],n[2]/100,n[3]/100,1):(n=wn.exec(t))?jn(n[1],n[2]/100,n[3]/100,n[4]):bn.hasOwnProperty(t)?kn(bn[t]):"transparent"===t?new Cn(NaN,NaN,NaN,0):null}function kn(t){return new Cn(t>>16&255,t>>8&255,255&t,1)}function Mn(t,n,e,r){return r<=0&&(t=n=e=NaN),new Cn(t,n,e,r)}function En(t){return t instanceof sn||(t=Nn(t)),t?new Cn((t=t.rgb()).r,t.g,t.b,t.opacity):new Cn}function Sn(t,n,e,r){return 1===arguments.length?En(t):new Cn(t,n,e,null==r?1:r)}function Cn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Pn(){return"#"+qn(this.r)+qn(this.g)+qn(this.b)}function On(){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+")")}function qn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function jn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Xn(t,n,e,r)}function Tn(t){if(t instanceof Xn)return new Xn(t.h,t.s,t.l,t.opacity);if(t instanceof sn||(t=Nn(t)),!t)return new Xn;if(t instanceof Xn)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,s=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e<r):e===o?(r-n)/a+2:(n-e)/a+4,a/=s<.5?o+i:2-o-i,u*=60):a=s>0&&s<1?0:u,new Xn(u,a,s,t.opacity)}function Xn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Rn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function In(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}un(sn,Nn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:xn,formatHex:xn,formatHsl:function(){return Tn(this).formatHsl()},formatRgb:An,toString:An}),un(Cn,Sn,an(sn,{brighter:function(t){return t=null==t?cn:Math.pow(cn,t),new Cn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?ln:Math.pow(ln,t),new Cn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Pn,formatHex:Pn,formatRgb:On,toString:On})),un(Xn,(function(t,n,e,r){return 1===arguments.length?Tn(t):new Xn(t,n,e,null==r?1:r)}),an(sn,{brighter:function(t){return t=null==t?cn:Math.pow(cn,t),new Xn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?ln:Math.pow(ln,t),new Xn(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 Cn(Rn(t>=240?t-240:t+120,i,r),Rn(t,i,r),Rn(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},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const Ln=t=>()=>t;function Dn(t,n){return function(e){return t+e*n}}function Hn(t){return 1==(t=+t)?Yn:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Ln(isNaN(n)?e:n)}}function Yn(t,n){var e=n-t;return e?Dn(t,e):Ln(isNaN(t)?n:t)}const Bn=function t(n){var e=Hn(n);function r(t,n){var r=e((t=Sn(t)).r,(n=Sn(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),u=Yn(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=u(n),t+""}}return r.gamma=t,r}(1);function $n(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e<i;++e)r=Sn(n[e]),o[e]=r.r||0,u[e]=r.g||0,a[e]=r.b||0;return o=t(o),u=t(u),a=t(a),r.opacity=1,function(t){return r.r=o(t),r.g=u(t),r.b=a(t),r+""}}}$n((function(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=r<n-1?t[r+2]:2*o-i;return In((e-r/n)*n,u,i,o,a)}})),$n((function(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],u=t[(r+1)%n],a=t[(r+2)%n];return In((e-r/n)*n,i,o,u,a)}}));var Vn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,zn=new RegExp(Vn.source,"g");function Un(t,n){var e,r,i,o=Vn.lastIndex=zn.lastIndex=0,u=-1,a=[],s=[];for(t+="",n+="";(e=Vn.exec(t))&&(r=zn.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,s.push({i:u,x:Kt(e,r)})),o=zn.lastIndex;return o<n.length&&(i=n.slice(o),a[u]?a[u]+=i:a[++u]=i),a.length<2?s[0]?function(t){return function(n){return t(n)+""}}(s[0].x):function(t){return function(){return t}}(n):(n=s.length,function(t){for(var e,r=0;r<n;++r)a[(e=s[r]).i]=e.x(t);return a.join("")})}function Fn(t,n){var e;return("number"==typeof n?Kt:n instanceof Nn?Bn:(e=Nn(n))?(n=e,Bn):Un)(t,n)}function Kn(t){return function(){this.removeAttribute(t)}}function Wn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Gn(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttribute(t);return u===o?null:u===r?i:i=n(r=u,e)}}function Jn(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttributeNS(t.space,t.local);return u===o?null:u===r?i:i=n(r=u,e)}}function Qn(t,n,e){var r,i,o;return function(){var u,a,s=e(this);if(null!=s)return(u=this.getAttribute(t))===(a=s+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,s));this.removeAttribute(t)}}function Zn(t,n,e){var r,i,o;return function(){var u,a,s=e(this);if(null!=s)return(u=this.getAttributeNS(t.space,t.local))===(a=s+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,s));this.removeAttributeNS(t.space,t.local)}}function te(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function ne(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function ee(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&ne(t,i)),e}return i._value=n,i}function re(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&te(t,i)),e}return i._value=n,i}function ie(t,n){return function(){zt(this,t).delay=+n.apply(this,arguments)}}function oe(t,n){return n=+n,function(){zt(this,t).delay=n}}function ue(t,n){return function(){Ut(this,t).duration=+n.apply(this,arguments)}}function ae(t,n){return n=+n,function(){Ut(this,t).duration=n}}function se(t,n){if("function"!=typeof n)throw new Error;return function(){Ut(this,t).ease=n}}function le(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)?zt:Ut;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}var ce=vt.prototype.constructor;function fe(t){return function(){this.style.removeProperty(t)}}function he(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function pe(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&he(t,o,e)),r}return o._value=n,o}function de(t){return function(n){this.textContent=t.call(this,n)}}function ye(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&de(r)),n}return r._value=t,r}var ve=0;function ge(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function _e(){return++ve}var me=vt.prototype;ge.prototype=function(t){return vt().transition(t)}.prototype={constructor:ge,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=r(t));for(var i=this._groups,o=i.length,u=new Array(o),a=0;a<o;++a)for(var s,l,c=i[a],f=c.length,h=u[a]=new Array(f),p=0;p<f;++p)(s=c[p])&&(l=t.call(s,s.__data__,p,c))&&("__data__"in s&&(l.__data__=s.__data__),h[p]=l,Vt(h[p],n,e,p,h,Ft(s,e)));return new ge(u,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=u(t));for(var r=this._groups,i=r.length,o=[],a=[],s=0;s<i;++s)for(var l,c=r[s],f=c.length,h=0;h<f;++h)if(l=c[h]){for(var p,d=t.call(l,l.__data__,h,c),y=Ft(l,e),v=0,g=d.length;v<g;++v)(p=d[v])&&Vt(p,n,e,v,d,y);o.push(d),a.push(l)}return new ge(o,a,n,e)},selectChild:me.selectChild,selectChildren:me.selectChildren,filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],s=u.length,l=r[i]=[],c=0;c<s;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&l.push(o);return new ge(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 s,l=n[a],c=e[a],f=l.length,h=u[a]=new Array(f),p=0;p<f;++p)(s=l[p]||c[p])&&(h[p]=s);for(;a<r;++a)u[a]=n[a];return new ge(u,this._parents,this._name,this._id)},selection:function(){return new ce(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=_e(),r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],s=a.length,l=0;l<s;++l)if(u=a[l]){var c=Ft(u,n);Vt(u,t,e,l,a,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new ge(r,this._parents,t,e)},call:me.call,nodes:me.nodes,node:me.node,size:me.size,empty:me.empty,each:me.each,on:function(t,n){var e=this._id;return arguments.length<2?Ft(this.node(),e).on.on(t):this.each(le(e,t,n))},attr:function(t,n){var e=A(t),r="transform"===e?nn:Fn;return this.attrTween(t,"function"==typeof n?(e.local?Zn:Qn)(e,r,on(this,"attr."+t,n)):null==n?(e.local?Wn:Kn)(e):(e.local?Jn:Gn)(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=A(t);return this.tween(e,(r.local?ee:re)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?tn:Fn;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=T(this,t),u=(this.style.removeProperty(t),T(this,t));return o===u?null:o===e&&u===r?i:i=n(e=o,r=u)}}(t,r)).on("end.style."+t,fe(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var u=T(this,t),a=e(this),s=a+"";return null==a&&(this.style.removeProperty(t),s=a=T(this,t)),u===s?null:u===r&&s===i?o:(i=s,o=n(r=u,a))}}(t,r,on(this,"style."+t,n))).each(function(t,n){var e,r,i,o,u="style."+n,a="end."+u;return function(){var s=Ut(this,t),l=s.on,c=null==s.value[u]?o||(o=fe(n)):void 0;l===e&&i===c||(r=(e=l).copy()).on(a,i=c),s.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var u=T(this,t);return u===o?null:u===r?i:i=n(r=u,e)}}(t,r,n),e).on("end.style."+t,null)},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,pe(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}}(on(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,ye(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=Ft(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?en:rn)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ie:oe)(n,t)):Ft(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ue:ae)(n,t)):Ft(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(se(n,t)):Ft(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;Ut(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise((function(o,u){var a={value:u},s={value:function(){0==--i&&o()}};e.each((function(){var e=Ut(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(a),n._.interrupt.push(a),n._.end.push(s)),e.on=n})),0===i&&o()}))},[Symbol.iterator]:me[Symbol.iterator]};var we={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function be(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}function xe(t){return t.data.name}function Ae(){var t=function(t){return"string"==typeof t?new dt([[document.querySelector(t)]],[document.documentElement]):new dt([[t]],pt)}("body"),n=null,e=xe,r=xe,i=!1;function o(){n=t.append("div").style("display","none").style("position","absolute").style("opacity",0).style("pointer-events","none").attr("class","d3-flame-graph-tip")}return o.show=function(t){return n.style("display","block").style("left",event.pageX+5+"px").style("top",event.pageY+5+"px").transition().duration(200).style("opacity",1).style("pointer-events","all"),i?n.html(e(t)):n.text(r(t)),o},o.hide=function(){return n.style("display","none").transition().duration(200).style("opacity",0).style("pointer-events","none"),o},o.text=function(t){return arguments.length?(r=t,i=!1,o):r},o.html=function(t){return arguments.length?(e=t,i=!0,o):e},o.destroy=function(){n.remove()},o}return vt.prototype.interrupt=function(t){return this.each((function(){!function(t,n){var e,r,i,o=t.__transition,u=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}}(this,t)}))},vt.prototype.transition=function(t){var n,e;t instanceof ge?(n=t._id,t=t._name):(n=_e(),(e=we).time=Tt(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],s=a.length,l=0;l<s;++l)(u=a[l])&&Vt(u,t,n,l,a,e||be(u,n));return new ge(r,this._parents,t,n)},n})()}));
</script>
    <style>
/* ==========================================================================
   Python Profiler - Shared CSS Foundation
   Design system shared between Flamegraph and Heatmap viewers
   ========================================================================== */

/* --------------------------------------------------------------------------
   CSS Variables & Theme System
   -------------------------------------------------------------------------- */

:root {
  /* Typography */
  --font-sans: "Source Sans Pro", "Lucida Grande", "Lucida Sans Unicode",
               "Geneva", "Verdana", sans-serif;
  --font-mono: 'SF Mono', 'Monaco', 'Consolas', 'Liberation Mono', monospace;

  /* Python brand colors (theme-independent) */
  --python-blue: #3776ab;
  --python-blue-light: #4584bb;
  --python-blue-lighter: #5592cc;
  --python-gold: #ffd43b;
  --python-gold-dark: #ffcd02;
  --python-gold-light: #ffdc5c;

  /* Heat palette - defined per theme below */

  /* Layout */
  --sidebar-width: 280px;
  --sidebar-collapsed: 44px;
  --topbar-height: 56px;
  --statusbar-height: 32px;

  /* Border radius */
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 12px;

  /* Transitions */
  --transition-fast: 0.15s ease;
  --transition-normal: 0.25s ease;
  --transition-slow: 0.3s ease;
}

/* Light theme (default) */
:root, [data-theme="light"] {
  --bg-primary: #ffffff;
  --bg-secondary: #f8f9fa;
  --bg-tertiary: #e9ecef;
  --border: #e9ecef;
  --border-subtle: #f0f2f5;

  --text-primary: #2e3338;
  --text-secondary: #5a6c7d;
  --text-muted: #6f767e;

  --accent: #3776ab;
  --accent-hover: #2d5aa0;
  --accent-glow: rgba(55, 118, 171, 0.15);

  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1);
  --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.15);

  --header-gradient: linear-gradient(135deg, #3776ab 0%, #4584bb 100%);

  /* Light mode heat palette - blue to yellow to orange to red (cold to hot) */
  --heat-1: #7ba3d1;
  --heat-2: #a8d0ef;
  --heat-3: #d6e9f8;
  --heat-4: #ffe6a8;
  --heat-5: #ffd43b;
  --heat-6: #ffb84d;
  --heat-7: #ff9966;
  --heat-8: #ff6347;

  /* Code view specific */
  --code-bg: #ffffff;
  --code-bg-line: #f8f9fa;
  --code-border: #e9ecef;
  --code-text: #2e3338;
  --code-text-muted: #8b949e;
  --code-accent: #3776ab;

  /* Navigation colors */
  --nav-caller: #2563eb;
  --nav-caller-hover: #1d4ed8;
  --nav-callee: #dc2626;
  --nav-callee-hover: #b91c1c;

  /* Specialization status colors */
  --spec-high: #4caf50;
  --spec-high-text: #2e7d32;
  --spec-high-bg: rgba(76, 175, 80, 0.15);
  --spec-medium: #ff9800;
  --spec-medium-text: #e65100;
  --spec-medium-bg: rgba(255, 152, 0, 0.15);
  --spec-low: #9e9e9e;
  --spec-low-text: #616161;
  --spec-low-bg: rgba(158, 158, 158, 0.15);

  /* Heatmap span highlighting colors */
  --span-hot-base: 255, 100, 50;
  --span-cold-base: 150, 150, 150;
}

/* Dark theme */
[data-theme="dark"] {
  --bg-primary: #0d1117;
  --bg-secondary: #161b22;
  --bg-tertiary: #21262d;
  --border: #30363d;
  --border-subtle: #21262d;

  --text-primary: #e6edf3;
  --text-secondary: #8b949e;
  --text-muted: #757e8a;

  --accent: #58a6ff;
  --accent-hover: #79b8ff;
  --accent-glow: rgba(88, 166, 255, 0.15);

  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
  --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);

  --header-gradient: linear-gradient(135deg, #21262d 0%, #30363d 100%);

  /* Dark mode heat palette - muted colors that provide sufficient contrast with light text */
  --heat-1: rgba(74, 123, 167, 0.35);
  --heat-2: rgba(90, 159, 168, 0.38);
  --heat-3: rgba(106, 181, 181, 0.40);
  --heat-4: rgba(126, 196, 136, 0.42);
  --heat-5: rgba(160, 216, 120, 0.45);
  --heat-6: rgba(196, 222, 106, 0.48);
  --heat-7: rgba(244, 212, 77, 0.50);
  --heat-8: rgba(255, 107, 53, 0.55);

  /* Code view specific - dark mode */
  --code-bg: #0d1117;
  --code-bg-line: #161b22;
  --code-border: #30363d;
  --code-text: #e6edf3;
  --code-text-muted: #6e7681;
  --code-accent: #58a6ff;

  /* Navigation colors - dark theme friendly */
  --nav-caller: #58a6ff;
  --nav-caller-hover: #4184e4;
  --nav-callee: #f87171;
  --nav-callee-hover: #e53e3e;

  /* Specialization status colors - dark theme */
  --spec-high: #81c784;
  --spec-high-text: #81c784;
  --spec-high-bg: rgba(129, 199, 132, 0.2);
  --spec-medium: #ffb74d;
  --spec-medium-text: #ffb74d;
  --spec-medium-bg: rgba(255, 183, 77, 0.2);
  --spec-low: #bdbdbd;
  --spec-low-text: #9e9e9e;
  --spec-low-bg: rgba(189, 189, 189, 0.15);

  /* Heatmap span highlighting colors - dark theme */
  --span-hot-base: 255, 107, 53;
  --span-cold-base: 189, 189, 189;
}

/* --------------------------------------------------------------------------
   Base Styles
   -------------------------------------------------------------------------- */

*, *::before, *::after {
  box-sizing: border-box;
}

html, body {
  margin: 0;
  padding: 0;
}

body {
  font-family: var(--font-sans);
  font-size: 14px;
  line-height: 1.6;
  color: var(--text-primary);
  background: var(--bg-primary);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background var(--transition-normal), color var(--transition-normal);
}

/* --------------------------------------------------------------------------
   Layout Structure
   -------------------------------------------------------------------------- */

.app-layout {
  display: flex;
  flex-direction: column;
}

/* --------------------------------------------------------------------------
   Top Bar
   -------------------------------------------------------------------------- */

.top-bar {
  height: var(--topbar-height);
  background: var(--header-gradient);
  display: flex;
  align-items: center;
  padding: 0 16px;
  gap: 16px;
  flex-shrink: 0;
  box-shadow: 0 2px 10px rgba(55, 118, 171, 0.25);
  border-bottom: 2px solid var(--python-gold);
}

/* Brand / Logo */
.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  color: white;
  text-decoration: none;
  flex-shrink: 0;
}

.brand-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 40px;
  flex-shrink: 0;
}

/* Style the inlined SVG/img inside brand-logo */
.brand-logo svg,
.brand-logo img {
  width: 48px;
  height: 40px;
  display: block;
  object-fit: contain;
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2));
}

.brand-info {
  display: flex;
  flex-direction: column;
  line-height: 1.15;
}

.brand-text {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: 16px;
  letter-spacing: -0.3px;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
  color: inherit;
  text-decoration: none;
}

.brand-subtitle {
  font-weight: 500;
  font-size: 10px;
  opacity: 0.9;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.brand-divider {
  width: 1px;
  height: 16px;
  background: rgba(255, 255, 255, 0.3);
}

/* Toolbar */
.toolbar {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
}

.toolbar-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  font-size: 15px;
  color: white;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 6px;
  cursor: pointer;
  text-decoration: none;
  transition: all var(--transition-fast);
}

.toolbar-btn:hover {
  background: rgba(255, 255, 255, 0.22);
  border-color: rgba(255, 255, 255, 0.35);
}

.toolbar-btn:active {
  transform: scale(0.95);
}

/* --------------------------------------------------------------------------
   Status Bar
   -------------------------------------------------------------------------- */

.status-bar {
  height: var(--statusbar-height);
  background: var(--bg-secondary);
  border-top: 1px solid var(--border);
  display: flex;
  align-items: center;
  padding: 0 16px;
  gap: 16px;
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-secondary);
  flex-shrink: 0;
}

.status-item {
  display: flex;
  align-items: center;
  gap: 5px;
}

.status-item::before {
  content: '';
  width: 4px;
  height: 4px;
  background: var(--python-gold);
  border-radius: 50%;
}

.status-item:first-child::before {
  display: none;
}

.status-label {
  color: var(--text-muted);
}

.status-value {
  color: var(--text-primary);
  font-weight: 500;
}

.status-value.accent {
  color: var(--accent);
  font-weight: 600;
}

/* --------------------------------------------------------------------------
   Animations
   -------------------------------------------------------------------------- */

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes shimmer {
  0% { left: -100%; }
  100% { left: 100%; }
}

/* --------------------------------------------------------------------------
   Focus States (Accessibility)
   -------------------------------------------------------------------------- */

button:focus-visible,
select:focus-visible,
input:focus-visible,
.toggle-switch:focus-visible,
a.toolbar-btn:focus-visible {
  outline: 2px solid var(--python-gold);
  outline-offset: 2px;
}

/* --------------------------------------------------------------------------
   Shared Responsive
   -------------------------------------------------------------------------- */

@media (max-width: 900px) {
  .brand-subtitle {
    display: none;
  }
}

@media (max-width: 600px) {
  .toolbar-btn:not(.theme-toggle) {
    display: none;
  }
}

/* --------------------------------------------------------------------------
   Toggle Switch
   -------------------------------------------------------------------------- */

.toggle-switch {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  user-select: none;
  font-family: var(--font-sans);
  transition: opacity var(--transition-fast);
  flex-shrink: 0;
}

.toggle-switch:hover {
  opacity: 0.85;
}

.toggle-switch .toggle-label {
  font-size: 11px;
  font-weight: 500;
  color: var(--text-muted);
  transition: color var(--transition-fast);
  white-space: nowrap;
  display: inline-flex;
  flex-direction: column;
}

.toggle-switch .toggle-label.active {
  color: var(--text-primary);
  font-weight: 600;
}

/* Reserve space for bold text to prevent layout shift on toggle */
.toggle-switch .toggle-label::after {
  content: attr(data-text);
  font-weight: 600;
  height: 0;
  visibility: hidden;
}

.toggle-switch.disabled {
  opacity: 0.4;
  pointer-events: none;
  cursor: not-allowed;
}

.toggle-track {
  position: relative;
  width: 36px;
  height: 20px;
  background: var(--bg-tertiary);
  border: 2px solid var(--border);
  border-radius: 12px;
  transition: all var(--transition-fast);
  box-shadow: inset var(--shadow-sm);
}

.toggle-track:hover {
  border-color: var(--text-muted);
}

.toggle-track.on {
  background: var(--accent);
  border-color: var(--accent);
  box-shadow: 0 0 8px var(--accent-glow);
}

.toggle-track::after {
  content: '';
  position: absolute;
  top: 1px;
  left: 1px;
  width: 14px;
  height: 14px;
  background: white;
  border-radius: 50%;
  box-shadow: var(--shadow-sm);
  transition: all var(--transition-fast);
}

.toggle-track.on::after {
  transform: translateX(16px);
  box-shadow: var(--shadow-md);
}


/* ==========================================================================
   Flamegraph Viewer - Component-Specific CSS

   DEPENDENCY: Requires _shared_assets/base.css to be loaded first
   This file extends the shared foundation with flamegraph-specific styles.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Layout Overrides (Flamegraph-specific)
   -------------------------------------------------------------------------- */

html, body {
  height: 100%;
  overflow: hidden;
}

.app-layout {
  height: 100vh;
}

.main-content {
  display: flex;
  flex: 1;
  min-height: 0;
}

/* --------------------------------------------------------------------------
   Search Input (Flamegraph-specific)
   -------------------------------------------------------------------------- */

.search-wrapper {
  flex: 1;
  max-width: 360px;
  position: relative;
}

.search-input {
  width: 100%;
  padding: 8px 36px 8px 14px;
  font-family: var(--font-sans);
  font-size: 13px;
  color: #2e3338;
  background: rgba(255, 255, 255, 0.95);
  border: 2px solid rgba(255, 255, 255, 0.3);
  border-radius: 20px;
  outline: none;
  transition: all var(--transition-fast);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.search-input::placeholder {
  color: #6c757d;
}

.search-input:focus {
  border-color: rgba(255, 255, 255, 0.8);
  background: white;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
}

/* Dark theme search input */
[data-theme="dark"] .search-input {
  color: #e6edf3;
  background: rgba(33, 38, 45, 0.95);
  border: 2px solid rgba(88, 166, 255, 0.3);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

[data-theme="dark"] .search-input::placeholder {
  color: #8b949e;
}

[data-theme="dark"] .search-input:focus {
  border-color: rgba(88, 166, 255, 0.6);
  background: rgba(33, 38, 45, 1);
  box-shadow: 0 4px 16px rgba(88, 166, 255, 0.2);
}

.search-input.has-matches {
  border-color: rgba(40, 167, 69, 0.8);
  box-shadow: 0 4px 16px rgba(40, 167, 69, 0.2);
}

.search-input.no-matches {
  border-color: rgba(220, 53, 69, 0.8);
  box-shadow: 0 4px 16px rgba(220, 53, 69, 0.2);
}

.search-clear {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  width: 20px;
  height: 20px;
  padding: 0;
  display: none;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  line-height: 1;
  color: #6c757d;
  background: transparent;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  transition: color var(--transition-fast);
}

.search-clear:hover {
  color: #2e3338;
}

[data-theme="dark"] .search-clear {
  color: #8b949e;
}

[data-theme="dark"] .search-clear:hover {
  color: #e6edf3;
}

.search-wrapper.has-value .search-clear {
  display: flex;
}

/* --------------------------------------------------------------------------
   Sidebar
   -------------------------------------------------------------------------- */

.sidebar {
  width: var(--sidebar-width);
  background: var(--bg-secondary);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
}

.sidebar.collapsed {
  width: var(--sidebar-collapsed) !important;
  transition: width var(--transition-normal);
}

.sidebar-toggle {
  position: absolute;
  top: 12px;
  right: 10px;
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
  background: var(--bg-primary);
  border: 1px solid var(--border);
  border-radius: 6px;
  cursor: pointer;
  transition: all var(--transition-fast);
  z-index: 10;
}

.sidebar-toggle svg {
  transition: transform var(--transition-fast);
}

.sidebar-toggle:hover {
  color: var(--accent);
  border-color: var(--accent);
  background: var(--accent-glow);
}

.sidebar.collapsed .sidebar-toggle {
  right: 9px;
}

.sidebar.collapsed .sidebar-toggle svg {
  transform: rotate(180deg);
}

.sidebar-content {
  flex: 1;
  overflow-y: auto;
  padding: 44px 14px 14px;
}

.sidebar.collapsed .sidebar-content {
  display: none;
}

.sidebar-resize-handle {
  position: absolute;
  top: 0;
  right: 0;
  width: 6px;
  height: 100%;
  cursor: col-resize;
  background: transparent;
  transition: background var(--transition-fast);
  z-index: 11;
}

.sidebar-resize-handle:hover,
.sidebar-resize-handle.resizing {
  background: var(--python-gold);
}

.sidebar-resize-handle::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 2px;
  height: 40px;
  background: var(--border);
  border-radius: 1px;
  opacity: 0;
  transition: opacity var(--transition-fast);
}

.sidebar-resize-handle:hover::before {
  opacity: 1;
}

.sidebar.collapsed .sidebar-resize-handle {
  display: none;
}

body.resizing-sidebar {
  cursor: col-resize;
  user-select: none;
}

/* Sidebar Logo */
.sidebar-logo {
  display: flex;
  justify-content: center;
  margin-bottom: 16px;
}

.sidebar-logo-img {
  width: 220px;
  height: 180px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.sidebar-logo-img svg,
.sidebar-logo-img img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Sidebar sections */
.sidebar-section {
  margin-bottom: 20px;
}

.sidebar-section:last-child {
  margin-bottom: 0;
}

.section-title {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.8px;
  color: var(--accent);
  margin: 0;
  flex: 1;
}

/* View Mode Section */
.view-mode-section .section-content {
  display: flex;
  justify-content: center;
}

/* Collapsible sections */
.collapsible .section-header {
  display: flex;
  align-items: center;
  width: 100%;
  padding: 0 0 8px 0;
  margin-bottom: 10px;
  background: none;
  border: none;
  border-bottom: 2px solid var(--python-gold);
  cursor: pointer;
  transition: all var(--transition-fast);
}

.collapsible .section-header:hover {
  opacity: 0.8;
}

.section-chevron {
  color: var(--text-muted);
  transition: transform var(--transition-fast);
}

.collapsible.collapsed .section-chevron {
  transform: rotate(-90deg);
}

.section-content {
  transition: max-height var(--transition-slow) ease-out, opacity var(--transition-normal) ease-out, padding var(--transition-normal) ease-out;
  max-height: 1000px;
  opacity: 1;
}

.collapsible.collapsed .section-content {
  max-height: 0;
  opacity: 0;
  padding-top: 0;
  pointer-events: none;
  transition: max-height var(--transition-slow) ease-in, opacity var(--transition-normal) ease-in, padding var(--transition-normal) ease-in;
}

/* --------------------------------------------------------------------------
   Profile Summary Cards
   -------------------------------------------------------------------------- */

.summary-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}

.summary-card {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  background: var(--bg-primary);
  border: 2px solid var(--border);
  border-radius: 8px;
  transition: all var(--transition-fast);
  animation: slideUp 0.4s ease-out backwards;
  animation-delay: calc(var(--i, 0) * 0.08s);
  overflow: hidden;
  position: relative;
}

.summary-card:nth-child(1) { --i: 0; --card-color: 55, 118, 171; }
.summary-card:nth-child(2) { --i: 1; --card-color: 40, 167, 69; }
.summary-card:nth-child(3) { --i: 2; --card-color: 255, 193, 7; }
.summary-card:nth-child(4) { --i: 3; --card-color: 111, 66, 193; }

.summary-card:hover {
  border-color: rgba(var(--card-color), 0.6);
  background: linear-gradient(135deg, rgba(var(--card-color), 0.08) 0%, var(--bg-primary) 100%);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(var(--card-color), 0.15);
}

.summary-icon {
  font-size: 14px;
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, rgba(var(--card-color), 0.15) 0%, rgba(var(--card-color), 0.05) 100%);
  border: 1px solid rgba(var(--card-color), 0.2);
  border-radius: 6px;
  flex-shrink: 0;
  transition: all var(--transition-fast);
}

.summary-card:hover .summary-icon {
  transform: scale(1.05);
  background: linear-gradient(135deg, rgba(var(--card-color), 0.25) 0%, rgba(var(--card-color), 0.1) 100%);
}

.summary-data {
  min-width: 0;
  flex: 1;
  overflow: hidden;
}

.summary-value {
  font-family: var(--font-mono);
  font-size: 13px;
  font-weight: 800;
  color: rgb(var(--card-color));
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.summary-label {
  font-size: 8px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Efficiency Bar */
.efficiency-section {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

.efficiency-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 5px;
}

.efficiency-label {
  font-size: 9px;
  font-weight: 600;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.2px;
}

.efficiency-value {
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 700;
  color: var(--accent);
}

.efficiency-bar {
  height: 6px;
  background: var(--bg-tertiary);
  border-radius: 3px;
  overflow: hidden;
}

.efficiency-fill {
  height: 100%;
  background: linear-gradient(90deg, #28a745 0%, #20c997 50%, #17a2b8 100%);
  border-radius: 3px;
  transition: width 0.6s ease-out;
  position: relative;
  overflow: hidden;
}

.efficiency-fill::after {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.4) 50%,
    transparent 100%
  );
  animation: shimmer 2s ease-in-out infinite;
}

/* --------------------------------------------------------------------------
   Thread Stats Grid (in Sidebar)
   -------------------------------------------------------------------------- */

.thread-stats-section {
  display: block;
}

.stats-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.stat-tile {
  background: var(--bg-primary);
  border-radius: 8px;
  padding: 10px;
  text-align: center;
  border: 2px solid var(--border);
  transition: all var(--transition-fast);
  animation: fadeIn 0.4s ease-out backwards;
  animation-delay: calc(var(--i, 0) * 0.05s);
}

.stat-tile:nth-child(1) { --i: 0; }
.stat-tile:nth-child(2) { --i: 1; }
.stat-tile:nth-child(3) { --i: 2; }
.stat-tile:nth-child(4) { --i: 3; }

.stat-tile:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-sm);
}

.stat-tile-value {
  font-family: var(--font-mono);
  font-size: 16px;
  font-weight: 700;
  color: var(--text-primary);
  line-height: 1.2;
}

.stat-tile-label {
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  color: var(--text-muted);
  margin-top: 2px;
}

/* Stat tile color variants */
.stat-tile--green  { --tile-color: 40, 167, 69; --tile-text: #28a745; }
.stat-tile--red    { --tile-color: 220, 53, 69; --tile-text: #dc3545; }
.stat-tile--yellow { --tile-color: 255, 193, 7; --tile-text: #d39e00; }
.stat-tile--purple { --tile-color: 111, 66, 193; --tile-text: #6f42c1; }

.stat-tile[class*="--"] {
  border-color: rgba(var(--tile-color), 0.4);
  background: linear-gradient(135deg, rgba(var(--tile-color), 0.08) 0%, var(--bg-primary) 100%);
}
.stat-tile[class*="--"] .stat-tile-value { color: var(--tile-text); }

/* --------------------------------------------------------------------------
   Hotspot Cards
   -------------------------------------------------------------------------- */

.hotspot {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px;
  margin-bottom: 8px;
  background: var(--bg-primary);
  border: 1px solid var(--border);
  border-radius: 8px;
  cursor: pointer;
  transition: all var(--transition-fast);
  opacity: 0;
  transform: translateY(8px);
  box-shadow: var(--shadow-sm);
}

.hotspot.visible {
  opacity: 1;
  transform: translateY(0);
}

.hotspot:hover {
  border-color: var(--accent);
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

.hotspot.active {
  border-color: var(--python-gold);
  background: var(--accent-glow);
  box-shadow: 0 0 0 3px var(--accent-glow);
}

.hotspot:last-child {
  margin-bottom: 0;
}

.hotspot-rank {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 12px;
  flex-shrink: 0;
  background: linear-gradient(135deg, var(--python-blue) 0%, var(--python-blue-light) 100%);
  color: white;
  box-shadow: 0 2px 4px rgba(55, 118, 171, 0.3);
}

.hotspot-rank--1 { background: linear-gradient(135deg, #d4af37, #f4d03f); color: #5a4a00; }
.hotspot-rank--2 { background: linear-gradient(135deg, #a8a8a8, #c0c0c0); color: #4a4a4a; }
.hotspot-rank--3 { background: linear-gradient(135deg, #cd7f32, #e6a55a); color: #5a3d00; }

.hotspot-info {
  flex: 1;
  min-width: 0;
}

.hotspot-func {
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 600;
  color: var(--text-primary);
  line-height: 1.3;
  word-break: break-word;
  margin-bottom: 2px;
}

.hotspot-file {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--text-muted);
  margin-bottom: 3px;
  word-break: break-all;
}

.hotspot-stats {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--text-secondary);
}

.hotspot-percent {
  color: var(--accent);
  font-weight: 600;
}

/* --------------------------------------------------------------------------
   Legend
   -------------------------------------------------------------------------- */


.legend {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.legend-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 8px;
  background: var(--bg-primary);
  border-radius: 4px;
  border: 1px solid var(--border-subtle);
  font-size: 11px;
}

.legend-color {
  width: 20px;
  height: 10px;
  border-radius: 2px;
  flex-shrink: 0;
  border: 1px solid rgba(0, 0, 0, 0.08);
}

.legend-label {
  color: var(--text-primary);
  font-weight: 500;
  flex: 1;
}

.legend-range {
  font-family: var(--font-mono);
  font-size: 9px;
  color: var(--text-muted);
}

/* --------------------------------------------------------------------------
   Thread Filter
   -------------------------------------------------------------------------- */

.filter-section {
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

.filter-label {
  display: block;
  font-size: 10px;
  font-weight: 600;
  color: var(--text-muted);
  margin-bottom: 6px;
}

.filter-select {
  width: 100%;
  padding: 7px 28px 7px 10px;
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-primary);
  background: var(--bg-primary);
  border: 2px solid var(--accent);
  border-radius: 6px;
  cursor: pointer;
  outline: none;
  appearance: none;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%233776ab' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right 6px center;
  background-size: 14px;
  transition: all var(--transition-fast);
}

.filter-select:hover {
  border-color: var(--accent-hover);
  box-shadow: 0 2px 6px var(--accent-glow);
}

.filter-select:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-glow);
}

/* --------------------------------------------------------------------------
   Chart Area
   -------------------------------------------------------------------------- */

.chart-area {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  background: var(--bg-primary);
  position: relative;
}

#chart {
  width: 100%;
  height: 100%;
  padding: 16px;
  overflow: auto;
}

/* D3 Flamegraph overrides */
.d3-flame-graph rect {
  stroke: rgba(55, 118, 171, 0.3);
  stroke-width: 1px;
  cursor: pointer;
  transition: filter 0.1s ease;
}

.d3-flame-graph rect:hover {
  stroke: var(--python-blue);
  stroke-width: 2px;
  filter: brightness(1.08);
}

.d3-flame-graph text {
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 500;
  fill: var(--text-primary);
  pointer-events: none;
}

/* Search highlight */
.d3-flame-graph rect.search-match {
  stroke: #ff6b35 !important;
  stroke-width: 2px !important;
  stroke-dasharray: 4 2;
}

.d3-flame-graph rect.search-dim {
  opacity: 0.25;
}

/* --------------------------------------------------------------------------
   Tooltip
   -------------------------------------------------------------------------- */

.python-tooltip {
  position: absolute;
  z-index: 1000;
  pointer-events: none;
  background: var(--bg-primary);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 14px;
  max-width: 480px;
  box-shadow: var(--shadow-lg);
  font-family: var(--font-sans);
  font-size: 13px;
  color: var(--text-primary);
  word-wrap: break-word;
  overflow-wrap: break-word;
  line-height: 1.5;
}

.tooltip-header {
  margin-bottom: 10px;
}

.tooltip-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--accent);
  line-height: 1.3;
  word-break: break-word;
  margin-bottom: 4px;
}

.tooltip-location {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-secondary);
  background: var(--bg-tertiary);
  padding: 4px 8px;
  border-radius: 4px;
  word-break: break-all;
}

.tooltip-stats {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 4px 14px;
  font-size: 12px;
}

.tooltip-stat-label {
  color: var(--text-secondary);
  font-weight: 500;
}

.tooltip-stat-value {
  color: var(--text-primary);
  font-weight: 600;
}

.tooltip-stat-value.accent {
  color: var(--accent);
}

.tooltip-source {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

.tooltip-source-title {
  font-size: 11px;
  font-weight: 600;
  color: var(--accent);
  margin-bottom: 6px;
}

.tooltip-source-code {
  font-family: var(--font-mono);
  font-size: 10px;
  line-height: 1.5;
  background: var(--bg-tertiary);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 8px;
  max-height: 140px;
  overflow-y: auto;
  white-space: pre-wrap;
  word-break: break-all;
}

.tooltip-source-line {
  color: var(--text-secondary);
  padding: 1px 0;
}

.tooltip-source-line.current {
  color: var(--accent);
  font-weight: 600;
}

.tooltip-hint {
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid var(--border);
  font-size: 11px;
  color: var(--text-muted);
  text-align: center;
}

/* --------------------------------------------------------------------------
   Tooltip Bytecode/Opcode Section
   -------------------------------------------------------------------------- */

.tooltip-opcodes {
  margin-top: 16px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

.tooltip-opcodes-title {
  color: var(--accent);
  font-size: 13px;
  margin-bottom: 8px;
  font-weight: 600;
}

.tooltip-opcodes-list {
  background: var(--bg-tertiary);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 10px;
}

.tooltip-opcode-row {
  display: grid;
  grid-template-columns: 1fr 60px 60px;
  gap: 8px;
  align-items: center;
  padding: 3px 0;
}

.tooltip-opcode-name {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-primary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tooltip-opcode-name.specialized {
  color: var(--spec-high-text);
}

.tooltip-opcode-base-hint {
  color: var(--text-muted);
  font-size: 11px;
  margin-left: 4px;
}

.tooltip-opcode-badge {
  background: var(--spec-high);
  color: white;
  font-size: 9px;
  padding: 1px 4px;
  border-radius: 3px;
  margin-left: 4px;
}

.tooltip-opcode-count {
  text-align: right;
  font-size: 11px;
  color: var(--text-secondary);
}

.tooltip-opcode-bar {
  background: var(--bg-secondary);
  border-radius: 2px;
  height: 8px;
  overflow: hidden;
}

.tooltip-opcode-bar-fill {
  background: linear-gradient(90deg, var(--python-blue), var(--python-blue-light));
  height: 100%;
}

/* --------------------------------------------------------------------------
   Responsive (Flamegraph-specific)
   -------------------------------------------------------------------------- */

@media (max-width: 900px) {
  .sidebar {
    position: fixed;
    left: 0;
    top: var(--topbar-height);
    bottom: var(--statusbar-height);
    z-index: 100;
    box-shadow: var(--shadow-lg);
  }

  .sidebar.collapsed {
    width: var(--sidebar-collapsed);
  }

  .search-wrapper {
    max-width: 220px;
  }
}

@media (max-width: 600px) {
  .search-wrapper {
    max-width: 160px;
  }

  .brand-info {
    display: none;
  }

  .stats-grid {
    grid-template-columns: 1fr;
  }
}

/* --------------------------------------------------------------------------
   Flamegraph Root Node Styling
   -------------------------------------------------------------------------- */

/* Style the root node - no border, themed text */
.d3-flame-graph g:first-of-type rect {
  stroke: none;
}

.d3-flame-graph g:first-of-type .d3-flame-graph-label {
  color: var(--text-muted);
}

/* --------------------------------------------------------------------------
   Flamegraph-Specific Toggle Override
   -------------------------------------------------------------------------- */

#toggle-invert .toggle-track.on {
  background: #8e44ad;
  border-color: #8e44ad;
  box-shadow: 0 0 8px rgba(142, 68, 173, 0.3);
}

.toggle-switch:focus-visible {
  border-radius: 4px;
}

</style>
  </head>
  <body>
    <div class="app-layout">
      <!-- Top Bar -->
      <header class="top-bar">
        <div class="brand">
          <div class="brand-logo" id="navbar-logo"></div>
          <span class="brand-text">Tachyon</span>
          <span class="brand-divider"></span>
          <span class="brand-subtitle">Flamegraph Report</span>
        </div>
        <div class="search-wrapper">
          <input
            type="text"
            id="search-input"
            class="search-input"
            placeholder="Search functions..."
          />
          <button
            class="search-clear"
            id="search-clear"
            onclick="clearSearch()"
            title="Clear search"
          >&times;</button>
        </div>
        <div class="toolbar">
          <button
            class="toolbar-btn"
            onclick="resetZoom()"
            title="Reset zoom"
          >
            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
              <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V8.207l.646.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM13 7.207V13.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V7.207l5-5z"/>
            </svg>
          </button>
          <button
            class="toolbar-btn"
            onclick="exportSVG()"
            title="Export SVG"
          >
            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
              <path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/><path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708z"/>
            </svg>
          </button>
          <a
            class="toolbar-btn"
            href="https://docs.python.org/3.15/library/profiling.sampling.html"
            target="_blank"
            title="Documentation"
          >
            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
              <path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/>
            </svg>
          </a>
          <button
            class="toolbar-btn theme-toggle"
            onclick="toggleTheme()"
            title="Toggle theme"
            id="theme-btn"
          >
            <svg class="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
              <path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278M4.858 1.311A7.27 7.27 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.32 7.32 0 0 0 5.205-2.162q-.506.063-1.029.063c-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286"/>
            </svg>
            <svg class="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none">
              <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/>
            </svg>
          </button>
        </div>
      </header>

      <!-- Main Content -->
      <div class="main-content">
        <!-- Sidebar -->
        <aside class="sidebar" id="sidebar">
          <button
            class="sidebar-toggle"
            onclick="toggleSidebar()"
            title="Toggle sidebar"
            aria-label="Toggle sidebar"
          >
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
              <path d="M10 12L6 8L10 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
            </svg>
          </button>
          <div class="sidebar-resize-handle" id="sidebar-resize-handle"></div>

          <div class="sidebar-content">
            <!-- Logo Section -->
            <div class="sidebar-logo">
              <div class="sidebar-logo-img"><img src="data:image/png;base64,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" alt="Tachyon logo"/></div>
            </div>

            <!-- View Mode Section -->
            <section class="sidebar-section view-mode-section collapsible" id="view-mode-section">
              <button class="section-header" onclick="toggleSection('view-mode-section')">
                <h3 class="section-title">View Mode</h3>
                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
              </button>
              <div class="section-content">
                <div class="toggle-switch" id="toggle-invert" title="Toggle between standard and inverted flamegraph view" tabindex="0">
                  <span class="toggle-label active" data-text="Flamegraph">Flamegraph</span>
                  <div class="toggle-track"></div>
                  <span class="toggle-label" data-text="Inverted Flamegraph">Inverted Flamegraph</span>
                </div>
              </div>
            </section>

            <!-- Profile Summary Section -->
            <section class="sidebar-section collapsible" id="summary-section">
              <button class="section-header" onclick="toggleSection('summary-section')">
                <h3 class="section-title">Profile Summary</h3>
                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
              </button>
              <div class="section-content">
                <div class="summary-grid">
                  <div class="summary-card" id="summary-samples">
                    <div class="summary-icon">📊</div>
                    <div class="summary-data">
                      <div class="summary-value" id="stat-total-samples">--</div>
                      <div class="summary-label">Total Samples</div>
                    </div>
                  </div>
                  <div class="summary-card" id="summary-duration">
                    <div class="summary-icon">⏱</div>
                    <div class="summary-data">
                      <div class="summary-value" id="stat-duration">--</div>
                      <div class="summary-label">Duration</div>
                    </div>
                  </div>
                  <div class="summary-card" id="summary-rate">
                    <div class="summary-icon">⚡</div>
                    <div class="summary-data">
                      <div class="summary-value" id="stat-sample-rate">--</div>
                      <div class="summary-label">Samples/sec</div>
                    </div>
                  </div>
                  <div class="summary-card" id="summary-functions">
                    <div class="summary-icon">λ</div>
                    <div class="summary-data">
                      <div class="summary-value" id="stat-functions">--</div>
                      <div class="summary-label">Functions</div>
                    </div>
                  </div>
                </div>
                <!-- Efficiency Bar -->
                <div class="efficiency-section" id="efficiency-section" style="display: none;">
                  <div class="efficiency-header">
                    <span class="efficiency-label">Sampling Efficiency</span>
                    <span class="efficiency-value" id="stat-efficiency">--</span>
                  </div>
                  <div class="efficiency-bar">
                    <div class="efficiency-fill" id="efficiency-fill"></div>
                  </div>
                  <div class="missed-samples-header">
                    <span class="efficiency-label">Missed samples</span>
                    <span class="efficiency-value" id="stat-missed-samples">--</span>
                  </div>
                  <div class="efficiency-bar">
                    <div class="efficiency-fill" id="missed-samples-fill"></div>
                  </div>
 
                </div>
              </div>
            </section>

            <!-- Thread Stats Section (GIL/GC) -->
            <section class="sidebar-section thread-stats-section collapsible" id="thread-stats-bar" style="display: none;">
              <button class="section-header" onclick="toggleSection('thread-stats-bar')">
                <h3 class="section-title">Runtime Stats</h3>
                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
              </button>
              <div class="section-content">
                <div class="stats-grid">
                  <div class="stat-tile stat-tile--green" id="gil-held-stat">
                    <div class="stat-tile-value" id="gil-held-pct">--</div>
                    <div class="stat-tile-label">GIL Held</div>
                  </div>
                  <div class="stat-tile stat-tile--red" id="gil-released-stat">
                    <div class="stat-tile-value" id="gil-released-pct">--</div>
                    <div class="stat-tile-label">GIL Released</div>
                  </div>
                  <div class="stat-tile stat-tile--yellow" id="gil-waiting-stat">
                    <div class="stat-tile-value" id="gil-waiting-pct">--</div>
                    <div class="stat-tile-label">Waiting GIL</div>
                  </div>
                  <div class="stat-tile stat-tile--purple" id="gc-stat">
                    <div class="stat-tile-value" id="gc-pct">--</div>
                    <div class="stat-tile-label">GC</div>
                  </div>
                  <div class="stat-tile stat-tile--red" id="exc-stat">
                    <div class="stat-tile-value" id="exc-pct">--</div>
                    <div class="stat-tile-label">Exception</div>
                  </div>
                </div>
              </div>
            </section>

            <!-- Hotspots Section -->
            <section class="sidebar-section collapsible" id="hotspots-section">
              <button class="section-header" onclick="toggleSection('hotspots-section')">
                <h3 class="section-title">Hotspots</h3>
                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
              </button>
              <div class="section-content">
              <div class="hotspot" id="hotspot-1">
                <div class="hotspot-rank hotspot-rank--1">1</div>
                <div class="hotspot-info">
                  <div class="hotspot-func" id="hotspot-func-1">--</div>
                  <div class="hotspot-file" id="hotspot-file-1">--</div>
                  <div class="hotspot-stats">
                    <span class="hotspot-percent" id="hotspot-percent-1">--</span>
                    <span id="hotspot-samples-1"></span>
                  </div>
                </div>
              </div>
              <div class="hotspot" id="hotspot-2">
                <div class="hotspot-rank hotspot-rank--2">2</div>
                <div class="hotspot-info">
                  <div class="hotspot-func" id="hotspot-func-2">--</div>
                  <div class="hotspot-file" id="hotspot-file-2">--</div>
                  <div class="hotspot-stats">
                    <span class="hotspot-percent" id="hotspot-percent-2">--</span>
                    <span id="hotspot-samples-2"></span>
                  </div>
                </div>
              </div>
              <div class="hotspot" id="hotspot-3">
                <div class="hotspot-rank hotspot-rank--3">3</div>
                <div class="hotspot-info">
                  <div class="hotspot-func" id="hotspot-func-3">--</div>
                  <div class="hotspot-file" id="hotspot-file-3">--</div>
                  <div class="hotspot-stats">
                    <span class="hotspot-percent" id="hotspot-percent-3">--</span>
                    <span id="hotspot-samples-3"></span>
                  </div>
                </div>
              </div>
              </div>
            </section>

            <!-- Thread Filter Section -->
            <section class="sidebar-section filter-section" id="thread-section" style="display: none;">
              <label class="filter-label" for="thread-filter">Thread Filter</label>
              <select
                id="thread-filter"
                class="filter-select"
                onchange="filterByThread()"
              >
                <option value="all">All Threads</option>
              </select>
            </section>

            <!-- Legend Section -->
            <section class="sidebar-section legend-section collapsible" id="legend-section">
              <button class="section-header" onclick="toggleSection('legend-section')">
                <h3 class="section-title">Heat Map</h3>
                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
              </button>
              <div class="section-content">
              <div class="legend">
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-8)"></div>
                  <span class="legend-label">Hottest</span>
                  <span class="legend-range">&ge;60%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-7)"></div>
                  <span class="legend-label">Very Hot</span>
                  <span class="legend-range">35-60%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-6)"></div>
                  <span class="legend-label">Hot</span>
                  <span class="legend-range">18-35%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-5)"></div>
                  <span class="legend-label">Warm</span>
                  <span class="legend-range">12-18%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-4)"></div>
                  <span class="legend-label">Medium</span>
                  <span class="legend-range">6-12%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-3)"></div>
                  <span class="legend-label">Cool</span>
                  <span class="legend-range">3-6%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-2)"></div>
                  <span class="legend-label">Cold</span>
                  <span class="legend-range">1-3%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-1)"></div>
                  <span class="legend-label">Coldest</span>
                  <span class="legend-range">&lt;1%</span>
                </div>
              </div>
              </div>
            </section>
          </div>
        </aside>

        <!-- Chart Area -->
        <main class="chart-area">
          <div id="chart"></div>
        </main>
      </div>

      <!-- Status Bar -->
      <footer class="status-bar">
        <span class="status-item" id="status-brand">
          <span class="status-value">Tachyon Profiler</span>
        </span>
        <span class="status-item" id="status-tagline">
          <span class="status-label">Python Sampling Profiler</span>
        </span>
        <span class="status-item" id="status-location" style="display: none;">
          <span class="status-label">File:</span>
          <span class="status-value" id="status-file">--</span>
        </span>
        <span class="status-item" id="status-func-item" style="display: none;">
          <span class="status-label">Func:</span>
          <span class="status-value" id="status-func">--</span>
        </span>
        <span class="status-item" id="status-time-item" style="display: none;">
          <span class="status-label">Time:</span>
          <span class="status-value" id="status-time">--</span>
        </span>
        <span class="status-item" id="status-percent-item" style="display: none;">
          <span class="status-value accent" id="status-percent">--</span>
        </span>
      </footer>
    </div>

    <script>
const EMBEDDED_DATA = {"name": 224, "value": 1892, "children": [{"name": 4, "value": 1892, "children": [{"name": 7, "value": 1892, "children": [{"name": 11, "value": 1892, "children": [{"name": 54, "value": 1874, "children": [{"name": 83, "value": 1872, "children": [{"name": 87, "value": 1872, "children": [{"name": 198, "value": 735, "children": [{"name": 218, "value": 283, "children": [], "filename": 22, "lineno": 76, "funcname": 212, "threads": [98230], "source": [219, 214, 220, 221, 217], "opcodes": {"44": 146, "113": 16, "94": 32, "112": 51, "78": 17, "173": 18, "190": 1, "146": 1, "176": 1}}, {"name": 204, "value": 250, "children": [], "filename": 22, "lineno": 70, "funcname": 203, "threads": [98230], "source": [205, 206, 207], "opcodes": {"3": 74, "50": 62, "12": 100, "86": 3, "176": 7, "82": 4}}, {"name": 213, "value": 185, "children": [], "filename": 22, "lineno": 77, "funcname": 212, "threads": [98230], "source": [214, 215, 216, 217], "opcodes": {"44": 84, "94": 42, "112": 8, "172": 16, "167": 12, "113": 11, "78": 6, "176": 4, "103": 2}}, {"name": 208, "value": 9, "children": [], "filename": 22, "lineno": 69, "funcname": 203, "threads": [98230], "source": [209, 205, 210, 211], "opcodes": {"173": 7, "146": 2}}, {"name": 222, "value": 8, "children": [], "filename": 22, "lineno": 78, "funcname": 212, "threads": [98230], "source": [215, 221, 223], "opcodes": {"148": 7, "190": 1}}], "filename": 22, "lineno": 97, "funcname": 197, "threads": [98230], "source": [199, 200, 201, 202], "opcodes": {"52": 735}}, {"name": 134, "value": 471, "children": [{"name": 149, "value": 434, "children": [{"name": 177, "value": 222, "children": [{"name": 185, "value": 220, "children": [{"name": 191, "value": 220, "children": [], "filename": 183, "lineno": 361, "funcname": 190, "threads": [98230], "source": [192, 193, 194, 195, 196], "opcodes": {"52": 1, "160": 218, "209": 1}}], "filename": 183, "lineno": 345, "funcname": 184, "threads": [98230], "source": [186, 187, 188, 189], "opcodes": {"55": 2, "153": 218}}], "filename": 154, "lineno": 351, "funcname": 176, "threads": [98230], "source": [178, 179, 180, 181, 182], "opcodes": {"52": 2, "162": 220}}, {"name": 156, "value": 199, "children": [{"name": 164, "value": 199, "children": [{"name": 171, "value": 199, "children": [], "filename": 162, "lineno": 263, "funcname": 170, "threads": [98230], "source": [172, 173, 174, 175], "opcodes": {"52": 1, "160": 198}}], "filename": 162, "lineno": 202, "funcname": 163, "threads": [98230], "source": [165, 166, 167, 168, 169], "opcodes": {"55": 1, "153": 198}}], "filename": 154, "lineno": 234, "funcname": 155, "threads": [98230], "source": [157, 158, 159, 160, 161], "opcodes": {"52": 1, "161": 198}}], "filename": 22, "lineno": 60, "funcname": 148, "threads": [98230], "source": [150, 151, 152, 153], "opcodes": {"52": 434}}, {"name": 145, "value": 24, "children": [], "filename": 22, "lineno": 47, "funcname": 139, "threads": [98230], "source": [142, 146, 147], "opcodes": {"148": 23, "158": 1}}, {"name": 140, "value": 13, "children": [], "filename": 22, "lineno": 46, "funcname": 139, "threads": [98230], "source": [141, 142, 143, 144], "opcodes": {"52": 1, "148": 11, "158": 1}}], "filename": 22, "lineno": 91, "funcname": 133, "threads": [98230], "source": [135, 136, 137, 138], "opcodes": {"52": 471}}, {"name": 93, "value": 259, "children": [{"name": 130, "value": 130, "children": [], "filename": 22, "lineno": 37, "funcname": 114, "threads": [98230], "source": [126, 131, 132, 129], "opcodes": {"137": 69, "133": 22, "87": 6, "129": 11, "200": 8, "59": 3, "176": 1, "117": 8, "86": 2}}, {"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 105, "children": [{"name": 100, "value": 105, "children": [{"name": 100, "value": 105, "children": [{"name": 100, "value": 103, "children": [{"name": 100, "value": 99, "children": [{"name": 100, "value": 87, "children": [{"name": 100, "value": 69, "children": [{"name": 100, "value": 52, "children": [{"name": 100, "value": 30, "children": [{"name": 100, "value": 11, "children": [{"name": 100, "value": 4, "children": [{"name": 100, "value": 2, "children": [{"name": 104, "value": 1, "children": [], "filename": 22, "lineno": 15, "funcname": 99, "threads": [98230], "source": [105, 106, 107, 102, 108], "opcodes": {"100": 1}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 2}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 2, "35": 2}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 9, "35": 2}}, {"name": 109, "value": 3, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 3}}, {"name": 112, "value": 1, "children": [], "filename": 22, "lineno": 16, "funcname": 99, "threads": [98230], "source": [106, 101, 113, 108], "opcodes": {"35": 1}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 28, "35": 2}}, {"name": 109, "value": 2, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 2}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 51, "35": 1}}, {"name": 104, "value": 1, "children": [], "filename": 22, "lineno": 15, "funcname": 99, "threads": [98230], "source": [105, 106, 107, 102, 108], "opcodes": {"100": 1}}, {"name": 109, "value": 1, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 1}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 66, "35": 2, "94": 1}}, {"name": 109, "value": 1, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 1}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 84, "35": 3}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 99}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 102, "35": 1}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 105}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 105}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 105}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}}, {"name": 124, "value": 19, "children": [], "filename": 22, "lineno": 36, "funcname": 114, "threads": [98230], "source": [125, 126, 127, 128, 129], "opcodes": {"173": 13, "16": 3, "112": 1, "30": 1, "146": 1}}, {"name": 115, "value": 2, "children": [], "filename": 22, "lineno": 30, "funcname": 114, "threads": [98230], "source": [116, 117, 118, 119, 120], "opcodes": {"112": 1, "160": 1}}, {"name": 121, "value": 2, "children": [], "filename": 22, "lineno": 31, "funcname": 114, "threads": [98230], "source": [117, 122, 123, 120], "opcodes": {"160": 2}}], "filename": 22, "lineno": 84, "funcname": 92, "threads": [98230], "source": [94, 95, 96, 97, 98], "opcodes": {"52": 259}}, {"name": 218, "value": 189, "children": [], "filename": 22, "lineno": 76, "funcname": 212, "threads": [98230], "source": [219, 214, 220, 221, 217], "opcodes": {"44": 88, "173": 13, "112": 39, "78": 25, "113": 20, "94": 1, "176": 3}}, {"name": 213, "value": 125, "children": [], "filename": 22, "lineno": 77, "funcname": 212, "threads": [98230], "source": [214, 215, 216, 217], "opcodes": {"167": 33, "113": 16, "112": 7, "44": 42, "172": 12, "78": 2, "103": 3, "176": 5, "94": 5}}, {"name": 130, "value": 60, "children": [], "filename": 22, "lineno": 37, "funcname": 114, "threads": [98230], "source": [126, 131, 132, 129], "opcodes": {"137": 36, "117": 2, "59": 2, "86": 4, "129": 7, "133": 7, "200": 1, "87": 1}}, {"name": 145, "value": 14, "children": [], "filename": 22, "lineno": 47, "funcname": 139, "threads": [98230], "source": [142, 146, 147], "opcodes": {"148": 14}}, {"name": 140, "value": 9, "children": [], "filename": 22, "lineno": 46, "funcname": 139, "threads": [98230], "source": [141, 142, 143, 144], "opcodes": {"148": 7, "158": 2}}, {"name": 124, "value": 6, "children": [], "filename": 22, "lineno": 36, "funcname": 114, "threads": [98230], "source": [125, 126, 127, 128, 129], "opcodes": {"112": 3, "146": 1, "173": 2}}, {"name": 222, "value": 3, "children": [], "filename": 22, "lineno": 78, "funcname": 212, "threads": [98230], "source": [215, 221, 223], "opcodes": {"148": 3}}, {"name": 115, "value": 1, "children": [], "filename": 22, "lineno": 30, "funcname": 114, "threads": [98230], "source": [116, 117, 118, 119, 120], "opcodes": {"160": 1}}], "filename": 22, "lineno": 105, "funcname": 86, "threads": [98230], "source": [88, 89, 90, 91], "opcodes": {"52": 1872}}], "filename": 22, "lineno": 118, "funcname": 6, "threads": [98230], "source": [84, 85], "opcodes": {"52": 1872}}, {"name": 23, "value": 2, "children": [{"name": 31, "value": 2, "children": [{"name": 33, "value": 2, "children": [{"name": 35, "value": 2, "children": [{"name": 38, "value": 2, "children": [{"name": 40, "value": 2, "children": [{"name": 58, "value": 2, "children": [{"name": 65, "value": 2, "children": [{"name": 72, "value": 2, "children": [{"name": 31, "value": 1, "children": [{"name": 33, "value": 1, "children": [{"name": 35, "value": 1, "children": [{"name": 53, "value": 1, "children": [{"name": 40, "value": 1, "children": [], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 1}}], "filename": 36, "lineno": 1033, "funcname": 52, "threads": [98230], "opcodes": {"162": 1}}], "filename": 29, "lineno": 857, "funcname": 34, "threads": [98230], "opcodes": {"161": 1}}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 1}}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 1}}, {"name": 78, "value": 1, "children": [{"name": 80, "value": 1, "children": [{"name": 82, "value": 1, "children": [], "filename": 29, "lineno": 446, "funcname": 81, "threads": [98230], "opcodes": {"143": 1}}], "filename": 29, "lineno": 420, "funcname": 79, "threads": [98230], "opcodes": {"161": 1}}], "filename": 29, "lineno": 1273, "funcname": 30, "threads": [98230], "opcodes": {"161": 1}}], "filename": 41, "lineno": 108, "funcname": 71, "threads": [98230], "source": [73, 74, 75, 76, 77], "opcodes": {"73": 2}}], "filename": 41, "lineno": 137, "funcname": 64, "threads": [98230], "source": [66, 67, 68, 69, 70], "opcodes": {"52": 2}}], "filename": 41, "lineno": 269, "funcname": 6, "threads": [98230], "source": [59, 60, 61, 62, 63], "opcodes": {"161": 2}}], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 2}}], "filename": 36, "lineno": 747, "funcname": 37, "threads": [98230], "opcodes": {"162": 2}}], "filename": 29, "lineno": 857, "funcname": 34, "threads": [98230], "opcodes": {"161": 2}}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 2}}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 2}}], "filename": 22, "lineno": 5, "funcname": 6, "threads": [98230], "source": [24, 25, 26, 27, 28], "opcodes": {"73": 2}}], "filename": 5, "lineno": 193, "funcname": 16, "threads": [98230], "source": [55, 56, 21, 57], "opcodes": {"52": 1874}}, {"name": 17, "value": 18, "children": [{"name": 23, "value": 12, "children": [{"name": 31, "value": 12, "children": [{"name": 33, "value": 12, "children": [{"name": 35, "value": 12, "children": [{"name": 38, "value": 12, "children": [{"name": 40, "value": 12, "children": [{"name": 42, "value": 12, "children": [{"name": 31, "value": 12, "children": [{"name": 33, "value": 12, "children": [{"name": 47, "value": 12, "children": [{"name": 53, "value": 7, "children": [{"name": 40, "value": 7, "children": [], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 7}}], "filename": 36, "lineno": 1033, "funcname": 52, "threads": [98230], "opcodes": {"162": 7}}, {"name": 49, "value": 5, "children": [{"name": 51, "value": 4, "children": [{"name": 40, "value": 4, "children": [], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 4}}], "filename": 36, "lineno": 1025, "funcname": 50, "threads": [98230], "opcodes": {"162": 4}}], "filename": 29, "lineno": 786, "funcname": 48, "threads": [98230], "opcodes": {"161": 5}}], "filename": 29, "lineno": 843, "funcname": 34, "threads": [98230], "opcodes": {"161": 12}}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 12}}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 12}}], "filename": 41, "lineno": 190, "funcname": 6, "threads": [98230], "source": [43, 44, 45, 46], "opcodes": {"73": 12}}], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 12}}], "filename": 36, "lineno": 747, "funcname": 37, "threads": [98230], "opcodes": {"162": 12}}], "filename": 29, "lineno": 857, "funcname": 34, "threads": [98230], "opcodes": {"161": 12}}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 12}}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 12}}], "filename": 22, "lineno": 5, "funcname": 6, "threads": [98230], "source": [24, 25, 26, 27, 28], "opcodes": {"73": 12}}], "filename": 5, "lineno": 192, "funcname": 16, "threads": [98230], "source": [18, 19, 20, 21], "opcodes": {"55": 18}}], "filename": 5, "lineno": 234, "funcname": 10, "threads": [98230], "source": [12, 13, 14, 15], "opcodes": {"52": 1892}}], "filename": 5, "lineno": 251, "funcname": 6, "threads": [98230], "source": [8, 9], "opcodes": {"52": 1892}}], "filename": 0, "lineno": 87, "funcname": 3, "threads": [98230], "opcodes": {"52": 1892}}], "filename": 0, "lineno": 196, "funcname": 1, "threads": [98230], "opcodes": {"52": 1892}, "stats": {"sample_interval_usec": 100, "duration_sec": 0.20179993600049784, "sample_rate": 10000.003171433224, "error_rate": 6.2438057482656095, "missed_samples": 0.0, "mode": 0, "thread_stats": {"has_gil_pct": 97.19873150105708, "on_cpu_pct": 0.0, "gil_requested_pct": 0.0, "has_exception_pct": 0.052854122621564484, "gc_pct": 0.0, "free_threaded": false, "has_gil": 1839, "on_cpu": 0, "gil_requested": 0, "unknown": 1892, "has_exception": 1, "total": 1892}, "per_thread_stats": {"98230": {"has_gil_pct": 97.19873150105708, "on_cpu_pct": 0.0, "gil_requested_pct": 0.0, "has_exception_pct": 0.052854122621564484, "gc_pct": 0.0, "has_gil": 1839, "on_cpu": 0, "gil_requested": 0, "unknown": 1892, "has_exception": 1, "total": 1892, "gc_samples": 0}}}, "strings": ["<frozen runpy>", "_run_module_as_main", "_run_module_as_main (<frozen runpy>:196)", "_run_code", "_run_code (<frozen runpy>:87)", "/home/pablogsal/github/python/main/Lib/profiling/sampling/_sync_coordinator.py", "<module>", "<module> (.../sampling/_sync_coordinator.py:251)", "  250: if __name__ == \"__main__\":", "\u2192 251:     main()", "main", "main (.../sampling/_sync_coordinator.py:234)", "  232:             script_path = target_args[0]", "  233:             script_args = target_args[1:]", "\u2192 234:             _execute_script(script_path, script_args, cwd)", "  236:     except CoordinatorError as e:", "_execute_script", "_execute_script (.../sampling/_sync_coordinator.py:192)", "  190:         sys.modules['__main__'] = sys.modules['__mp_main__'] = main_module", "\u2192 192:         code = compile(source_code, script_path, 'exec', module='__main__')", "  193:         exec(code, main_module.__dict__)", "  194:     except SyntaxError as e:", "/tmp/tachyon_demo.py", "<module> (/tmp/tachyon_demo.py:5)", "  3: for profiling visualization examples.", "  4: \"\"\"", "\u2192 5: import hashlib", "  6: import json", "  7: import random", "<frozen importlib._bootstrap>", "_find_and_load", "_find_and_load (<frozen importlib._bootstrap>:1276)", "_find_and_load_unlocked", "_find_and_load_unlocked (<frozen importlib._bootstrap>:1247)", "_load_unlocked", "_load_unlocked (<frozen importlib._bootstrap>:857)", "<frozen importlib._bootstrap_external>", "_LoaderBasics.exec_module", "_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:747)", "_call_with_frames_removed", "_call_with_frames_removed (<frozen importlib._bootstrap>:491)", "/home/pablogsal/github/python/main/Lib/hashlib.py", "<module> (/home/pablogsal/github/python/main/Lib/hashlib.py:190)", "  189: try:", "\u2192 190:     import _hashlib", "  191:     new = __hash_new", "  192:     __get_hash = __get_openssl_constructor", "_load_unlocked (<frozen importlib._bootstrap>:843)", "module_from_spec", "module_from_spec (<frozen importlib._bootstrap>:786)", "ExtensionFileLoader.create_module", "ExtensionFileLoader.create_module (<frozen importlib._bootstrap_external>:1025)", "ExtensionFileLoader.exec_module", "ExtensionFileLoader.exec_module (<frozen importlib._bootstrap_external>:1033)", "_execute_script (.../sampling/_sync_coordinator.py:193)", "  192:         code = compile(source_code, script_path, 'exec', module='__main__')", "\u2192 193:         exec(code, main_module.__dict__)", "  195:         raise TargetError(f\"Syntax error in script {script_path}: {e}\") from e", "<module> (/home/pablogsal/github/python/main/Lib/hashlib.py:269)", "  267:     # version not supporting that algorithm.", "  268:     try:", "\u2192 269:         globals()[__func_name] = __get_hash(__func_name)", "  270:     except ValueError as __exc:", "  271:         import logging as __logging", "__get_openssl_constructor", "__get_openssl_constructor (/home/pablogsal/github/python/main/Lib/hashlib.py:137)", "  135:     if name in __block_openssl_constructor:", "  136:         # Prefer our builtin blake2 implementation.", "\u2192 137:         return __get_builtin_constructor(name)", "  138:     try:", "  139:         # Fetch the OpenSSL hash function if it exists,", "__get_builtin_constructor", "__get_builtin_constructor (/home/pablogsal/github/python/main/Lib/hashlib.py:108)", "  106:             cache['SHA512'] = cache['sha512'] = _sha2.sha512", "  107:         elif name in {'blake2b', 'blake2s'}:", "\u2192 108:             import _blake2", "  109:             cache['blake2b'] = _blake2.blake2b", "  110:             cache['blake2s'] = _blake2.blake2s", "_find_and_load (<frozen importlib._bootstrap>:1273)", "_ModuleLockManager.__enter__", "_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:420)", "_get_module_lock", "_get_module_lock (<frozen importlib._bootstrap>:446)", "<module> (/tmp/tachyon_demo.py:118)", "  117: if __name__ == \"__main__\":", "\u2192 118:     run_profiling_demo()", "run_profiling_demo", "run_profiling_demo (/tmp/tachyon_demo.py:105)", "  103:     print(\"Starting Tachyon profiling demo...\")", "\u2192 105:     compute_section()", "  106:     io_section()", "  107:     string_section()", "compute_section", "compute_section (/tmp/tachyon_demo.py:84)", "  82: def compute_section():", "  83:     \"\"\"Pure computation workload.\"\"\"", "\u2192 84:     fibonacci_recursive(28)", "  85:     fibonacci_cached(100)", "  86:     matrix_multiply(80)", "fibonacci_recursive", "fibonacci_recursive (/tmp/tachyon_demo.py:17)", "  15:     if n <= 1:", "  16:         return n", "\u2192 17:     return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)", "fibonacci_recursive (/tmp/tachyon_demo.py:15)", "  13: def fibonacci_recursive(n):", "  14:     \"\"\"Classic recursive fibonacci - shows deep call stacks.\"\"\"", "\u2192 15:     if n <= 1:", "  17:     return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)", "fibonacci_recursive (/tmp/tachyon_demo.py:13)", "  12: # Computational patterns", "\u2192 13: def fibonacci_recursive(n):", "fibonacci_recursive (/tmp/tachyon_demo.py:16)", "\u2192 16:         return n", "matrix_multiply", "matrix_multiply (/tmp/tachyon_demo.py:30)", "  28: def matrix_multiply(size=100):", "  29:     \"\"\"Matrix multiplication - CPU intensive numerical work.\"\"\"", "\u2192 30:     a = [[random.random() for _ in range(size)] for _ in range(size)]", "  31:     b = [[random.random() for _ in range(size)] for _ in range(size)]", "  32:     result = [[0.0] * size for _ in range(size)]", "matrix_multiply (/tmp/tachyon_demo.py:31)", "  30:     a = [[random.random() for _ in range(size)] for _ in range(size)]", "\u2192 31:     b = [[random.random() for _ in range(size)] for _ in range(size)]", "matrix_multiply (/tmp/tachyon_demo.py:36)", "  34:     for i in range(size):", "  35:         for j in range(size):", "\u2192 36:             for k in range(size):", "  37:                 result[i][j] += a[i][k] * b[k][j]", "  38:     return result", "matrix_multiply (/tmp/tachyon_demo.py:37)", "  36:             for k in range(size):", "\u2192 37:                 result[i][j] += a[i][k] * b[k][j]", "io_section", "io_section (/tmp/tachyon_demo.py:91)", "  89: def io_section():", "  90:     \"\"\"I/O-like workload (CPU-bound simulation).\"\"\"", "\u2192 91:     hash_data(800)", "  92:     json_processing(400)", "hash_data", "hash_data (/tmp/tachyon_demo.py:46)", "  44:     data = b\"Python profiling demonstration data \" * 100", "  45:     for _ in range(iterations):", "\u2192 46:         hashlib.sha256(data).hexdigest()", "  47:         hashlib.md5(data).hexdigest()", "hash_data (/tmp/tachyon_demo.py:47)", "  46:         hashlib.sha256(data).hexdigest()", "\u2192 47:         hashlib.md5(data).hexdigest()", "json_processing", "json_processing (/tmp/tachyon_demo.py:60)", "  58:     }", "  59:     for _ in range(iterations):", "\u2192 60:         encoded = json.dumps(data)", "  61:         json.loads(encoded)", "/home/pablogsal/github/python/main/Lib/json/__init__.py", "dumps", "dumps (.../json/__init__.py:234)", "  232:         cls is None and indent is None and separators is None and", "  233:         default is None and not sort_keys and not kw):", "\u2192 234:         return _default_encoder.encode(obj)", "  235:     if cls is None:", "  236:         cls = JSONEncoder", "/home/pablogsal/github/python/main/Lib/json/encoder.py", "JSONEncoder.encode", "JSONEncoder.encode (.../json/encoder.py:202)", "  200:         # exceptions aren't as detailed.  The list call should be roughly", "  201:         # equivalent to the PySequence_Fast that ''.join() would do.", "\u2192 202:         chunks = self.iterencode(o, _one_shot=True)", "  203:         if not isinstance(chunks, (list, tuple)):", "  204:             chunks = list(chunks)", "JSONEncoder.iterencode", "JSONEncoder.iterencode (.../json/encoder.py:263)", "  261:                 self.key_separator, self.item_separator, self.sort_keys,", "  262:                 self.skipkeys, _one_shot)", "\u2192 263:         return _iterencode(o, 0)", "  265: def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,", "loads", "loads (.../json/__init__.py:351)", "  349:             parse_int is None and parse_float is None and", "  350:             parse_constant is None and object_pairs_hook is None and not kw):", "\u2192 351:         return _default_decoder.decode(s)", "  352:     if cls is None:", "  353:         cls = JSONDecoder", "/home/pablogsal/github/python/main/Lib/json/decoder.py", "JSONDecoder.decode", "JSONDecoder.decode (.../json/decoder.py:345)", "  344:         \"\"\"", "\u2192 345:         obj, end = self.raw_decode(s, idx=_w(s, 0).end())", "  346:         end = _w(s, end).end()", "  347:         if end != len(s):", "JSONDecoder.raw_decode", "JSONDecoder.raw_decode (.../json/decoder.py:361)", "  359:         \"\"\"", "  360:         try:", "\u2192 361:             obj, end = self.scan_once(s, idx)", "  362:         except StopIteration as err:", "  363:             raise JSONDecodeError(\"Expecting value\", s, err.value) from None", "string_section", "string_section (/tmp/tachyon_demo.py:97)", "  95: def string_section():", "  96:     \"\"\"String manipulation workload.\"\"\"", "\u2192 97:     string_concatenation(3000)", "  98:     list_comprehension(1500)", "string_concatenation", "string_concatenation (/tmp/tachyon_demo.py:70)", "  68:         result = \"\"", "  69:         for i in range(100):", "\u2192 70:             result += f\"item_{i}_\"", "string_concatenation (/tmp/tachyon_demo.py:69)", "  67:     for _ in range(iterations):", "\u2192 69:         for i in range(100):", "  70:             result += f\"item_{i}_\"", "list_comprehension", "list_comprehension (/tmp/tachyon_demo.py:77)", "  75:     for _ in range(iterations):", "  76:         data = [x**2 for x in range(1000)]", "\u2192 77:         filtered = [x for x in data if x % 7 == 0]", "  78:         total = sum(filtered)", "list_comprehension (/tmp/tachyon_demo.py:76)", "  74:     \"\"\"List operations - shows bytecode efficiency.\"\"\"", "\u2192 76:         data = [x**2 for x in range(1000)]", "  77:         filtered = [x for x in data if x % 7 == 0]", "list_comprehension (/tmp/tachyon_demo.py:78)", "\u2192 78:         total = sum(filtered)", "Program Root: _run_module_as_main (<frozen runpy>:196)"], "opcode_mapping": {"names": {"0": "CACHE", "1": "BINARY_SLICE", "2": "BUILD_TEMPLATE", "3": "BINARY_OP_INPLACE_ADD_UNICODE", "4": "CALL_FUNCTION_EX", "5": "CHECK_EG_MATCH", "6": "CHECK_EXC_MATCH", "7": "CLEANUP_THROW", "8": "DELETE_SUBSCR", "9": "END_FOR", "10": "END_SEND", "11": "EXIT_INIT_CHECK", "12": "FORMAT_SIMPLE", "13": "FORMAT_WITH_SPEC", "14": "GET_AITER", "15": "GET_ANEXT", "16": "GET_ITER", "17": "RESERVED", "18": "GET_LEN", "19": "GET_YIELD_FROM_ITER", "20": "INTERPRETER_EXIT", "21": "LOAD_BUILD_CLASS", "22": "LOAD_LOCALS", "23": "MAKE_FUNCTION", "24": "MATCH_KEYS", "25": "MATCH_MAPPING", "26": "MATCH_SEQUENCE", "27": "NOP", "28": "NOT_TAKEN", "29": "POP_EXCEPT", "30": "POP_ITER", "31": "POP_TOP", "32": "PUSH_EXC_INFO", "33": "PUSH_NULL", "34": "RETURN_GENERATOR", "35": "RETURN_VALUE", "36": "SETUP_ANNOTATIONS", "37": "STORE_SLICE", "38": "STORE_SUBSCR", "39": "TO_BOOL", "40": "UNARY_INVERT", "41": "UNARY_NEGATIVE", "42": "UNARY_NOT", "43": "WITH_EXCEPT_START", "44": "BINARY_OP", "45": "BUILD_INTERPOLATION", "46": "BUILD_LIST", "47": "BUILD_MAP", "48": "BUILD_SET", "49": "BUILD_SLICE", "50": "BUILD_STRING", "51": "BUILD_TUPLE", "52": "CALL", "53": "CALL_INTRINSIC_1", "54": "CALL_INTRINSIC_2", "55": "CALL_KW", "56": "COMPARE_OP", "57": "CONTAINS_OP", "58": "CONVERT_VALUE", "59": "COPY", "60": "COPY_FREE_VARS", "61": "DELETE_ATTR", "62": "DELETE_DEREF", "63": "DELETE_FAST", "64": "DELETE_GLOBAL", "65": "DELETE_NAME", "66": "DICT_MERGE", "67": "DICT_UPDATE", "68": "END_ASYNC_FOR", "69": "EXTENDED_ARG", "70": "FOR_ITER", "71": "GET_AWAITABLE", "72": "IMPORT_FROM", "73": "IMPORT_NAME", "74": "IS_OP", "75": "JUMP_BACKWARD", "76": "JUMP_BACKWARD_NO_INTERRUPT", "77": "JUMP_FORWARD", "78": "LIST_APPEND", "79": "LIST_EXTEND", "80": "LOAD_ATTR", "81": "LOAD_COMMON_CONSTANT", "82": "LOAD_CONST", "83": "LOAD_DEREF", "84": "LOAD_FAST", "85": "LOAD_FAST_AND_CLEAR", "86": "LOAD_FAST_BORROW", "87": "LOAD_FAST_BORROW_LOAD_FAST_BORROW", "88": "LOAD_FAST_CHECK", "89": "LOAD_FAST_LOAD_FAST", "90": "LOAD_FROM_DICT_OR_DEREF", "91": "LOAD_FROM_DICT_OR_GLOBALS", "92": "LOAD_GLOBAL", "93": "LOAD_NAME", "94": "LOAD_SMALL_INT", "95": "LOAD_SPECIAL", "96": "LOAD_SUPER_ATTR", "97": "MAKE_CELL", "98": "MAP_ADD", "99": "MATCH_CLASS", "100": "POP_JUMP_IF_FALSE", "101": "POP_JUMP_IF_NONE", "102": "POP_JUMP_IF_NOT_NONE", "103": "POP_JUMP_IF_TRUE", "104": "RAISE_VARARGS", "105": "RERAISE", "106": "SEND", "107": "SET_ADD", "108": "SET_FUNCTION_ATTRIBUTE", "109": "SET_UPDATE", "110": "STORE_ATTR", "111": "STORE_DEREF", "112": "STORE_FAST", "113": "STORE_FAST_LOAD_FAST", "114": "STORE_FAST_STORE_FAST", "115": "STORE_GLOBAL", "116": "STORE_NAME", "117": "SWAP", "118": "UNPACK_EX", "119": "UNPACK_SEQUENCE", "120": "YIELD_VALUE", "121": "<121>", "122": "<122>", "123": "<123>", "124": "<124>", "125": "<125>", "126": "<126>", "127": "<127>", "128": "RESUME", "129": "BINARY_OP_ADD_FLOAT", "130": "BINARY_OP_ADD_INT", "131": "BINARY_OP_ADD_UNICODE", "132": "BINARY_OP_EXTEND", "133": "BINARY_OP_MULTIPLY_FLOAT", "134": "BINARY_OP_MULTIPLY_INT", "135": "BINARY_OP_SUBSCR_DICT", "136": "BINARY_OP_SUBSCR_GETITEM", "137": "BINARY_OP_SUBSCR_LIST_INT", "138": "BINARY_OP_SUBSCR_LIST_SLICE", "139": "BINARY_OP_SUBSCR_STR_INT", "140": "BINARY_OP_SUBSCR_TUPLE_INT", "141": "BINARY_OP_SUBTRACT_FLOAT", "142": "BINARY_OP_SUBTRACT_INT", "143": "CALL_ALLOC_AND_ENTER_INIT", "144": "CALL_BOUND_METHOD_EXACT_ARGS", "145": "CALL_BOUND_METHOD_GENERAL", "146": "CALL_BUILTIN_CLASS", "147": "CALL_BUILTIN_FAST", "148": "CALL_BUILTIN_FAST_WITH_KEYWORDS", "149": "CALL_BUILTIN_O", "150": "CALL_ISINSTANCE", "151": "CALL_KW_BOUND_METHOD", "152": "CALL_KW_NON_PY", "153": "CALL_KW_PY", "154": "CALL_LEN", "155": "CALL_LIST_APPEND", "156": "CALL_METHOD_DESCRIPTOR_FAST", "157": "CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS", "158": "CALL_METHOD_DESCRIPTOR_NOARGS", "159": "CALL_METHOD_DESCRIPTOR_O", "160": "CALL_NON_PY_GENERAL", "161": "CALL_PY_EXACT_ARGS", "162": "CALL_PY_GENERAL", "163": "CALL_STR_1", "164": "CALL_TUPLE_1", "165": "CALL_TYPE_1", "166": "COMPARE_OP_FLOAT", "167": "COMPARE_OP_INT", "168": "COMPARE_OP_STR", "169": "CONTAINS_OP_DICT", "170": "CONTAINS_OP_SET", "171": "FOR_ITER_GEN", "172": "FOR_ITER_LIST", "173": "FOR_ITER_RANGE", "174": "FOR_ITER_TUPLE", "175": "JUMP_BACKWARD_JIT", "176": "JUMP_BACKWARD_NO_JIT", "177": "LOAD_ATTR_CLASS", "178": "LOAD_ATTR_CLASS_WITH_METACLASS_CHECK", "179": "LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN", "180": "LOAD_ATTR_INSTANCE_VALUE", "181": "LOAD_ATTR_METHOD_LAZY_DICT", "182": "LOAD_ATTR_METHOD_NO_DICT", "183": "LOAD_ATTR_METHOD_WITH_VALUES", "184": "LOAD_ATTR_MODULE", "185": "LOAD_ATTR_NONDESCRIPTOR_NO_DICT", "186": "LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES", "187": "LOAD_ATTR_PROPERTY", "188": "LOAD_ATTR_SLOT", "189": "LOAD_ATTR_WITH_HINT", "190": "LOAD_GLOBAL_BUILTIN", "191": "LOAD_GLOBAL_MODULE", "192": "LOAD_SUPER_ATTR_ATTR", "193": "LOAD_SUPER_ATTR_METHOD", "194": "RESUME_CHECK", "195": "SEND_GEN", "196": "STORE_ATTR_INSTANCE_VALUE", "197": "STORE_ATTR_SLOT", "198": "STORE_ATTR_WITH_HINT", "199": "STORE_SUBSCR_DICT", "200": "STORE_SUBSCR_LIST_INT", "201": "TO_BOOL_ALWAYS_TRUE", "202": "TO_BOOL_BOOL", "203": "TO_BOOL_INT", "204": "TO_BOOL_LIST", "205": "TO_BOOL_NONE", "206": "TO_BOOL_STR", "207": "UNPACK_SEQUENCE_LIST", "208": "UNPACK_SEQUENCE_TUPLE", "209": "UNPACK_SEQUENCE_TWO_TUPLE", "210": "<210>", "211": "<211>", "212": "<212>", "213": "<213>", "214": "<214>", "215": "<215>", "216": "<216>", "217": "<217>", "218": "<218>", "219": "<219>", "220": "<220>", "221": "<221>", "222": "<222>", "223": "<223>", "224": "<224>", "225": "<225>", "226": "<226>", "227": "<227>", "228": "<228>", "229": "<229>", "230": "<230>", "231": "<231>", "232": "<232>", "233": "INSTRUMENTED_END_FOR", "234": "INSTRUMENTED_POP_ITER", "235": "INSTRUMENTED_END_SEND", "236": "INSTRUMENTED_FOR_ITER", "237": "INSTRUMENTED_INSTRUCTION", "238": "INSTRUMENTED_JUMP_FORWARD", "239": "INSTRUMENTED_NOT_TAKEN", "240": "INSTRUMENTED_POP_JUMP_IF_TRUE", "241": "INSTRUMENTED_POP_JUMP_IF_FALSE", "242": "INSTRUMENTED_POP_JUMP_IF_NONE", "243": "INSTRUMENTED_POP_JUMP_IF_NOT_NONE", "244": "INSTRUMENTED_RESUME", "245": "INSTRUMENTED_RETURN_VALUE", "246": "INSTRUMENTED_YIELD_VALUE", "247": "INSTRUMENTED_END_ASYNC_FOR", "248": "INSTRUMENTED_LOAD_SUPER_ATTR", "249": "INSTRUMENTED_CALL", "250": "INSTRUMENTED_CALL_KW", "251": "INSTRUMENTED_CALL_FUNCTION_EX", "252": "INSTRUMENTED_JUMP_BACKWARD", "253": "INSTRUMENTED_LINE", "254": "ENTER_EXECUTOR", "255": "TRACE_RECORD", "256": "ANNOTATIONS_PLACEHOLDER", "257": "JUMP", "258": "JUMP_IF_FALSE", "259": "JUMP_IF_TRUE", "260": "JUMP_NO_INTERRUPT", "261": "LOAD_CLOSURE", "262": "POP_BLOCK", "263": "SETUP_CLEANUP", "264": "SETUP_FINALLY", "265": "SETUP_WITH", "266": "STORE_FAST_MAYBE_NULL"}, "deopt": {"194": 128, "201": 39, "202": 39, "203": 39, "204": 39, "205": 39, "206": 39, "134": 44, "130": 44, "142": 44, "133": 44, "129": 44, "141": 44, "131": 44, "137": 44, "138": 44, "140": 44, "139": 44, "135": 44, "136": 44, "132": 44, "3": 44, "199": 38, "200": 38, "195": 106, "209": 119, "208": 119, "207": 119, "196": 110, "197": 110, "198": 110, "191": 92, "190": 92, "192": 96, "193": 96, "180": 80, "184": 80, "189": 80, "188": 80, "177": 80, "178": 80, "187": 80, "179": 80, "183": 80, "182": 80, "181": 80, "186": 80, "185": 80, "166": 56, "167": 56, "168": 56, "170": 57, "169": 57, "176": 75, "175": 75, "172": 70, "174": 70, "173": 70, "171": 70, "144": 52, "161": 52, "165": 52, "163": 52, "164": 52, "146": 52, "149": 52, "147": 52, "148": 52, "154": 52, "150": 52, "155": 52, "159": 52, "157": 52, "158": 52, "156": 52, "143": 52, "162": 52, "145": 52, "160": 52, "151": 55, "153": 55, "152": 55}}};

// Global string table for resolving string indices
let stringTable = [];
let normalData = null;
let invertedData = null;
let currentThreadFilter = 'all';
let isInverted = false;

// Heat colors are now defined in CSS variables (--heat-1 through --heat-8)
// and automatically switch with theme changes - no JS color arrays needed!

// Opcode mappings - loaded from embedded data (generated by Python)
let OPCODE_NAMES = {};
let DEOPT_MAP = {};

// Initialize opcode mappings from embedded data
function initOpcodeMapping(data) {
    if (data && data.opcode_mapping) {
        OPCODE_NAMES = data.opcode_mapping.names || {};
        DEOPT_MAP = data.opcode_mapping.deopt || {};
    }
}

// Get opcode info from opcode number
function getOpcodeInfo(opcode) {
    const opname = OPCODE_NAMES[opcode] || `<${opcode}>`;
    const baseOpcode = DEOPT_MAP[opcode];
    const isSpecialized = baseOpcode !== undefined;
    const baseOpname = isSpecialized ? (OPCODE_NAMES[baseOpcode] || `<${baseOpcode}>`) : opname;

    return {
        opname: opname,
        baseOpname: baseOpname,
        isSpecialized: isSpecialized
    };
}

// ============================================================================
// String Resolution
// ============================================================================

function resolveString(index) {
  if (index === null || index === undefined) {
    return null;
  }
  if (typeof index === 'number' && index >= 0 && index < stringTable.length) {
    return stringTable[index];
  }
  return String(index);
}

function resolveStringIndices(node) {
  if (!node) return node;

  const resolved = { ...node };

  if (typeof resolved.name === 'number') {
    resolved.name = resolveString(resolved.name);
  }
  if (typeof resolved.filename === 'number') {
    resolved.filename = resolveString(resolved.filename);
  }
  if (typeof resolved.funcname === 'number') {
    resolved.funcname = resolveString(resolved.funcname);
  }

  if (Array.isArray(resolved.source)) {
    resolved.source = resolved.source.map(index =>
      typeof index === 'number' ? resolveString(index) : index
    );
  }

  if (Array.isArray(resolved.children)) {
    resolved.children = resolved.children.map(child => resolveStringIndices(child));
  }

  return resolved;
}

// ============================================================================
// Theme & UI Controls
// ============================================================================

function toggleTheme() {
  const html = document.documentElement;
  const current = html.getAttribute('data-theme') || 'light';
  const next = current === 'light' ? 'dark' : 'light';
  html.setAttribute('data-theme', next);
  localStorage.setItem('flamegraph-theme', next);

  // Update theme button icon
  const btn = document.getElementById('theme-btn');
  if (btn) {
    btn.querySelector('.icon-moon').style.display = next === 'dark' ? 'none' : '';
    btn.querySelector('.icon-sun').style.display = next === 'dark' ? '' : 'none';
  }

  // Re-render flamegraph with new theme colors
  if (window.flamegraphData && normalData) {
    const currentData = isInverted ? invertedData : normalData;
    const tooltip = createPythonTooltip(currentData);
    const chart = createFlamegraph(tooltip, currentData.value);
    renderFlamegraph(chart, window.flamegraphData);
  }
}

function toggleSidebar() {
  const sidebar = document.getElementById('sidebar');
  if (sidebar) {
    const isCollapsing = !sidebar.classList.contains('collapsed');

    if (isCollapsing) {
      // Save current width before collapsing
      const currentWidth = sidebar.offsetWidth;
      sidebar.dataset.expandedWidth = currentWidth;
      localStorage.setItem('flamegraph-sidebar-width', currentWidth);
    } else {
      // Restore width when expanding
      const savedWidth = sidebar.dataset.expandedWidth || localStorage.getItem('flamegraph-sidebar-width');
      if (savedWidth) {
        sidebar.style.width = savedWidth + 'px';
      }
    }

    sidebar.classList.toggle('collapsed');
    localStorage.setItem('flamegraph-sidebar', sidebar.classList.contains('collapsed') ? 'collapsed' : 'expanded');

    // Resize chart after sidebar animation
    setTimeout(() => {
      resizeChart();
    }, 300);
  }
}

function resizeChart() {
  if (window.flamegraphChart && window.flamegraphData) {
    const chartArea = document.querySelector('.chart-area');
    if (chartArea) {
      window.flamegraphChart.width(chartArea.clientWidth - 32);
      d3.select("#chart").datum(window.flamegraphData).call(window.flamegraphChart);
    }
  }
}

function toggleSection(sectionId) {
  const section = document.getElementById(sectionId);
  if (section) {
    section.classList.toggle('collapsed');
    // Save state
    const collapsedSections = JSON.parse(localStorage.getItem('flamegraph-collapsed-sections') || '{}');
    collapsedSections[sectionId] = section.classList.contains('collapsed');
    localStorage.setItem('flamegraph-collapsed-sections', JSON.stringify(collapsedSections));
  }
}

function restoreUIState() {
  // Restore theme
  const savedTheme = localStorage.getItem('flamegraph-theme');
  if (savedTheme) {
    document.documentElement.setAttribute('data-theme', savedTheme);
    const btn = document.getElementById('theme-btn');
    if (btn) {
      btn.querySelector('.icon-moon').style.display = savedTheme === 'dark' ? 'none' : '';
      btn.querySelector('.icon-sun').style.display = savedTheme === 'dark' ? '' : 'none';
    }
  }

  // Restore sidebar state
  const savedSidebar = localStorage.getItem('flamegraph-sidebar');
  if (savedSidebar === 'collapsed') {
    const sidebar = document.getElementById('sidebar');
    if (sidebar) sidebar.classList.add('collapsed');
  }

  // Restore sidebar width
  const savedWidth = localStorage.getItem('flamegraph-sidebar-width');
  if (savedWidth) {
    const sidebar = document.getElementById('sidebar');
    if (sidebar) {
      sidebar.style.width = savedWidth + 'px';
    }
  }

  // Restore collapsed sections
  const collapsedSections = JSON.parse(localStorage.getItem('flamegraph-collapsed-sections') || '{}');
  for (const [sectionId, isCollapsed] of Object.entries(collapsedSections)) {
    if (isCollapsed) {
      const section = document.getElementById(sectionId);
      if (section) section.classList.add('collapsed');
    }
  }
}

// ============================================================================
// Logo/Favicon Setup
// ============================================================================

function setupLogos() {
    const logo = document.querySelector('.sidebar-logo-img img');
    if (!logo) return;

    const navbarLogoContainer = document.getElementById('navbar-logo');
    if (navbarLogoContainer) {
        const navbarLogo = logo.cloneNode(true);
        navbarLogoContainer.appendChild(navbarLogo);
    }

    const favicon = document.createElement('link');
    favicon.rel = 'icon';
    favicon.type = 'image/png';
    favicon.href = logo.src;
    document.head.appendChild(favicon);
}

// ============================================================================
// Status Bar
// ============================================================================

function updateStatusBar(nodeData, rootValue) {
  const funcname = resolveString(nodeData.funcname) || resolveString(nodeData.name) || "--";
  const filename = resolveString(nodeData.filename) || "";
  const lineno = nodeData.lineno;
  const timeMs = (nodeData.value / 1000).toFixed(2);
  const percent = rootValue > 0 ? ((nodeData.value / rootValue) * 100).toFixed(1) : "0.0";

  const brandEl = document.getElementById('status-brand');
  const taglineEl = document.getElementById('status-tagline');
  if (brandEl) brandEl.style.display = 'none';
  if (taglineEl) taglineEl.style.display = 'none';

  const locationEl = document.getElementById('status-location');
  const funcItem = document.getElementById('status-func-item');
  const timeItem = document.getElementById('status-time-item');
  const percentItem = document.getElementById('status-percent-item');

  if (locationEl) locationEl.style.display = filename && filename !== "~" ? 'flex' : 'none';
  if (funcItem) funcItem.style.display = 'flex';
  if (timeItem) timeItem.style.display = 'flex';
  if (percentItem) percentItem.style.display = 'flex';

  const fileEl = document.getElementById('status-file');
  if (fileEl && filename && filename !== "~") {
    const basename = filename.split('/').pop();
    fileEl.textContent = lineno ? `${basename}:${lineno}` : basename;
  }

  const funcEl = document.getElementById('status-func');
  if (funcEl) funcEl.textContent = funcname.length > 40 ? funcname.substring(0, 37) + '...' : funcname;

  const timeEl = document.getElementById('status-time');
  if (timeEl) timeEl.textContent = `${timeMs} ms`;

  const percentEl = document.getElementById('status-percent');
  if (percentEl) percentEl.textContent = `${percent}%`;
}

function clearStatusBar() {
  const ids = ['status-location', 'status-func-item', 'status-time-item', 'status-percent-item'];
  ids.forEach(id => {
    const el = document.getElementById(id);
    if (el) el.style.display = 'none';
  });

  const brandEl = document.getElementById('status-brand');
  const taglineEl = document.getElementById('status-tagline');
  if (brandEl) brandEl.style.display = 'flex';
  if (taglineEl) taglineEl.style.display = 'flex';
}

// ============================================================================
// Tooltip
// ============================================================================

function createPythonTooltip(data) {
  const pythonTooltip = flamegraph.tooltip.defaultFlamegraphTooltip();

  pythonTooltip.show = function (d, element) {
    if (!this._tooltip) {
      this._tooltip = d3.select("body")
        .append("div")
        .attr("class", "python-tooltip")
        .style("opacity", 0);
    }

    const timeMs = (d.data.value / 1000).toFixed(2);
    const percentage = ((d.data.value / data.value) * 100).toFixed(2);
    const calls = d.data.calls || 0;
    const childCount = d.children ? d.children.length : 0;
    const source = d.data.source;

    const funcname = resolveString(d.data.funcname) || resolveString(d.data.name);
    const filename = resolveString(d.data.filename) || "";
    const isSpecialFrame = filename === "~";

    // Build source section
    let sourceSection = "";
    if (source && Array.isArray(source) && source.length > 0) {
      const sourceLines = source
        .map((line) => {
          const isCurrent = line.startsWith("→");
          const escaped = line.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
          return `<div class="tooltip-source-line${isCurrent ? ' current' : ''}">${escaped}</div>`;
        })
        .join("");

      sourceSection = `
        <div class="tooltip-source">
          <div class="tooltip-source-title">Source Code:</div>
          <div class="tooltip-source-code">${sourceLines}</div>
        </div>`;
    }

    // Create bytecode/opcode section if available
    let opcodeSection = "";
    const opcodes = d.data.opcodes;
    if (opcodes && typeof opcodes === 'object' && Object.keys(opcodes).length > 0) {
      // Sort opcodes by sample count (descending)
      const sortedOpcodes = Object.entries(opcodes)
        .sort((a, b) => b[1] - a[1])
        .slice(0, 8); // Limit to top 8

      const totalOpcodeSamples = sortedOpcodes.reduce((sum, [, count]) => sum + count, 0);
      const maxCount = sortedOpcodes[0][1] || 1;

      const opcodeLines = sortedOpcodes.map(([opcode, count]) => {
        const opcodeInfo = getOpcodeInfo(parseInt(opcode, 10));
        const pct = ((count / totalOpcodeSamples) * 100).toFixed(1);
        const barWidth = (count / maxCount) * 100;
        const specializedBadge = opcodeInfo.isSpecialized
          ? '<span class="tooltip-opcode-badge">SPECIALIZED</span>'
          : '';
        const baseOpHint = opcodeInfo.isSpecialized
          ? `<span class="tooltip-opcode-base-hint">(${opcodeInfo.baseOpname})</span>`
          : '';
        const nameClass = opcodeInfo.isSpecialized
          ? 'tooltip-opcode-name specialized'
          : 'tooltip-opcode-name';

        return `
          <div class="tooltip-opcode-row">
            <div class="${nameClass}">
              ${opcodeInfo.opname}${baseOpHint}${specializedBadge}
            </div>
            <div class="tooltip-opcode-count">${count.toLocaleString()} (${pct}%)</div>
            <div class="tooltip-opcode-bar">
              <div class="tooltip-opcode-bar-fill" style="width: ${barWidth}%;"></div>
            </div>
          </div>`;
      }).join('');

      opcodeSection = `
        <div class="tooltip-opcodes">
          <div class="tooltip-opcodes-title">Bytecode Instructions:</div>
          <div class="tooltip-opcodes-list">
            ${opcodeLines}
          </div>
        </div>`;
    }

    const fileLocationHTML = isSpecialFrame ? "" : `
      <div class="tooltip-location">${filename}${d.data.lineno ? ":" + d.data.lineno : ""}</div>`;

    const tooltipHTML = `
      <div class="tooltip-header">
        <div class="tooltip-title">${funcname}</div>
        ${fileLocationHTML}
      </div>
      <div class="tooltip-stats">
        <span class="tooltip-stat-label">Execution Time:</span>
        <span class="tooltip-stat-value">${timeMs} ms</span>

        <span class="tooltip-stat-label">Percentage:</span>
        <span class="tooltip-stat-value accent">${percentage}%</span>

        ${calls > 0 ? `
          <span class="tooltip-stat-label">Function Calls:</span>
          <span class="tooltip-stat-value">${calls.toLocaleString()}</span>
        ` : ''}

        ${childCount > 0 ? `
          <span class="tooltip-stat-label">Child Functions:</span>
          <span class="tooltip-stat-value">${childCount}</span>
        ` : ''}
      </div>
      ${sourceSection}
      ${opcodeSection}
      <div class="tooltip-hint">
        ${childCount > 0 ? "Click to zoom into this function" : "Leaf function - no children"}
      </div>
    `;

    // Position tooltip
    const event = d3.event || window.event;
    const mouseX = event.pageX || event.clientX;
    const mouseY = event.pageY || event.clientY;
    const padding = 12;

    this._tooltip.html(tooltipHTML);

    // Measure tooltip
    const node = this._tooltip.style("display", "block").style("opacity", 0).node();
    const tooltipWidth = node.offsetWidth || 320;
    const tooltipHeight = node.offsetHeight || 200;

    // Calculate position
    let left = mouseX + padding;
    let top = mouseY + padding;

    if (left + tooltipWidth > window.innerWidth) {
      left = mouseX - tooltipWidth - padding;
      if (left < 0) left = padding;
    }

    if (top + tooltipHeight > window.innerHeight) {
      top = mouseY - tooltipHeight - padding;
      if (top < 0) top = padding;
    }

    this._tooltip
      .style("left", left + "px")
      .style("top", top + "px")
      .transition()
      .duration(150)
      .style("opacity", 1);

    // Update status bar
    updateStatusBar(d.data, data.value);
  };

  pythonTooltip.hide = function () {
    if (this._tooltip) {
      this._tooltip.transition().duration(150).style("opacity", 0);
    }
    clearStatusBar();
  };

  return pythonTooltip;
}

// ============================================================================
// Flamegraph Creation
// ============================================================================

function ensureLibraryLoaded() {
  if (typeof flamegraph === "undefined") {
    console.error("d3-flame-graph library not loaded");
    document.getElementById("chart").innerHTML =
      '<div style="padding: 40px; text-align: center; color: var(--text-muted);">Error: d3-flame-graph library failed to load</div>';
    throw new Error("d3-flame-graph library failed to load");
  }
}

const HEAT_THRESHOLDS = [
  [0.6, 8],
  [0.35, 7],
  [0.18, 6],
  [0.12, 5],
  [0.06, 4],
  [0.03, 3],
  [0.01, 2],
];

function getHeatLevel(percentage) {
  for (const [threshold, level] of HEAT_THRESHOLDS) {
    if (percentage >= threshold) return level;
  }
  return 1;
}

function getHeatColors() {
  const style = getComputedStyle(document.documentElement);
  const colors = {};
  for (let i = 1; i <= 8; i++) {
    colors[i] = style.getPropertyValue(`--heat-${i}`).trim();
  }
  return colors;
}

function createFlamegraph(tooltip, rootValue) {
  const chartArea = document.querySelector('.chart-area');
  const width = chartArea ? chartArea.clientWidth - 32 : window.innerWidth - 320;
  const heatColors = getHeatColors();

  let chart = flamegraph()
    .width(width)
    .cellHeight(20)
    .transitionDuration(300)
    .minFrameSize(1)
    .tooltip(tooltip)
    .inverted(true)
    .setColorMapper(function (d) {
      // Root node should be transparent
      if (d.depth === 0) return 'transparent';

      const percentage = d.data.value / rootValue;
      const level = getHeatLevel(percentage);
      return heatColors[level];
    });

  return chart;
}

function renderFlamegraph(chart, data) {
  d3.select("#chart").datum(data).call(chart);
  window.flamegraphChart = chart;
  window.flamegraphData = data;
  populateStats(data);
}

// ============================================================================
// Search
// ============================================================================

function updateSearchHighlight(searchTerm, searchInput) {
  d3.selectAll("#chart rect")
    .classed("search-match", false)
    .classed("search-dim", false);

  // Clear active state from all hotspots
  document.querySelectorAll('.hotspot').forEach(h => h.classList.remove('active'));

  if (searchTerm && searchTerm.length > 0) {
    let matchCount = 0;

    d3.selectAll("#chart rect").each(function (d) {
      if (d && d.data) {
        const name = resolveString(d.data.name) || "";
        const funcname = resolveString(d.data.funcname) || "";
        const filename = resolveString(d.data.filename) || "";
        const lineno = d.data.lineno;
        const term = searchTerm.toLowerCase();

        // Check if search term looks like file:line pattern
        const fileLineMatch = term.match(/^(.+):(\d+)$/);
        let matches = false;

        if (fileLineMatch) {
          // Exact file:line matching
          const searchFile = fileLineMatch[1];
          const searchLine = parseInt(fileLineMatch[2], 10);
          const basename = filename.split('/').pop().toLowerCase();
          matches = basename.includes(searchFile) && lineno === searchLine;
        } else {
          // Regular substring search
          matches =
            name.toLowerCase().includes(term) ||
            funcname.toLowerCase().includes(term) ||
            filename.toLowerCase().includes(term);
        }

        if (matches) {
          matchCount++;
          d3.select(this).classed("search-match", true);
        } else {
          d3.select(this).classed("search-dim", true);
        }
      }
    });

    if (searchInput) {
      searchInput.classList.remove("has-matches", "no-matches");
      searchInput.classList.add(matchCount > 0 ? "has-matches" : "no-matches");
    }

    // Mark matching hotspot as active
    document.querySelectorAll('.hotspot').forEach(h => {
      if (h.dataset.searchterm && h.dataset.searchterm.toLowerCase() === searchTerm.toLowerCase()) {
        h.classList.add('active');
      }
    });
  } else if (searchInput) {
    searchInput.classList.remove("has-matches", "no-matches");
  }
}

function searchForHotspot(funcname) {
  const searchInput = document.getElementById('search-input');
  const searchWrapper = document.querySelector('.search-wrapper');
  if (searchInput) {
    // Toggle: if already searching for this term, clear it
    if (searchInput.value.trim() === funcname) {
      clearSearch();
    } else {
      searchInput.value = funcname;
      if (searchWrapper) {
        searchWrapper.classList.add('has-value');
      }
      performSearch();
    }
  }
}

function initSearchHandlers() {
  const searchInput = document.getElementById("search-input");
  const searchWrapper = document.querySelector(".search-wrapper");
  if (!searchInput) return;

  let searchTimeout;
  function performSearch() {
    const term = searchInput.value.trim();
    updateSearchHighlight(term, searchInput);
    // Toggle has-value class for clear button visibility
    if (searchWrapper) {
      searchWrapper.classList.toggle("has-value", term.length > 0);
    }
  }

  searchInput.addEventListener("input", function () {
    clearTimeout(searchTimeout);
    searchTimeout = setTimeout(performSearch, 150);
  });

  window.performSearch = performSearch;
}

function clearSearch() {
  const searchInput = document.getElementById("search-input");
  const searchWrapper = document.querySelector(".search-wrapper");
  if (searchInput) {
    searchInput.value = "";
    searchInput.classList.remove("has-matches", "no-matches");
    if (searchWrapper) {
      searchWrapper.classList.remove("has-value");
    }
    // Clear highlights
    d3.selectAll("#chart rect")
      .classed("search-match", false)
      .classed("search-dim", false);
    // Clear active hotspot
    document.querySelectorAll('.hotspot').forEach(h => h.classList.remove('active'));
  }
}

// ============================================================================
// Resize Handler
// ============================================================================

function handleResize() {
  let resizeTimeout;
  window.addEventListener("resize", function () {
    clearTimeout(resizeTimeout);
    resizeTimeout = setTimeout(resizeChart, 100);
  });
}

function initSidebarResize() {
  const sidebar = document.getElementById('sidebar');
  const resizeHandle = document.getElementById('sidebar-resize-handle');
  if (!sidebar || !resizeHandle) return;

  let isResizing = false;
  let startX = 0;
  let startWidth = 0;
  const minWidth = 200;
  const maxWidth = 600;

  resizeHandle.addEventListener('mousedown', function(e) {
    isResizing = true;
    startX = e.clientX;
    startWidth = sidebar.offsetWidth;
    resizeHandle.classList.add('resizing');
    document.body.classList.add('resizing-sidebar');
    e.preventDefault();
  });

  document.addEventListener('mousemove', function(e) {
    if (!isResizing) return;

    const deltaX = e.clientX - startX;
    const newWidth = Math.min(Math.max(startWidth + deltaX, minWidth), maxWidth);
    sidebar.style.width = newWidth + 'px';
    e.preventDefault();
  });

  document.addEventListener('mouseup', function() {
    if (isResizing) {
      isResizing = false;
      resizeHandle.classList.remove('resizing');
      document.body.classList.remove('resizing-sidebar');

      // Save the new width
      const width = sidebar.offsetWidth;
      localStorage.setItem('flamegraph-sidebar-width', width);

      // Resize chart after sidebar resize
      setTimeout(() => {
        resizeChart();
      }, 10);
    }
  });
}

// ============================================================================
// Thread Stats
// ============================================================================

// Mode constants (must match constants.py)
const PROFILING_MODE_WALL = 0;
const PROFILING_MODE_CPU = 1;
const PROFILING_MODE_GIL = 2;
const PROFILING_MODE_ALL = 3;

function populateThreadStats(data, selectedThreadId = null) {
  const stats = data?.stats;
  if (!stats || !stats.thread_stats) {
    return;
  }

  const mode = stats.mode !== undefined ? stats.mode : PROFILING_MODE_WALL;
  let threadStats;

  if (selectedThreadId !== null && stats.per_thread_stats && stats.per_thread_stats[selectedThreadId]) {
    threadStats = stats.per_thread_stats[selectedThreadId];
  } else {
    threadStats = stats.thread_stats;
  }

  if (!threadStats || typeof threadStats.total !== 'number' || threadStats.total <= 0) {
    return;
  }

  const section = document.getElementById('thread-stats-bar');
  if (!section) {
    return;
  }

  section.style.display = 'block';

  const gilHeldStat = document.getElementById('gil-held-stat');
  const gilReleasedStat = document.getElementById('gil-released-stat');
  const gilWaitingStat = document.getElementById('gil-waiting-stat');

  if (mode === PROFILING_MODE_GIL) {
    // In GIL mode, hide GIL-related stats
    if (gilHeldStat) gilHeldStat.style.display = 'none';
    if (gilReleasedStat) gilReleasedStat.style.display = 'none';
    if (gilWaitingStat) gilWaitingStat.style.display = 'none';
  } else {
    // Show all stats
    if (gilHeldStat) gilHeldStat.style.display = 'block';
    if (gilReleasedStat) gilReleasedStat.style.display = 'block';
    if (gilWaitingStat) gilWaitingStat.style.display = 'block';

    const gilHeldPctElem = document.getElementById('gil-held-pct');
    if (gilHeldPctElem) gilHeldPctElem.textContent = `${(threadStats.has_gil_pct || 0).toFixed(1)}%`;

    const gilReleasedPctElem = document.getElementById('gil-released-pct');
    // GIL Released = not holding GIL and not waiting for it
    const gilReleasedPct = Math.max(0, 100 - (threadStats.has_gil_pct || 0) - (threadStats.gil_requested_pct || 0));
    if (gilReleasedPctElem) gilReleasedPctElem.textContent = `${gilReleasedPct.toFixed(1)}%`;

    const gilWaitingPctElem = document.getElementById('gil-waiting-pct');
    if (gilWaitingPctElem) gilWaitingPctElem.textContent = `${(threadStats.gil_requested_pct || 0).toFixed(1)}%`;
  }

  const gcPctElem = document.getElementById('gc-pct');
  if (gcPctElem) gcPctElem.textContent = `${(threadStats.gc_pct || 0).toFixed(1)}%`;

  // Exception stats
  const excPctElem = document.getElementById('exc-pct');
  if (excPctElem) excPctElem.textContent = `${(threadStats.has_exception_pct || 0).toFixed(1)}%`;
}

// ============================================================================
// Profile Summary Stats
// ============================================================================

function formatNumber(num) {
  if (num >= 1000000) return (num / 1000000).toFixed(1) + 'M';
  if (num >= 1000) return (num / 1000).toFixed(1) + 'K';
  return num.toLocaleString();
}

function formatDuration(seconds) {
  if (seconds >= 3600) {
    const h = Math.floor(seconds / 3600);
    const m = Math.floor((seconds % 3600) / 60);
    return `${h}h ${m}m`;
  }
  if (seconds >= 60) {
    const m = Math.floor(seconds / 60);
    const s = Math.floor(seconds % 60);
    return `${m}m ${s}s`;
  }
  return seconds.toFixed(2) + 's';
}

function populateProfileSummary(data) {
  const stats = data.stats || {};
  const totalSamples = stats.total_samples || data.value || 0;
  const duration = stats.duration_sec || 0;
  const sampleRate = stats.sample_rate || (duration > 0 ? totalSamples / duration : 0);
  const errorRate = stats.error_rate || 0;
  const missedSamples= stats.missed_samples || 0;

  const samplesEl = document.getElementById('stat-total-samples');
  if (samplesEl) samplesEl.textContent = formatNumber(totalSamples);

  const durationEl = document.getElementById('stat-duration');
  if (durationEl) durationEl.textContent = duration > 0 ? formatDuration(duration) : '--';

  const rateEl = document.getElementById('stat-sample-rate');
  if (rateEl) rateEl.textContent = sampleRate > 0 ? formatNumber(Math.round(sampleRate)) : '--';

  // Count unique functions
  // Use normal (non-inverted) tree structure, but respect thread filtering
  const uniqueFunctions = new Set();
  function collectUniqueFunctions(node) {
    if (!node) return;
    const filename = resolveString(node.filename) || 'unknown';
    const funcname = resolveString(node.funcname) || resolveString(node.name) || 'unknown';
    const lineno = node.lineno || 0;
    const key = `${filename}|${lineno}|${funcname}`;
    uniqueFunctions.add(key);
    if (node.children) node.children.forEach(collectUniqueFunctions);
  }
  // In inverted mode, use normalData (with thread filter if active)
  // In normal mode, use the passed data (already has thread filter applied if any)
  let functionCountSource;
  if (!normalData) {
    functionCountSource = data;
  } else if (isInverted) {
    if (currentThreadFilter !== 'all') {
      functionCountSource = filterDataByThread(normalData, parseInt(currentThreadFilter));
    } else {
      functionCountSource = normalData;
    }
  } else {
    functionCountSource = data;
  }
  collectUniqueFunctions(functionCountSource);

  const functionsEl = document.getElementById('stat-functions');
  if (functionsEl) functionsEl.textContent = formatNumber(uniqueFunctions.size);

  // Efficiency bar
  if (errorRate !== undefined && errorRate !== null) {
    const efficiency = Math.max(0, Math.min(100, (100 - errorRate)));

    const efficiencySection = document.getElementById('efficiency-section');
    if (efficiencySection) efficiencySection.style.display = 'block';

    const efficiencyValue = document.getElementById('stat-efficiency');
    if (efficiencyValue) efficiencyValue.textContent = efficiency.toFixed(1) + '%';

    const efficiencyFill = document.getElementById('efficiency-fill');
    if (efficiencyFill) efficiencyFill.style.width = efficiency + '%';
  }
  // MissedSamples bar
  if (missedSamples !== undefined && missedSamples !== null) {
    const sampleEfficiency = Math.max(0, missedSamples);

    const efficiencySection = document.getElementById('efficiency-section');
    if (efficiencySection) efficiencySection.style.display = 'block';

    const sampleEfficiencyValue = document.getElementById('stat-missed-samples');
    if (sampleEfficiencyValue) sampleEfficiencyValue.textContent = sampleEfficiency.toFixed(1) + '%';

    const sampleEfficiencyFill = document.getElementById('missed-samples-fill');
    if (sampleEfficiencyFill) sampleEfficiencyFill.style.width = sampleEfficiency + '%';
  }
}

// ============================================================================
// Hotspot Stats
// ============================================================================

function populateStats(data) {
  // Populate profile summary
  populateProfileSummary(data);

  // Populate thread statistics if available
  populateThreadStats(data);

  // For hotspots: use normal (non-inverted) tree structure, but respect thread filtering.
  // In inverted view, the tree structure changes but the hottest functions remain the same.
  // However, if a thread filter is active, we need to show that thread's hotspots.
  let hotspotSource;
  if (!normalData) {
    hotspotSource = data;
  } else if (isInverted) {
    // In inverted mode, use normalData (with thread filter if active)
    if (currentThreadFilter !== 'all') {
      hotspotSource = filterDataByThread(normalData, parseInt(currentThreadFilter));
    } else {
      hotspotSource = normalData;
    }
  } else {
    // In normal mode, use the passed data (already has thread filter applied if any)
    hotspotSource = data;
  }
  const totalSamples = hotspotSource.value || 0;

  const functionMap = new Map();

  function collectFunctions(node) {
    if (!node) return;

    let filename = resolveString(node.filename);
    let funcname = resolveString(node.funcname);

    if (!filename || !funcname) {
      const nameStr = resolveString(node.name);
      if (nameStr?.includes('(')) {
        const match = nameStr.match(/^(.+?)\s*\((.+?):(\d+)\)$/);
        if (match) {
          funcname = funcname || match[1];
          filename = filename || match[2];
        }
      }
    }

    filename = filename || 'unknown';
    funcname = funcname || 'unknown';

    if (filename !== 'unknown' && funcname !== 'unknown' && node.value > 0) {
      let childrenValue = 0;
      if (node.children) {
        childrenValue = node.children.reduce((sum, child) => sum + child.value, 0);
      }
      const directSamples = Math.max(0, node.value - childrenValue);

      const funcKey = `${filename}:${node.lineno || '?'}:${funcname}`;

      if (functionMap.has(funcKey)) {
        const existing = functionMap.get(funcKey);
        existing.directSamples += directSamples;
        existing.directPercent = (existing.directSamples / totalSamples) * 100;
        if (directSamples > existing.maxSingleSamples) {
          existing.filename = filename;
          existing.lineno = node.lineno || '?';
          existing.maxSingleSamples = directSamples;
        }
      } else {
        functionMap.set(funcKey, {
          filename: filename,
          lineno: node.lineno || '?',
          funcname: funcname,
          directSamples,
          directPercent: (directSamples / totalSamples) * 100,
          maxSingleSamples: directSamples
        });
      }
    }

    if (node.children) {
      node.children.forEach(child => collectFunctions(child));
    }
  }

  collectFunctions(hotspotSource);

  const hotSpots = Array.from(functionMap.values())
    .filter(f => f.directPercent > 0.5)
    .sort((a, b) => b.directPercent - a.directPercent)
    .slice(0, 3);

  // Populate and animate hotspot cards
  for (let i = 0; i < 3; i++) {
    const num = i + 1;
    const card = document.getElementById(`hotspot-${num}`);
    const funcEl = document.getElementById(`hotspot-func-${num}`);
    const fileEl = document.getElementById(`hotspot-file-${num}`);
    const percentEl = document.getElementById(`hotspot-percent-${num}`);
    const samplesEl = document.getElementById(`hotspot-samples-${num}`);

    if (i < hotSpots.length && hotSpots[i]) {
      const h = hotSpots[i];
      const filename = h.filename || 'unknown';
      const lineno = h.lineno ?? '?';
      const isSpecialFrame = filename === '~' && (lineno === 0 || lineno === '?');

      let funcDisplay = h.funcname || 'unknown';
      if (funcDisplay.length > 28) funcDisplay = funcDisplay.substring(0, 25) + '...';

      if (funcEl) funcEl.textContent = funcDisplay;
      if (fileEl) {
        if (isSpecialFrame) {
          fileEl.textContent = '--';
        } else {
          const basename = filename !== 'unknown' ? filename.split('/').pop() : 'unknown';
          fileEl.textContent = `${basename}:${lineno}`;
        }
      }
      if (percentEl) percentEl.textContent = `${h.directPercent.toFixed(1)}%`;
      if (samplesEl) samplesEl.textContent = ` (${h.directSamples.toLocaleString()})`;
    } else {
      if (funcEl) funcEl.textContent = '--';
      if (fileEl) fileEl.textContent = '--';
      if (percentEl) percentEl.textContent = '--';
      if (samplesEl) samplesEl.textContent = '';
    }

    // Add click handler and animate entrance
    if (card) {
      if (i < hotSpots.length && hotSpots[i]) {
        const h = hotSpots[i];
        const basename = h.filename !== 'unknown' ? h.filename.split('/').pop() : '';
        const searchTerm = basename && h.lineno !== '?' ? `${basename}:${h.lineno}` : h.funcname;
        card.dataset.searchterm = searchTerm;
        card.onclick = () => searchForHotspot(searchTerm);
        card.style.cursor = 'pointer';
      } else {
        card.onclick = null;
        delete card.dataset.searchterm;
        card.style.cursor = 'default';
      }

      setTimeout(() => {
        card.classList.add('visible');
      }, 100 + i * 80);
    }
  }
}

// ============================================================================
// Thread Filter
// ============================================================================

function initThreadFilter(data) {
  const threadFilter = document.getElementById('thread-filter');
  const threadSection = document.getElementById('thread-section');

  if (!threadFilter || !data.threads) return;

  threadFilter.innerHTML = '<option value="all">All Threads</option>';

  const threads = data.threads || [];
  threads.forEach(threadId => {
    const option = document.createElement('option');
    option.value = threadId;
    option.textContent = `Thread ${threadId}`;
    threadFilter.appendChild(option);
  });

  if (threads.length > 1 && threadSection) {
    threadSection.style.display = 'block';
  }
}

function filterByThread() {
  const threadFilter = document.getElementById('thread-filter');
  if (!threadFilter || !normalData) return;

  const selectedThread = threadFilter.value;
  currentThreadFilter = selectedThread;
  const baseData = isInverted ? invertedData : normalData;

  let filteredData;
  let selectedThreadId = null;

  if (selectedThread === 'all') {
    filteredData = baseData;
  } else {
    selectedThreadId = parseInt(selectedThread, 10);
    filteredData = filterDataByThread(baseData, selectedThreadId);

    if (filteredData.strings) {
      stringTable = filteredData.strings;
      filteredData = resolveStringIndices(filteredData);
    }
  }

  const tooltip = createPythonTooltip(filteredData);
  const chart = createFlamegraph(tooltip, filteredData.value);
  renderFlamegraph(chart, filteredData);

  populateThreadStats(baseData, selectedThreadId);
}

function filterDataByThread(data, threadId) {
  function filterNode(node) {
    if (!node.threads || !node.threads.includes(threadId)) {
      return null;
    }

    const filteredNode = { ...node, children: [] };

    if (node.children && Array.isArray(node.children)) {
      filteredNode.children = node.children
        .map(child => filterNode(child))
        .filter(child => child !== null);
    }

    return filteredNode;
  }

  function recalculateValue(node) {
    if (!node.children || node.children.length === 0) {
      return node.value || 0;
    }
    const childrenValue = node.children.reduce((sum, child) => sum + recalculateValue(child), 0);
    node.value = Math.max(node.value || 0, childrenValue);
    return node.value;
  }

  const filteredRoot = { ...data, children: [] };

  if (data.children && Array.isArray(data.children)) {
    filteredRoot.children = data.children
      .map(child => filterNode(child))
      .filter(child => child !== null);
  }

  recalculateValue(filteredRoot);
  return filteredRoot;
}

// ============================================================================
// Control Functions
// ============================================================================

function resetZoom() {
  if (window.flamegraphChart) {
    window.flamegraphChart.resetZoom();
  }
}

function exportSVG() {
  const svgElement = document.querySelector("#chart svg");
  if (!svgElement) {
    console.warn("Cannot export: No flamegraph SVG found");
    return;
  }
  const serializer = new XMLSerializer();
  const svgString = serializer.serializeToString(svgElement);
  const blob = new Blob([svgString], { type: "image/svg+xml" });
  const url = URL.createObjectURL(blob);
  const a = document.createElement("a");
  a.href = url;
  a.download = "python-performance-flamegraph.svg";
  a.click();
  URL.revokeObjectURL(url);
}

// ============================================================================
// Inverted Flamegraph
// ============================================================================

// Example: "file.py|10|foo" or "~|0|<GC>" for special frames
function getInvertNodeKey(node) {
  return `${node.filename || '~'}|${node.lineno || 0}|${node.funcname || node.name}`;
}

function accumulateInvertedNode(parent, stackFrame, leaf) {
  const key = getInvertNodeKey(stackFrame);

  if (!parent.children[key]) {
    parent.children[key] = {
      name: stackFrame.name,
      value: 0,
      children: {},
      filename: stackFrame.filename,
      lineno: stackFrame.lineno,
      funcname: stackFrame.funcname,
      source: stackFrame.source,
      threads: new Set()
    };
  }

  const node = parent.children[key];
  node.value += leaf.value;
  if (leaf.threads) {
    leaf.threads.forEach(t => node.threads.add(t));
  }

  return node;
}

function processLeaf(invertedRoot, path, leafNode) {
  if (!path || path.length === 0) {
    return;
  }

  let invertedParent = accumulateInvertedNode(invertedRoot, leafNode, leafNode);

  // Walk backwards through the call stack
  for (let i = path.length - 2; i >= 0; i--) {
    invertedParent = accumulateInvertedNode(invertedParent, path[i], leafNode);
  }
}

function traverseInvert(path, currentNode, invertedRoot) {
  const children = currentNode.children || [];
  const childThreads = new Set(children.flatMap(c => c.threads || []));
  const selfThreads = (currentNode.threads || []).filter(t => !childThreads.has(t));

  if (selfThreads.length > 0) {
    processLeaf(invertedRoot, path, { ...currentNode, threads: selfThreads });
  }

  children.forEach(child => traverseInvert(path.concat([child]), child, invertedRoot));
}

function convertInvertDictToArray(node) {
  if (node.threads instanceof Set) {
    node.threads = Array.from(node.threads).sort((a, b) => a - b);
  }

  const children = node.children;
  if (children && typeof children === 'object' && !Array.isArray(children)) {
    node.children = Object.values(children);
    node.children.sort((a, b) => b.value - a.value || a.name.localeCompare(b.name));
    node.children.forEach(convertInvertDictToArray);
  }
  return node;
}

function generateInvertedFlamegraph(data) {
  const invertedRoot = {
    name: data.name,
    value: data.value,
    children: {},
    stats: data.stats,
    threads: data.threads
  };

  const children = data.children || [];
  if (children.length === 0) {
    // Single-frame tree: the root is its own leaf
    processLeaf(invertedRoot, [data], data);
  } else {
    children.forEach(child => traverseInvert([child], child, invertedRoot));
  }

  convertInvertDictToArray(invertedRoot);
  return invertedRoot;
}

function updateToggleUI(toggleId, isOn) {
  const toggle = document.getElementById(toggleId);
  if (toggle) {
    const track = toggle.querySelector('.toggle-track');
    const labels = toggle.querySelectorAll('.toggle-label');
    if (isOn) {
      track.classList.add('on');
      labels[0].classList.remove('active');
      labels[1].classList.add('active');
    } else {
      track.classList.remove('on');
      labels[0].classList.add('active');
      labels[1].classList.remove('active');
    }
  }
}

function toggleInvert() {
  isInverted = !isInverted;
  updateToggleUI('toggle-invert', isInverted);

  // Build inverted data on first use
  if (isInverted && !invertedData) {
    invertedData = generateInvertedFlamegraph(normalData);
  }

  let dataToRender = isInverted ? invertedData : normalData;

  if (currentThreadFilter !== 'all') {
    dataToRender = filterDataByThread(dataToRender, parseInt(currentThreadFilter));
  }

  const tooltip = createPythonTooltip(dataToRender);
  const chart = createFlamegraph(tooltip, dataToRender.value);
  renderFlamegraph(chart, dataToRender);
}

// ============================================================================
// Initialization
// ============================================================================

function initFlamegraph() {
  ensureLibraryLoaded();
  restoreUIState();
  setupLogos();

  if (EMBEDDED_DATA.strings) {
    stringTable = EMBEDDED_DATA.strings;
    normalData = resolveStringIndices(EMBEDDED_DATA);
  } else {
    normalData = EMBEDDED_DATA;
  }

  // Initialize opcode mapping from embedded data
  initOpcodeMapping(EMBEDDED_DATA);

  // Inverted data will be built on first toggle
  invertedData = null;

  initThreadFilter(normalData);

  const tooltip = createPythonTooltip(normalData);
  const chart = createFlamegraph(tooltip, normalData.value);
  renderFlamegraph(chart, normalData);
  initSearchHandlers();
  initSidebarResize();
  handleResize();

  const toggleInvertBtn = document.getElementById('toggle-invert');
  if (toggleInvertBtn) {
    toggleInvertBtn.addEventListener('click', toggleInvert);
  }
}

// Keyboard shortcut: Enter/Space activates toggle switches
document.addEventListener('keydown', function(e) {
    if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA') {
        return;
    }
    if ((e.key === 'Enter' || e.key === ' ') && e.target.classList.contains('toggle-switch')) {
        e.preventDefault();
        e.target.click();
    }
});

if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", initFlamegraph);
} else {
  initFlamegraph();
}

</script>
  </body>
</html>
