gitopo 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +110 -0
  3. package/bin/gitopo.js +20 -0
  4. package/dist/renderer/assets/index-B-xnAFkZ.css +1 -0
  5. package/dist/renderer/assets/index-B4NR76vm.css +1 -0
  6. package/dist/renderer/assets/index-B8-bMEZL.js +3 -0
  7. package/dist/renderer/assets/index-BSM6CD5c.js +3 -0
  8. package/dist/renderer/assets/index-Biwf0g5L.js +3 -0
  9. package/dist/renderer/assets/index-BkSteF7v.js +3 -0
  10. package/dist/renderer/assets/index-Bu2Is4Gi.js +3 -0
  11. package/dist/renderer/assets/index-BuunUFeT.js +3 -0
  12. package/dist/renderer/assets/index-BztqQcTT.js +3 -0
  13. package/dist/renderer/assets/index-C5GvfFhL.js +3 -0
  14. package/dist/renderer/assets/index-C5pqhkpE.css +1 -0
  15. package/dist/renderer/assets/index-CAjBcm7_.js +3 -0
  16. package/dist/renderer/assets/index-CPhqr81-.css +1 -0
  17. package/dist/renderer/assets/index-CRBk_3U9.js +4 -0
  18. package/dist/renderer/assets/index-CV77y4NX.js +3 -0
  19. package/dist/renderer/assets/index-CX4EqujF.js +3 -0
  20. package/dist/renderer/assets/index-Caevx9so.js +3 -0
  21. package/dist/renderer/assets/index-CbVNESqC.js +3 -0
  22. package/dist/renderer/assets/index-CgV3hEXF.js +3 -0
  23. package/dist/renderer/assets/index-Cgxb7yXH.js +3 -0
  24. package/dist/renderer/assets/index-Cu7Bdfdp.js +3 -0
  25. package/dist/renderer/assets/index-D-4eDZ-q.css +1 -0
  26. package/dist/renderer/assets/index-D3WoIbyB.js +3 -0
  27. package/dist/renderer/assets/index-DATWWeXq.js +3 -0
  28. package/dist/renderer/assets/index-DGVlk6ue.css +1 -0
  29. package/dist/renderer/assets/index-DKxk7KCa.js +3 -0
  30. package/dist/renderer/assets/index-DPD27o55.js +3 -0
  31. package/dist/renderer/assets/index-DaP2KGsB.js +3 -0
  32. package/dist/renderer/assets/index-DeuGEmKM.js +3 -0
  33. package/dist/renderer/assets/index-Dg_WVb0M.js +3 -0
  34. package/dist/renderer/assets/index-Dhbf0Fci.js +3 -0
  35. package/dist/renderer/assets/index-DnUHDinm.css +1 -0
  36. package/dist/renderer/assets/index-DuNCgxuJ.js +3 -0
  37. package/dist/renderer/assets/index-HYzjpgUI.js +3 -0
  38. package/dist/renderer/assets/index-Mn_-m7Tt.js +3 -0
  39. package/dist/renderer/assets/index-N_FqOAes.js +3 -0
  40. package/dist/renderer/assets/index-TVFDuiMT.js +3 -0
  41. package/dist/renderer/assets/index-UF9gobFY.css +1 -0
  42. package/dist/renderer/assets/index-V7JII7CO.js +3 -0
  43. package/dist/renderer/assets/index-jDaMuPPI.css +1 -0
  44. package/dist/renderer/assets/index-kUku5Va6.js +3 -0
  45. package/dist/renderer/index.html +38 -0
  46. package/docs/screenshot.png +0 -0
  47. package/package.json +57 -0
  48. package/src/main/index.js +85 -0
  49. package/src/main/preload.js +16 -0
@@ -0,0 +1,3 @@
1
+ (function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function e(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=e(i);fetch(i.href,o)}})();var Fn={value:()=>{}};function pn(){for(var t=0,n=arguments.length,e={},r;t<n;++t){if(!(r=arguments[t]+"")||r in e||/[\s.]/.test(r))throw new Error("illegal type: "+r);e[r]=[]}return new lt(e)}function lt(t){this._=t}function Ln(t,n){return t.trim().split(/^|\s+/).map(function(e){var r="",i=e.indexOf(".");if(i>=0&&(r=e.slice(i+1),e=e.slice(0,i)),e&&!n.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:r}})}lt.prototype=pn.prototype={constructor:lt,on:function(t,n){var e=this._,r=Ln(t+"",e),i,o=-1,s=r.length;if(arguments.length<2){for(;++o<s;)if((i=(t=r[o]).type)&&(i=Dn(e[i],t.name)))return i;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++o<s;)if(i=(t=r[o]).type)e[i]=Wt(e[i],t.name,n);else if(n==null)for(i in e)e[i]=Wt(e[i],t.name,null);return this},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new lt(t)},call:function(t,n){if((i=arguments.length-2)>0)for(var e=new Array(i),r=0,i,o;r<i;++r)e[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(n,e)},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)}};function Dn(t,n){for(var e=0,r=t.length,i;e<r;++e)if((i=t[e]).name===n)return i.value}function Wt(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=Fn,t=t.slice(0,r).concat(t.slice(r+1));break}return e!=null&&t.push({name:n,value:e}),t}var At="http://www.w3.org/1999/xhtml";const Jt={svg:"http://www.w3.org/2000/svg",xhtml:At,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function xt(t){var n=t+="",e=n.indexOf(":");return e>=0&&(n=t.slice(0,e))!=="xmlns"&&(t=t.slice(e+1)),Jt.hasOwnProperty(n)?{space:Jt[n],local:t}:t}function Yn(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===At&&n.documentElement.namespaceURI===At?n.createElement(t):n.createElementNS(e,t)}}function qn(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function dn(t){var n=xt(t);return(n.local?qn:Yn)(n)}function Vn(){}function Xt(t){return t==null?Vn:function(){return this.querySelector(t)}}function zn(t){typeof t!="function"&&(t=Xt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o=n[i],s=o.length,a=r[i]=new Array(s),c,u,f=0;f<s;++f)(c=o[f])&&(u=t.call(c,c.__data__,f,o))&&("__data__"in c&&(u.__data__=c.__data__),a[f]=u);return new b(r,this._parents)}function Un(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function Gn(){return[]}function gn(t){return t==null?Gn:function(){return this.querySelectorAll(t)}}function Kn(t){return function(){return Un(t.apply(this,arguments))}}function Wn(t){typeof t=="function"?t=Kn(t):t=gn(t);for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var s=n[o],a=s.length,c,u=0;u<a;++u)(c=s[u])&&(r.push(t.call(c,c.__data__,u,s)),i.push(c));return new b(r,i)}function mn(t){return function(){return this.matches(t)}}function _n(t){return function(n){return n.matches(t)}}var Jn=Array.prototype.find;function Qn(t){return function(){return Jn.call(this.children,t)}}function Zn(){return this.firstElementChild}function jn(t){return this.select(t==null?Zn:Qn(typeof t=="function"?t:_n(t)))}var te=Array.prototype.filter;function ne(){return Array.from(this.children)}function ee(t){return function(){return te.call(this.children,t)}}function re(t){return this.selectAll(t==null?ne:ee(typeof t=="function"?t:_n(t)))}function ie(t){typeof t!="function"&&(t=mn(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o=n[i],s=o.length,a=r[i]=[],c,u=0;u<s;++u)(c=o[u])&&t.call(c,c.__data__,u,o)&&a.push(c);return new b(r,this._parents)}function wn(t){return new Array(t.length)}function oe(){return new b(this._enter||this._groups.map(wn),this._parents)}function dt(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}dt.prototype={constructor:dt,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)}};function se(t){return function(){return t}}function ae(t,n,e,r,i,o){for(var s=0,a,c=n.length,u=o.length;s<u;++s)(a=n[s])?(a.__data__=o[s],r[s]=a):e[s]=new dt(t,o[s]);for(;s<c;++s)(a=n[s])&&(i[s]=a)}function ce(t,n,e,r,i,o,s){var a,c,u=new Map,f=n.length,l=o.length,h=new Array(f),d;for(a=0;a<f;++a)(c=n[a])&&(h[a]=d=s.call(c,c.__data__,a,n)+"",u.has(d)?i[a]=c:u.set(d,c));for(a=0;a<l;++a)d=s.call(t,o[a],a,o)+"",(c=u.get(d))?(r[a]=c,c.__data__=o[a],u.delete(d)):e[a]=new dt(t,o[a]);for(a=0;a<f;++a)(c=n[a])&&u.get(h[a])===c&&(i[a]=c)}function ue(t){return t.__data__}function fe(t,n){if(!arguments.length)return Array.from(this,ue);var e=n?ce:ae,r=this._parents,i=this._groups;typeof t!="function"&&(t=se(t));for(var o=i.length,s=new Array(o),a=new Array(o),c=new Array(o),u=0;u<o;++u){var f=r[u],l=i[u],h=l.length,d=le(t.call(f,f&&f.__data__,u,r)),m=d.length,w=a[u]=new Array(m),E=s[u]=new Array(m),M=c[u]=new Array(h);e(f,l,w,E,M,d,n);for(var H=0,A=0,Y,$t;H<m;++H)if(Y=w[H]){for(H>=A&&(A=H+1);!($t=E[A])&&++A<m;);Y._next=$t||null}}return s=new b(s,r),s._enter=a,s._exit=c,s}function le(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function he(){return new b(this._exit||this._groups.map(wn),this._parents)}function pe(t,n,e){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),n!=null&&(i=n(i),i&&(i=i.selection())),e==null?o.remove():e(o),r&&i?r.merge(i).order():i}function de(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,s=Math.min(i,o),a=new Array(i),c=0;c<s;++c)for(var u=e[c],f=r[c],l=u.length,h=a[c]=new Array(l),d,m=0;m<l;++m)(d=u[m]||f[m])&&(h[m]=d);for(;c<i;++c)a[c]=e[c];return new b(a,this._parents)}function ge(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r=t[n],i=r.length-1,o=r[i],s;--i>=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function me(t){t||(t=_e);function n(l,h){return l&&h?t(l.__data__,h.__data__):!l-!h}for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var s=e[o],a=s.length,c=i[o]=new Array(a),u,f=0;f<a;++f)(u=s[f])&&(c[f]=u);c.sort(n)}return new b(i,this._parents).order()}function _e(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function we(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function ye(){return Array.from(this)}function xe(){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 s=r[i];if(s)return s}return null}function ve(){let t=0;for(const n of this)++t;return t}function be(){return!this.node()}function $e(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i=n[e],o=0,s=i.length,a;o<s;++o)(a=i[o])&&t.call(a,a.__data__,o,i);return this}function Se(t){return function(){this.removeAttribute(t)}}function Ne(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ee(t,n){return function(){this.setAttribute(t,n)}}function Ae(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function Ce(t,n){return function(){var e=n.apply(this,arguments);e==null?this.removeAttribute(t):this.setAttribute(t,e)}}function ke(t,n){return function(){var e=n.apply(this,arguments);e==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function Me(t,n){var e=xt(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((n==null?e.local?Ne:Se:typeof n=="function"?e.local?ke:Ce:e.local?Ae:Ee)(e,n))}function yn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Te(t){return function(){this.style.removeProperty(t)}}function Be(t,n,e){return function(){this.style.setProperty(t,n,e)}}function Re(t,n,e){return function(){var r=n.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function Oe(t,n,e){return arguments.length>1?this.each((n==null?Te:typeof n=="function"?Re:Be)(t,n,e??"")):G(this.node(),t)}function G(t,n){return t.style.getPropertyValue(n)||yn(t).getComputedStyle(t,null).getPropertyValue(n)}function Xe(t){return function(){delete this[t]}}function Ie(t,n){return function(){this[t]=n}}function He(t,n){return function(){var e=n.apply(this,arguments);e==null?delete this[t]:this[t]=e}}function Pe(t,n){return arguments.length>1?this.each((n==null?Xe:typeof n=="function"?He:Ie)(t,n)):this.node()[t]}function xn(t){return t.trim().split(/^|\s+/)}function It(t){return t.classList||new vn(t)}function vn(t){this._node=t,this._names=xn(t.getAttribute("class")||"")}vn.prototype={add:function(t){var n=this._names.indexOf(t);n<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}};function bn(t,n){for(var e=It(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function $n(t,n){for(var e=It(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function Fe(t){return function(){bn(this,t)}}function Le(t){return function(){$n(this,t)}}function De(t,n){return function(){(n.apply(this,arguments)?bn:$n)(this,t)}}function Ye(t,n){var e=xn(t+"");if(arguments.length<2){for(var r=It(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each((typeof n=="function"?De:n?Fe:Le)(e,n))}function qe(){this.textContent=""}function Ve(t){return function(){this.textContent=t}}function ze(t){return function(){var n=t.apply(this,arguments);this.textContent=n??""}}function Ue(t){return arguments.length?this.each(t==null?qe:(typeof t=="function"?ze:Ve)(t)):this.node().textContent}function Ge(){this.innerHTML=""}function Ke(t){return function(){this.innerHTML=t}}function We(t){return function(){var n=t.apply(this,arguments);this.innerHTML=n??""}}function Je(t){return arguments.length?this.each(t==null?Ge:(typeof t=="function"?We:Ke)(t)):this.node().innerHTML}function Qe(){this.nextSibling&&this.parentNode.appendChild(this)}function Ze(){return this.each(Qe)}function je(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function tr(){return this.each(je)}function nr(t){var n=typeof t=="function"?t:dn(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})}function er(){return null}function rr(t,n){var e=typeof t=="function"?t:dn(t),r=n==null?er:typeof n=="function"?n:Xt(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})}function ir(){var t=this.parentNode;t&&t.removeChild(this)}function or(){return this.each(ir)}function sr(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function ar(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function cr(t){return this.select(t?ar:sr)}function ur(t){return arguments.length?this.property("__data__",t):this.node().__data__}function fr(t){return function(n){t.call(this,n,this.__data__)}}function lr(t){return t.trim().split(/^|\s+/).map(function(n){var e="",r=n.indexOf(".");return r>=0&&(e=n.slice(r+1),n=n.slice(0,r)),{type:n,name:e}})}function hr(t){return function(){var n=this.__on;if(n){for(var e=0,r=-1,i=n.length,o;e<i;++e)o=n[e],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):n[++r]=o;++r?n.length=r:delete this.__on}}}function pr(t,n,e){return function(){var r=this.__on,i,o=fr(n);if(r){for(var s=0,a=r.length;s<a;++s)if((i=r[s]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=e),i.value=n;return}}this.addEventListener(t.type,o,e),i={type:t.type,name:t.name,value:n,listener:o,options:e},r?r.push(i):this.__on=[i]}}function dr(t,n,e){var r=lr(t+""),i,o=r.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var c=0,u=a.length,f;c<u;++c)for(i=0,f=a[c];i<o;++i)if((s=r[i]).type===f.type&&s.name===f.name)return f.value}return}for(a=n?pr:hr,i=0;i<o;++i)this.each(a(r[i],n,e));return this}function Sn(t,n,e){var r=yn(t),i=r.CustomEvent;typeof i=="function"?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 gr(t,n){return function(){return Sn(this,t,n)}}function mr(t,n){return function(){return Sn(this,t,n.apply(this,arguments))}}function _r(t,n){return this.each((typeof n=="function"?mr:gr)(t,n))}function*wr(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length,s;i<o;++i)(s=r[i])&&(yield s)}var Nn=[null];function b(t,n){this._groups=t,this._parents=n}function it(){return new b([[document.documentElement]],Nn)}function yr(){return this}b.prototype=it.prototype={constructor:b,select:zn,selectAll:Wn,selectChild:jn,selectChildren:re,filter:ie,data:fe,enter:oe,exit:he,join:pe,merge:de,selection:yr,order:ge,sort:me,call:we,nodes:ye,node:xe,size:ve,empty:be,each:$e,attr:Me,style:Oe,property:Pe,classed:Ye,text:Ue,html:Je,raise:Ze,lower:tr,append:nr,insert:rr,remove:or,clone:cr,datum:ur,on:dr,dispatch:_r,[Symbol.iterator]:wr};function Qt(t){return typeof t=="string"?new b([[document.querySelector(t)]],[document.documentElement]):new b([[t]],Nn)}function Ht(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function En(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function ot(){}var tt=.7,gt=1/tt,z="\\s*([+-]?\\d+)\\s*",nt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",C="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",xr=/^#([0-9a-f]{3,8})$/,vr=new RegExp(`^rgb\\(${z},${z},${z}\\)$`),br=new RegExp(`^rgb\\(${C},${C},${C}\\)$`),$r=new RegExp(`^rgba\\(${z},${z},${z},${nt}\\)$`),Sr=new RegExp(`^rgba\\(${C},${C},${C},${nt}\\)$`),Nr=new RegExp(`^hsl\\(${nt},${C},${C}\\)$`),Er=new RegExp(`^hsla\\(${nt},${C},${C},${nt}\\)$`),Zt={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};Ht(ot,et,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:jt,formatHex:jt,formatHex8:Ar,formatHsl:Cr,formatRgb:tn,toString:tn});function jt(){return this.rgb().formatHex()}function Ar(){return this.rgb().formatHex8()}function Cr(){return An(this).formatHsl()}function tn(){return this.rgb().formatRgb()}function et(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=xr.exec(t))?(e=n[1].length,n=parseInt(n[1],16),e===6?nn(n):e===3?new x(n>>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):e===8?ct(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):e===4?ct(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=vr.exec(t))?new x(n[1],n[2],n[3],1):(n=br.exec(t))?new x(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=$r.exec(t))?ct(n[1],n[2],n[3],n[4]):(n=Sr.exec(t))?ct(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=Nr.exec(t))?on(n[1],n[2]/100,n[3]/100,1):(n=Er.exec(t))?on(n[1],n[2]/100,n[3]/100,n[4]):Zt.hasOwnProperty(t)?nn(Zt[t]):t==="transparent"?new x(NaN,NaN,NaN,0):null}function nn(t){return new x(t>>16&255,t>>8&255,t&255,1)}function ct(t,n,e,r){return r<=0&&(t=n=e=NaN),new x(t,n,e,r)}function kr(t){return t instanceof ot||(t=et(t)),t?(t=t.rgb(),new x(t.r,t.g,t.b,t.opacity)):new x}function Ct(t,n,e,r){return arguments.length===1?kr(t):new x(t,n,e,r??1)}function x(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}Ht(x,Ct,En(ot,{brighter(t){return t=t==null?gt:Math.pow(gt,t),new x(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?tt:Math.pow(tt,t),new x(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new x(L(this.r),L(this.g),L(this.b),mt(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:en,formatHex:en,formatHex8:Mr,formatRgb:rn,toString:rn}));function en(){return`#${F(this.r)}${F(this.g)}${F(this.b)}`}function Mr(){return`#${F(this.r)}${F(this.g)}${F(this.b)}${F((isNaN(this.opacity)?1:this.opacity)*255)}`}function rn(){const t=mt(this.opacity);return`${t===1?"rgb(":"rgba("}${L(this.r)}, ${L(this.g)}, ${L(this.b)}${t===1?")":`, ${t})`}`}function mt(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function L(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function F(t){return t=L(t),(t<16?"0":"")+t.toString(16)}function on(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new S(t,n,e,r)}function An(t){if(t instanceof S)return new S(t.h,t.s,t.l,t.opacity);if(t instanceof ot||(t=et(t)),!t)return new S;if(t instanceof S)return t;t=t.rgb();var n=t.r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),s=NaN,a=o-i,c=(o+i)/2;return a?(n===o?s=(e-r)/a+(e<r)*6:e===o?s=(r-n)/a+2:s=(n-e)/a+4,a/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new S(s,a,c,t.opacity)}function Tr(t,n,e,r){return arguments.length===1?An(t):new S(t,n,e,r??1)}function S(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}Ht(S,Tr,En(ot,{brighter(t){return t=t==null?gt:Math.pow(gt,t),new S(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?tt:Math.pow(tt,t),new S(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,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 x(Nt(t>=240?t-240:t+120,i,r),Nt(t,i,r),Nt(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new S(sn(this.h),ut(this.s),ut(this.l),mt(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=mt(this.opacity);return`${t===1?"hsl(":"hsla("}${sn(this.h)}, ${ut(this.s)*100}%, ${ut(this.l)*100}%${t===1?")":`, ${t})`}`}}));function sn(t){return t=(t||0)%360,t<0?t+360:t}function ut(t){return Math.max(0,Math.min(1,t||0))}function Nt(t,n,e){return(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)*255}const Cn=t=>()=>t;function Br(t,n){return function(e){return t+e*n}}function Rr(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)}}function Or(t){return(t=+t)==1?kn:function(n,e){return e-n?Rr(n,e,t):Cn(isNaN(n)?e:n)}}function kn(t,n){var e=n-t;return e?Br(t,e):Cn(isNaN(t)?n:t)}const an=(function t(n){var e=Or(n);function r(i,o){var s=e((i=Ct(i)).r,(o=Ct(o)).r),a=e(i.g,o.g),c=e(i.b,o.b),u=kn(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r})(1);function I(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}var kt=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Et=new RegExp(kt.source,"g");function Xr(t){return function(){return t}}function Ir(t){return function(n){return t(n)+""}}function Hr(t,n){var e=kt.lastIndex=Et.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",n=n+"";(r=kt.exec(t))&&(i=Et.exec(n));)(o=i.index)>e&&(o=n.slice(e,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,c.push({i:s,x:I(r,i)})),e=Et.lastIndex;return e<n.length&&(o=n.slice(e),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?Ir(c[0].x):Xr(n):(n=c.length,function(u){for(var f=0,l;f<n;++f)a[(l=c[f]).i]=l.x(u);return a.join("")})}var cn=180/Math.PI,Mt={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Mn(t,n,e,r,i,o){var s,a,c;return(s=Math.sqrt(t*t+n*n))&&(t/=s,n/=s),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,c/=a),t*r<n*e&&(t=-t,n=-n,c=-c,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*cn,skewX:Math.atan(c)*cn,scaleX:s,scaleY:a}}var ft;function Pr(t){const n=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Mt:Mn(n.a,n.b,n.c,n.d,n.e,n.f)}function Fr(t){return t==null||(ft||(ft=document.createElementNS("http://www.w3.org/2000/svg","g")),ft.setAttribute("transform",t),!(t=ft.transform.baseVal.consolidate()))?Mt:(t=t.matrix,Mn(t.a,t.b,t.c,t.d,t.e,t.f))}function Tn(t,n,e,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,h,d,m){if(u!==l||f!==h){var w=d.push("translate(",null,n,null,e);m.push({i:w-4,x:I(u,l)},{i:w-2,x:I(f,h)})}else(l||h)&&d.push("translate("+l+n+h+e)}function s(u,f,l,h){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:I(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(u,f,l,h){u!==f?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:I(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,h,d,m){if(u!==l||f!==h){var w=d.push(i(d)+"scale(",null,",",null,")");m.push({i:w-4,x:I(u,l)},{i:w-2,x:I(f,h)})}else(l!==1||h!==1)&&d.push(i(d)+"scale("+l+","+h+")")}return function(u,f){var l=[],h=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,l,h),s(u.rotate,f.rotate,l,h),a(u.skewX,f.skewX,l,h),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,h),u=f=null,function(d){for(var m=-1,w=h.length,E;++m<w;)l[(E=h[m]).i]=E.x(d);return l.join("")}}}var Lr=Tn(Pr,"px, ","px)","deg)"),Dr=Tn(Fr,", ",")",")"),K=0,J=0,W=0,Bn=1e3,_t,Q,wt=0,D=0,vt=0,rt=typeof performance=="object"&&performance.now?performance:Date,Rn=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Pt(){return D||(Rn(Yr),D=rt.now()+vt)}function Yr(){D=0}function yt(){this._call=this._time=this._next=null}yt.prototype=On.prototype={constructor:yt,restart:function(t,n,e){if(typeof t!="function")throw new TypeError("callback is not a function");e=(e==null?Pt():+e)+(n==null?0:+n),!this._next&&Q!==this&&(Q?Q._next=this:_t=this,Q=this),this._call=t,this._time=e,Tt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Tt())}};function On(t,n,e){var r=new yt;return r.restart(t,n,e),r}function qr(){Pt(),++K;for(var t=_t,n;t;)(n=D-t._time)>=0&&t._call.call(void 0,n),t=t._next;--K}function un(){D=(wt=rt.now())+vt,K=J=0;try{qr()}finally{K=0,zr(),D=0}}function Vr(){var t=rt.now(),n=t-wt;n>Bn&&(vt-=n,wt=t)}function zr(){for(var t,n=_t,e,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:_t=e);Q=t,Tt(r)}function Tt(t){if(!K){J&&(J=clearTimeout(J));var n=t-D;n>24?(t<1/0&&(J=setTimeout(un,t-rt.now()-vt)),W&&(W=clearInterval(W))):(W||(wt=rt.now(),W=setInterval(Vr,Bn)),K=1,Rn(un))}}function fn(t,n,e){var r=new yt;return n=n==null?0:+n,r.restart(i=>{r.stop(),t(i+n)},n,e),r}var Ur=pn("start","end","cancel","interrupt"),Gr=[],Xn=0,ln=1,Bt=2,ht=3,hn=4,Rt=5,pt=6;function bt(t,n,e,r,i,o){var s=t.__transition;if(!s)t.__transition={};else if(e in s)return;Kr(t,e,{name:n,index:r,group:i,on:Ur,tween:Gr,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Xn})}function Ft(t,n){var e=N(t,n);if(e.state>Xn)throw new Error("too late; already scheduled");return e}function k(t,n){var e=N(t,n);if(e.state>ht)throw new Error("too late; already running");return e}function N(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Kr(t,n,e){var r=t.__transition,i;r[n]=e,e.timer=On(o,0,e.time);function o(u){e.state=ln,e.timer.restart(s,e.delay,e.time),e.delay<=u&&s(u-e.delay)}function s(u){var f,l,h,d;if(e.state!==ln)return c();for(f in r)if(d=r[f],d.name===e.name){if(d.state===ht)return fn(s);d.state===hn?(d.state=pt,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[f]):+f<n&&(d.state=pt,d.timer.stop(),d.on.call("cancel",t,t.__data__,d.index,d.group),delete r[f])}if(fn(function(){e.state===ht&&(e.state=hn,e.timer.restart(a,e.delay,e.time),a(u))}),e.state=Bt,e.on.call("start",t,t.__data__,e.index,e.group),e.state===Bt){for(e.state=ht,i=new Array(h=e.tween.length),f=0,l=-1;f<h;++f)(d=e.tween[f].value.call(t,t.__data__,e.index,e.group))&&(i[++l]=d);i.length=l+1}}function a(u){for(var f=u<e.duration?e.ease.call(null,u/e.duration):(e.timer.restart(c),e.state=Rt,1),l=-1,h=i.length;++l<h;)i[l].call(t,f);e.state===Rt&&(e.on.call("end",t,t.__data__,e.index,e.group),c())}function c(){e.state=pt,e.timer.stop(),delete r[n];for(var u in r)return;delete t.__transition}}function Wr(t,n){var e=t.__transition,r,i,o=!0,s;if(e){n=n==null?null:n+"";for(s in e){if((r=e[s]).name!==n){o=!1;continue}i=r.state>Bt&&r.state<Rt,r.state=pt,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete e[s]}o&&delete t.__transition}}function Jr(t){return this.each(function(){Wr(this,t)})}function Qr(t,n){var e,r;return function(){var i=k(this,t),o=i.tween;if(o!==e){r=e=o;for(var s=0,a=r.length;s<a;++s)if(r[s].name===n){r=r.slice(),r.splice(s,1);break}}i.tween=r}}function Zr(t,n,e){var r,i;if(typeof e!="function")throw new Error;return function(){var o=k(this,t),s=o.tween;if(s!==r){i=(r=s).slice();for(var a={name:n,value:e},c=0,u=i.length;c<u;++c)if(i[c].name===n){i[c]=a;break}c===u&&i.push(a)}o.tween=i}}function jr(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r=N(this.node(),e).tween,i=0,o=r.length,s;i<o;++i)if((s=r[i]).name===t)return s.value;return null}return this.each((n==null?Qr:Zr)(e,t,n))}function Lt(t,n,e){var r=t._id;return t.each(function(){var i=k(this,r);(i.value||(i.value={}))[n]=e.apply(this,arguments)}),function(i){return N(i,r).value[n]}}function In(t,n){var e;return(typeof n=="number"?I:n instanceof et?an:(e=et(n))?(n=e,an):Hr)(t,n)}function ti(t){return function(){this.removeAttribute(t)}}function ni(t){return function(){this.removeAttributeNS(t.space,t.local)}}function ei(t,n,e){var r,i=e+"",o;return function(){var s=this.getAttribute(t);return s===i?null:s===r?o:o=n(r=s,e)}}function ri(t,n,e){var r,i=e+"",o;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===r?o:o=n(r=s,e)}}function ii(t,n,e){var r,i,o;return function(){var s,a=e(this),c;return a==null?void this.removeAttribute(t):(s=this.getAttribute(t),c=a+"",s===c?null:s===r&&c===i?o:(i=c,o=n(r=s,a)))}}function oi(t,n,e){var r,i,o;return function(){var s,a=e(this),c;return a==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),c=a+"",s===c?null:s===r&&c===i?o:(i=c,o=n(r=s,a)))}}function si(t,n){var e=xt(t),r=e==="transform"?Dr:In;return this.attrTween(t,typeof n=="function"?(e.local?oi:ii)(e,r,Lt(this,"attr."+t,n)):n==null?(e.local?ni:ti)(e):(e.local?ri:ei)(e,r,n))}function ai(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function ci(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function ui(t,n){var e,r;function i(){var o=n.apply(this,arguments);return o!==r&&(e=(r=o)&&ci(t,o)),e}return i._value=n,i}function fi(t,n){var e,r;function i(){var o=n.apply(this,arguments);return o!==r&&(e=(r=o)&&ai(t,o)),e}return i._value=n,i}function li(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(n==null)return this.tween(e,null);if(typeof n!="function")throw new Error;var r=xt(t);return this.tween(e,(r.local?ui:fi)(r,n))}function hi(t,n){return function(){Ft(this,t).delay=+n.apply(this,arguments)}}function pi(t,n){return n=+n,function(){Ft(this,t).delay=n}}function di(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?hi:pi)(n,t)):N(this.node(),n).delay}function gi(t,n){return function(){k(this,t).duration=+n.apply(this,arguments)}}function mi(t,n){return n=+n,function(){k(this,t).duration=n}}function _i(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?gi:mi)(n,t)):N(this.node(),n).duration}function wi(t,n){if(typeof n!="function")throw new Error;return function(){k(this,t).ease=n}}function yi(t){var n=this._id;return arguments.length?this.each(wi(n,t)):N(this.node(),n).ease}function xi(t,n){return function(){var e=n.apply(this,arguments);if(typeof e!="function")throw new Error;k(this,t).ease=e}}function vi(t){if(typeof t!="function")throw new Error;return this.each(xi(this._id,t))}function bi(t){typeof t!="function"&&(t=mn(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o=n[i],s=o.length,a=r[i]=[],c,u=0;u<s;++u)(c=o[u])&&t.call(c,c.__data__,u,o)&&a.push(c);return new R(r,this._parents,this._name,this._id)}function $i(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),s=new Array(r),a=0;a<o;++a)for(var c=n[a],u=e[a],f=c.length,l=s[a]=new Array(f),h,d=0;d<f;++d)(h=c[d]||u[d])&&(l[d]=h);for(;a<r;++a)s[a]=n[a];return new R(s,this._parents,this._name,this._id)}function Si(t){return(t+"").trim().split(/^|\s+/).every(function(n){var e=n.indexOf(".");return e>=0&&(n=n.slice(0,e)),!n||n==="start"})}function Ni(t,n,e){var r,i,o=Si(n)?Ft:k;return function(){var s=o(this,t),a=s.on;a!==r&&(i=(r=a).copy()).on(n,e),s.on=i}}function Ei(t,n){var e=this._id;return arguments.length<2?N(this.node(),e).on.on(t):this.each(Ni(e,t,n))}function Ai(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}function Ci(){return this.on("end.remove",Ai(this._id))}function ki(t){var n=this._name,e=this._id;typeof t!="function"&&(t=Xt(t));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s<i;++s)for(var a=r[s],c=a.length,u=o[s]=new Array(c),f,l,h=0;h<c;++h)(f=a[h])&&(l=t.call(f,f.__data__,h,a))&&("__data__"in f&&(l.__data__=f.__data__),u[h]=l,bt(u[h],n,e,h,u,N(f,e)));return new R(o,this._parents,n,e)}function Mi(t){var n=this._name,e=this._id;typeof t!="function"&&(t=gn(t));for(var r=this._groups,i=r.length,o=[],s=[],a=0;a<i;++a)for(var c=r[a],u=c.length,f,l=0;l<u;++l)if(f=c[l]){for(var h=t.call(f,f.__data__,l,c),d,m=N(f,e),w=0,E=h.length;w<E;++w)(d=h[w])&&bt(d,n,e,w,h,m);o.push(h),s.push(f)}return new R(o,s,n,e)}var Ti=it.prototype.constructor;function Bi(){return new Ti(this._groups,this._parents)}function Ri(t,n){var e,r,i;return function(){var o=G(this,t),s=(this.style.removeProperty(t),G(this,t));return o===s?null:o===e&&s===r?i:i=n(e=o,r=s)}}function Hn(t){return function(){this.style.removeProperty(t)}}function Oi(t,n,e){var r,i=e+"",o;return function(){var s=G(this,t);return s===i?null:s===r?o:o=n(r=s,e)}}function Xi(t,n,e){var r,i,o;return function(){var s=G(this,t),a=e(this),c=a+"";return a==null&&(c=a=(this.style.removeProperty(t),G(this,t))),s===c?null:s===r&&c===i?o:(i=c,o=n(r=s,a))}}function Ii(t,n){var e,r,i,o="style."+n,s="end."+o,a;return function(){var c=k(this,t),u=c.on,f=c.value[o]==null?a||(a=Hn(n)):void 0;(u!==e||i!==f)&&(r=(e=u).copy()).on(s,i=f),c.on=r}}function Hi(t,n,e){var r=(t+="")=="transform"?Lr:In;return n==null?this.styleTween(t,Ri(t,r)).on("end.style."+t,Hn(t)):typeof n=="function"?this.styleTween(t,Xi(t,r,Lt(this,"style."+t,n))).each(Ii(this._id,t)):this.styleTween(t,Oi(t,r,n),e).on("end.style."+t,null)}function Pi(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function Fi(t,n,e){var r,i;function o(){var s=n.apply(this,arguments);return s!==i&&(r=(i=s)&&Pi(t,s,e)),r}return o._value=n,o}function Li(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(n==null)return this.tween(r,null);if(typeof n!="function")throw new Error;return this.tween(r,Fi(t,n,e??""))}function Di(t){return function(){this.textContent=t}}function Yi(t){return function(){var n=t(this);this.textContent=n??""}}function qi(t){return this.tween("text",typeof t=="function"?Yi(Lt(this,"text",t)):Di(t==null?"":t+""))}function Vi(t){return function(n){this.textContent=t.call(this,n)}}function zi(t){var n,e;function r(){var i=t.apply(this,arguments);return i!==e&&(n=(e=i)&&Vi(i)),n}return r._value=t,r}function Ui(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,zi(t))}function Gi(){for(var t=this._name,n=this._id,e=Pn(),r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,c,u=0;u<a;++u)if(c=s[u]){var f=N(c,n);bt(c,t,e,u,s,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}return new R(r,this._parents,t,e)}function Ki(){var t,n,e=this,r=e._id,i=e.size();return new Promise(function(o,s){var a={value:s},c={value:function(){--i===0&&o()}};e.each(function(){var u=k(this,r),f=u.on;f!==t&&(n=(t=f).copy(),n._.cancel.push(a),n._.interrupt.push(a),n._.end.push(c)),u.on=n}),i===0&&o()})}var Wi=0;function R(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Pn(){return++Wi}var T=it.prototype;R.prototype={constructor:R,select:ki,selectAll:Mi,selectChild:T.selectChild,selectChildren:T.selectChildren,filter:bi,merge:$i,selection:Bi,transition:Gi,call:T.call,nodes:T.nodes,node:T.node,size:T.size,empty:T.empty,each:T.each,on:Ei,attr:si,attrTween:li,style:Hi,styleTween:Li,text:qi,textTween:Ui,remove:Ci,tween:jr,delay:di,duration:_i,ease:yi,easeVarying:vi,end:Ki,[Symbol.iterator]:T[Symbol.iterator]};function Ji(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var Qi={time:null,delay:0,duration:250,ease:Ji};function Zi(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 ji(t){var n,e;t instanceof R?(n=t._id,t=t._name):(n=Pn(),(e=Qi).time=Pt(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,c,u=0;u<a;++u)(c=s[u])&&bt(c,t,n,u,s,e||Zi(c,n));return new R(r,this._parents,t,n)}it.prototype.interrupt=Jr;it.prototype.transition=ji;function Z(t,n,e){this.k=t,this.x=n,this.y=e}Z.prototype={constructor:Z,scale:function(t){return t===1?this:new Z(this.k*t,this.x,this.y)},translate:function(t,n){return t===0&n===0?this:new Z(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+")"}};Z.prototype;let B=[],j=[],U=new Map;async function to(){const t=await window.gitopo.git.exec('log --all --format="%H|%P|%ct|%s" --date-order -1000');if(!t.success)return console.error("Failed to fetch commits:",t.error),[];const n=[],e=t.output.trim().split(`
2
+ `);for(const r of e){const i=r.split("|");if(i.length>=4){const o=i[0],s=i[1],a=parseInt(i[2],10),c=i.slice(3).join("|"),u=s.trim()?s.trim().split(" "):[];n.push({hash:o,parents:u,timestamp:a,message:c})}}return n.sort((r,i)=>i.timestamp-r.timestamp),n}async function no(){const t=await window.gitopo.git.exec('branch -a --format="%(refname:short) %(objectname)"');if(!t.success)return console.error("Failed to fetch branches:",t.error),[];const n=[],e=t.output.trim().split(`
3
+ `);for(const r of e){const i=r.trim().split(" ");if(i.length>=2){const o=i[0],s=i[1];n.push({name:o,hash:s})}}return n}function eo(t){const n=["branch1","branch2","branch3"],e=t.find(r=>r.name==="main"||r.name==="master");n.forEach((r,i)=>{const o=document.getElementById(r);o.innerHTML="";const s=document.createElement("option");s.value="",s.textContent="----",o.appendChild(s),t.forEach(a=>{const c=document.createElement("option");c.value=a.name,c.textContent=a.name,o.appendChild(c)}),i===0&&e&&(o.value=e.name),o.addEventListener("change",()=>Ot())})}function ro(t){const n=j.find(i=>i.name===t);if(!n)return new Set;const e=new Set;let r=n.hash;for(;r;){e.add(r);const i=U.get(r);if(i&&i.parents.length>0)r=i.parents[0];else break}return e}function io(t){const n=[],e=new Set;for(const r of t){const i=U.get(r);if(!(!i||i.parents.length<2))for(let o=1;o<i.parents.length;o++){const s=i.parents[o];if(e.has(s))continue;const a=new Set,c=[s];for(;c.length>0;){const u=c.pop();if(a.has(u)||t.has(u)||e.has(u))continue;const f=U.get(u);if(f){a.add(u),e.add(u);for(const l of f.parents)!t.has(l)&&!a.has(l)&&c.push(l)}}if(a.size>0){let u=!0;for(const f of a){const l=U.get(f);if(l){for(const h of l.parents)if(!t.has(h)&&!a.has(h)){u=!1;break}if(!u)break}}u&&n.push({mergeCommit:r,commits:a})}}}return n}function oo(){const t=[];return["branch1","branch2","branch3"].forEach(n=>{const e=document.getElementById(n);e&&e.value&&t.push(e.value)}),t}function Ot(){const t=Qt("#graph");t.selectAll("*").remove();const n=Qt("#app");n.selectAll(".tooltip").remove();const e=document.getElementById("controls").offsetHeight,r=window.innerWidth,i=window.innerHeight-e;t.attr("width",r).attr("height",i);const o=6,s=30,a=150,c=30,u=50,f=50,h=oo().map(p=>{const g=ro(p),_=io(g);return{name:p,lineage:g,subBranches:_}}),d=new Map;j.forEach(p=>{d.has(p.hash)||d.set(p.hash,[]),d.get(p.hash).push(p.name)});const m=new Map;B.forEach(p=>{m.set(p.hash,{mainCol:h.length,subOffset:0,isSubBranch:!1})}),h.forEach((p,g)=>{for(const _ of p.lineage)m.set(_,{mainCol:g,subOffset:0,isSubBranch:!1})}),h.forEach((p,g)=>{const _=new Map;p.subBranches.forEach(y=>{const $=[];y.commits.forEach(v=>{const P=B.findIndex(at=>at.hash===v);P>=0&&$.push(P)});let O=1,X=!0;for(;X;){X=!1;for(const v of $)if((_.get(v)||new Set).has(O)){X=!0,O++;break}}for(const v of $)_.has(v)||_.set(v,new Set),_.get(v).add(O);y.commits.forEach(v=>{m.set(v,{mainCol:g,subOffset:O,isSubBranch:!0})})})});const w=new Map;let E=f;for(let p=0;p<=h.length;p++)if(w.set(p,E),p<h.length){let g=0;B.forEach(_=>{const y=m.get(_.hash);y.mainCol===p&&y.subOffset>g&&(g=y.subOffset)}),E+=a+g*c}const M=new Map;B.forEach((p,g)=>{const _=m.get(p.hash),$=w.get(_.mainCol)+_.subOffset*c;M.set(p.hash,{col:_.mainCol,subOffset:_.subOffset,row:g,x:$,y:u+g*s,isSubBranch:_.isSubBranch})});const H=Array.from(m.values()).some(p=>p.mainCol===h.length),A=t.append("g").attr("class","main-group"),Y=n.append("div").attr("class","tooltip").style("opacity",0);h.forEach((p,g)=>{A.append("text").attr("x",w.get(g)).attr("y",25).attr("fill","#4fc3f7").attr("font-size","14px").attr("font-weight","bold").text(p.name)}),H&&A.append("text").attr("x",w.get(h.length)).attr("y",25).attr("fill","#888").attr("font-size","14px").text("Other"),B.forEach(p=>{const g=M.get(p.hash);g&&p.parents.forEach(_=>{const y=M.get(_);if(y){const $=g.x,O=g.y,X=y.x,v=y.y;let P;if($===X)P=`M ${$} ${O} L ${X} ${v}`;else{const at=(O+v)/2;P=`M ${$} ${O} C ${$} ${at}, ${X} ${at}, ${X} ${v}`}A.append("path").attr("d",P).attr("fill","none").attr("stroke",g.isSubBranch||y.isSubBranch?"#555":"#666").attr("stroke-width",g.isSubBranch&&y.isSubBranch?1:1.5).attr("stroke-opacity",.6)}})}),A.selectAll("g.node").data(B).enter().append("g").attr("class","node").attr("transform",p=>{const g=M.get(p.hash);return g?`translate(${g.x}, ${g.y})`:"translate(-100, -100)"}).append("circle").attr("r",p=>{const g=M.get(p.hash);return g.isSubBranch?o*.6:g.col<h.length?o:o*.7}).attr("fill",p=>{const g=M.get(p.hash);return g.isSubBranch?"#a0a0a0":g.col<h.length?d.has(p.hash)?"#4fc3f7":"#fff":"#888"}).attr("stroke","#333").attr("stroke-width",p=>{const g=M.get(p.hash);return g.isSubBranch?1:g.col<h.length?2:1}).style("cursor","pointer").on("mouseenter",(p,g)=>{const _=d.get(g.hash),y=_?`[${_.join(", ")}]<br/>`:"",$=new Date(g.timestamp*1e3).toLocaleString();Y.html(`<strong>${g.hash.substring(0,7)}</strong><br/>${y}${g.message}<br/><span class="date">${$}</span>`).style("left",p.pageX+15+"px").style("top",p.pageY-10+"px").style("opacity",1)}).on("mousemove",p=>{Y.style("left",p.pageX+15+"px").style("top",p.pageY-10+"px")}).on("mouseleave",()=>{Y.style("opacity",0)});let q=0,V=0,st=!1,Dt=0,Yt=0,qt=0,Vt=0;function St(){A.attr("transform",`translate(${q}, ${V})`)}t.on("wheel",p=>{p.preventDefault(),q-=p.deltaX,V-=p.deltaY,St()}),t.on("mousedown",p=>{p.button===0&&(st=!0,Dt=p.clientX,Yt=p.clientY,qt=q,Vt=V,p.preventDefault())}),t.on("mousemove",p=>{st&&(q=qt+(p.clientX-Dt),V=Vt+(p.clientY-Yt),St())}),t.on("mouseup",p=>{p.button===0&&(st=!1)}),t.on("mouseleave",()=>{st=!1});let zt=0,Ut=0,Gt=0,Kt=0;t.on("touchstart",p=>{if(p.touches.length===1){const g=p.touches[0];zt=g.clientX,Ut=g.clientY,Gt=q,Kt=V}}),t.on("touchmove",p=>{if(p.touches.length===1){p.preventDefault();const g=p.touches[0];q=Gt+(g.clientX-zt),V=Kt+(g.clientY-Ut),St()}}),t.on("contextmenu",p=>{p.preventDefault()})}async function so(){[B,j]=await Promise.all([to(),no()]),U.clear(),B.forEach(t=>U.set(t.hash,t)),console.log("Commits:",B.length),console.log("Branches:",j.length),eo(j),Ot(),window.addEventListener("resize",()=>{Ot()})}so();
@@ -0,0 +1,3 @@
1
+ (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();var Qe={value:()=>{}};function Qt(){for(var t=0,e=arguments.length,n={},r;t<e;++t){if(!(r=arguments[t]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new bt(n)}function bt(t){this._=t}function Ze(t,e){return t.trim().split(/^|\s+/).map(function(n){var r="",i=n.indexOf(".");if(i>=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}bt.prototype=Qt.prototype={constructor:bt,on:function(t,e){var n=this._,r=Ze(t+"",n),i,o=-1,s=r.length;if(arguments.length<2){for(;++o<s;)if((i=(t=r[o]).type)&&(i=Je(n[i],t.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++o<s;)if(i=(t=r[o]).type)n[i]=re(n[i],t.name,e);else if(e==null)for(i in n)n[i]=re(n[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new bt(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var n=new Array(i),r=0,i,o;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(e,n)},apply:function(t,e,n){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(e,n)}};function Je(t,e){for(var n=0,r=t.length,i;n<r;++n)if((i=t[n]).name===e)return i.value}function re(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=Qe,t=t.slice(0,r).concat(t.slice(r+1));break}return n!=null&&t.push({name:e,value:n}),t}var Xt="http://www.w3.org/1999/xhtml";const ie={svg:"http://www.w3.org/2000/svg",xhtml:Xt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Ct(t){var e=t+="",n=e.indexOf(":");return n>=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),ie.hasOwnProperty(e)?{space:ie[e],local:t}:t}function je(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===Xt&&e.documentElement.namespaceURI===Xt?e.createElement(t):e.createElementNS(n,t)}}function tn(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function ve(t){var e=Ct(t);return(e.local?tn:je)(e)}function en(){}function Zt(t){return t==null?en:function(){return this.querySelector(t)}}function nn(t){typeof t!="function"&&(t=Zt(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=new Array(s),u,c,f=0;f<s;++f)(u=o[f])&&(c=t.call(u,u.__data__,f,o))&&("__data__"in u&&(c.__data__=u.__data__),a[f]=c);return new D(r,this._parents)}function rn(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function on(){return[]}function be(t){return t==null?on:function(){return this.querySelectorAll(t)}}function sn(t){return function(){return rn(t.apply(this,arguments))}}function an(t){typeof t=="function"?t=sn(t):t=be(t);for(var e=this._groups,n=e.length,r=[],i=[],o=0;o<n;++o)for(var s=e[o],a=s.length,u,c=0;c<a;++c)(u=s[c])&&(r.push(t.call(u,u.__data__,c,s)),i.push(u));return new D(r,i)}function Ee(t){return function(){return this.matches(t)}}function Ne(t){return function(e){return e.matches(t)}}var un=Array.prototype.find;function cn(t){return function(){return un.call(this.children,t)}}function ln(){return this.firstElementChild}function fn(t){return this.select(t==null?ln:cn(typeof t=="function"?t:Ne(t)))}var hn=Array.prototype.filter;function pn(){return Array.from(this.children)}function dn(t){return function(){return hn.call(this.children,t)}}function gn(t){return this.selectAll(t==null?pn:dn(typeof t=="function"?t:Ne(t)))}function mn(t){typeof t!="function"&&(t=Ee(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=[],u,c=0;c<s;++c)(u=o[c])&&t.call(u,u.__data__,c,o)&&a.push(u);return new D(r,this._parents)}function Ae(t){return new Array(t.length)}function yn(){return new D(this._enter||this._groups.map(Ae),this._parents)}function $t(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}$t.prototype={constructor:$t,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function _n(t){return function(){return t}}function wn(t,e,n,r,i,o){for(var s=0,a,u=e.length,c=o.length;s<c;++s)(a=e[s])?(a.__data__=o[s],r[s]=a):n[s]=new $t(t,o[s]);for(;s<u;++s)(a=e[s])&&(i[s]=a)}function xn(t,e,n,r,i,o,s){var a,u,c=new Map,f=e.length,p=o.length,d=new Array(f),m;for(a=0;a<f;++a)(u=e[a])&&(d[a]=m=s.call(u,u.__data__,a,e)+"",c.has(m)?i[a]=u:c.set(m,u));for(a=0;a<p;++a)m=s.call(t,o[a],a,o)+"",(u=c.get(m))?(r[a]=u,u.__data__=o[a],c.delete(m)):n[a]=new $t(t,o[a]);for(a=0;a<f;++a)(u=e[a])&&c.get(d[a])===u&&(i[a]=u)}function vn(t){return t.__data__}function bn(t,e){if(!arguments.length)return Array.from(this,vn);var n=e?xn:wn,r=this._parents,i=this._groups;typeof t!="function"&&(t=_n(t));for(var o=i.length,s=new Array(o),a=new Array(o),u=new Array(o),c=0;c<o;++c){var f=r[c],p=i[c],d=p.length,m=En(t.call(f,f&&f.__data__,c,r)),N=m.length,A=a[c]=new Array(N),S=s[c]=new Array(N),w=u[c]=new Array(d);n(f,p,A,S,w,m,e);for(var T=0,C=0,I,g;T<N;++T)if(I=A[T]){for(T>=C&&(C=T+1);!(g=S[C])&&++C<N;);I._next=g||null}}return s=new D(s,r),s._enter=a,s._exit=u,s}function En(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Nn(){return new D(this._exit||this._groups.map(Ae),this._parents)}function An(t,e,n){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),n==null?o.remove():n(o),r&&i?r.merge(i).order():i}function $n(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,o=r.length,s=Math.min(i,o),a=new Array(i),u=0;u<s;++u)for(var c=n[u],f=r[u],p=c.length,d=a[u]=new Array(p),m,N=0;N<p;++N)(m=c[N]||f[N])&&(d[N]=m);for(;u<i;++u)a[u]=n[u];return new D(a,this._parents)}function Mn(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r=t[e],i=r.length-1,o=r[i],s;--i>=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function kn(t){t||(t=Sn);function e(p,d){return p&&d?t(p.__data__,d.__data__):!p-!d}for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var s=n[o],a=s.length,u=i[o]=new Array(a),c,f=0;f<a;++f)(c=s[f])&&(u[f]=c);u.sort(e)}return new D(i,this._parents).order()}function Sn(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function Tn(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function zn(){return Array.from(this)}function Cn(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var s=r[i];if(s)return s}return null}function Rn(){let t=0;for(const e of this)++t;return t}function In(){return!this.node()}function Pn(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i=e[n],o=0,s=i.length,a;o<s;++o)(a=i[o])&&t.call(a,a.__data__,o,i);return this}function Dn(t){return function(){this.removeAttribute(t)}}function Fn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Hn(t,e){return function(){this.setAttribute(t,e)}}function Xn(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Ln(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function qn(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Bn(t,e){var n=Ct(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?Fn:Dn:typeof e=="function"?n.local?qn:Ln:n.local?Xn:Hn)(n,e))}function $e(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function On(t){return function(){this.style.removeProperty(t)}}function Yn(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Vn(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Gn(t,e,n){return arguments.length>1?this.each((e==null?On:typeof e=="function"?Vn:Yn)(t,e,n??"")):it(this.node(),t)}function it(t,e){return t.style.getPropertyValue(e)||$e(t).getComputedStyle(t,null).getPropertyValue(e)}function Un(t){return function(){delete this[t]}}function Kn(t,e){return function(){this[t]=e}}function Wn(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Qn(t,e){return arguments.length>1?this.each((e==null?Un:typeof e=="function"?Wn:Kn)(t,e)):this.node()[t]}function Me(t){return t.trim().split(/^|\s+/)}function Jt(t){return t.classList||new ke(t)}function ke(t){this._node=t,this._names=Me(t.getAttribute("class")||"")}ke.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Se(t,e){for(var n=Jt(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function Te(t,e){for(var n=Jt(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function Zn(t){return function(){Se(this,t)}}function Jn(t){return function(){Te(this,t)}}function jn(t,e){return function(){(e.apply(this,arguments)?Se:Te)(this,t)}}function tr(t,e){var n=Me(t+"");if(arguments.length<2){for(var r=Jt(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof e=="function"?jn:e?Zn:Jn)(n,e))}function er(){this.textContent=""}function nr(t){return function(){this.textContent=t}}function rr(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function ir(t){return arguments.length?this.each(t==null?er:(typeof t=="function"?rr:nr)(t)):this.node().textContent}function or(){this.innerHTML=""}function sr(t){return function(){this.innerHTML=t}}function ar(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function ur(t){return arguments.length?this.each(t==null?or:(typeof t=="function"?ar:sr)(t)):this.node().innerHTML}function cr(){this.nextSibling&&this.parentNode.appendChild(this)}function lr(){return this.each(cr)}function fr(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function hr(){return this.each(fr)}function pr(t){var e=typeof t=="function"?t:ve(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function dr(){return null}function gr(t,e){var n=typeof t=="function"?t:ve(t),r=e==null?dr:typeof e=="function"?e:Zt(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function mr(){var t=this.parentNode;t&&t.removeChild(this)}function yr(){return this.each(mr)}function _r(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function wr(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function xr(t){return this.select(t?wr:_r)}function vr(t){return arguments.length?this.property("__data__",t):this.node().__data__}function br(t){return function(e){t.call(this,e,this.__data__)}}function Er(t){return t.trim().split(/^|\s+/).map(function(e){var n="",r=e.indexOf(".");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function Nr(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,o;n<i;++n)o=e[n],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):e[++r]=o;++r?e.length=r:delete this.__on}}}function Ar(t,e,n){return function(){var r=this.__on,i,o=br(e);if(r){for(var s=0,a=r.length;s<a;++s)if((i=r[s]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=n),i.value=e;return}}this.addEventListener(t.type,o,n),i={type:t.type,name:t.name,value:e,listener:o,options:n},r?r.push(i):this.__on=[i]}}function $r(t,e,n){var r=Er(t+""),i,o=r.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var u=0,c=a.length,f;u<c;++u)for(i=0,f=a[u];i<o;++i)if((s=r[i]).type===f.type&&s.name===f.name)return f.value}return}for(a=e?Ar:Nr,i=0;i<o;++i)this.each(a(r[i],e,n));return this}function ze(t,e,n){var r=$e(t),i=r.CustomEvent;typeof i=="function"?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function Mr(t,e){return function(){return ze(this,t,e)}}function kr(t,e){return function(){return ze(this,t,e.apply(this,arguments))}}function Sr(t,e){return this.each((typeof e=="function"?kr:Mr)(t,e))}function*Tr(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length,s;i<o;++i)(s=r[i])&&(yield s)}var Ce=[null];function D(t,e){this._groups=t,this._parents=e}function gt(){return new D([[document.documentElement]],Ce)}function zr(){return this}D.prototype=gt.prototype={constructor:D,select:nn,selectAll:an,selectChild:fn,selectChildren:gn,filter:mn,data:bn,enter:yn,exit:Nn,join:An,merge:$n,selection:zr,order:Mn,sort:kn,call:Tn,nodes:zn,node:Cn,size:Rn,empty:In,each:Pn,attr:Bn,style:Gn,property:Qn,classed:tr,text:ir,html:ur,raise:lr,lower:hr,append:pr,insert:gr,remove:yr,clone:xr,datum:vr,on:$r,dispatch:Sr,[Symbol.iterator]:Tr};function U(t){return typeof t=="string"?new D([[document.querySelector(t)]],[document.documentElement]):new D([[t]],Ce)}function Cr(t){let e;for(;e=t.sourceEvent;)t=e;return t}function Z(t,e){if(t=Cr(t),e===void 0&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,r=r.matrixTransform(e.getScreenCTM().inverse()),[r.x,r.y]}if(e.getBoundingClientRect){var i=e.getBoundingClientRect();return[t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop]}}return[t.pageX,t.pageY]}const Lt={capture:!0,passive:!1};function qt(t){t.preventDefault(),t.stopImmediatePropagation()}function Rr(t){var e=t.document.documentElement,n=U(t).on("dragstart.drag",qt,Lt);"onselectstart"in e?n.on("selectstart.drag",qt,Lt):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function Ir(t,e){var n=t.document.documentElement,r=U(t).on("dragstart.drag",null);e&&(r.on("click.drag",qt,Lt),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}function jt(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Re(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function mt(){}var ft=.7,Mt=1/ft,nt="\\s*([+-]?\\d+)\\s*",ht="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",B="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Pr=/^#([0-9a-f]{3,8})$/,Dr=new RegExp(`^rgb\\(${nt},${nt},${nt}\\)$`),Fr=new RegExp(`^rgb\\(${B},${B},${B}\\)$`),Hr=new RegExp(`^rgba\\(${nt},${nt},${nt},${ht}\\)$`),Xr=new RegExp(`^rgba\\(${B},${B},${B},${ht}\\)$`),Lr=new RegExp(`^hsl\\(${ht},${B},${B}\\)$`),qr=new RegExp(`^hsla\\(${ht},${B},${B},${ht}\\)$`),oe={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};jt(mt,pt,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:se,formatHex:se,formatHex8:Br,formatHsl:Or,formatRgb:ae,toString:ae});function se(){return this.rgb().formatHex()}function Br(){return this.rgb().formatHex8()}function Or(){return Ie(this).formatHsl()}function ae(){return this.rgb().formatRgb()}function pt(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Pr.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?ue(e):n===3?new R(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?_t(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?_t(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Dr.exec(t))?new R(e[1],e[2],e[3],1):(e=Fr.exec(t))?new R(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Hr.exec(t))?_t(e[1],e[2],e[3],e[4]):(e=Xr.exec(t))?_t(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Lr.exec(t))?fe(e[1],e[2]/100,e[3]/100,1):(e=qr.exec(t))?fe(e[1],e[2]/100,e[3]/100,e[4]):oe.hasOwnProperty(t)?ue(oe[t]):t==="transparent"?new R(NaN,NaN,NaN,0):null}function ue(t){return new R(t>>16&255,t>>8&255,t&255,1)}function _t(t,e,n,r){return r<=0&&(t=e=n=NaN),new R(t,e,n,r)}function Yr(t){return t instanceof mt||(t=pt(t)),t?(t=t.rgb(),new R(t.r,t.g,t.b,t.opacity)):new R}function Bt(t,e,n,r){return arguments.length===1?Yr(t):new R(t,e,n,r??1)}function R(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}jt(R,Bt,Re(mt,{brighter(t){return t=t==null?Mt:Math.pow(Mt,t),new R(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?ft:Math.pow(ft,t),new R(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new R(j(this.r),j(this.g),j(this.b),kt(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:ce,formatHex:ce,formatHex8:Vr,formatRgb:le,toString:le}));function ce(){return`#${J(this.r)}${J(this.g)}${J(this.b)}`}function Vr(){return`#${J(this.r)}${J(this.g)}${J(this.b)}${J((isNaN(this.opacity)?1:this.opacity)*255)}`}function le(){const t=kt(this.opacity);return`${t===1?"rgb(":"rgba("}${j(this.r)}, ${j(this.g)}, ${j(this.b)}${t===1?")":`, ${t})`}`}function kt(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function j(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function J(t){return t=j(t),(t<16?"0":"")+t.toString(16)}function fe(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new X(t,e,n,r)}function Ie(t){if(t instanceof X)return new X(t.h,t.s,t.l,t.opacity);if(t instanceof mt||(t=pt(t)),!t)return new X;if(t instanceof X)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,u=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=u<.5?o+i:2-o-i,s*=60):a=u>0&&u<1?0:s,new X(s,a,u,t.opacity)}function Gr(t,e,n,r){return arguments.length===1?Ie(t):new X(t,e,n,r??1)}function X(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}jt(X,Gr,Re(mt,{brighter(t){return t=t==null?Mt:Math.pow(Mt,t),new X(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?ft:Math.pow(ft,t),new X(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new R(Dt(t>=240?t-240:t+120,i,r),Dt(t,i,r),Dt(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new X(he(this.h),wt(this.s),wt(this.l),kt(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=kt(this.opacity);return`${t===1?"hsl(":"hsla("}${he(this.h)}, ${wt(this.s)*100}%, ${wt(this.l)*100}%${t===1?")":`, ${t})`}`}}));function he(t){return t=(t||0)%360,t<0?t+360:t}function wt(t){return Math.max(0,Math.min(1,t||0))}function Dt(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Pe=t=>()=>t;function Ur(t,e){return function(n){return t+n*e}}function Kr(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Wr(t){return(t=+t)==1?De:function(e,n){return n-e?Kr(e,n,t):Pe(isNaN(e)?n:e)}}function De(t,e){var n=e-t;return n?Ur(t,n):Pe(isNaN(t)?e:t)}const pe=(function t(e){var n=Wr(e);function r(i,o){var s=n((i=Bt(i)).r,(o=Bt(o)).r),a=n(i.g,o.g),u=n(i.b,o.b),c=De(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=u(f),i.opacity=c(f),i+""}}return r.gamma=t,r})(1);function Q(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var Ot=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ft=new RegExp(Ot.source,"g");function Qr(t){return function(){return t}}function Zr(t){return function(e){return t(e)+""}}function Jr(t,e){var n=Ot.lastIndex=Ft.lastIndex=0,r,i,o,s=-1,a=[],u=[];for(t=t+"",e=e+"";(r=Ot.exec(t))&&(i=Ft.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,u.push({i:s,x:Q(r,i)})),n=Ft.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?u[0]?Zr(u[0].x):Qr(e):(e=u.length,function(c){for(var f=0,p;f<e;++f)a[(p=u[f]).i]=p.x(c);return a.join("")})}var de=180/Math.PI,Yt={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Fe(t,e,n,r,i,o){var s,a,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,u/=a),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*de,skewX:Math.atan(u)*de,scaleX:s,scaleY:a}}var xt;function jr(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Yt:Fe(e.a,e.b,e.c,e.d,e.e,e.f)}function ti(t){return t==null||(xt||(xt=document.createElementNS("http://www.w3.org/2000/svg","g")),xt.setAttribute("transform",t),!(t=xt.transform.baseVal.consolidate()))?Yt:(t=t.matrix,Fe(t.a,t.b,t.c,t.d,t.e,t.f))}function He(t,e,n,r){function i(c){return c.length?c.pop()+" ":""}function o(c,f,p,d,m,N){if(c!==p||f!==d){var A=m.push("translate(",null,e,null,n);N.push({i:A-4,x:Q(c,p)},{i:A-2,x:Q(f,d)})}else(p||d)&&m.push("translate("+p+e+d+n)}function s(c,f,p,d){c!==f?(c-f>180?f+=360:f-c>180&&(c+=360),d.push({i:p.push(i(p)+"rotate(",null,r)-2,x:Q(c,f)})):f&&p.push(i(p)+"rotate("+f+r)}function a(c,f,p,d){c!==f?d.push({i:p.push(i(p)+"skewX(",null,r)-2,x:Q(c,f)}):f&&p.push(i(p)+"skewX("+f+r)}function u(c,f,p,d,m,N){if(c!==p||f!==d){var A=m.push(i(m)+"scale(",null,",",null,")");N.push({i:A-4,x:Q(c,p)},{i:A-2,x:Q(f,d)})}else(p!==1||d!==1)&&m.push(i(m)+"scale("+p+","+d+")")}return function(c,f){var p=[],d=[];return c=t(c),f=t(f),o(c.translateX,c.translateY,f.translateX,f.translateY,p,d),s(c.rotate,f.rotate,p,d),a(c.skewX,f.skewX,p,d),u(c.scaleX,c.scaleY,f.scaleX,f.scaleY,p,d),c=f=null,function(m){for(var N=-1,A=d.length,S;++N<A;)p[(S=d[N]).i]=S.x(m);return p.join("")}}}var ei=He(jr,"px, ","px)","deg)"),ni=He(ti,", ",")",")"),ri=1e-12;function ge(t){return((t=Math.exp(t))+1/t)/2}function ii(t){return((t=Math.exp(t))-1/t)/2}function oi(t){return((t=Math.exp(2*t))-1)/(t+1)}const si=(function t(e,n,r){function i(o,s){var a=o[0],u=o[1],c=o[2],f=s[0],p=s[1],d=s[2],m=f-a,N=p-u,A=m*m+N*N,S,w;if(A<ri)w=Math.log(d/c)/e,S=function(M){return[a+M*m,u+M*N,c*Math.exp(e*M*w)]};else{var T=Math.sqrt(A),C=(d*d-c*c+r*A)/(2*c*n*T),I=(d*d-c*c-r*A)/(2*d*n*T),g=Math.log(Math.sqrt(C*C+1)-C),x=Math.log(Math.sqrt(I*I+1)-I);w=(x-g)/e,S=function(M){var P=M*w,et=ge(g),yt=c/(n*T)*(et*oi(e*P+g)-ii(g));return[a+yt*m,u+yt*N,c*et/ge(e*P+g)]}}return S.duration=w*1e3*e/Math.SQRT2,S}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,u=a*a;return t(s,a,u)},i})(Math.SQRT2,2,4);var ot=0,ut=0,st=0,Xe=1e3,St,ct,Tt=0,tt=0,Rt=0,dt=typeof performance=="object"&&performance.now?performance:Date,Le=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function te(){return tt||(Le(ai),tt=dt.now()+Rt)}function ai(){tt=0}function zt(){this._call=this._time=this._next=null}zt.prototype=qe.prototype={constructor:zt,restart:function(t,e,n){if(typeof t!="function")throw new TypeError("callback is not a function");n=(n==null?te():+n)+(e==null?0:+e),!this._next&&ct!==this&&(ct?ct._next=this:St=this,ct=this),this._call=t,this._time=n,Vt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Vt())}};function qe(t,e,n){var r=new zt;return r.restart(t,e,n),r}function ui(){te(),++ot;for(var t=St,e;t;)(e=tt-t._time)>=0&&t._call.call(void 0,e),t=t._next;--ot}function me(){tt=(Tt=dt.now())+Rt,ot=ut=0;try{ui()}finally{ot=0,li(),tt=0}}function ci(){var t=dt.now(),e=t-Tt;e>Xe&&(Rt-=e,Tt=t)}function li(){for(var t,e=St,n,r=1/0;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:St=n);ct=t,Vt(r)}function Vt(t){if(!ot){ut&&(ut=clearTimeout(ut));var e=t-tt;e>24?(t<1/0&&(ut=setTimeout(me,t-dt.now()-Rt)),st&&(st=clearInterval(st))):(st||(Tt=dt.now(),st=setInterval(ci,Xe)),ot=1,Le(me))}}function ye(t,e,n){var r=new zt;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var fi=Qt("start","end","cancel","interrupt"),hi=[],Be=0,_e=1,Gt=2,Et=3,we=4,Ut=5,Nt=6;function It(t,e,n,r,i,o){var s=t.__transition;if(!s)t.__transition={};else if(n in s)return;pi(t,n,{name:e,index:r,group:i,on:fi,tween:hi,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Be})}function ee(t,e){var n=L(t,e);if(n.state>Be)throw new Error("too late; already scheduled");return n}function O(t,e){var n=L(t,e);if(n.state>Et)throw new Error("too late; already running");return n}function L(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function pi(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=qe(o,0,n.time);function o(c){n.state=_e,n.timer.restart(s,n.delay,n.time),n.delay<=c&&s(c-n.delay)}function s(c){var f,p,d,m;if(n.state!==_e)return u();for(f in r)if(m=r[f],m.name===n.name){if(m.state===Et)return ye(s);m.state===we?(m.state=Nt,m.timer.stop(),m.on.call("interrupt",t,t.__data__,m.index,m.group),delete r[f]):+f<e&&(m.state=Nt,m.timer.stop(),m.on.call("cancel",t,t.__data__,m.index,m.group),delete r[f])}if(ye(function(){n.state===Et&&(n.state=we,n.timer.restart(a,n.delay,n.time),a(c))}),n.state=Gt,n.on.call("start",t,t.__data__,n.index,n.group),n.state===Gt){for(n.state=Et,i=new Array(d=n.tween.length),f=0,p=-1;f<d;++f)(m=n.tween[f].value.call(t,t.__data__,n.index,n.group))&&(i[++p]=m);i.length=p+1}}function a(c){for(var f=c<n.duration?n.ease.call(null,c/n.duration):(n.timer.restart(u),n.state=Ut,1),p=-1,d=i.length;++p<d;)i[p].call(t,f);n.state===Ut&&(n.on.call("end",t,t.__data__,n.index,n.group),u())}function u(){n.state=Nt,n.timer.stop(),delete r[e];for(var c in r)return;delete t.__transition}}function At(t,e){var n=t.__transition,r,i,o=!0,s;if(n){e=e==null?null:e+"";for(s in n){if((r=n[s]).name!==e){o=!1;continue}i=r.state>Gt&&r.state<Ut,r.state=Nt,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[s]}o&&delete t.__transition}}function di(t){return this.each(function(){At(this,t)})}function gi(t,e){var n,r;return function(){var i=O(this,t),o=i.tween;if(o!==n){r=n=o;for(var s=0,a=r.length;s<a;++s)if(r[s].name===e){r=r.slice(),r.splice(s,1);break}}i.tween=r}}function mi(t,e,n){var r,i;if(typeof n!="function")throw new Error;return function(){var o=O(this,t),s=o.tween;if(s!==r){i=(r=s).slice();for(var a={name:e,value:n},u=0,c=i.length;u<c;++u)if(i[u].name===e){i[u]=a;break}u===c&&i.push(a)}o.tween=i}}function yi(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r=L(this.node(),n).tween,i=0,o=r.length,s;i<o;++i)if((s=r[i]).name===t)return s.value;return null}return this.each((e==null?gi:mi)(n,t,e))}function ne(t,e,n){var r=t._id;return t.each(function(){var i=O(this,r);(i.value||(i.value={}))[e]=n.apply(this,arguments)}),function(i){return L(i,r).value[e]}}function Oe(t,e){var n;return(typeof e=="number"?Q:e instanceof pt?pe:(n=pt(e))?(e=n,pe):Jr)(t,e)}function _i(t){return function(){this.removeAttribute(t)}}function wi(t){return function(){this.removeAttributeNS(t.space,t.local)}}function xi(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttribute(t);return s===i?null:s===r?o:o=e(r=s,n)}}function vi(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===r?o:o=e(r=s,n)}}function bi(t,e,n){var r,i,o;return function(){var s,a=n(this),u;return a==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=a+"",s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,a)))}}function Ei(t,e,n){var r,i,o;return function(){var s,a=n(this),u;return a==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=a+"",s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,a)))}}function Ni(t,e){var n=Ct(t),r=n==="transform"?ni:Oe;return this.attrTween(t,typeof e=="function"?(n.local?Ei:bi)(n,r,ne(this,"attr."+t,e)):e==null?(n.local?wi:_i)(n):(n.local?vi:xi)(n,r,e))}function Ai(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function $i(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function Mi(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&$i(t,o)),n}return i._value=e,i}function ki(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&Ai(t,o)),n}return i._value=e,i}function Si(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;var r=Ct(t);return this.tween(n,(r.local?Mi:ki)(r,e))}function Ti(t,e){return function(){ee(this,t).delay=+e.apply(this,arguments)}}function zi(t,e){return e=+e,function(){ee(this,t).delay=e}}function Ci(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Ti:zi)(e,t)):L(this.node(),e).delay}function Ri(t,e){return function(){O(this,t).duration=+e.apply(this,arguments)}}function Ii(t,e){return e=+e,function(){O(this,t).duration=e}}function Pi(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Ri:Ii)(e,t)):L(this.node(),e).duration}function Di(t,e){if(typeof e!="function")throw new Error;return function(){O(this,t).ease=e}}function Fi(t){var e=this._id;return arguments.length?this.each(Di(e,t)):L(this.node(),e).ease}function Hi(t,e){return function(){var n=e.apply(this,arguments);if(typeof n!="function")throw new Error;O(this,t).ease=n}}function Xi(t){if(typeof t!="function")throw new Error;return this.each(Hi(this._id,t))}function Li(t){typeof t!="function"&&(t=Ee(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=[],u,c=0;c<s;++c)(u=o[c])&&t.call(u,u.__data__,c,o)&&a.push(u);return new W(r,this._parents,this._name,this._id)}function qi(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),s=new Array(r),a=0;a<o;++a)for(var u=e[a],c=n[a],f=u.length,p=s[a]=new Array(f),d,m=0;m<f;++m)(d=u[m]||c[m])&&(p[m]=d);for(;a<r;++a)s[a]=e[a];return new W(s,this._parents,this._name,this._id)}function Bi(t){return(t+"").trim().split(/^|\s+/).every(function(e){var n=e.indexOf(".");return n>=0&&(e=e.slice(0,n)),!e||e==="start"})}function Oi(t,e,n){var r,i,o=Bi(e)?ee:O;return function(){var s=o(this,t),a=s.on;a!==r&&(i=(r=a).copy()).on(e,n),s.on=i}}function Yi(t,e){var n=this._id;return arguments.length<2?L(this.node(),n).on.on(t):this.each(Oi(n,t,e))}function Vi(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function Gi(){return this.on("end.remove",Vi(this._id))}function Ui(t){var e=this._name,n=this._id;typeof t!="function"&&(t=Zt(t));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s<i;++s)for(var a=r[s],u=a.length,c=o[s]=new Array(u),f,p,d=0;d<u;++d)(f=a[d])&&(p=t.call(f,f.__data__,d,a))&&("__data__"in f&&(p.__data__=f.__data__),c[d]=p,It(c[d],e,n,d,c,L(f,n)));return new W(o,this._parents,e,n)}function Ki(t){var e=this._name,n=this._id;typeof t!="function"&&(t=be(t));for(var r=this._groups,i=r.length,o=[],s=[],a=0;a<i;++a)for(var u=r[a],c=u.length,f,p=0;p<c;++p)if(f=u[p]){for(var d=t.call(f,f.__data__,p,u),m,N=L(f,n),A=0,S=d.length;A<S;++A)(m=d[A])&&It(m,e,n,A,d,N);o.push(d),s.push(f)}return new W(o,s,e,n)}var Wi=gt.prototype.constructor;function Qi(){return new Wi(this._groups,this._parents)}function Zi(t,e){var n,r,i;return function(){var o=it(this,t),s=(this.style.removeProperty(t),it(this,t));return o===s?null:o===n&&s===r?i:i=e(n=o,r=s)}}function Ye(t){return function(){this.style.removeProperty(t)}}function Ji(t,e,n){var r,i=n+"",o;return function(){var s=it(this,t);return s===i?null:s===r?o:o=e(r=s,n)}}function ji(t,e,n){var r,i,o;return function(){var s=it(this,t),a=n(this),u=a+"";return a==null&&(u=a=(this.style.removeProperty(t),it(this,t))),s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,a))}}function to(t,e){var n,r,i,o="style."+e,s="end."+o,a;return function(){var u=O(this,t),c=u.on,f=u.value[o]==null?a||(a=Ye(e)):void 0;(c!==n||i!==f)&&(r=(n=c).copy()).on(s,i=f),u.on=r}}function eo(t,e,n){var r=(t+="")=="transform"?ei:Oe;return e==null?this.styleTween(t,Zi(t,r)).on("end.style."+t,Ye(t)):typeof e=="function"?this.styleTween(t,ji(t,r,ne(this,"style."+t,e))).each(to(this._id,t)):this.styleTween(t,Ji(t,r,e),n).on("end.style."+t,null)}function no(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function ro(t,e,n){var r,i;function o(){var s=e.apply(this,arguments);return s!==i&&(r=(i=s)&&no(t,s,n)),r}return o._value=e,o}function io(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;return this.tween(r,ro(t,e,n??""))}function oo(t){return function(){this.textContent=t}}function so(t){return function(){var e=t(this);this.textContent=e??""}}function ao(t){return this.tween("text",typeof t=="function"?so(ne(this,"text",t)):oo(t==null?"":t+""))}function uo(t){return function(e){this.textContent=t.call(this,e)}}function co(t){var e,n;function r(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&uo(i)),e}return r._value=t,r}function lo(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,co(t))}function fo(){for(var t=this._name,e=this._id,n=Ve(),r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,u,c=0;c<a;++c)if(u=s[c]){var f=L(u,e);It(u,t,n,c,s,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}return new W(r,this._parents,t,n)}function ho(){var t,e,n=this,r=n._id,i=n.size();return new Promise(function(o,s){var a={value:s},u={value:function(){--i===0&&o()}};n.each(function(){var c=O(this,r),f=c.on;f!==t&&(e=(t=f).copy(),e._.cancel.push(a),e._.interrupt.push(a),e._.end.push(u)),c.on=e}),i===0&&o()})}var po=0;function W(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function Ve(){return++po}var G=gt.prototype;W.prototype={constructor:W,select:Ui,selectAll:Ki,selectChild:G.selectChild,selectChildren:G.selectChildren,filter:Li,merge:qi,selection:Qi,transition:fo,call:G.call,nodes:G.nodes,node:G.node,size:G.size,empty:G.empty,each:G.each,on:Yi,attr:Ni,attrTween:Si,style:eo,styleTween:io,text:ao,textTween:lo,remove:Gi,tween:yi,delay:Ci,duration:Pi,ease:Fi,easeVarying:Xi,end:ho,[Symbol.iterator]:G[Symbol.iterator]};function go(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var mo={time:null,delay:0,duration:250,ease:go};function yo(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function _o(t){var e,n;t instanceof W?(e=t._id,t=t._name):(e=Ve(),(n=mo).time=te(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,u,c=0;c<a;++c)(u=s[c])&&It(u,t,e,c,s,n||yo(u,e));return new W(r,this._parents,t,e)}gt.prototype.interrupt=di;gt.prototype.transition=_o;const vt=t=>()=>t;function wo(t,{sourceEvent:e,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function K(t,e,n){this.k=t,this.x=e,this.y=n}K.prototype={constructor:K,scale:function(t){return t===1?this:new K(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new K(this.k,this.x+this.k*t,this.y+this.k*e)},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 Ge=new K(1,0,0);K.prototype;function Ht(t){t.stopImmediatePropagation()}function at(t){t.preventDefault(),t.stopImmediatePropagation()}function xo(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function vo(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.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 xe(){return this.__zoom||Ge}function bo(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Eo(){return navigator.maxTouchPoints||"ontouchstart"in this}function No(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],o=t.invertY(e[0][1])-n[0][1],s=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function Ao(){var t=xo,e=vo,n=No,r=bo,i=Eo,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,u=si,c=Qt("start","zoom","end"),f,p,d,m=500,N=150,A=0,S=10;function w(l){l.property("__zoom",xe).on("wheel.zoom",P,{passive:!1}).on("mousedown.zoom",et).on("dblclick.zoom",yt).filter(i).on("touchstart.zoom",Ue).on("touchmove.zoom",Ke).on("touchend.zoom touchcancel.zoom",We).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}w.transform=function(l,y,h,_){var v=l.selection?l.selection():l;v.property("__zoom",xe),l!==v?g(l,y,h,_):v.interrupt().each(function(){x(this,arguments).event(_).start().zoom(null,typeof y=="function"?y.apply(this,arguments):y).end()})},w.scaleBy=function(l,y,h,_){w.scaleTo(l,function(){var v=this.__zoom.k,b=typeof y=="function"?y.apply(this,arguments):y;return v*b},h,_)},w.scaleTo=function(l,y,h,_){w.transform(l,function(){var v=e.apply(this,arguments),b=this.__zoom,E=h==null?I(v):typeof h=="function"?h.apply(this,arguments):h,$=b.invert(E),k=typeof y=="function"?y.apply(this,arguments):y;return n(C(T(b,k),E,$),v,s)},h,_)},w.translateBy=function(l,y,h,_){w.transform(l,function(){return n(this.__zoom.translate(typeof y=="function"?y.apply(this,arguments):y,typeof h=="function"?h.apply(this,arguments):h),e.apply(this,arguments),s)},null,_)},w.translateTo=function(l,y,h,_,v){w.transform(l,function(){var b=e.apply(this,arguments),E=this.__zoom,$=_==null?I(b):typeof _=="function"?_.apply(this,arguments):_;return n(Ge.translate($[0],$[1]).scale(E.k).translate(typeof y=="function"?-y.apply(this,arguments):-y,typeof h=="function"?-h.apply(this,arguments):-h),b,s)},_,v)};function T(l,y){return y=Math.max(o[0],Math.min(o[1],y)),y===l.k?l:new K(y,l.x,l.y)}function C(l,y,h){var _=y[0]-h[0]*l.k,v=y[1]-h[1]*l.k;return _===l.x&&v===l.y?l:new K(l.k,_,v)}function I(l){return[(+l[0][0]+ +l[1][0])/2,(+l[0][1]+ +l[1][1])/2]}function g(l,y,h,_){l.on("start.zoom",function(){x(this,arguments).event(_).start()}).on("interrupt.zoom end.zoom",function(){x(this,arguments).event(_).end()}).tween("zoom",function(){var v=this,b=arguments,E=x(v,b).event(_),$=e.apply(v,b),k=h==null?I($):typeof h=="function"?h.apply(v,b):h,q=Math.max($[1][0]-$[0][0],$[1][1]-$[0][1]),z=v.__zoom,F=typeof y=="function"?y.apply(v,b):y,Y=u(z.invert(k).concat(q/z.k),F.invert(k).concat(q/F.k));return function(H){if(H===1)H=F;else{var V=Y(H),Pt=q/V[2];H=new K(Pt,k[0]-V[0]*Pt,k[1]-V[1]*Pt)}E.zoom(null,H)}})}function x(l,y,h){return!h&&l.__zooming||new M(l,y)}function M(l,y){this.that=l,this.args=y,this.active=0,this.sourceEvent=null,this.extent=e.apply(l,y),this.taps=0}M.prototype={event:function(l){return l&&(this.sourceEvent=l),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(l,y){return this.mouse&&l!=="mouse"&&(this.mouse[1]=y.invert(this.mouse[0])),this.touch0&&l!=="touch"&&(this.touch0[1]=y.invert(this.touch0[0])),this.touch1&&l!=="touch"&&(this.touch1[1]=y.invert(this.touch1[0])),this.that.__zoom=y,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(l){var y=U(this.that).datum();c.call(l,this.that,new wo(l,{sourceEvent:this.sourceEvent,target:w,transform:this.that.__zoom,dispatch:c}),y)}};function P(l,...y){if(!t.apply(this,arguments))return;var h=x(this,y).event(l),_=this.__zoom,v=Math.max(o[0],Math.min(o[1],_.k*Math.pow(2,r.apply(this,arguments)))),b=Z(l);if(h.wheel)(h.mouse[0][0]!==b[0]||h.mouse[0][1]!==b[1])&&(h.mouse[1]=_.invert(h.mouse[0]=b)),clearTimeout(h.wheel);else{if(_.k===v)return;h.mouse=[b,_.invert(b)],At(this),h.start()}at(l),h.wheel=setTimeout(E,N),h.zoom("mouse",n(C(T(_,v),h.mouse[0],h.mouse[1]),h.extent,s));function E(){h.wheel=null,h.end()}}function et(l,...y){if(d||!t.apply(this,arguments))return;var h=l.currentTarget,_=x(this,y,!0).event(l),v=U(l.view).on("mousemove.zoom",k,!0).on("mouseup.zoom",q,!0),b=Z(l,h),E=l.clientX,$=l.clientY;Rr(l.view),Ht(l),_.mouse=[b,this.__zoom.invert(b)],At(this),_.start();function k(z){if(at(z),!_.moved){var F=z.clientX-E,Y=z.clientY-$;_.moved=F*F+Y*Y>A}_.event(z).zoom("mouse",n(C(_.that.__zoom,_.mouse[0]=Z(z,h),_.mouse[1]),_.extent,s))}function q(z){v.on("mousemove.zoom mouseup.zoom",null),Ir(z.view,_.moved),at(z),_.event(z).end()}}function yt(l,...y){if(t.apply(this,arguments)){var h=this.__zoom,_=Z(l.changedTouches?l.changedTouches[0]:l,this),v=h.invert(_),b=h.k*(l.shiftKey?.5:2),E=n(C(T(h,b),_,v),e.apply(this,y),s);at(l),a>0?U(this).transition().duration(a).call(g,E,_,l):U(this).call(w.transform,E,_,l)}}function Ue(l,...y){if(t.apply(this,arguments)){var h=l.touches,_=h.length,v=x(this,y,l.changedTouches.length===_).event(l),b,E,$,k;for(Ht(l),E=0;E<_;++E)$=h[E],k=Z($,this),k=[k,this.__zoom.invert(k),$.identifier],v.touch0?!v.touch1&&v.touch0[2]!==k[2]&&(v.touch1=k,v.taps=0):(v.touch0=k,b=!0,v.taps=1+!!f);f&&(f=clearTimeout(f)),b&&(v.taps<2&&(p=k[0],f=setTimeout(function(){f=null},m)),At(this),v.start())}}function Ke(l,...y){if(this.__zooming){var h=x(this,y).event(l),_=l.changedTouches,v=_.length,b,E,$,k;for(at(l),b=0;b<v;++b)E=_[b],$=Z(E,this),h.touch0&&h.touch0[2]===E.identifier?h.touch0[0]=$:h.touch1&&h.touch1[2]===E.identifier&&(h.touch1[0]=$);if(E=h.that.__zoom,h.touch1){var q=h.touch0[0],z=h.touch0[1],F=h.touch1[0],Y=h.touch1[1],H=(H=F[0]-q[0])*H+(H=F[1]-q[1])*H,V=(V=Y[0]-z[0])*V+(V=Y[1]-z[1])*V;E=T(E,Math.sqrt(H/V)),$=[(q[0]+F[0])/2,(q[1]+F[1])/2],k=[(z[0]+Y[0])/2,(z[1]+Y[1])/2]}else if(h.touch0)$=h.touch0[0],k=h.touch0[1];else return;h.zoom("touch",n(C(E,$,k),h.extent,s))}}function We(l,...y){if(this.__zooming){var h=x(this,y).event(l),_=l.changedTouches,v=_.length,b,E;for(Ht(l),d&&clearTimeout(d),d=setTimeout(function(){d=null},m),b=0;b<v;++b)E=_[b],h.touch0&&h.touch0[2]===E.identifier?delete h.touch0:h.touch1&&h.touch1[2]===E.identifier&&delete h.touch1;if(h.touch1&&!h.touch0&&(h.touch0=h.touch1,delete h.touch1),h.touch0)h.touch0[1]=this.__zoom.invert(h.touch0[0]);else if(h.end(),h.taps===2&&(E=Z(E,this),Math.hypot(p[0]-E[0],p[1]-E[1])<S)){var $=U(this).on("dblclick.zoom");$&&$.apply(this,arguments)}}}return w.wheelDelta=function(l){return arguments.length?(r=typeof l=="function"?l:vt(+l),w):r},w.filter=function(l){return arguments.length?(t=typeof l=="function"?l:vt(!!l),w):t},w.touchable=function(l){return arguments.length?(i=typeof l=="function"?l:vt(!!l),w):i},w.extent=function(l){return arguments.length?(e=typeof l=="function"?l:vt([[+l[0][0],+l[0][1]],[+l[1][0],+l[1][1]]]),w):e},w.scaleExtent=function(l){return arguments.length?(o[0]=+l[0],o[1]=+l[1],w):[o[0],o[1]]},w.translateExtent=function(l){return arguments.length?(s[0][0]=+l[0][0],s[1][0]=+l[1][0],s[0][1]=+l[0][1],s[1][1]=+l[1][1],w):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},w.constrain=function(l){return arguments.length?(n=l,w):n},w.duration=function(l){return arguments.length?(a=+l,w):a},w.interpolate=function(l){return arguments.length?(u=l,w):u},w.on=function(){var l=c.on.apply(c,arguments);return l===c?w:l},w.clickDistance=function(l){return arguments.length?(A=(l=+l)*l,w):Math.sqrt(A)},w.tapDistance=function(l){return arguments.length?(S=+l,w):S},w}let rt=[],lt=[],Kt=new Map;async function $o(){const t=await window.gitopo.git.exec('log --all --format="%H|%P|%ct|%s" --date-order -1000');if(!t.success)return console.error("Failed to fetch commits:",t.error),[];const e=[],n=t.output.trim().split(`
2
+ `);for(const r of n){const i=r.split("|");if(i.length>=4){const o=i[0],s=i[1],a=parseInt(i[2],10),u=i.slice(3).join("|"),c=s.trim()?s.trim().split(" "):[];e.push({hash:o,parents:c,timestamp:a,message:u})}}return e.sort((r,i)=>i.timestamp-r.timestamp),e}async function Mo(){const t=await window.gitopo.git.exec('branch -a --format="%(refname:short) %(objectname)"');if(!t.success)return console.error("Failed to fetch branches:",t.error),[];const e=[],n=t.output.trim().split(`
3
+ `);for(const r of n){const i=r.trim().split(" ");if(i.length>=2){const o=i[0],s=i[1];e.push({name:o,hash:s})}}return e}function ko(t){const e=["branch1","branch2","branch3"],n=t.find(r=>r.name==="main"||r.name==="master");e.forEach((r,i)=>{const o=document.getElementById(r);o.innerHTML="";const s=document.createElement("option");s.value="",s.textContent="----",o.appendChild(s),t.forEach(a=>{const u=document.createElement("option");u.value=a.name,u.textContent=a.name,o.appendChild(u)}),i===0&&n&&(o.value=n.name),o.addEventListener("change",()=>Wt())})}function So(t){const e=lt.find(i=>i.name===t);if(!e)return new Set;const n=new Set;let r=e.hash;for(;r;){n.add(r);const i=Kt.get(r);if(i&&i.parents.length>0)r=i.parents[0];else break}return n}function To(){const t=[];return["branch1","branch2","branch3"].forEach(e=>{const n=document.getElementById(e);n&&n.value&&t.push(n.value)}),t}function Wt(){const t=U("#graph");t.selectAll("*").remove();const e=U("#app");e.selectAll(".tooltip").remove();const n=document.getElementById("controls").offsetHeight,r=window.innerWidth,i=window.innerHeight-n;t.attr("width",r).attr("height",i);const o=6,s=30,a=150,u=50,c=50,p=To().map(g=>({name:g,lineage:So(g)})),d=new Map;lt.forEach(g=>{d.has(g.hash)||d.set(g.hash,[]),d.get(g.hash).push(g.name)});const m=new Map,N=new Map;p.forEach((g,x)=>{N.set(x,[])}),N.set(p.length,[]),rt.forEach(g=>{let x=-1;for(let M=0;M<p.length;M++)if(p[M].lineage.has(g.hash)){x=M;break}x===-1&&(x=p.length),m.set(g.hash,x),N.get(x).push(g)}),N.forEach(g=>{g.sort((x,M)=>M.timestamp-x.timestamp)});const A=new Map;N.forEach((g,x)=>{g.forEach((M,P)=>{A.set(M.hash,{col:x,row:P,x:c+x*a,y:u+P*s})})});let S=0;N.forEach(g=>{S=Math.max(S,g.length)});const w=t.append("g").attr("class","main-group"),T=e.append("div").attr("class","tooltip").style("opacity",0);p.forEach((g,x)=>{w.append("text").attr("x",c+x*a).attr("y",25).attr("fill","#4fc3f7").attr("font-size","14px").attr("font-weight","bold").text(g.name)}),N.get(p.length).length>0&&w.append("text").attr("x",c+p.length*a).attr("y",25).attr("fill","#888").attr("font-size","14px").text("Other"),rt.forEach(g=>{const x=A.get(g.hash);x&&g.parents.forEach(M=>{const P=A.get(M);P&&w.append("line").attr("x1",x.x).attr("y1",x.y).attr("x2",P.x).attr("y2",P.y).attr("stroke","#666").attr("stroke-width",1.5).attr("stroke-opacity",.6)})}),w.selectAll("g.node").data(rt).enter().append("g").attr("class","node").attr("transform",g=>{const x=A.get(g.hash);return x?`translate(${x.x}, ${x.y})`:"translate(-100, -100)"}).append("circle").attr("r",g=>m.get(g.hash)<p.length?o:o*.7).attr("fill",g=>m.get(g.hash)<p.length?d.has(g.hash)?"#4fc3f7":"#fff":"#888").attr("stroke","#333").attr("stroke-width",g=>m.get(g.hash)<p.length?2:1).style("cursor","pointer").on("mouseenter",(g,x)=>{const M=d.get(x.hash),P=M?`[${M.join(", ")}]<br/>`:"",et=new Date(x.timestamp*1e3).toLocaleString();T.html(`<strong>${x.hash.substring(0,7)}</strong><br/>${P}${x.message}<br/><span class="date">${et}</span>`).style("left",g.pageX+15+"px").style("top",g.pageY-10+"px").style("opacity",1)}).on("mousemove",g=>{T.style("left",g.pageX+15+"px").style("top",g.pageY-10+"px")}).on("mouseleave",()=>{T.style("opacity",0)});const I=Ao().scaleExtent([.1,3]).on("zoom",g=>{w.attr("transform",g.transform)});I.filter(g=>g.type==="wheel"||g.touches||g.type==="mousedown"&&g.button===2||g.type==="mousemove"&&g.buttons===2?!0:!(g.type==="mousedown"&&g.button===0)),t.call(I),t.on("contextmenu",g=>{g.preventDefault()})}async function zo(){[rt,lt]=await Promise.all([$o(),Mo()]),Kt.clear(),rt.forEach(t=>Kt.set(t.hash,t)),console.log("Commits:",rt.length),console.log("Branches:",lt.length),ko(lt),Wt(),window.addEventListener("resize",()=>{Wt()})}zo();
@@ -0,0 +1,3 @@
1
+ (function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function e(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=e(i);fetch(i.href,s)}})();var zn={value:()=>{}};function _n(){for(var t=0,n=arguments.length,e={},r;t<n;++t){if(!(r=arguments[t]+"")||r in e||/[\s.]/.test(r))throw new Error("illegal type: "+r);e[r]=[]}return new pt(e)}function pt(t){this._=t}function Un(t,n){return t.trim().split(/^|\s+/).map(function(e){var r="",i=e.indexOf(".");if(i>=0&&(r=e.slice(i+1),e=e.slice(0,i)),e&&!n.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:r}})}pt.prototype=_n.prototype={constructor:pt,on:function(t,n){var e=this._,r=Un(t+"",e),i,s=-1,o=r.length;if(arguments.length<2){for(;++s<o;)if((i=(t=r[s]).type)&&(i=Gn(e[i],t.name)))return i;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++s<o;)if(i=(t=r[s]).type)e[i]=jt(e[i],t.name,n);else if(n==null)for(i in e)e[i]=jt(e[i],t.name,null);return this},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new pt(t)},call:function(t,n){if((i=arguments.length-2)>0)for(var e=new Array(i),r=0,i,s;r<i;++r)e[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(s=this._[t],r=0,i=s.length;r<i;++r)s[r].value.apply(n,e)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,s=r.length;i<s;++i)r[i].value.apply(n,e)}};function Gn(t,n){for(var e=0,r=t.length,i;e<r;++e)if((i=t[e]).name===n)return i.value}function jt(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=zn,t=t.slice(0,r).concat(t.slice(r+1));break}return e!=null&&t.push({name:n,value:e}),t}var Bt="http://www.w3.org/1999/xhtml";const tn={svg:"http://www.w3.org/2000/svg",xhtml:Bt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function bt(t){var n=t+="",e=n.indexOf(":");return e>=0&&(n=t.slice(0,e))!=="xmlns"&&(t=t.slice(e+1)),tn.hasOwnProperty(n)?{space:tn[n],local:t}:t}function Kn(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===Bt&&n.documentElement.namespaceURI===Bt?n.createElement(t):n.createElementNS(e,t)}}function Wn(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function wn(t){var n=bt(t);return(n.local?Wn:Kn)(n)}function Jn(){}function Lt(t){return t==null?Jn:function(){return this.querySelector(t)}}function Qn(t){typeof t!="function"&&(t=Lt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var s=n[i],o=s.length,a=r[i]=new Array(o),c,u,f=0;f<o;++f)(c=s[f])&&(u=t.call(c,c.__data__,f,s))&&("__data__"in c&&(u.__data__=c.__data__),a[f]=u);return new S(r,this._parents)}function Zn(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function jn(){return[]}function yn(t){return t==null?jn:function(){return this.querySelectorAll(t)}}function te(t){return function(){return Zn(t.apply(this,arguments))}}function ne(t){typeof t=="function"?t=te(t):t=yn(t);for(var n=this._groups,e=n.length,r=[],i=[],s=0;s<e;++s)for(var o=n[s],a=o.length,c,u=0;u<a;++u)(c=o[u])&&(r.push(t.call(c,c.__data__,u,o)),i.push(c));return new S(r,i)}function xn(t){return function(){return this.matches(t)}}function vn(t){return function(n){return n.matches(t)}}var ee=Array.prototype.find;function re(t){return function(){return ee.call(this.children,t)}}function ie(){return this.firstElementChild}function se(t){return this.select(t==null?ie:re(typeof t=="function"?t:vn(t)))}var oe=Array.prototype.filter;function ae(){return Array.from(this.children)}function ce(t){return function(){return oe.call(this.children,t)}}function ue(t){return this.selectAll(t==null?ae:ce(typeof t=="function"?t:vn(t)))}function fe(t){typeof t!="function"&&(t=xn(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var s=n[i],o=s.length,a=r[i]=[],c,u=0;u<o;++u)(c=s[u])&&t.call(c,c.__data__,u,s)&&a.push(c);return new S(r,this._parents)}function bn(t){return new Array(t.length)}function le(){return new S(this._enter||this._groups.map(bn),this._parents)}function mt(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}mt.prototype={constructor:mt,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)}};function he(t){return function(){return t}}function pe(t,n,e,r,i,s){for(var o=0,a,c=n.length,u=s.length;o<u;++o)(a=n[o])?(a.__data__=s[o],r[o]=a):e[o]=new mt(t,s[o]);for(;o<c;++o)(a=n[o])&&(i[o]=a)}function de(t,n,e,r,i,s,o){var a,c,u=new Map,f=n.length,l=s.length,p=new Array(f),d;for(a=0;a<f;++a)(c=n[a])&&(p[a]=d=o.call(c,c.__data__,a,n)+"",u.has(d)?i[a]=c:u.set(d,c));for(a=0;a<l;++a)d=o.call(t,s[a],a,s)+"",(c=u.get(d))?(r[a]=c,c.__data__=s[a],u.delete(d)):e[a]=new mt(t,s[a]);for(a=0;a<f;++a)(c=n[a])&&u.get(p[a])===c&&(i[a]=c)}function ge(t){return t.__data__}function me(t,n){if(!arguments.length)return Array.from(this,ge);var e=n?de:pe,r=this._parents,i=this._groups;typeof t!="function"&&(t=he(t));for(var s=i.length,o=new Array(s),a=new Array(s),c=new Array(s),u=0;u<s;++u){var f=r[u],l=i[u],p=l.length,d=_e(t.call(f,f&&f.__data__,u,r)),m=d.length,w=a[u]=new Array(m),x=o[u]=new Array(m),Et=c[u]=new Array(p);e(f,l,w,x,Et,d,n);for(var C=0,L=0,k,ct;C<m;++C)if(k=w[C]){for(C>=L&&(L=C+1);!(ct=x[L])&&++L<m;);k._next=ct||null}}return o=new S(o,r),o._enter=a,o._exit=c,o}function _e(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function we(){return new S(this._exit||this._groups.map(bn),this._parents)}function ye(t,n,e){var r=this.enter(),i=this,s=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),n!=null&&(i=n(i),i&&(i=i.selection())),e==null?s.remove():e(s),r&&i?r.merge(i).order():i}function xe(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,s=r.length,o=Math.min(i,s),a=new Array(i),c=0;c<o;++c)for(var u=e[c],f=r[c],l=u.length,p=a[c]=new Array(l),d,m=0;m<l;++m)(d=u[m]||f[m])&&(p[m]=d);for(;c<i;++c)a[c]=e[c];return new S(a,this._parents)}function ve(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r=t[n],i=r.length-1,s=r[i],o;--i>=0;)(o=r[i])&&(s&&o.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(o,s),s=o);return this}function be(t){t||(t=$e);function n(l,p){return l&&p?t(l.__data__,p.__data__):!l-!p}for(var e=this._groups,r=e.length,i=new Array(r),s=0;s<r;++s){for(var o=e[s],a=o.length,c=i[s]=new Array(a),u,f=0;f<a;++f)(u=o[f])&&(c[f]=u);c.sort(n)}return new S(i,this._parents).order()}function $e(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function Se(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Ee(){return Array.from(this)}function Ne(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,s=r.length;i<s;++i){var o=r[i];if(o)return o}return null}function Ae(){let t=0;for(const n of this)++t;return t}function Ce(){return!this.node()}function ke(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i=n[e],s=0,o=i.length,a;s<o;++s)(a=i[s])&&t.call(a,a.__data__,s,i);return this}function Be(t){return function(){this.removeAttribute(t)}}function Me(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Te(t,n){return function(){this.setAttribute(t,n)}}function Ie(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function Oe(t,n){return function(){var e=n.apply(this,arguments);e==null?this.removeAttribute(t):this.setAttribute(t,e)}}function Re(t,n){return function(){var e=n.apply(this,arguments);e==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function Xe(t,n){var e=bt(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((n==null?e.local?Me:Be:typeof n=="function"?e.local?Re:Oe:e.local?Ie:Te)(e,n))}function $n(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function He(t){return function(){this.style.removeProperty(t)}}function Le(t,n,e){return function(){this.style.setProperty(t,n,e)}}function Fe(t,n,e){return function(){var r=n.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function Pe(t,n,e){return arguments.length>1?this.each((n==null?He:typeof n=="function"?Fe:Le)(t,n,e??"")):W(this.node(),t)}function W(t,n){return t.style.getPropertyValue(n)||$n(t).getComputedStyle(t,null).getPropertyValue(n)}function De(t){return function(){delete this[t]}}function Ye(t,n){return function(){this[t]=n}}function qe(t,n){return function(){var e=n.apply(this,arguments);e==null?delete this[t]:this[t]=e}}function Ve(t,n){return arguments.length>1?this.each((n==null?De:typeof n=="function"?qe:Ye)(t,n)):this.node()[t]}function Sn(t){return t.trim().split(/^|\s+/)}function Ft(t){return t.classList||new En(t)}function En(t){this._node=t,this._names=Sn(t.getAttribute("class")||"")}En.prototype={add:function(t){var n=this._names.indexOf(t);n<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}};function Nn(t,n){for(var e=Ft(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function An(t,n){for(var e=Ft(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function ze(t){return function(){Nn(this,t)}}function Ue(t){return function(){An(this,t)}}function Ge(t,n){return function(){(n.apply(this,arguments)?Nn:An)(this,t)}}function Ke(t,n){var e=Sn(t+"");if(arguments.length<2){for(var r=Ft(this.node()),i=-1,s=e.length;++i<s;)if(!r.contains(e[i]))return!1;return!0}return this.each((typeof n=="function"?Ge:n?ze:Ue)(e,n))}function We(){this.textContent=""}function Je(t){return function(){this.textContent=t}}function Qe(t){return function(){var n=t.apply(this,arguments);this.textContent=n??""}}function Ze(t){return arguments.length?this.each(t==null?We:(typeof t=="function"?Qe:Je)(t)):this.node().textContent}function je(){this.innerHTML=""}function tr(t){return function(){this.innerHTML=t}}function nr(t){return function(){var n=t.apply(this,arguments);this.innerHTML=n??""}}function er(t){return arguments.length?this.each(t==null?je:(typeof t=="function"?nr:tr)(t)):this.node().innerHTML}function rr(){this.nextSibling&&this.parentNode.appendChild(this)}function ir(){return this.each(rr)}function sr(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function or(){return this.each(sr)}function ar(t){var n=typeof t=="function"?t:wn(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})}function cr(){return null}function ur(t,n){var e=typeof t=="function"?t:wn(t),r=n==null?cr:typeof n=="function"?n:Lt(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})}function fr(){var t=this.parentNode;t&&t.removeChild(this)}function lr(){return this.each(fr)}function hr(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function pr(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function dr(t){return this.select(t?pr:hr)}function gr(t){return arguments.length?this.property("__data__",t):this.node().__data__}function mr(t){return function(n){t.call(this,n,this.__data__)}}function _r(t){return t.trim().split(/^|\s+/).map(function(n){var e="",r=n.indexOf(".");return r>=0&&(e=n.slice(r+1),n=n.slice(0,r)),{type:n,name:e}})}function wr(t){return function(){var n=this.__on;if(n){for(var e=0,r=-1,i=n.length,s;e<i;++e)s=n[e],(!t.type||s.type===t.type)&&s.name===t.name?this.removeEventListener(s.type,s.listener,s.options):n[++r]=s;++r?n.length=r:delete this.__on}}}function yr(t,n,e){return function(){var r=this.__on,i,s=mr(n);if(r){for(var o=0,a=r.length;o<a;++o)if((i=r[o]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=s,i.options=e),i.value=n;return}}this.addEventListener(t.type,s,e),i={type:t.type,name:t.name,value:n,listener:s,options:e},r?r.push(i):this.__on=[i]}}function xr(t,n,e){var r=_r(t+""),i,s=r.length,o;if(arguments.length<2){var a=this.node().__on;if(a){for(var c=0,u=a.length,f;c<u;++c)for(i=0,f=a[c];i<s;++i)if((o=r[i]).type===f.type&&o.name===f.name)return f.value}return}for(a=n?yr:wr,i=0;i<s;++i)this.each(a(r[i],n,e));return this}function Cn(t,n,e){var r=$n(t),i=r.CustomEvent;typeof i=="function"?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 vr(t,n){return function(){return Cn(this,t,n)}}function br(t,n){return function(){return Cn(this,t,n.apply(this,arguments))}}function $r(t,n){return this.each((typeof n=="function"?br:vr)(t,n))}function*Sr(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,s=r.length,o;i<s;++i)(o=r[i])&&(yield o)}var kn=[null];function S(t,n){this._groups=t,this._parents=n}function ot(){return new S([[document.documentElement]],kn)}function Er(){return this}S.prototype=ot.prototype={constructor:S,select:Qn,selectAll:ne,selectChild:se,selectChildren:ue,filter:fe,data:me,enter:le,exit:we,join:ye,merge:xe,selection:Er,order:ve,sort:be,call:Se,nodes:Ee,node:Ne,size:Ae,empty:Ce,each:ke,attr:Xe,style:Pe,property:Ve,classed:Ke,text:Ze,html:er,raise:ir,lower:or,append:ar,insert:ur,remove:lr,clone:dr,datum:gr,on:xr,dispatch:$r,[Symbol.iterator]:Sr};function nn(t){return typeof t=="string"?new S([[document.querySelector(t)]],[document.documentElement]):new S([[t]],kn)}function Pt(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Bn(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function at(){}var et=.7,_t=1/et,G="\\s*([+-]?\\d+)\\s*",rt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",M="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Nr=/^#([0-9a-f]{3,8})$/,Ar=new RegExp(`^rgb\\(${G},${G},${G}\\)$`),Cr=new RegExp(`^rgb\\(${M},${M},${M}\\)$`),kr=new RegExp(`^rgba\\(${G},${G},${G},${rt}\\)$`),Br=new RegExp(`^rgba\\(${M},${M},${M},${rt}\\)$`),Mr=new RegExp(`^hsl\\(${rt},${M},${M}\\)$`),Tr=new RegExp(`^hsla\\(${rt},${M},${M},${rt}\\)$`),en={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};Pt(at,it,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:rn,formatHex:rn,formatHex8:Ir,formatHsl:Or,formatRgb:sn,toString:sn});function rn(){return this.rgb().formatHex()}function Ir(){return this.rgb().formatHex8()}function Or(){return Mn(this).formatHsl()}function sn(){return this.rgb().formatRgb()}function it(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=Nr.exec(t))?(e=n[1].length,n=parseInt(n[1],16),e===6?on(n):e===3?new v(n>>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):e===8?ft(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):e===4?ft(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=Ar.exec(t))?new v(n[1],n[2],n[3],1):(n=Cr.exec(t))?new v(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=kr.exec(t))?ft(n[1],n[2],n[3],n[4]):(n=Br.exec(t))?ft(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=Mr.exec(t))?un(n[1],n[2]/100,n[3]/100,1):(n=Tr.exec(t))?un(n[1],n[2]/100,n[3]/100,n[4]):en.hasOwnProperty(t)?on(en[t]):t==="transparent"?new v(NaN,NaN,NaN,0):null}function on(t){return new v(t>>16&255,t>>8&255,t&255,1)}function ft(t,n,e,r){return r<=0&&(t=n=e=NaN),new v(t,n,e,r)}function Rr(t){return t instanceof at||(t=it(t)),t?(t=t.rgb(),new v(t.r,t.g,t.b,t.opacity)):new v}function Mt(t,n,e,r){return arguments.length===1?Rr(t):new v(t,n,e,r??1)}function v(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}Pt(v,Mt,Bn(at,{brighter(t){return t=t==null?_t:Math.pow(_t,t),new v(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?et:Math.pow(et,t),new v(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new v(q(this.r),q(this.g),q(this.b),wt(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:an,formatHex:an,formatHex8:Xr,formatRgb:cn,toString:cn}));function an(){return`#${Y(this.r)}${Y(this.g)}${Y(this.b)}`}function Xr(){return`#${Y(this.r)}${Y(this.g)}${Y(this.b)}${Y((isNaN(this.opacity)?1:this.opacity)*255)}`}function cn(){const t=wt(this.opacity);return`${t===1?"rgb(":"rgba("}${q(this.r)}, ${q(this.g)}, ${q(this.b)}${t===1?")":`, ${t})`}`}function wt(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function q(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Y(t){return t=q(t),(t<16?"0":"")+t.toString(16)}function un(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new N(t,n,e,r)}function Mn(t){if(t instanceof N)return new N(t.h,t.s,t.l,t.opacity);if(t instanceof at||(t=it(t)),!t)return new N;if(t instanceof N)return t;t=t.rgb();var n=t.r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),s=Math.max(n,e,r),o=NaN,a=s-i,c=(s+i)/2;return a?(n===s?o=(e-r)/a+(e<r)*6:e===s?o=(r-n)/a+2:o=(n-e)/a+4,a/=c<.5?s+i:2-s-i,o*=60):a=c>0&&c<1?0:o,new N(o,a,c,t.opacity)}function Hr(t,n,e,r){return arguments.length===1?Mn(t):new N(t,n,e,r??1)}function N(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}Pt(N,Hr,Bn(at,{brighter(t){return t=t==null?_t:Math.pow(_t,t),new N(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?et:Math.pow(et,t),new N(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,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 v(Ct(t>=240?t-240:t+120,i,r),Ct(t,i,r),Ct(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new N(fn(this.h),lt(this.s),lt(this.l),wt(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=wt(this.opacity);return`${t===1?"hsl(":"hsla("}${fn(this.h)}, ${lt(this.s)*100}%, ${lt(this.l)*100}%${t===1?")":`, ${t})`}`}}));function fn(t){return t=(t||0)%360,t<0?t+360:t}function lt(t){return Math.max(0,Math.min(1,t||0))}function Ct(t,n,e){return(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)*255}const Tn=t=>()=>t;function Lr(t,n){return function(e){return t+e*n}}function Fr(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)}}function Pr(t){return(t=+t)==1?In:function(n,e){return e-n?Fr(n,e,t):Tn(isNaN(n)?e:n)}}function In(t,n){var e=n-t;return e?Lr(t,e):Tn(isNaN(t)?n:t)}const ln=(function t(n){var e=Pr(n);function r(i,s){var o=e((i=Mt(i)).r,(s=Mt(s)).r),a=e(i.g,s.g),c=e(i.b,s.b),u=In(i.opacity,s.opacity);return function(f){return i.r=o(f),i.g=a(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r})(1);function H(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}var Tt=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,kt=new RegExp(Tt.source,"g");function Dr(t){return function(){return t}}function Yr(t){return function(n){return t(n)+""}}function qr(t,n){var e=Tt.lastIndex=kt.lastIndex=0,r,i,s,o=-1,a=[],c=[];for(t=t+"",n=n+"";(r=Tt.exec(t))&&(i=kt.exec(n));)(s=i.index)>e&&(s=n.slice(e,s),a[o]?a[o]+=s:a[++o]=s),(r=r[0])===(i=i[0])?a[o]?a[o]+=i:a[++o]=i:(a[++o]=null,c.push({i:o,x:H(r,i)})),e=kt.lastIndex;return e<n.length&&(s=n.slice(e),a[o]?a[o]+=s:a[++o]=s),a.length<2?c[0]?Yr(c[0].x):Dr(n):(n=c.length,function(u){for(var f=0,l;f<n;++f)a[(l=c[f]).i]=l.x(u);return a.join("")})}var hn=180/Math.PI,It={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function On(t,n,e,r,i,s){var o,a,c;return(o=Math.sqrt(t*t+n*n))&&(t/=o,n/=o),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,c/=a),t*r<n*e&&(t=-t,n=-n,c=-c,o=-o),{translateX:i,translateY:s,rotate:Math.atan2(n,t)*hn,skewX:Math.atan(c)*hn,scaleX:o,scaleY:a}}var ht;function Vr(t){const n=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?It:On(n.a,n.b,n.c,n.d,n.e,n.f)}function zr(t){return t==null||(ht||(ht=document.createElementNS("http://www.w3.org/2000/svg","g")),ht.setAttribute("transform",t),!(t=ht.transform.baseVal.consolidate()))?It:(t=t.matrix,On(t.a,t.b,t.c,t.d,t.e,t.f))}function Rn(t,n,e,r){function i(u){return u.length?u.pop()+" ":""}function s(u,f,l,p,d,m){if(u!==l||f!==p){var w=d.push("translate(",null,n,null,e);m.push({i:w-4,x:H(u,l)},{i:w-2,x:H(f,p)})}else(l||p)&&d.push("translate("+l+n+p+e)}function o(u,f,l,p){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),p.push({i:l.push(i(l)+"rotate(",null,r)-2,x:H(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(u,f,l,p){u!==f?p.push({i:l.push(i(l)+"skewX(",null,r)-2,x:H(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,p,d,m){if(u!==l||f!==p){var w=d.push(i(d)+"scale(",null,",",null,")");m.push({i:w-4,x:H(u,l)},{i:w-2,x:H(f,p)})}else(l!==1||p!==1)&&d.push(i(d)+"scale("+l+","+p+")")}return function(u,f){var l=[],p=[];return u=t(u),f=t(f),s(u.translateX,u.translateY,f.translateX,f.translateY,l,p),o(u.rotate,f.rotate,l,p),a(u.skewX,f.skewX,l,p),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,p),u=f=null,function(d){for(var m=-1,w=p.length,x;++m<w;)l[(x=p[m]).i]=x.x(d);return l.join("")}}}var Ur=Rn(Vr,"px, ","px)","deg)"),Gr=Rn(zr,", ",")",")"),J=0,Z=0,Q=0,Xn=1e3,yt,j,xt=0,V=0,$t=0,st=typeof performance=="object"&&performance.now?performance:Date,Hn=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Dt(){return V||(Hn(Kr),V=st.now()+$t)}function Kr(){V=0}function vt(){this._call=this._time=this._next=null}vt.prototype=Ln.prototype={constructor:vt,restart:function(t,n,e){if(typeof t!="function")throw new TypeError("callback is not a function");e=(e==null?Dt():+e)+(n==null?0:+n),!this._next&&j!==this&&(j?j._next=this:yt=this,j=this),this._call=t,this._time=e,Ot()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ot())}};function Ln(t,n,e){var r=new vt;return r.restart(t,n,e),r}function Wr(){Dt(),++J;for(var t=yt,n;t;)(n=V-t._time)>=0&&t._call.call(void 0,n),t=t._next;--J}function pn(){V=(xt=st.now())+$t,J=Z=0;try{Wr()}finally{J=0,Qr(),V=0}}function Jr(){var t=st.now(),n=t-xt;n>Xn&&($t-=n,xt=t)}function Qr(){for(var t,n=yt,e,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:yt=e);j=t,Ot(r)}function Ot(t){if(!J){Z&&(Z=clearTimeout(Z));var n=t-V;n>24?(t<1/0&&(Z=setTimeout(pn,t-st.now()-$t)),Q&&(Q=clearInterval(Q))):(Q||(xt=st.now(),Q=setInterval(Jr,Xn)),J=1,Hn(pn))}}function dn(t,n,e){var r=new vt;return n=n==null?0:+n,r.restart(i=>{r.stop(),t(i+n)},n,e),r}var Zr=_n("start","end","cancel","interrupt"),jr=[],Fn=0,gn=1,Rt=2,dt=3,mn=4,Xt=5,gt=6;function St(t,n,e,r,i,s){var o=t.__transition;if(!o)t.__transition={};else if(e in o)return;ti(t,e,{name:n,index:r,group:i,on:Zr,tween:jr,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:Fn})}function Yt(t,n){var e=A(t,n);if(e.state>Fn)throw new Error("too late; already scheduled");return e}function T(t,n){var e=A(t,n);if(e.state>dt)throw new Error("too late; already running");return e}function A(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function ti(t,n,e){var r=t.__transition,i;r[n]=e,e.timer=Ln(s,0,e.time);function s(u){e.state=gn,e.timer.restart(o,e.delay,e.time),e.delay<=u&&o(u-e.delay)}function o(u){var f,l,p,d;if(e.state!==gn)return c();for(f in r)if(d=r[f],d.name===e.name){if(d.state===dt)return dn(o);d.state===mn?(d.state=gt,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[f]):+f<n&&(d.state=gt,d.timer.stop(),d.on.call("cancel",t,t.__data__,d.index,d.group),delete r[f])}if(dn(function(){e.state===dt&&(e.state=mn,e.timer.restart(a,e.delay,e.time),a(u))}),e.state=Rt,e.on.call("start",t,t.__data__,e.index,e.group),e.state===Rt){for(e.state=dt,i=new Array(p=e.tween.length),f=0,l=-1;f<p;++f)(d=e.tween[f].value.call(t,t.__data__,e.index,e.group))&&(i[++l]=d);i.length=l+1}}function a(u){for(var f=u<e.duration?e.ease.call(null,u/e.duration):(e.timer.restart(c),e.state=Xt,1),l=-1,p=i.length;++l<p;)i[l].call(t,f);e.state===Xt&&(e.on.call("end",t,t.__data__,e.index,e.group),c())}function c(){e.state=gt,e.timer.stop(),delete r[n];for(var u in r)return;delete t.__transition}}function ni(t,n){var e=t.__transition,r,i,s=!0,o;if(e){n=n==null?null:n+"";for(o in e){if((r=e[o]).name!==n){s=!1;continue}i=r.state>Rt&&r.state<Xt,r.state=gt,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete e[o]}s&&delete t.__transition}}function ei(t){return this.each(function(){ni(this,t)})}function ri(t,n){var e,r;return function(){var i=T(this,t),s=i.tween;if(s!==e){r=e=s;for(var o=0,a=r.length;o<a;++o)if(r[o].name===n){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function ii(t,n,e){var r,i;if(typeof e!="function")throw new Error;return function(){var s=T(this,t),o=s.tween;if(o!==r){i=(r=o).slice();for(var a={name:n,value:e},c=0,u=i.length;c<u;++c)if(i[c].name===n){i[c]=a;break}c===u&&i.push(a)}s.tween=i}}function si(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r=A(this.node(),e).tween,i=0,s=r.length,o;i<s;++i)if((o=r[i]).name===t)return o.value;return null}return this.each((n==null?ri:ii)(e,t,n))}function qt(t,n,e){var r=t._id;return t.each(function(){var i=T(this,r);(i.value||(i.value={}))[n]=e.apply(this,arguments)}),function(i){return A(i,r).value[n]}}function Pn(t,n){var e;return(typeof n=="number"?H:n instanceof it?ln:(e=it(n))?(n=e,ln):qr)(t,n)}function oi(t){return function(){this.removeAttribute(t)}}function ai(t){return function(){this.removeAttributeNS(t.space,t.local)}}function ci(t,n,e){var r,i=e+"",s;return function(){var o=this.getAttribute(t);return o===i?null:o===r?s:s=n(r=o,e)}}function ui(t,n,e){var r,i=e+"",s;return function(){var o=this.getAttributeNS(t.space,t.local);return o===i?null:o===r?s:s=n(r=o,e)}}function fi(t,n,e){var r,i,s;return function(){var o,a=e(this),c;return a==null?void this.removeAttribute(t):(o=this.getAttribute(t),c=a+"",o===c?null:o===r&&c===i?s:(i=c,s=n(r=o,a)))}}function li(t,n,e){var r,i,s;return function(){var o,a=e(this),c;return a==null?void this.removeAttributeNS(t.space,t.local):(o=this.getAttributeNS(t.space,t.local),c=a+"",o===c?null:o===r&&c===i?s:(i=c,s=n(r=o,a)))}}function hi(t,n){var e=bt(t),r=e==="transform"?Gr:Pn;return this.attrTween(t,typeof n=="function"?(e.local?li:fi)(e,r,qt(this,"attr."+t,n)):n==null?(e.local?ai:oi)(e):(e.local?ui:ci)(e,r,n))}function pi(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function di(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function gi(t,n){var e,r;function i(){var s=n.apply(this,arguments);return s!==r&&(e=(r=s)&&di(t,s)),e}return i._value=n,i}function mi(t,n){var e,r;function i(){var s=n.apply(this,arguments);return s!==r&&(e=(r=s)&&pi(t,s)),e}return i._value=n,i}function _i(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(n==null)return this.tween(e,null);if(typeof n!="function")throw new Error;var r=bt(t);return this.tween(e,(r.local?gi:mi)(r,n))}function wi(t,n){return function(){Yt(this,t).delay=+n.apply(this,arguments)}}function yi(t,n){return n=+n,function(){Yt(this,t).delay=n}}function xi(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?wi:yi)(n,t)):A(this.node(),n).delay}function vi(t,n){return function(){T(this,t).duration=+n.apply(this,arguments)}}function bi(t,n){return n=+n,function(){T(this,t).duration=n}}function $i(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?vi:bi)(n,t)):A(this.node(),n).duration}function Si(t,n){if(typeof n!="function")throw new Error;return function(){T(this,t).ease=n}}function Ei(t){var n=this._id;return arguments.length?this.each(Si(n,t)):A(this.node(),n).ease}function Ni(t,n){return function(){var e=n.apply(this,arguments);if(typeof e!="function")throw new Error;T(this,t).ease=e}}function Ai(t){if(typeof t!="function")throw new Error;return this.each(Ni(this._id,t))}function Ci(t){typeof t!="function"&&(t=xn(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var s=n[i],o=s.length,a=r[i]=[],c,u=0;u<o;++u)(c=s[u])&&t.call(c,c.__data__,u,s)&&a.push(c);return new O(r,this._parents,this._name,this._id)}function ki(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,s=Math.min(r,i),o=new Array(r),a=0;a<s;++a)for(var c=n[a],u=e[a],f=c.length,l=o[a]=new Array(f),p,d=0;d<f;++d)(p=c[d]||u[d])&&(l[d]=p);for(;a<r;++a)o[a]=n[a];return new O(o,this._parents,this._name,this._id)}function Bi(t){return(t+"").trim().split(/^|\s+/).every(function(n){var e=n.indexOf(".");return e>=0&&(n=n.slice(0,e)),!n||n==="start"})}function Mi(t,n,e){var r,i,s=Bi(n)?Yt:T;return function(){var o=s(this,t),a=o.on;a!==r&&(i=(r=a).copy()).on(n,e),o.on=i}}function Ti(t,n){var e=this._id;return arguments.length<2?A(this.node(),e).on.on(t):this.each(Mi(e,t,n))}function Ii(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}function Oi(){return this.on("end.remove",Ii(this._id))}function Ri(t){var n=this._name,e=this._id;typeof t!="function"&&(t=Lt(t));for(var r=this._groups,i=r.length,s=new Array(i),o=0;o<i;++o)for(var a=r[o],c=a.length,u=s[o]=new Array(c),f,l,p=0;p<c;++p)(f=a[p])&&(l=t.call(f,f.__data__,p,a))&&("__data__"in f&&(l.__data__=f.__data__),u[p]=l,St(u[p],n,e,p,u,A(f,e)));return new O(s,this._parents,n,e)}function Xi(t){var n=this._name,e=this._id;typeof t!="function"&&(t=yn(t));for(var r=this._groups,i=r.length,s=[],o=[],a=0;a<i;++a)for(var c=r[a],u=c.length,f,l=0;l<u;++l)if(f=c[l]){for(var p=t.call(f,f.__data__,l,c),d,m=A(f,e),w=0,x=p.length;w<x;++w)(d=p[w])&&St(d,n,e,w,p,m);s.push(p),o.push(f)}return new O(s,o,n,e)}var Hi=ot.prototype.constructor;function Li(){return new Hi(this._groups,this._parents)}function Fi(t,n){var e,r,i;return function(){var s=W(this,t),o=(this.style.removeProperty(t),W(this,t));return s===o?null:s===e&&o===r?i:i=n(e=s,r=o)}}function Dn(t){return function(){this.style.removeProperty(t)}}function Pi(t,n,e){var r,i=e+"",s;return function(){var o=W(this,t);return o===i?null:o===r?s:s=n(r=o,e)}}function Di(t,n,e){var r,i,s;return function(){var o=W(this,t),a=e(this),c=a+"";return a==null&&(c=a=(this.style.removeProperty(t),W(this,t))),o===c?null:o===r&&c===i?s:(i=c,s=n(r=o,a))}}function Yi(t,n){var e,r,i,s="style."+n,o="end."+s,a;return function(){var c=T(this,t),u=c.on,f=c.value[s]==null?a||(a=Dn(n)):void 0;(u!==e||i!==f)&&(r=(e=u).copy()).on(o,i=f),c.on=r}}function qi(t,n,e){var r=(t+="")=="transform"?Ur:Pn;return n==null?this.styleTween(t,Fi(t,r)).on("end.style."+t,Dn(t)):typeof n=="function"?this.styleTween(t,Di(t,r,qt(this,"style."+t,n))).each(Yi(this._id,t)):this.styleTween(t,Pi(t,r,n),e).on("end.style."+t,null)}function Vi(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function zi(t,n,e){var r,i;function s(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&Vi(t,o,e)),r}return s._value=n,s}function Ui(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(n==null)return this.tween(r,null);if(typeof n!="function")throw new Error;return this.tween(r,zi(t,n,e??""))}function Gi(t){return function(){this.textContent=t}}function Ki(t){return function(){var n=t(this);this.textContent=n??""}}function Wi(t){return this.tween("text",typeof t=="function"?Ki(qt(this,"text",t)):Gi(t==null?"":t+""))}function Ji(t){return function(n){this.textContent=t.call(this,n)}}function Qi(t){var n,e;function r(){var i=t.apply(this,arguments);return i!==e&&(n=(e=i)&&Ji(i)),n}return r._value=t,r}function Zi(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,Qi(t))}function ji(){for(var t=this._name,n=this._id,e=Yn(),r=this._groups,i=r.length,s=0;s<i;++s)for(var o=r[s],a=o.length,c,u=0;u<a;++u)if(c=o[u]){var f=A(c,n);St(c,t,e,u,o,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}return new O(r,this._parents,t,e)}function ts(){var t,n,e=this,r=e._id,i=e.size();return new Promise(function(s,o){var a={value:o},c={value:function(){--i===0&&s()}};e.each(function(){var u=T(this,r),f=u.on;f!==t&&(n=(t=f).copy(),n._.cancel.push(a),n._.interrupt.push(a),n._.end.push(c)),u.on=n}),i===0&&s()})}var ns=0;function O(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Yn(){return++ns}var I=ot.prototype;O.prototype={constructor:O,select:Ri,selectAll:Xi,selectChild:I.selectChild,selectChildren:I.selectChildren,filter:Ci,merge:ki,selection:Li,transition:ji,call:I.call,nodes:I.nodes,node:I.node,size:I.size,empty:I.empty,each:I.each,on:Ti,attr:hi,attrTween:_i,style:qi,styleTween:Ui,text:Wi,textTween:Zi,remove:Oi,tween:si,delay:xi,duration:$i,ease:Ei,easeVarying:Ai,end:ts,[Symbol.iterator]:I[Symbol.iterator]};function es(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var rs={time:null,delay:0,duration:250,ease:es};function is(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 ss(t){var n,e;t instanceof O?(n=t._id,t=t._name):(n=Yn(),(e=rs).time=Dt(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,s=0;s<i;++s)for(var o=r[s],a=o.length,c,u=0;u<a;++u)(c=o[u])&&St(c,t,n,u,o,e||is(c,n));return new O(r,this._parents,t,n)}ot.prototype.interrupt=ei;ot.prototype.transition=ss;function tt(t,n,e){this.k=t,this.x=n,this.y=e}tt.prototype={constructor:tt,scale:function(t){return t===1?this:new tt(this.k*t,this.x,this.y)},translate:function(t,n){return t===0&n===0?this:new tt(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+")"}};tt.prototype;let E=[],nt=[],K=new Map;async function os(){const t=await window.gitopo.git.exec('log --all --format="%H|%P|%ct|%s" --date-order -1000');if(!t.success)return console.error("Failed to fetch commits:",t.error),[];const n=[],e=t.output.trim().split(`
2
+ `);for(const r of e){const i=r.split("|");if(i.length>=4){const s=i[0],o=i[1],a=parseInt(i[2],10),c=i.slice(3).join("|"),u=o.trim()?o.trim().split(" "):[];n.push({hash:s,parents:u,timestamp:a,message:c})}}return n.sort((r,i)=>i.timestamp-r.timestamp),n}async function as(){const t=await window.gitopo.git.exec('branch -a --format="%(refname:short) %(objectname)"');if(!t.success)return console.error("Failed to fetch branches:",t.error),[];const n=[],e=t.output.trim().split(`
3
+ `);for(const r of e){const i=r.trim().split(" ");if(i.length>=2){const s=i[0],o=i[1];n.push({name:s,hash:o})}}return n}function cs(t){const n=["branch1","branch2","branch3"],e=t.find(r=>r.name==="main"||r.name==="master");n.forEach((r,i)=>{const s=document.getElementById(r);s.innerHTML="";const o=document.createElement("option");o.value="",o.textContent="----",s.appendChild(o),t.forEach(a=>{const c=document.createElement("option");c.value=a.name,c.textContent=a.name,s.appendChild(c)}),i===0&&e&&(s.value=e.name),s.addEventListener("change",()=>Ht())})}function us(t){const n=nt.find(i=>i.name===t);if(!n)return new Set;const e=new Set;let r=n.hash;for(;r;){e.add(r);const i=K.get(r);if(i&&i.parents.length>0)r=i.parents[0];else break}return e}function fs(t,n=new Set){const e=[],r=new Set,i=new Map;for(const c of E)for(const u of c.parents)i.has(u)||i.set(u,[]),i.get(u).push(c.hash);function s(c){const u=new Set,f=[c];for(;f.length>0;){const l=f.pop();if(u.has(l)||t.has(l)||n.has(l)||r.has(l))continue;const p=K.get(l);if(!p)continue;u.add(l);for(const m of p.parents)!t.has(m)&&!n.has(m)&&!u.has(m)&&f.push(m);const d=i.get(l)||[];for(const m of d)!t.has(m)&&!n.has(m)&&!u.has(m)&&f.push(m)}return u}function o(c){for(const u of c){const f=K.get(u);if(f){for(const l of f.parents)if(!t.has(l)&&!c.has(l))return!1}}return!0}function a(c){for(const u of t){const f=K.get(u);if(!(!f||f.parents.length<2)){for(let l=1;l<f.parents.length;l++)if(c.has(f.parents[l]))return u}}return null}for(const c of E){if(t.has(c.hash)||n.has(c.hash)||r.has(c.hash))continue;const u=s(c.hash);u.size>0&&o(u)&&(u.forEach(f=>r.add(f)),e.push({mergeCommit:a(u),commits:u}))}return e}function ls(){const t=[];return["branch1","branch2","branch3"].forEach(n=>{const e=document.getElementById(n);e&&e.value&&t.push(e.value)}),t}function Ht(){const t=nn("#graph");t.selectAll("*").remove();const n=nn("#app");n.selectAll(".tooltip").remove();const e=document.getElementById("controls").offsetHeight,r=window.innerWidth,i=window.innerHeight-e;t.attr("width",r).attr("height",i);const s=6,o=30,a=150,c=30,u=50,f=50,p=ls().map(h=>({name:h,lineage:us(h)})),d=new Set;p.forEach(({lineage:h})=>{h.forEach(g=>d.add(g))});const m=p.map(({name:h,lineage:g})=>{const _=new Set;p.forEach(b=>{b.name!==h&&b.lineage.forEach(B=>_.add(B))});const y=fs(g,_);return{name:h,lineage:g,subBranches:y}}),w=new Map;nt.forEach(h=>{w.has(h.hash)||w.set(h.hash,[]),w.get(h.hash).push(h.name)});const x=new Map;E.forEach(h=>{x.set(h.hash,{mainCol:m.length,subOffset:0,isSubBranch:!1})}),m.forEach((h,g)=>{for(const _ of h.lineage)x.set(_,{mainCol:g,subOffset:0,isSubBranch:!1})});let Et=0;m.forEach((h,g)=>{const _=new Map;h.subBranches.forEach(y=>{const b=`sb-${Et++}`,B=[];y.commits.forEach($=>{const P=E.findIndex(D=>D.hash===$);P>=0&&B.push(P)});let R=1,X=!0;for(;X;){X=!1;for(const $ of B)if((_.get($)||new Set).has(R)){X=!0,R++;break}}for(const $ of B)_.has($)||_.set($,new Set),_.get($).add(R);y.commits.forEach($=>{x.set($,{mainCol:g,subOffset:R,isSubBranch:!0,subBranchId:b})})})});const C=new Map;let L=f;for(let h=0;h<=m.length;h++)if(C.set(h,L),h<m.length){let g=0;E.forEach(_=>{const y=x.get(_.hash);y.mainCol===h&&y.subOffset>g&&(g=y.subOffset)}),L+=a+g*c}const k=new Map;E.forEach((h,g)=>{const _=x.get(h.hash),b=C.get(_.mainCol)+_.subOffset*c;k.set(h.hash,{col:_.mainCol,subOffset:_.subOffset,row:g,x:b,y:u+g*o,isSubBranch:_.isSubBranch,subBranchId:_.subBranchId||null})});const ct=Array.from(x.values()).some(h=>h.mainCol===m.length),F=t.append("g").attr("class","main-group"),Nt=n.append("div").attr("class","tooltip").style("opacity",0);m.forEach((h,g)=>{F.append("text").attr("x",C.get(g)).attr("y",25).attr("fill","#4fc3f7").attr("font-size","14px").attr("font-weight","bold").text(h.name)}),ct&&F.append("text").attr("x",C.get(m.length)).attr("y",25).attr("fill","#888").attr("font-size","14px").text("Other"),E.forEach(h=>{const g=k.get(h.hash);g&&h.parents.forEach(_=>{const y=k.get(_);if(y){const b=g.col===m.length||y.col===m.length,B=g.x,R=g.y,X=y.x,$=y.y;let P;if(B===X)P=`M ${B} ${R} L ${X} ${$}`;else{const Zt=(R+$)/2;P=`M ${B} ${R} C ${B} ${Zt}, ${X} ${Zt}, ${X} ${$}`}const D=g.subBranchId||y.subBranchId||null,qn=g.isSubBranch||y.isSubBranch,Vn=F.append("path").attr("d",P).attr("fill","none").attr("stroke",b?"#444":qn?"#555":"#666").attr("stroke-width",b||g.isSubBranch&&y.isSubBranch?1:1.5).attr("stroke-opacity",b?.4:.6).attr("stroke-dasharray",b?"4,4":"none").attr("class",D?`edge edge-${D}`:"edge");D&&Vn.style("cursor","pointer").on("mouseenter",()=>{F.selectAll(`.edge-${D}`).attr("stroke","#4fc3f7").attr("stroke-width",2.5).attr("stroke-opacity",1)}).on("mouseleave",()=>{F.selectAll(`.edge-${D}`).attr("stroke","#555").attr("stroke-width",1).attr("stroke-opacity",.6)})}})}),F.selectAll("g.node").data(E).enter().append("g").attr("class","node").attr("transform",h=>{const g=k.get(h.hash);return g?`translate(${g.x}, ${g.y})`:"translate(-100, -100)"}).append("circle").attr("r",h=>{const g=k.get(h.hash);return g.isSubBranch?s*.6:g.col<m.length?s:s*.7}).attr("fill",h=>{const g=k.get(h.hash);return g.isSubBranch?"#a0a0a0":g.col<m.length?w.has(h.hash)?"#4fc3f7":"#fff":"#888"}).attr("stroke","#333").attr("stroke-width",h=>{const g=k.get(h.hash);return g.isSubBranch?1:g.col<m.length?2:1}).style("cursor","pointer").on("mouseenter",(h,g)=>{const _=w.get(g.hash),y=_?`[${_.join(", ")}]<br/>`:"",b=new Date(g.timestamp*1e3).toLocaleString();Nt.html(`<strong>${g.hash.substring(0,7)}</strong><br/>${y}${g.message}<br/><span class="date">${b}</span>`).style("left",h.pageX+15+"px").style("top",h.pageY-10+"px").style("opacity",1)}).on("mousemove",h=>{Nt.style("left",h.pageX+15+"px").style("top",h.pageY-10+"px")}).on("mouseleave",()=>{Nt.style("opacity",0)});let z=0,U=0,ut=!1,Vt=0,zt=0,Ut=0,Gt=0;function At(){F.attr("transform",`translate(${z}, ${U})`)}t.on("wheel",h=>{h.preventDefault(),z-=h.deltaX,U-=h.deltaY,At()}),t.on("mousedown",h=>{h.button===0&&(ut=!0,Vt=h.clientX,zt=h.clientY,Ut=z,Gt=U,h.preventDefault())}),t.on("mousemove",h=>{ut&&(z=Ut+(h.clientX-Vt),U=Gt+(h.clientY-zt),At())}),t.on("mouseup",h=>{h.button===0&&(ut=!1)}),t.on("mouseleave",()=>{ut=!1});let Kt=0,Wt=0,Jt=0,Qt=0;t.on("touchstart",h=>{if(h.touches.length===1){const g=h.touches[0];Kt=g.clientX,Wt=g.clientY,Jt=z,Qt=U}}),t.on("touchmove",h=>{if(h.touches.length===1){h.preventDefault();const g=h.touches[0];z=Jt+(g.clientX-Kt),U=Qt+(g.clientY-Wt),At()}}),t.on("contextmenu",h=>{h.preventDefault()})}async function hs(){[E,nt]=await Promise.all([os(),as()]),K.clear(),E.forEach(t=>K.set(t.hash,t)),console.log("Commits:",E.length),console.log("Branches:",nt.length),cs(nt),Ht(),window.addEventListener("resize",()=>{Ht()})}hs();
@@ -0,0 +1,3 @@
1
+ (function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function e(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=e(i);fetch(i.href,o)}})();var ln={value:()=>{}};function Xt(){for(var t=0,n=arguments.length,e={},r;t<n;++t){if(!(r=arguments[t]+"")||r in e||/[\s.]/.test(r))throw new Error("illegal type: "+r);e[r]=[]}return new G(e)}function G(t){this._=t}function hn(t,n){return t.trim().split(/^|\s+/).map(function(e){var r="",i=e.indexOf(".");if(i>=0&&(r=e.slice(i+1),e=e.slice(0,i)),e&&!n.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:r}})}G.prototype=Xt.prototype={constructor:G,on:function(t,n){var e=this._,r=hn(t+"",e),i,o=-1,s=r.length;if(arguments.length<2){for(;++o<s;)if((i=(t=r[o]).type)&&(i=pn(e[i],t.name)))return i;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++o<s;)if(i=(t=r[o]).type)e[i]=Nt(e[i],t.name,n);else if(n==null)for(i in e)e[i]=Nt(e[i],t.name,null);return this},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new G(t)},call:function(t,n){if((i=arguments.length-2)>0)for(var e=new Array(i),r=0,i,o;r<i;++r)e[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(n,e)},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)}};function pn(t,n){for(var e=0,r=t.length,i;e<r;++e)if((i=t[e]).name===n)return i.value}function Nt(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=ln,t=t.slice(0,r).concat(t.slice(r+1));break}return e!=null&&t.push({name:n,value:e}),t}var ut="http://www.w3.org/1999/xhtml";const At={svg:"http://www.w3.org/2000/svg",xhtml:ut,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function rt(t){var n=t+="",e=n.indexOf(":");return e>=0&&(n=t.slice(0,e))!=="xmlns"&&(t=t.slice(e+1)),At.hasOwnProperty(n)?{space:At[n],local:t}:t}function dn(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===ut&&n.documentElement.namespaceURI===ut?n.createElement(t):n.createElementNS(e,t)}}function gn(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Lt(t){var n=rt(t);return(n.local?gn:dn)(n)}function _n(){}function gt(t){return t==null?_n:function(){return this.querySelector(t)}}function wn(t){typeof t!="function"&&(t=gt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o=n[i],s=o.length,a=r[i]=new Array(s),u,f,c=0;c<s;++c)(u=o[c])&&(f=t.call(u,u.__data__,c,o))&&("__data__"in u&&(f.__data__=u.__data__),a[c]=f);return new y(r,this._parents)}function yn(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function xn(){return[]}function Dt(t){return t==null?xn:function(){return this.querySelectorAll(t)}}function mn(t){return function(){return yn(t.apply(this,arguments))}}function vn(t){typeof t=="function"?t=mn(t):t=Dt(t);for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var s=n[o],a=s.length,u,f=0;f<a;++f)(u=s[f])&&(r.push(t.call(u,u.__data__,f,s)),i.push(u));return new y(r,i)}function Vt(t){return function(){return this.matches(t)}}function Yt(t){return function(n){return n.matches(t)}}var bn=Array.prototype.find;function Nn(t){return function(){return bn.call(this.children,t)}}function An(){return this.firstElementChild}function $n(t){return this.select(t==null?An:Nn(typeof t=="function"?t:Yt(t)))}var En=Array.prototype.filter;function kn(){return Array.from(this.children)}function Sn(t){return function(){return En.call(this.children,t)}}function Cn(t){return this.selectAll(t==null?kn:Sn(typeof t=="function"?t:Yt(t)))}function Tn(t){typeof t!="function"&&(t=Vt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o=n[i],s=o.length,a=r[i]=[],u,f=0;f<s;++f)(u=o[f])&&t.call(u,u.__data__,f,o)&&a.push(u);return new y(r,this._parents)}function Bt(t){return new Array(t.length)}function Mn(){return new y(this._enter||this._groups.map(Bt),this._parents)}function Q(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}Q.prototype={constructor:Q,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function Rn(t){return function(){return t}}function In(t,n,e,r,i,o){for(var s=0,a,u=n.length,f=o.length;s<f;++s)(a=n[s])?(a.__data__=o[s],r[s]=a):e[s]=new Q(t,o[s]);for(;s<u;++s)(a=n[s])&&(i[s]=a)}function Fn(t,n,e,r,i,o,s){var a,u,f=new Map,c=n.length,l=o.length,h=new Array(c),p;for(a=0;a<c;++a)(u=n[a])&&(h[a]=p=s.call(u,u.__data__,a,n)+"",f.has(p)?i[a]=u:f.set(p,u));for(a=0;a<l;++a)p=s.call(t,o[a],a,o)+"",(u=f.get(p))?(r[a]=u,u.__data__=o[a],f.delete(p)):e[a]=new Q(t,o[a]);for(a=0;a<c;++a)(u=n[a])&&f.get(h[a])===u&&(i[a]=u)}function Pn(t){return t.__data__}function Hn(t,n){if(!arguments.length)return Array.from(this,Pn);var e=n?Fn:In,r=this._parents,i=this._groups;typeof t!="function"&&(t=Rn(t));for(var o=i.length,s=new Array(o),a=new Array(o),u=new Array(o),f=0;f<o;++f){var c=r[f],l=i[f],h=l.length,p=On(t.call(c,c&&c.__data__,f,r)),d=p.length,g=a[f]=new Array(d),_=s[f]=new Array(d),v=u[f]=new Array(h);e(c,l,g,_,v,p,n);for(var I=0,B=0,vt,bt;I<d;++I)if(vt=g[I]){for(I>=B&&(B=I+1);!(bt=_[B])&&++B<d;);vt._next=bt||null}}return s=new y(s,r),s._enter=a,s._exit=u,s}function On(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function qn(){return new y(this._exit||this._groups.map(Bt),this._parents)}function Xn(t,n,e){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),n!=null&&(i=n(i),i&&(i=i.selection())),e==null?o.remove():e(o),r&&i?r.merge(i).order():i}function Ln(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,s=Math.min(i,o),a=new Array(i),u=0;u<s;++u)for(var f=e[u],c=r[u],l=f.length,h=a[u]=new Array(l),p,d=0;d<l;++d)(p=f[d]||c[d])&&(h[d]=p);for(;u<i;++u)a[u]=e[u];return new y(a,this._parents)}function Dn(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r=t[n],i=r.length-1,o=r[i],s;--i>=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function Vn(t){t||(t=Yn);function n(l,h){return l&&h?t(l.__data__,h.__data__):!l-!h}for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var s=e[o],a=s.length,u=i[o]=new Array(a),f,c=0;c<a;++c)(f=s[c])&&(u[c]=f);u.sort(n)}return new y(i,this._parents).order()}function Yn(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function Bn(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function zn(){return Array.from(this)}function Un(){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 s=r[i];if(s)return s}return null}function Kn(){let t=0;for(const n of this)++t;return t}function Gn(){return!this.node()}function Wn(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i=n[e],o=0,s=i.length,a;o<s;++o)(a=i[o])&&t.call(a,a.__data__,o,i);return this}function Jn(t){return function(){this.removeAttribute(t)}}function Qn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Zn(t,n){return function(){this.setAttribute(t,n)}}function jn(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function te(t,n){return function(){var e=n.apply(this,arguments);e==null?this.removeAttribute(t):this.setAttribute(t,e)}}function ne(t,n){return function(){var e=n.apply(this,arguments);e==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function ee(t,n){var e=rt(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((n==null?e.local?Qn:Jn:typeof n=="function"?e.local?ne:te:e.local?jn:Zn)(e,n))}function zt(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function re(t){return function(){this.style.removeProperty(t)}}function ie(t,n,e){return function(){this.style.setProperty(t,n,e)}}function oe(t,n,e){return function(){var r=n.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function se(t,n,e){return arguments.length>1?this.each((n==null?re:typeof n=="function"?oe:ie)(t,n,e??"")):M(this.node(),t)}function M(t,n){return t.style.getPropertyValue(n)||zt(t).getComputedStyle(t,null).getPropertyValue(n)}function ae(t){return function(){delete this[t]}}function ue(t,n){return function(){this[t]=n}}function fe(t,n){return function(){var e=n.apply(this,arguments);e==null?delete this[t]:this[t]=e}}function ce(t,n){return arguments.length>1?this.each((n==null?ae:typeof n=="function"?fe:ue)(t,n)):this.node()[t]}function Ut(t){return t.trim().split(/^|\s+/)}function _t(t){return t.classList||new Kt(t)}function Kt(t){this._node=t,this._names=Ut(t.getAttribute("class")||"")}Kt.prototype={add:function(t){var n=this._names.indexOf(t);n<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}};function Gt(t,n){for(var e=_t(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function Wt(t,n){for(var e=_t(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function le(t){return function(){Gt(this,t)}}function he(t){return function(){Wt(this,t)}}function pe(t,n){return function(){(n.apply(this,arguments)?Gt:Wt)(this,t)}}function de(t,n){var e=Ut(t+"");if(arguments.length<2){for(var r=_t(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each((typeof n=="function"?pe:n?le:he)(e,n))}function ge(){this.textContent=""}function _e(t){return function(){this.textContent=t}}function we(t){return function(){var n=t.apply(this,arguments);this.textContent=n??""}}function ye(t){return arguments.length?this.each(t==null?ge:(typeof t=="function"?we:_e)(t)):this.node().textContent}function xe(){this.innerHTML=""}function me(t){return function(){this.innerHTML=t}}function ve(t){return function(){var n=t.apply(this,arguments);this.innerHTML=n??""}}function be(t){return arguments.length?this.each(t==null?xe:(typeof t=="function"?ve:me)(t)):this.node().innerHTML}function Ne(){this.nextSibling&&this.parentNode.appendChild(this)}function Ae(){return this.each(Ne)}function $e(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Ee(){return this.each($e)}function ke(t){var n=typeof t=="function"?t:Lt(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})}function Se(){return null}function Ce(t,n){var e=typeof t=="function"?t:Lt(t),r=n==null?Se:typeof n=="function"?n:gt(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})}function Te(){var t=this.parentNode;t&&t.removeChild(this)}function Me(){return this.each(Te)}function Re(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Ie(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Fe(t){return this.select(t?Ie:Re)}function Pe(t){return arguments.length?this.property("__data__",t):this.node().__data__}function He(t){return function(n){t.call(this,n,this.__data__)}}function Oe(t){return t.trim().split(/^|\s+/).map(function(n){var e="",r=n.indexOf(".");return r>=0&&(e=n.slice(r+1),n=n.slice(0,r)),{type:n,name:e}})}function qe(t){return function(){var n=this.__on;if(n){for(var e=0,r=-1,i=n.length,o;e<i;++e)o=n[e],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):n[++r]=o;++r?n.length=r:delete this.__on}}}function Xe(t,n,e){return function(){var r=this.__on,i,o=He(n);if(r){for(var s=0,a=r.length;s<a;++s)if((i=r[s]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=e),i.value=n;return}}this.addEventListener(t.type,o,e),i={type:t.type,name:t.name,value:n,listener:o,options:e},r?r.push(i):this.__on=[i]}}function Le(t,n,e){var r=Oe(t+""),i,o=r.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var u=0,f=a.length,c;u<f;++u)for(i=0,c=a[u];i<o;++i)if((s=r[i]).type===c.type&&s.name===c.name)return c.value}return}for(a=n?Xe:qe,i=0;i<o;++i)this.each(a(r[i],n,e));return this}function Jt(t,n,e){var r=zt(t),i=r.CustomEvent;typeof i=="function"?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 De(t,n){return function(){return Jt(this,t,n)}}function Ve(t,n){return function(){return Jt(this,t,n.apply(this,arguments))}}function Ye(t,n){return this.each((typeof n=="function"?Ve:De)(t,n))}function*Be(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length,s;i<o;++i)(s=r[i])&&(yield s)}var ze=[null];function y(t,n){this._groups=t,this._parents=n}function V(){return new y([[document.documentElement]],ze)}function Ue(){return this}y.prototype=V.prototype={constructor:y,select:wn,selectAll:vn,selectChild:$n,selectChildren:Cn,filter:Tn,data:Hn,enter:Mn,exit:qn,join:Xn,merge:Ln,selection:Ue,order:Dn,sort:Vn,call:Bn,nodes:zn,node:Un,size:Kn,empty:Gn,each:Wn,attr:ee,style:se,property:ce,classed:de,text:ye,html:be,raise:Ae,lower:Ee,append:ke,insert:Ce,remove:Me,clone:Fe,datum:Pe,on:Le,dispatch:Ye,[Symbol.iterator]:Be};function Ke(t){return new y([[document.querySelector(t)]],[document.documentElement])}function wt(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Qt(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Y(){}var q=.7,Z=1/q,T="\\s*([+-]?\\d+)\\s*",X="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",b="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Ge=/^#([0-9a-f]{3,8})$/,We=new RegExp(`^rgb\\(${T},${T},${T}\\)$`),Je=new RegExp(`^rgb\\(${b},${b},${b}\\)$`),Qe=new RegExp(`^rgba\\(${T},${T},${T},${X}\\)$`),Ze=new RegExp(`^rgba\\(${b},${b},${b},${X}\\)$`),je=new RegExp(`^hsl\\(${X},${b},${b}\\)$`),tr=new RegExp(`^hsla\\(${X},${b},${b},${X}\\)$`),$t={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};wt(Y,L,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Et,formatHex:Et,formatHex8:nr,formatHsl:er,formatRgb:kt,toString:kt});function Et(){return this.rgb().formatHex()}function nr(){return this.rgb().formatHex8()}function er(){return Zt(this).formatHsl()}function kt(){return this.rgb().formatRgb()}function L(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=Ge.exec(t))?(e=n[1].length,n=parseInt(n[1],16),e===6?St(n):e===3?new w(n>>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):e===8?z(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):e===4?z(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=We.exec(t))?new w(n[1],n[2],n[3],1):(n=Je.exec(t))?new w(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=Qe.exec(t))?z(n[1],n[2],n[3],n[4]):(n=Ze.exec(t))?z(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=je.exec(t))?Mt(n[1],n[2]/100,n[3]/100,1):(n=tr.exec(t))?Mt(n[1],n[2]/100,n[3]/100,n[4]):$t.hasOwnProperty(t)?St($t[t]):t==="transparent"?new w(NaN,NaN,NaN,0):null}function St(t){return new w(t>>16&255,t>>8&255,t&255,1)}function z(t,n,e,r){return r<=0&&(t=n=e=NaN),new w(t,n,e,r)}function rr(t){return t instanceof Y||(t=L(t)),t?(t=t.rgb(),new w(t.r,t.g,t.b,t.opacity)):new w}function ft(t,n,e,r){return arguments.length===1?rr(t):new w(t,n,e,r??1)}function w(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}wt(w,ft,Qt(Y,{brighter(t){return t=t==null?Z:Math.pow(Z,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?q:Math.pow(q,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new w(S(this.r),S(this.g),S(this.b),j(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:Ct,formatHex:Ct,formatHex8:ir,formatRgb:Tt,toString:Tt}));function Ct(){return`#${k(this.r)}${k(this.g)}${k(this.b)}`}function ir(){return`#${k(this.r)}${k(this.g)}${k(this.b)}${k((isNaN(this.opacity)?1:this.opacity)*255)}`}function Tt(){const t=j(this.opacity);return`${t===1?"rgb(":"rgba("}${S(this.r)}, ${S(this.g)}, ${S(this.b)}${t===1?")":`, ${t})`}`}function j(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function S(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function k(t){return t=S(t),(t<16?"0":"")+t.toString(16)}function Mt(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new x(t,n,e,r)}function Zt(t){if(t instanceof x)return new x(t.h,t.s,t.l,t.opacity);if(t instanceof Y||(t=L(t)),!t)return new x;if(t instanceof x)return t;t=t.rgb();var n=t.r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),s=NaN,a=o-i,u=(o+i)/2;return a?(n===o?s=(e-r)/a+(e<r)*6:e===o?s=(r-n)/a+2:s=(n-e)/a+4,a/=u<.5?o+i:2-o-i,s*=60):a=u>0&&u<1?0:s,new x(s,a,u,t.opacity)}function or(t,n,e,r){return arguments.length===1?Zt(t):new x(t,n,e,r??1)}function x(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}wt(x,or,Qt(Y,{brighter(t){return t=t==null?Z:Math.pow(Z,t),new x(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?q:Math.pow(q,t),new x(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,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 w(st(t>=240?t-240:t+120,i,r),st(t,i,r),st(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new x(Rt(this.h),U(this.s),U(this.l),j(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=j(this.opacity);return`${t===1?"hsl(":"hsla("}${Rt(this.h)}, ${U(this.s)*100}%, ${U(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Rt(t){return t=(t||0)%360,t<0?t+360:t}function U(t){return Math.max(0,Math.min(1,t||0))}function st(t,n,e){return(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)*255}const jt=t=>()=>t;function sr(t,n){return function(e){return t+e*n}}function ar(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)}}function ur(t){return(t=+t)==1?tn:function(n,e){return e-n?ar(n,e,t):jt(isNaN(n)?e:n)}}function tn(t,n){var e=n-t;return e?sr(t,e):jt(isNaN(t)?n:t)}const It=(function t(n){var e=ur(n);function r(i,o){var s=e((i=ft(i)).r,(o=ft(o)).r),a=e(i.g,o.g),u=e(i.b,o.b),f=tn(i.opacity,o.opacity);return function(c){return i.r=s(c),i.g=a(c),i.b=u(c),i.opacity=f(c),i+""}}return r.gamma=t,r})(1);function E(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}var ct=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,at=new RegExp(ct.source,"g");function fr(t){return function(){return t}}function cr(t){return function(n){return t(n)+""}}function lr(t,n){var e=ct.lastIndex=at.lastIndex=0,r,i,o,s=-1,a=[],u=[];for(t=t+"",n=n+"";(r=ct.exec(t))&&(i=at.exec(n));)(o=i.index)>e&&(o=n.slice(e,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,u.push({i:s,x:E(r,i)})),e=at.lastIndex;return e<n.length&&(o=n.slice(e),a[s]?a[s]+=o:a[++s]=o),a.length<2?u[0]?cr(u[0].x):fr(n):(n=u.length,function(f){for(var c=0,l;c<n;++c)a[(l=u[c]).i]=l.x(f);return a.join("")})}var Ft=180/Math.PI,lt={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function nn(t,n,e,r,i,o){var s,a,u;return(s=Math.sqrt(t*t+n*n))&&(t/=s,n/=s),(u=t*e+n*r)&&(e-=t*u,r-=n*u),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,u/=a),t*r<n*e&&(t=-t,n=-n,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Ft,skewX:Math.atan(u)*Ft,scaleX:s,scaleY:a}}var K;function hr(t){const n=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?lt:nn(n.a,n.b,n.c,n.d,n.e,n.f)}function pr(t){return t==null||(K||(K=document.createElementNS("http://www.w3.org/2000/svg","g")),K.setAttribute("transform",t),!(t=K.transform.baseVal.consolidate()))?lt:(t=t.matrix,nn(t.a,t.b,t.c,t.d,t.e,t.f))}function en(t,n,e,r){function i(f){return f.length?f.pop()+" ":""}function o(f,c,l,h,p,d){if(f!==l||c!==h){var g=p.push("translate(",null,n,null,e);d.push({i:g-4,x:E(f,l)},{i:g-2,x:E(c,h)})}else(l||h)&&p.push("translate("+l+n+h+e)}function s(f,c,l,h){f!==c?(f-c>180?c+=360:c-f>180&&(f+=360),h.push({i:l.push(i(l)+"rotate(",null,r)-2,x:E(f,c)})):c&&l.push(i(l)+"rotate("+c+r)}function a(f,c,l,h){f!==c?h.push({i:l.push(i(l)+"skewX(",null,r)-2,x:E(f,c)}):c&&l.push(i(l)+"skewX("+c+r)}function u(f,c,l,h,p,d){if(f!==l||c!==h){var g=p.push(i(p)+"scale(",null,",",null,")");d.push({i:g-4,x:E(f,l)},{i:g-2,x:E(c,h)})}else(l!==1||h!==1)&&p.push(i(p)+"scale("+l+","+h+")")}return function(f,c){var l=[],h=[];return f=t(f),c=t(c),o(f.translateX,f.translateY,c.translateX,c.translateY,l,h),s(f.rotate,c.rotate,l,h),a(f.skewX,c.skewX,l,h),u(f.scaleX,f.scaleY,c.scaleX,c.scaleY,l,h),f=c=null,function(p){for(var d=-1,g=h.length,_;++d<g;)l[(_=h[d]).i]=_.x(p);return l.join("")}}}var dr=en(hr,"px, ","px)","deg)"),gr=en(pr,", ",")",")"),R=0,P=0,F=0,rn=1e3,tt,H,nt=0,C=0,it=0,D=typeof performance=="object"&&performance.now?performance:Date,on=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function yt(){return C||(on(_r),C=D.now()+it)}function _r(){C=0}function et(){this._call=this._time=this._next=null}et.prototype=sn.prototype={constructor:et,restart:function(t,n,e){if(typeof t!="function")throw new TypeError("callback is not a function");e=(e==null?yt():+e)+(n==null?0:+n),!this._next&&H!==this&&(H?H._next=this:tt=this,H=this),this._call=t,this._time=e,ht()},stop:function(){this._call&&(this._call=null,this._time=1/0,ht())}};function sn(t,n,e){var r=new et;return r.restart(t,n,e),r}function wr(){yt(),++R;for(var t=tt,n;t;)(n=C-t._time)>=0&&t._call.call(void 0,n),t=t._next;--R}function Pt(){C=(nt=D.now())+it,R=P=0;try{wr()}finally{R=0,xr(),C=0}}function yr(){var t=D.now(),n=t-nt;n>rn&&(it-=n,nt=t)}function xr(){for(var t,n=tt,e,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:tt=e);H=t,ht(r)}function ht(t){if(!R){P&&(P=clearTimeout(P));var n=t-C;n>24?(t<1/0&&(P=setTimeout(Pt,t-D.now()-it)),F&&(F=clearInterval(F))):(F||(nt=D.now(),F=setInterval(yr,rn)),R=1,on(Pt))}}function Ht(t,n,e){var r=new et;return n=n==null?0:+n,r.restart(i=>{r.stop(),t(i+n)},n,e),r}var mr=Xt("start","end","cancel","interrupt"),vr=[],an=0,Ot=1,pt=2,W=3,qt=4,dt=5,J=6;function ot(t,n,e,r,i,o){var s=t.__transition;if(!s)t.__transition={};else if(e in s)return;br(t,e,{name:n,index:r,group:i,on:mr,tween:vr,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:an})}function xt(t,n){var e=m(t,n);if(e.state>an)throw new Error("too late; already scheduled");return e}function N(t,n){var e=m(t,n);if(e.state>W)throw new Error("too late; already running");return e}function m(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function br(t,n,e){var r=t.__transition,i;r[n]=e,e.timer=sn(o,0,e.time);function o(f){e.state=Ot,e.timer.restart(s,e.delay,e.time),e.delay<=f&&s(f-e.delay)}function s(f){var c,l,h,p;if(e.state!==Ot)return u();for(c in r)if(p=r[c],p.name===e.name){if(p.state===W)return Ht(s);p.state===qt?(p.state=J,p.timer.stop(),p.on.call("interrupt",t,t.__data__,p.index,p.group),delete r[c]):+c<n&&(p.state=J,p.timer.stop(),p.on.call("cancel",t,t.__data__,p.index,p.group),delete r[c])}if(Ht(function(){e.state===W&&(e.state=qt,e.timer.restart(a,e.delay,e.time),a(f))}),e.state=pt,e.on.call("start",t,t.__data__,e.index,e.group),e.state===pt){for(e.state=W,i=new Array(h=e.tween.length),c=0,l=-1;c<h;++c)(p=e.tween[c].value.call(t,t.__data__,e.index,e.group))&&(i[++l]=p);i.length=l+1}}function a(f){for(var c=f<e.duration?e.ease.call(null,f/e.duration):(e.timer.restart(u),e.state=dt,1),l=-1,h=i.length;++l<h;)i[l].call(t,c);e.state===dt&&(e.on.call("end",t,t.__data__,e.index,e.group),u())}function u(){e.state=J,e.timer.stop(),delete r[n];for(var f in r)return;delete t.__transition}}function Nr(t,n){var e=t.__transition,r,i,o=!0,s;if(e){n=n==null?null:n+"";for(s in e){if((r=e[s]).name!==n){o=!1;continue}i=r.state>pt&&r.state<dt,r.state=J,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete e[s]}o&&delete t.__transition}}function Ar(t){return this.each(function(){Nr(this,t)})}function $r(t,n){var e,r;return function(){var i=N(this,t),o=i.tween;if(o!==e){r=e=o;for(var s=0,a=r.length;s<a;++s)if(r[s].name===n){r=r.slice(),r.splice(s,1);break}}i.tween=r}}function Er(t,n,e){var r,i;if(typeof e!="function")throw new Error;return function(){var o=N(this,t),s=o.tween;if(s!==r){i=(r=s).slice();for(var a={name:n,value:e},u=0,f=i.length;u<f;++u)if(i[u].name===n){i[u]=a;break}u===f&&i.push(a)}o.tween=i}}function kr(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r=m(this.node(),e).tween,i=0,o=r.length,s;i<o;++i)if((s=r[i]).name===t)return s.value;return null}return this.each((n==null?$r:Er)(e,t,n))}function mt(t,n,e){var r=t._id;return t.each(function(){var i=N(this,r);(i.value||(i.value={}))[n]=e.apply(this,arguments)}),function(i){return m(i,r).value[n]}}function un(t,n){var e;return(typeof n=="number"?E:n instanceof L?It:(e=L(n))?(n=e,It):lr)(t,n)}function Sr(t){return function(){this.removeAttribute(t)}}function Cr(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Tr(t,n,e){var r,i=e+"",o;return function(){var s=this.getAttribute(t);return s===i?null:s===r?o:o=n(r=s,e)}}function Mr(t,n,e){var r,i=e+"",o;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===r?o:o=n(r=s,e)}}function Rr(t,n,e){var r,i,o;return function(){var s,a=e(this),u;return a==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=a+"",s===u?null:s===r&&u===i?o:(i=u,o=n(r=s,a)))}}function Ir(t,n,e){var r,i,o;return function(){var s,a=e(this),u;return a==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=a+"",s===u?null:s===r&&u===i?o:(i=u,o=n(r=s,a)))}}function Fr(t,n){var e=rt(t),r=e==="transform"?gr:un;return this.attrTween(t,typeof n=="function"?(e.local?Ir:Rr)(e,r,mt(this,"attr."+t,n)):n==null?(e.local?Cr:Sr)(e):(e.local?Mr:Tr)(e,r,n))}function Pr(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function Hr(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function Or(t,n){var e,r;function i(){var o=n.apply(this,arguments);return o!==r&&(e=(r=o)&&Hr(t,o)),e}return i._value=n,i}function qr(t,n){var e,r;function i(){var o=n.apply(this,arguments);return o!==r&&(e=(r=o)&&Pr(t,o)),e}return i._value=n,i}function Xr(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(n==null)return this.tween(e,null);if(typeof n!="function")throw new Error;var r=rt(t);return this.tween(e,(r.local?Or:qr)(r,n))}function Lr(t,n){return function(){xt(this,t).delay=+n.apply(this,arguments)}}function Dr(t,n){return n=+n,function(){xt(this,t).delay=n}}function Vr(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?Lr:Dr)(n,t)):m(this.node(),n).delay}function Yr(t,n){return function(){N(this,t).duration=+n.apply(this,arguments)}}function Br(t,n){return n=+n,function(){N(this,t).duration=n}}function zr(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?Yr:Br)(n,t)):m(this.node(),n).duration}function Ur(t,n){if(typeof n!="function")throw new Error;return function(){N(this,t).ease=n}}function Kr(t){var n=this._id;return arguments.length?this.each(Ur(n,t)):m(this.node(),n).ease}function Gr(t,n){return function(){var e=n.apply(this,arguments);if(typeof e!="function")throw new Error;N(this,t).ease=e}}function Wr(t){if(typeof t!="function")throw new Error;return this.each(Gr(this._id,t))}function Jr(t){typeof t!="function"&&(t=Vt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o=n[i],s=o.length,a=r[i]=[],u,f=0;f<s;++f)(u=o[f])&&t.call(u,u.__data__,f,o)&&a.push(u);return new $(r,this._parents,this._name,this._id)}function Qr(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),s=new Array(r),a=0;a<o;++a)for(var u=n[a],f=e[a],c=u.length,l=s[a]=new Array(c),h,p=0;p<c;++p)(h=u[p]||f[p])&&(l[p]=h);for(;a<r;++a)s[a]=n[a];return new $(s,this._parents,this._name,this._id)}function Zr(t){return(t+"").trim().split(/^|\s+/).every(function(n){var e=n.indexOf(".");return e>=0&&(n=n.slice(0,e)),!n||n==="start"})}function jr(t,n,e){var r,i,o=Zr(n)?xt:N;return function(){var s=o(this,t),a=s.on;a!==r&&(i=(r=a).copy()).on(n,e),s.on=i}}function ti(t,n){var e=this._id;return arguments.length<2?m(this.node(),e).on.on(t):this.each(jr(e,t,n))}function ni(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}function ei(){return this.on("end.remove",ni(this._id))}function ri(t){var n=this._name,e=this._id;typeof t!="function"&&(t=gt(t));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s<i;++s)for(var a=r[s],u=a.length,f=o[s]=new Array(u),c,l,h=0;h<u;++h)(c=a[h])&&(l=t.call(c,c.__data__,h,a))&&("__data__"in c&&(l.__data__=c.__data__),f[h]=l,ot(f[h],n,e,h,f,m(c,e)));return new $(o,this._parents,n,e)}function ii(t){var n=this._name,e=this._id;typeof t!="function"&&(t=Dt(t));for(var r=this._groups,i=r.length,o=[],s=[],a=0;a<i;++a)for(var u=r[a],f=u.length,c,l=0;l<f;++l)if(c=u[l]){for(var h=t.call(c,c.__data__,l,u),p,d=m(c,e),g=0,_=h.length;g<_;++g)(p=h[g])&&ot(p,n,e,g,h,d);o.push(h),s.push(c)}return new $(o,s,n,e)}var oi=V.prototype.constructor;function si(){return new oi(this._groups,this._parents)}function ai(t,n){var e,r,i;return function(){var o=M(this,t),s=(this.style.removeProperty(t),M(this,t));return o===s?null:o===e&&s===r?i:i=n(e=o,r=s)}}function fn(t){return function(){this.style.removeProperty(t)}}function ui(t,n,e){var r,i=e+"",o;return function(){var s=M(this,t);return s===i?null:s===r?o:o=n(r=s,e)}}function fi(t,n,e){var r,i,o;return function(){var s=M(this,t),a=e(this),u=a+"";return a==null&&(u=a=(this.style.removeProperty(t),M(this,t))),s===u?null:s===r&&u===i?o:(i=u,o=n(r=s,a))}}function ci(t,n){var e,r,i,o="style."+n,s="end."+o,a;return function(){var u=N(this,t),f=u.on,c=u.value[o]==null?a||(a=fn(n)):void 0;(f!==e||i!==c)&&(r=(e=f).copy()).on(s,i=c),u.on=r}}function li(t,n,e){var r=(t+="")=="transform"?dr:un;return n==null?this.styleTween(t,ai(t,r)).on("end.style."+t,fn(t)):typeof n=="function"?this.styleTween(t,fi(t,r,mt(this,"style."+t,n))).each(ci(this._id,t)):this.styleTween(t,ui(t,r,n),e).on("end.style."+t,null)}function hi(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function pi(t,n,e){var r,i;function o(){var s=n.apply(this,arguments);return s!==i&&(r=(i=s)&&hi(t,s,e)),r}return o._value=n,o}function di(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(n==null)return this.tween(r,null);if(typeof n!="function")throw new Error;return this.tween(r,pi(t,n,e??""))}function gi(t){return function(){this.textContent=t}}function _i(t){return function(){var n=t(this);this.textContent=n??""}}function wi(t){return this.tween("text",typeof t=="function"?_i(mt(this,"text",t)):gi(t==null?"":t+""))}function yi(t){return function(n){this.textContent=t.call(this,n)}}function xi(t){var n,e;function r(){var i=t.apply(this,arguments);return i!==e&&(n=(e=i)&&yi(i)),n}return r._value=t,r}function mi(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,xi(t))}function vi(){for(var t=this._name,n=this._id,e=cn(),r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,u,f=0;f<a;++f)if(u=s[f]){var c=m(u,n);ot(u,t,e,f,s,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new $(r,this._parents,t,e)}function bi(){var t,n,e=this,r=e._id,i=e.size();return new Promise(function(o,s){var a={value:s},u={value:function(){--i===0&&o()}};e.each(function(){var f=N(this,r),c=f.on;c!==t&&(n=(t=c).copy(),n._.cancel.push(a),n._.interrupt.push(a),n._.end.push(u)),f.on=n}),i===0&&o()})}var Ni=0;function $(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function cn(){return++Ni}var A=V.prototype;$.prototype={constructor:$,select:ri,selectAll:ii,selectChild:A.selectChild,selectChildren:A.selectChildren,filter:Jr,merge:Qr,selection:si,transition:vi,call:A.call,nodes:A.nodes,node:A.node,size:A.size,empty:A.empty,each:A.each,on:ti,attr:Fr,attrTween:Xr,style:li,styleTween:di,text:wi,textTween:mi,remove:ei,tween:kr,delay:Vr,duration:zr,ease:Kr,easeVarying:Wr,end:bi,[Symbol.iterator]:A[Symbol.iterator]};function Ai(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var $i={time:null,delay:0,duration:250,ease:Ai};function Ei(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 ki(t){var n,e;t instanceof $?(n=t._id,t=t._name):(n=cn(),(e=$i).time=yt(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,u,f=0;f<a;++f)(u=s[f])&&ot(u,t,n,f,s,e||Ei(u,n));return new $(r,this._parents,t,n)}V.prototype.interrupt=Ar;V.prototype.transition=ki;function O(t,n,e){this.k=t,this.x=n,this.y=e}O.prototype={constructor:O,scale:function(t){return t===1?this:new O(this.k*t,this.x,this.y)},translate:function(t,n){return t===0&n===0?this:new O(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+")"}};O.prototype;async function Si(){const t=await window.gitopo.git.exec('log --all --format="%H %P %s" --topo-order');if(!t.success)return console.error("Failed to fetch commits:",t.error),[];const n=[],e=t.output.trim().split(`
2
+ `);for(const r of e){const i=r.match(/^([a-f0-9]+)\s*([a-f0-9\s]*?)\s{2,}(.*)$/);if(i){const[,o,s,a]=i,u=s.trim()?s.trim().split(" "):[];n.push({hash:o,parents:u,message:a})}}return n}async function Ci(){const t=await window.gitopo.git.exec('branch -a --format="%(refname:short) %(objectname)"');if(!t.success)return console.error("Failed to fetch branches:",t.error),[];const n=[],e=t.output.trim().split(`
3
+ `);for(const r of e){const[i,o]=r.trim().split(" ");i&&o&&n.push({name:i,hash:o})}return n}function Ti(t,n){const e=Ke("#graph"),r=window.innerWidth,i=window.innerHeight;e.attr("width",r).attr("height",i);const o=8,s=50,a=100,u=new Map;t.forEach((d,g)=>u.set(d.hash,g));const f=new Map;n.forEach(d=>{f.has(d.hash)||f.set(d.hash,[]),f.get(d.hash).push(d.name)});const c=new Map;let l=0;t.forEach((d,g)=>{let _=0;if(d.parents.length>0){const v=c.get(d.parents[0]);v&&(_=v.col)}for(const[,v]of c)if(v.row===g&&v.col===_){_=l+1;break}l=Math.max(l,_),c.set(d.hash,{row:g,col:_})});const h=[];t.forEach(d=>{const g=c.get(d.hash);d.parents.forEach(_=>{const v=c.get(_);g&&v&&h.push({child:g,parent:v})})}),e.selectAll("line").data(h).enter().append("line").attr("x1",d=>50+d.child.col*a).attr("y1",d=>30+d.child.row*s).attr("x2",d=>50+d.parent.col*a).attr("y2",d=>30+d.parent.row*s).attr("stroke","#666").attr("stroke-width",2);const p=e.selectAll("g.node").data(t).enter().append("g").attr("class","node").attr("transform",d=>{const g=c.get(d.hash);return`translate(${50+g.col*a}, ${30+g.row*s})`});p.append("circle").attr("r",o).attr("fill",d=>f.has(d.hash)?"#4fc3f7":"#fff").attr("stroke","#333").attr("stroke-width",2),p.append("text").attr("x",15).attr("y",5).attr("fill","#ccc").attr("font-size","12px").text(d=>{const g=f.get(d.hash);return(g?`[${g.join(", ")}] `:"")+d.message.substring(0,50)})}async function Mi(){const[t,n]=await Promise.all([Si(),Ci()]);console.log("Commits:",t),console.log("Branches:",n),Ti(t,n)}Mi();