git-history-ui 4.0.1 → 5.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.
- package/CHANGELOG.md +36 -0
- package/CODE_OF_CONDUCT.md +53 -0
- package/CONTRIBUTING.md +132 -0
- package/LICENSE +21 -0
- package/README.md +75 -15
- package/SECURITY.md +51 -0
- package/build/frontend/chunk-6DL2ZTKG.js +1 -0
- package/build/frontend/chunk-ACWXPHRR.js +1 -0
- package/build/frontend/{chunk-CFCRPNUQ.js → chunk-F6HZ5OVS.js} +1 -1
- package/build/frontend/{chunk-UHWTLUOW.js → chunk-GHSRMAIR.js} +1 -1
- package/build/frontend/chunk-J5ZVP6TN.js +9 -0
- package/build/frontend/chunk-PRY6VAFG.js +1 -0
- package/build/frontend/chunk-PXNKNORB.js +1 -0
- package/build/frontend/chunk-S56XRIZ7.js +9 -0
- package/build/frontend/chunk-STUSEB5P.js +1 -0
- package/build/frontend/chunk-UM7ESEXJ.js +5 -0
- package/build/frontend/chunk-VGAHCEAA.js +1 -0
- package/build/frontend/chunk-XLGWMKXV.js +1 -0
- package/build/frontend/chunk-Y6GOUMAT.js +1 -0
- package/build/frontend/index.html +2 -2
- package/build/frontend/main-W5NQX3FE.js +1 -0
- package/build/frontend/styles-RQGRQK4Z.css +1 -0
- package/dist/backend/aggregations.d.ts +1 -0
- package/dist/backend/aggregations.d.ts.map +1 -0
- package/dist/backend/annotations.d.ts +10 -1
- package/dist/backend/annotations.d.ts.map +1 -0
- package/dist/backend/annotations.js +84 -9
- package/dist/backend/annotations.js.map +1 -1
- package/dist/backend/breakage.d.ts +70 -0
- package/dist/backend/breakage.d.ts.map +1 -0
- package/dist/backend/breakage.js +235 -0
- package/dist/backend/breakage.js.map +1 -0
- package/dist/backend/cache/sqliteIndex.d.ts +2 -1
- package/dist/backend/cache/sqliteIndex.d.ts.map +1 -0
- package/dist/backend/cache/sqliteIndex.js +36 -23
- package/dist/backend/cache/sqliteIndex.js.map +1 -1
- package/dist/backend/dev-server.d.ts +1 -0
- package/dist/backend/dev-server.d.ts.map +1 -0
- package/dist/backend/gitService.d.ts +15 -6
- package/dist/backend/gitService.d.ts.map +1 -0
- package/dist/backend/gitService.js +148 -45
- package/dist/backend/gitService.js.map +1 -1
- package/dist/backend/grouping/prGrouping.d.ts +1 -0
- package/dist/backend/grouping/prGrouping.d.ts.map +1 -0
- package/dist/backend/grouping/prGrouping.js +41 -19
- package/dist/backend/grouping/prGrouping.js.map +1 -1
- package/dist/backend/impact.d.ts +4 -1
- package/dist/backend/impact.d.ts.map +1 -0
- package/dist/backend/impact.js +30 -16
- package/dist/backend/impact.js.map +1 -1
- package/dist/backend/insights.d.ts +1 -0
- package/dist/backend/insights.d.ts.map +1 -0
- package/dist/backend/insights.js +8 -3
- package/dist/backend/insights.js.map +1 -1
- package/dist/backend/llm/anthropicProvider.d.ts +2 -0
- package/dist/backend/llm/anthropicProvider.d.ts.map +1 -0
- package/dist/backend/llm/anthropicProvider.js +10 -4
- package/dist/backend/llm/anthropicProvider.js.map +1 -1
- package/dist/backend/llm/heuristicProvider.d.ts +2 -0
- package/dist/backend/llm/heuristicProvider.d.ts.map +1 -0
- package/dist/backend/llm/heuristicProvider.js +54 -4
- package/dist/backend/llm/heuristicProvider.js.map +1 -1
- package/dist/backend/llm/index.d.ts +7 -0
- package/dist/backend/llm/index.d.ts.map +1 -0
- package/dist/backend/llm/index.js +15 -5
- package/dist/backend/llm/index.js.map +1 -1
- package/dist/backend/llm/openaiProvider.d.ts +3 -0
- package/dist/backend/llm/openaiProvider.d.ts.map +1 -0
- package/dist/backend/llm/openaiProvider.js +29 -4
- package/dist/backend/llm/openaiProvider.js.map +1 -1
- package/dist/backend/llm/types.d.ts +3 -1
- package/dist/backend/llm/types.d.ts.map +1 -0
- package/dist/backend/presets.d.ts +1 -0
- package/dist/backend/presets.d.ts.map +1 -0
- package/dist/backend/search/datePhrase.d.ts +1 -0
- package/dist/backend/search/datePhrase.d.ts.map +1 -0
- package/dist/backend/search/nlSearch.d.ts +1 -0
- package/dist/backend/search/nlSearch.d.ts.map +1 -0
- package/dist/backend/server.d.ts +1 -0
- package/dist/backend/server.d.ts.map +1 -0
- package/dist/backend/server.js +100 -26
- package/dist/backend/server.js.map +1 -1
- package/dist/backend/snapshot.d.ts +4 -1
- package/dist/backend/snapshot.d.ts.map +1 -0
- package/dist/backend/snapshot.js +14 -9
- package/dist/backend/snapshot.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/docs/API.md +70 -0
- package/docs/architecture.md +85 -0
- package/docs/configuration.md +54 -0
- package/docs/troubleshooting.md +85 -0
- package/package.json +44 -8
- package/build/frontend/chunk-4JCUQ6Y5.js +0 -1
- package/build/frontend/chunk-6VRZZB3T.js +0 -1
- package/build/frontend/chunk-EZUFC4CQ.js +0 -1
- package/build/frontend/chunk-GRG6HTLW.js +0 -9
- package/build/frontend/chunk-I4VBIHH2.js +0 -1
- package/build/frontend/chunk-OBPR2XVH.js +0 -5
- package/build/frontend/chunk-QNEGGJHP.js +0 -2
- package/build/frontend/chunk-UIWFTWLF.js +0 -1
- package/build/frontend/chunk-UNROVCUZ.js +0 -7
- package/build/frontend/chunk-UWM4ZZWH.js +0 -1
- package/build/frontend/chunk-VHEMN3MU.js +0 -1
- package/build/frontend/main-SQFBVJA6.js +0 -1
- package/build/frontend/styles-DUWPKHDX.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function yt(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function xr(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function vt(t){let e,r,n;t.length!==2?(e=yt,r=(u,f)=>yt(t(u),f),n=(u,f)=>t(u)-f):(e=t===yt||t===xr?t:$a,r=t,n=t);function o(u,f,s=0,m=u.length){if(s<m){if(e(f,f)!==0)return m;do{let c=s+m>>>1;r(u[c],f)<0?s=c+1:m=c}while(s<m)}return s}function i(u,f,s=0,m=u.length){if(s<m){if(e(f,f)!==0)return m;do{let c=s+m>>>1;r(u[c],f)<=0?s=c+1:m=c}while(s<m)}return s}function a(u,f,s=0,m=u.length){let c=o(u,f,s,m-1);return c>s&&n(u[c-1],f)>-n(u[c],f)?c-1:c}return{left:o,center:a,right:i}}function $a(){return 0}function dn(t,e){let r,n;if(e===void 0)for(let o of t)o!=null&&(r===void 0?o>=o&&(r=n=o):(r>o&&(r=o),n<o&&(n=o)));else{let o=-1;for(let i of t)(i=e(i,++o,t))!=null&&(r===void 0?i>=i&&(r=n=i):(r>i&&(r=i),n<i&&(n=i)))}return[r,n]}function xn(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r<n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of t)(o=e(o,++n,t))!=null&&(r<o||r===void 0&&o>=o)&&(r=o)}return r}function gr(t){return t===null?NaN:+t}var gn=vt(yt),yn=gn.right,Ya=gn.left,za=vt(gr).center,yr=yn;var Ra=Math.sqrt(50),La=Math.sqrt(10),Ha=Math.sqrt(2);function Me(t,e,r){let n=(e-t)/Math.max(0,r),o=Math.floor(Math.log10(n)),i=n/Math.pow(10,o),a=i>=Ra?10:i>=La?5:i>=Ha?2:1,u,f,s;return o<0?(s=Math.pow(10,-o)/a,u=Math.round(t*s),f=Math.round(e*s),u/s<t&&++u,f/s>e&&--f,s=-s):(s=Math.pow(10,o)*a,u=Math.round(t/s),f=Math.round(e/s),u*s<t&&++u,f*s>e&&--f),f<u&&.5<=r&&r<2?Me(t,e,r*2):[u,f,s]}function Te(t,e,r){if(e=+e,t=+t,r=+r,!(r>0))return[];if(t===e)return[t];let n=e<t,[o,i,a]=n?Me(e,t,r):Me(t,e,r);if(!(i>=o))return[];let u=i-o+1,f=new Array(u);if(n)if(a<0)for(let s=0;s<u;++s)f[s]=(i-s)/-a;else for(let s=0;s<u;++s)f[s]=(i-s)*a;else if(a<0)for(let s=0;s<u;++s)f[s]=(o+s)/-a;else for(let s=0;s<u;++s)f[s]=(o+s)*a;return f}function Gt(t,e,r){return e=+e,t=+t,r=+r,Me(t,e,r)[2]}function $t(t,e,r){e=+e,t=+t,r=+r;let n=e<t,o=n?Gt(e,t,r):Gt(t,e,r);return(n?-1:1)*(o<0?1/-o:o)}function vn(t){return t}var vr=1,ke=2,wr=3,Qt=4,wn=1e-6;function Pa(t){return"translate("+t+",0)"}function qa(t){return"translate(0,"+t+")"}function Ba(t){return e=>+t(e)}function Wa(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function Xa(){return!this.__axis}function _r(t,e){var r=[],n=null,o=null,i=6,a=6,u=3,f=typeof window<"u"&&window.devicePixelRatio>1?0:.5,s=t===vr||t===Qt?-1:1,m=t===Qt||t===ke?"x":"y",c=t===vr||t===wr?Pa:qa;function l(p){var d=n??(e.ticks?e.ticks.apply(e,r):e.domain()),v=o??(e.tickFormat?e.tickFormat.apply(e,r):vn),y=Math.max(i,0)+u,_=e.range(),A=+_[0]+f,b=+_[_.length-1]+f,T=(e.bandwidth?Wa:Ba)(e.copy(),f),k=p.selection?p.selection():p,g=k.selectAll(".domain").data([null]),N=k.selectAll(".tick").data(d,e).order(),X=N.exit(),ft=N.enter().append("g").attr("class","tick"),K=N.select("line"),w=N.select("text");g=g.merge(g.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),N=N.merge(ft),K=K.merge(ft.append("line").attr("stroke","currentColor").attr(m+"2",s*i)),w=w.merge(ft.append("text").attr("fill","currentColor").attr(m,s*y).attr("dy",t===vr?"0em":t===wr?"0.71em":"0.32em")),p!==k&&(g=g.transition(p),N=N.transition(p),K=K.transition(p),w=w.transition(p),X=X.transition(p).attr("opacity",wn).attr("transform",function($){return isFinite($=T($))?c($+f):this.getAttribute("transform")}),ft.attr("opacity",wn).attr("transform",function($){var O=this.parentNode.__axis;return c((O&&isFinite(O=O($))?O:T($))+f)})),X.remove(),g.attr("d",t===Qt||t===ke?a?"M"+s*a+","+A+"H"+f+"V"+b+"H"+s*a:"M"+f+","+A+"V"+b:a?"M"+A+","+s*a+"V"+f+"H"+b+"V"+s*a:"M"+A+","+f+"H"+b),N.attr("opacity",1).attr("transform",function($){return c(T($)+f)}),K.attr(m+"2",s*i),w.attr(m,s*y).text(v),k.filter(Xa).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===ke?"start":t===Qt?"end":"middle"),k.each(function(){this.__axis=T})}return l.scale=function(p){return arguments.length?(e=p,l):e},l.ticks=function(){return r=Array.from(arguments),l},l.tickArguments=function(p){return arguments.length?(r=p==null?[]:Array.from(p),l):r.slice()},l.tickValues=function(p){return arguments.length?(n=p==null?null:Array.from(p),l):n&&n.slice()},l.tickFormat=function(p){return arguments.length?(o=p,l):o},l.tickSize=function(p){return arguments.length?(i=a=+p,l):i},l.tickSizeInner=function(p){return arguments.length?(i=+p,l):i},l.tickSizeOuter=function(p){return arguments.length?(a=+p,l):a},l.tickPadding=function(p){return arguments.length?(u=+p,l):u},l.offset=function(p){return arguments.length?(f=+p,l):f},l}function Va(t){return _r(ke,t)}function Za(t){return _r(wr,t)}function Ga(t){return _r(Qt,t)}function Qa(){}function wt(t){return t==null?Qa:function(){return this.querySelector(t)}}function _n(t){typeof t!="function"&&(t=wt(t));for(var e=this._groups,r=e.length,n=new Array(r),o=0;o<r;++o)for(var i=e[o],a=i.length,u=n[o]=new Array(a),f,s,m=0;m<a;++m)(f=i[m])&&(s=t.call(f,f.__data__,m,i))&&("__data__"in f&&(s.__data__=f.__data__),u[m]=s);return new E(n,this._parents)}function br(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function Ka(){return[]}function Kt(t){return t==null?Ka:function(){return this.querySelectorAll(t)}}function Ja(t){return function(){return br(t.apply(this,arguments))}}function bn(t){typeof t=="function"?t=Ja(t):t=Kt(t);for(var e=this._groups,r=e.length,n=[],o=[],i=0;i<r;++i)for(var a=e[i],u=a.length,f,s=0;s<u;++s)(f=a[s])&&(n.push(t.call(f,f.__data__,s,a)),o.push(f));return new E(n,o)}function Jt(t){return function(){return this.matches(t)}}function Se(t){return function(e){return e.matches(t)}}var ja=Array.prototype.find;function tu(t){return function(){return ja.call(this.children,t)}}function eu(){return this.firstElementChild}function Mn(t){return this.select(t==null?eu:tu(typeof t=="function"?t:Se(t)))}var ru=Array.prototype.filter;function nu(){return Array.from(this.children)}function ou(t){return function(){return ru.call(this.children,t)}}function Tn(t){return this.selectAll(t==null?nu:ou(typeof t=="function"?t:Se(t)))}function kn(t){typeof t!="function"&&(t=Jt(t));for(var e=this._groups,r=e.length,n=new Array(r),o=0;o<r;++o)for(var i=e[o],a=i.length,u=n[o]=[],f,s=0;s<a;++s)(f=i[s])&&t.call(f,f.__data__,s,i)&&u.push(f);return new E(n,this._parents)}function Ce(t){return new Array(t.length)}function Sn(){return new E(this._enter||this._groups.map(Ce),this._parents)}function jt(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}jt.prototype={constructor:jt,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 Cn(t){return function(){return t}}function iu(t,e,r,n,o,i){for(var a=0,u,f=e.length,s=i.length;a<s;++a)(u=e[a])?(u.__data__=i[a],n[a]=u):r[a]=new jt(t,i[a]);for(;a<f;++a)(u=e[a])&&(o[a]=u)}function au(t,e,r,n,o,i,a){var u,f,s=new Map,m=e.length,c=i.length,l=new Array(m),p;for(u=0;u<m;++u)(f=e[u])&&(l[u]=p=a.call(f,f.__data__,u,e)+"",s.has(p)?o[u]=f:s.set(p,f));for(u=0;u<c;++u)p=a.call(t,i[u],u,i)+"",(f=s.get(p))?(n[u]=f,f.__data__=i[u],s.delete(p)):r[u]=new jt(t,i[u]);for(u=0;u<m;++u)(f=e[u])&&s.get(l[u])===f&&(o[u]=f)}function uu(t){return t.__data__}function An(t,e){if(!arguments.length)return Array.from(this,uu);var r=e?au:iu,n=this._parents,o=this._groups;typeof t!="function"&&(t=Cn(t));for(var i=o.length,a=new Array(i),u=new Array(i),f=new Array(i),s=0;s<i;++s){var m=n[s],c=o[s],l=c.length,p=su(t.call(m,m&&m.__data__,s,n)),d=p.length,v=u[s]=new Array(d),y=a[s]=new Array(d),_=f[s]=new Array(l);r(m,c,v,y,_,p,e);for(var A=0,b=0,T,k;A<d;++A)if(T=v[A]){for(A>=b&&(b=A+1);!(k=y[b])&&++b<d;);T._next=k||null}}return a=new E(a,n),a._enter=u,a._exit=f,a}function su(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Dn(){return new E(this._exit||this._groups.map(Ce),this._parents)}function Nn(t,e,r){var n=this.enter(),o=this,i=this.exit();return typeof t=="function"?(n=t(n),n&&(n=n.selection())):n=n.append(t+""),e!=null&&(o=e(o),o&&(o=o.selection())),r==null?i.remove():r(i),n&&o?n.merge(o).order():o}function In(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,o=r.length,i=n.length,a=Math.min(o,i),u=new Array(o),f=0;f<a;++f)for(var s=r[f],m=n[f],c=s.length,l=u[f]=new Array(c),p,d=0;d<c;++d)(p=s[d]||m[d])&&(l[d]=p);for(;f<o;++f)u[f]=r[f];return new E(u,this._parents)}function En(){for(var t=this._groups,e=-1,r=t.length;++e<r;)for(var n=t[e],o=n.length-1,i=n[o],a;--o>=0;)(a=n[o])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function Fn(t){t||(t=fu);function e(c,l){return c&&l?t(c.__data__,l.__data__):!c-!l}for(var r=this._groups,n=r.length,o=new Array(n),i=0;i<n;++i){for(var a=r[i],u=a.length,f=o[i]=new Array(u),s,m=0;m<u;++m)(s=a[m])&&(f[m]=s);f.sort(e)}return new E(o,this._parents).order()}function fu(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function On(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Un(){return Array.from(this)}function $n(){for(var t=this._groups,e=0,r=t.length;e<r;++e)for(var n=t[e],o=0,i=n.length;o<i;++o){var a=n[o];if(a)return a}return null}function Yn(){let t=0;for(let e of this)++t;return t}function zn(){return!this.node()}function Rn(t){for(var e=this._groups,r=0,n=e.length;r<n;++r)for(var o=e[r],i=0,a=o.length,u;i<a;++i)(u=o[i])&&t.call(u,u.__data__,i,o);return this}var Ae="http://www.w3.org/1999/xhtml",Mr={svg:"http://www.w3.org/2000/svg",xhtml:Ae,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 e=t+="",r=e.indexOf(":");return r>=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),Mr.hasOwnProperty(e)?{space:Mr[e],local:t}:t}function lu(t){return function(){this.removeAttribute(t)}}function cu(t){return function(){this.removeAttributeNS(t.space,t.local)}}function mu(t,e){return function(){this.setAttribute(t,e)}}function pu(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function hu(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function du(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function Ln(t,e){var r=rt(t);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((e==null?r.local?cu:lu:typeof e=="function"?r.local?du:hu:r.local?pu:mu)(r,e))}function De(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function xu(t){return function(){this.style.removeProperty(t)}}function gu(t,e,r){return function(){this.style.setProperty(t,e,r)}}function yu(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function Hn(t,e,r){return arguments.length>1?this.each((e==null?xu:typeof e=="function"?yu:gu)(t,e,r??"")):ct(this.node(),t)}function ct(t,e){return t.style.getPropertyValue(e)||De(t).getComputedStyle(t,null).getPropertyValue(e)}function vu(t){return function(){delete this[t]}}function wu(t,e){return function(){this[t]=e}}function _u(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function Pn(t,e){return arguments.length>1?this.each((e==null?vu:typeof e=="function"?_u:wu)(t,e)):this.node()[t]}function qn(t){return t.trim().split(/^|\s+/)}function Tr(t){return t.classList||new Bn(t)}function Bn(t){this._node=t,this._names=qn(t.getAttribute("class")||"")}Bn.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 Wn(t,e){for(var r=Tr(t),n=-1,o=e.length;++n<o;)r.add(e[n])}function Xn(t,e){for(var r=Tr(t),n=-1,o=e.length;++n<o;)r.remove(e[n])}function bu(t){return function(){Wn(this,t)}}function Mu(t){return function(){Xn(this,t)}}function Tu(t,e){return function(){(e.apply(this,arguments)?Wn:Xn)(this,t)}}function Vn(t,e){var r=qn(t+"");if(arguments.length<2){for(var n=Tr(this.node()),o=-1,i=r.length;++o<i;)if(!n.contains(r[o]))return!1;return!0}return this.each((typeof e=="function"?Tu:e?bu:Mu)(r,e))}function ku(){this.textContent=""}function Su(t){return function(){this.textContent=t}}function Cu(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function Zn(t){return arguments.length?this.each(t==null?ku:(typeof t=="function"?Cu:Su)(t)):this.node().textContent}function Au(){this.innerHTML=""}function Du(t){return function(){this.innerHTML=t}}function Nu(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function Gn(t){return arguments.length?this.each(t==null?Au:(typeof t=="function"?Nu:Du)(t)):this.node().innerHTML}function Iu(){this.nextSibling&&this.parentNode.appendChild(this)}function Qn(){return this.each(Iu)}function Eu(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Kn(){return this.each(Eu)}function Fu(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===Ae&&e.documentElement.namespaceURI===Ae?e.createElement(t):e.createElementNS(r,t)}}function Ou(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Ne(t){var e=rt(t);return(e.local?Ou:Fu)(e)}function Jn(t){var e=typeof t=="function"?t:Ne(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function Uu(){return null}function jn(t,e){var r=typeof t=="function"?t:Ne(t),n=e==null?Uu:typeof e=="function"?e:wt(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}function $u(){var t=this.parentNode;t&&t.removeChild(this)}function to(){return this.each($u)}function Yu(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function zu(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function eo(t){return this.select(t?zu:Yu)}function ro(t){return arguments.length?this.property("__data__",t):this.node().__data__}function Ru(t){return function(e){t.call(this,e,this.__data__)}}function Lu(t){return t.trim().split(/^|\s+/).map(function(e){var r="",n=e.indexOf(".");return n>=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function Hu(t){return function(){var e=this.__on;if(e){for(var r=0,n=-1,o=e.length,i;r<o;++r)i=e[r],(!t.type||i.type===t.type)&&i.name===t.name?this.removeEventListener(i.type,i.listener,i.options):e[++n]=i;++n?e.length=n:delete this.__on}}}function Pu(t,e,r){return function(){var n=this.__on,o,i=Ru(e);if(n){for(var a=0,u=n.length;a<u;++a)if((o=n[a]).type===t.type&&o.name===t.name){this.removeEventListener(o.type,o.listener,o.options),this.addEventListener(o.type,o.listener=i,o.options=r),o.value=e;return}}this.addEventListener(t.type,i,r),o={type:t.type,name:t.name,value:e,listener:i,options:r},n?n.push(o):this.__on=[o]}}function no(t,e,r){var n=Lu(t+""),o,i=n.length,a;if(arguments.length<2){var u=this.node().__on;if(u){for(var f=0,s=u.length,m;f<s;++f)for(o=0,m=u[f];o<i;++o)if((a=n[o]).type===m.type&&a.name===m.name)return m.value}return}for(u=e?Pu:Hu,o=0;o<i;++o)this.each(u(n[o],e,r));return this}function oo(t,e,r){var n=De(t),o=n.CustomEvent;typeof o=="function"?o=new o(e,r):(o=n.document.createEvent("Event"),r?(o.initEvent(e,r.bubbles,r.cancelable),o.detail=r.detail):o.initEvent(e,!1,!1)),t.dispatchEvent(o)}function qu(t,e){return function(){return oo(this,t,e)}}function Bu(t,e){return function(){return oo(this,t,e.apply(this,arguments))}}function io(t,e){return this.each((typeof e=="function"?Bu:qu)(t,e))}function*ao(){for(var t=this._groups,e=0,r=t.length;e<r;++e)for(var n=t[e],o=0,i=n.length,a;o<i;++o)(a=n[o])&&(yield a)}var kr=[null];function E(t,e){this._groups=t,this._parents=e}function uo(){return new E([[document.documentElement]],kr)}function Wu(){return this}E.prototype=uo.prototype={constructor:E,select:_n,selectAll:bn,selectChild:Mn,selectChildren:Tn,filter:kn,data:An,enter:Sn,exit:Dn,join:Nn,merge:In,selection:Wu,order:En,sort:Fn,call:On,nodes:Un,node:$n,size:Yn,empty:zn,each:Rn,attr:Ln,style:Hn,property:Pn,classed:Vn,text:Zn,html:Gn,raise:Qn,lower:Kn,append:Jn,insert:jn,remove:to,clone:eo,datum:ro,on:no,dispatch:io,[Symbol.iterator]:ao};var nt=uo;function Xu(t){return typeof t=="string"?new E([[document.querySelector(t)]],[document.documentElement]):new E([[t]],kr)}function so(t){let e;for(;e=t.sourceEvent;)t=e;return t}function Vu(t,e){if(t=so(t),e===void 0&&(e=t.currentTarget),e){var r=e.ownerSVGElement||e;if(r.createSVGPoint){var n=r.createSVGPoint();return n.x=t.clientX,n.y=t.clientY,n=n.matrixTransform(e.getScreenCTM().inverse()),[n.x,n.y]}if(e.getBoundingClientRect){var o=e.getBoundingClientRect();return[t.clientX-o.left-e.clientLeft,t.clientY-o.top-e.clientTop]}}return[t.pageX,t.pageY]}function Ie(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function Sr(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function re(){}var te=.7,Oe=1/te,Yt="\\s*([+-]?\\d+)\\s*",ee="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",J="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Zu=/^#([0-9a-f]{3,8})$/,Gu=new RegExp(`^rgb\\(${Yt},${Yt},${Yt}\\)$`),Qu=new RegExp(`^rgb\\(${J},${J},${J}\\)$`),Ku=new RegExp(`^rgba\\(${Yt},${Yt},${Yt},${ee}\\)$`),Ju=new RegExp(`^rgba\\(${J},${J},${J},${ee}\\)$`),ju=new RegExp(`^hsl\\(${ee},${J},${J}\\)$`),ts=new RegExp(`^hsla\\(${ee},${J},${J},${ee}\\)$`),fo={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};Ie(re,G,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:lo,formatHex:lo,formatHex8:es,formatHsl:rs,formatRgb:co,toString:co});function lo(){return this.rgb().formatHex()}function es(){return this.rgb().formatHex8()}function rs(){return yo(this).formatHsl()}function co(){return this.rgb().formatRgb()}function G(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=Zu.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?mo(e):r===3?new P(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?Ee(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?Ee(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=Gu.exec(t))?new P(e[1],e[2],e[3],1):(e=Qu.exec(t))?new P(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Ku.exec(t))?Ee(e[1],e[2],e[3],e[4]):(e=Ju.exec(t))?Ee(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=ju.exec(t))?xo(e[1],e[2]/100,e[3]/100,1):(e=ts.exec(t))?xo(e[1],e[2]/100,e[3]/100,e[4]):fo.hasOwnProperty(t)?mo(fo[t]):t==="transparent"?new P(NaN,NaN,NaN,0):null}function mo(t){return new P(t>>16&255,t>>8&255,t&255,1)}function Ee(t,e,r,n){return n<=0&&(t=e=r=NaN),new P(t,e,r,n)}function ns(t){return t instanceof re||(t=G(t)),t?(t=t.rgb(),new P(t.r,t.g,t.b,t.opacity)):new P}function zt(t,e,r,n){return arguments.length===1?ns(t):new P(t,e,r,n??1)}function P(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}Ie(P,zt,Sr(re,{brighter(t){return t=t==null?Oe:Math.pow(Oe,t),new P(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?te:Math.pow(te,t),new P(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new P(bt(this.r),bt(this.g),bt(this.b),Ue(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:po,formatHex:po,formatHex8:os,formatRgb:ho,toString:ho}));function po(){return`#${_t(this.r)}${_t(this.g)}${_t(this.b)}`}function os(){return`#${_t(this.r)}${_t(this.g)}${_t(this.b)}${_t((isNaN(this.opacity)?1:this.opacity)*255)}`}function ho(){let t=Ue(this.opacity);return`${t===1?"rgb(":"rgba("}${bt(this.r)}, ${bt(this.g)}, ${bt(this.b)}${t===1?")":`, ${t})`}`}function Ue(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function bt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function _t(t){return t=bt(t),(t<16?"0":"")+t.toString(16)}function xo(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new Z(t,e,r,n)}function yo(t){if(t instanceof Z)return new Z(t.h,t.s,t.l,t.opacity);if(t instanceof re||(t=G(t)),!t)return new Z;if(t instanceof Z)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,o=Math.min(e,r,n),i=Math.max(e,r,n),a=NaN,u=i-o,f=(i+o)/2;return u?(e===i?a=(r-n)/u+(r<n)*6:r===i?a=(n-e)/u+2:a=(e-r)/u+4,u/=f<.5?i+o:2-i-o,a*=60):u=f>0&&f<1?0:a,new Z(a,u,f,t.opacity)}function vo(t,e,r,n){return arguments.length===1?yo(t):new Z(t,e,r,n??1)}function Z(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}Ie(Z,vo,Sr(re,{brighter(t){return t=t==null?Oe:Math.pow(Oe,t),new Z(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?te:Math.pow(te,t),new Z(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,r=this.l,n=r+(r<.5?r:1-r)*e,o=2*r-n;return new P(Cr(t>=240?t-240:t+120,o,n),Cr(t,o,n),Cr(t<120?t+240:t-120,o,n),this.opacity)},clamp(){return new Z(go(this.h),Fe(this.s),Fe(this.l),Ue(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(){let t=Ue(this.opacity);return`${t===1?"hsl(":"hsla("}${go(this.h)}, ${Fe(this.s)*100}%, ${Fe(this.l)*100}%${t===1?")":`, ${t})`}`}}));function go(t){return t=(t||0)%360,t<0?t+360:t}function Fe(t){return Math.max(0,Math.min(1,t||0))}function Cr(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}function Ar(t,e,r,n,o){var i=t*t,a=i*t;return((1-3*t+3*i-a)*e+(4-6*i+3*a)*r+(1+3*t+3*i-3*a)*n+a*o)/6}function wo(t){var e=t.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),o=t[n],i=t[n+1],a=n>0?t[n-1]:2*o-i,u=n<e-1?t[n+2]:2*i-o;return Ar((r-n/e)*e,a,o,i,u)}}function _o(t){var e=t.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*e),o=t[(n+e-1)%e],i=t[n%e],a=t[(n+1)%e],u=t[(n+2)%e];return Ar((r-n/e)*e,o,i,a,u)}}var ne=t=>()=>t;function is(t,e){return function(r){return t+r*e}}function as(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function bo(t){return(t=+t)==1?$e:function(e,r){return r-e?as(e,r,t):ne(isNaN(e)?r:e)}}function $e(t,e){var r=e-t;return r?is(t,r):ne(isNaN(t)?e:t)}var Mt=(function t(e){var r=bo(e);function n(o,i){var a=r((o=zt(o)).r,(i=zt(i)).r),u=r(o.g,i.g),f=r(o.b,i.b),s=$e(o.opacity,i.opacity);return function(m){return o.r=a(m),o.g=u(m),o.b=f(m),o.opacity=s(m),o+""}}return n.gamma=t,n})(1);function Mo(t){return function(e){var r=e.length,n=new Array(r),o=new Array(r),i=new Array(r),a,u;for(a=0;a<r;++a)u=zt(e[a]),n[a]=u.r||0,o[a]=u.g||0,i[a]=u.b||0;return n=t(n),o=t(o),i=t(i),u.opacity=1,function(f){return u.r=n(f),u.g=o(f),u.b=i(f),u+""}}}var us=Mo(wo),ss=Mo(_o);function To(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),o;return function(i){for(o=0;o<r;++o)n[o]=t[o]*(1-i)+e[o]*i;return n}}function ko(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function So(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,o=new Array(n),i=new Array(r),a;for(a=0;a<n;++a)o[a]=ot(t[a],e[a]);for(;a<r;++a)i[a]=e[a];return function(u){for(a=0;a<n;++a)i[a]=o[a](u);return i}}function Co(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}function z(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}function Ao(t,e){var r={},n={},o;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(o in e)o in t?r[o]=ot(t[o],e[o]):n[o]=e[o];return function(i){for(o in r)n[o]=r[o](i);return n}}var Nr=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Dr=new RegExp(Nr.source,"g");function fs(t){return function(){return t}}function ls(t){return function(e){return t(e)+""}}function oe(t,e){var r=Nr.lastIndex=Dr.lastIndex=0,n,o,i,a=-1,u=[],f=[];for(t=t+"",e=e+"";(n=Nr.exec(t))&&(o=Dr.exec(e));)(i=o.index)>r&&(i=e.slice(r,i),u[a]?u[a]+=i:u[++a]=i),(n=n[0])===(o=o[0])?u[a]?u[a]+=o:u[++a]=o:(u[++a]=null,f.push({i:a,x:z(n,o)})),r=Dr.lastIndex;return r<e.length&&(i=e.slice(r),u[a]?u[a]+=i:u[++a]=i),u.length<2?f[0]?ls(f[0].x):fs(e):(e=f.length,function(s){for(var m=0,c;m<e;++m)u[(c=f[m]).i]=c.x(s);return u.join("")})}function ot(t,e){var r=typeof e,n;return e==null||r==="boolean"?ne(e):(r==="number"?z:r==="string"?(n=G(e))?(e=n,Mt):oe:e instanceof G?Mt:e instanceof Date?Co:ko(e)?To:Array.isArray(e)?So:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Ao:z)(t,e)}function ie(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var Do=180/Math.PI,Ye={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Ir(t,e,r,n,o,i){var a,u,f;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(f=t*r+e*n)&&(r-=t*f,n-=e*f),(u=Math.sqrt(r*r+n*n))&&(r/=u,n/=u,f/=u),t*n<e*r&&(t=-t,e=-e,f=-f,a=-a),{translateX:o,translateY:i,rotate:Math.atan2(e,t)*Do,skewX:Math.atan(f)*Do,scaleX:a,scaleY:u}}var ze;function No(t){let e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Ye:Ir(e.a,e.b,e.c,e.d,e.e,e.f)}function Io(t){return t==null?Ye:(ze||(ze=document.createElementNS("http://www.w3.org/2000/svg","g")),ze.setAttribute("transform",t),(t=ze.transform.baseVal.consolidate())?(t=t.matrix,Ir(t.a,t.b,t.c,t.d,t.e,t.f)):Ye)}function Eo(t,e,r,n){function o(s){return s.length?s.pop()+" ":""}function i(s,m,c,l,p,d){if(s!==c||m!==l){var v=p.push("translate(",null,e,null,r);d.push({i:v-4,x:z(s,c)},{i:v-2,x:z(m,l)})}else(c||l)&&p.push("translate("+c+e+l+r)}function a(s,m,c,l){s!==m?(s-m>180?m+=360:m-s>180&&(s+=360),l.push({i:c.push(o(c)+"rotate(",null,n)-2,x:z(s,m)})):m&&c.push(o(c)+"rotate("+m+n)}function u(s,m,c,l){s!==m?l.push({i:c.push(o(c)+"skewX(",null,n)-2,x:z(s,m)}):m&&c.push(o(c)+"skewX("+m+n)}function f(s,m,c,l,p,d){if(s!==c||m!==l){var v=p.push(o(p)+"scale(",null,",",null,")");d.push({i:v-4,x:z(s,c)},{i:v-2,x:z(m,l)})}else(c!==1||l!==1)&&p.push(o(p)+"scale("+c+","+l+")")}return function(s,m){var c=[],l=[];return s=t(s),m=t(m),i(s.translateX,s.translateY,m.translateX,m.translateY,c,l),a(s.rotate,m.rotate,c,l),u(s.skewX,m.skewX,c,l),f(s.scaleX,s.scaleY,m.scaleX,m.scaleY,c,l),s=m=null,function(p){for(var d=-1,v=l.length,y;++d<v;)c[(y=l[d]).i]=y.x(p);return c.join("")}}}var Er=Eo(No,"px, ","px)","deg)"),Fr=Eo(Io,", ",")",")");function Fo(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Tt(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}function j(t){return t=Tt(Math.abs(t)),t?t[1]:NaN}function Oo(t,e){return function(r,n){for(var o=r.length,i=[],a=0,u=t[0],f=0;o>0&&u>0&&(f+u+1>n&&(u=Math.max(1,n-f)),i.push(r.substring(o-=u,o+u)),!((f+=u+1)>n));)u=t[a=(a+1)%t.length];return i.reverse().join(e)}}function Uo(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var cs=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function mt(t){if(!(e=cs.exec(t)))throw new Error("invalid format: "+t);var e;return new Re({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}mt.prototype=Re.prototype;function Re(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}Re.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function $o(t){t:for(var e=t.length,r=1,n=-1,o;r<e;++r)switch(t[r]){case".":n=o=r;break;case"0":n===0&&(n=r),o=r;break;default:if(!+t[r])break t;n>0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(o+1):t}var Or;function Yo(t,e){var r=Tt(t,e);if(!r)return t+"";var n=r[0],o=r[1],i=o-(Or=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,a=n.length;return i===a?n:i>a?n+new Array(i-a+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+Tt(t,Math.max(0,e+i-1))[0]}function Ur(t,e){var r=Tt(t,e);if(!r)return t+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}var $r={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Fo,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Ur(t*100,e),r:Ur,s:Yo,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Yr(t){return t}var zo=Array.prototype.map,Ro=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Lo(t){var e=t.grouping===void 0||t.thousands===void 0?Yr:Oo(zo.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",o=t.decimal===void 0?".":t.decimal+"",i=t.numerals===void 0?Yr:Uo(zo.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",u=t.minus===void 0?"\u2212":t.minus+"",f=t.nan===void 0?"NaN":t.nan+"";function s(c){c=mt(c);var l=c.fill,p=c.align,d=c.sign,v=c.symbol,y=c.zero,_=c.width,A=c.comma,b=c.precision,T=c.trim,k=c.type;k==="n"?(A=!0,k="g"):$r[k]||(b===void 0&&(b=12),T=!0,k="g"),(y||l==="0"&&p==="=")&&(y=!0,l="0",p="=");var g=v==="$"?r:v==="#"&&/[boxX]/.test(k)?"0"+k.toLowerCase():"",N=v==="$"?n:/[%p]/.test(k)?a:"",X=$r[k],ft=/[defgprs%]/.test(k);b=b===void 0?6:/[gprs]/.test(k)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b));function K(w){var $=g,O=N,lt,be,Ft;if(k==="c")O=X(w)+O,w="";else{w=+w;var Ot=w<0||1/w<0;if(w=isNaN(w)?f:X(Math.abs(w),b),T&&(w=$o(w)),Ot&&+w==0&&d!=="+"&&(Ot=!1),$=(Ot?d==="("?d:u:d==="-"||d==="("?"":d)+$,O=(k==="s"?Ro[8+Or/3]:"")+O+(Ot&&d==="("?")":""),ft){for(lt=-1,be=w.length;++lt<be;)if(Ft=w.charCodeAt(lt),48>Ft||Ft>57){O=(Ft===46?o+w.slice(lt+1):w.slice(lt))+O,w=w.slice(0,lt);break}}}A&&!y&&(w=e(w,1/0));var Ut=$.length+w.length+O.length,V=Ut<_?new Array(_-Ut+1).join(l):"";switch(A&&y&&(w=e(V+w,V.length?_-O.length:1/0),V=""),p){case"<":w=$+w+O+V;break;case"=":w=$+V+w+O;break;case"^":w=V.slice(0,Ut=V.length>>1)+$+w+O+V.slice(Ut);break;default:w=V+$+w+O;break}return i(w)}return K.toString=function(){return c+""},K}function m(c,l){var p=s((c=mt(c),c.type="f",c)),d=Math.max(-8,Math.min(8,Math.floor(j(l)/3)))*3,v=Math.pow(10,-d),y=Ro[8+d/3];return function(_){return p(v*_)+y}}return{format:s,formatPrefix:m}}var Le,He,Pe;zr({thousands:",",grouping:[3],currency:["$",""]});function zr(t){return Le=Lo(t),He=Le.format,Pe=Le.formatPrefix,Le}function Rr(t){return Math.max(0,-j(Math.abs(t)))}function Lr(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(j(e)/3)))*3-j(Math.abs(t)))}function Hr(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,j(e)-j(t))+1}function ms(t){var e=0,r=t.children,n=r&&r.length;if(!n)e=1;else for(;--n>=0;)e+=r[n].value;t.value=e}function Ho(){return this.eachAfter(ms)}function Po(t,e){let r=-1;for(let n of this)t.call(e,n,++r,this);return this}function qo(t,e){for(var r=this,n=[r],o,i,a=-1;r=n.pop();)if(t.call(e,r,++a,this),o=r.children)for(i=o.length-1;i>=0;--i)n.push(o[i]);return this}function Bo(t,e){for(var r=this,n=[r],o=[],i,a,u,f=-1;r=n.pop();)if(o.push(r),i=r.children)for(a=0,u=i.length;a<u;++a)n.push(i[a]);for(;r=o.pop();)t.call(e,r,++f,this);return this}function Wo(t,e){let r=-1;for(let n of this)if(t.call(e,n,++r,this))return n}function Xo(t){return this.eachAfter(function(e){for(var r=+t(e.data)||0,n=e.children,o=n&&n.length;--o>=0;)r+=n[o].value;e.value=r})}function Vo(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}function Zo(t){for(var e=this,r=ps(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var o=n.length;t!==r;)n.splice(o,0,t),t=t.parent;return n}function ps(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),o=null;for(t=r.pop(),e=n.pop();t===e;)o=t,t=r.pop(),e=n.pop();return o}function Go(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}function Qo(){return Array.from(this)}function Ko(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}function Jo(){var t=this,e=[];return t.each(function(r){r!==t&&e.push({source:r.parent,target:r})}),e}function*jo(){var t=this,e,r=[t],n,o,i;do for(e=r.reverse(),r=[];t=e.pop();)if(yield t,n=t.children)for(o=0,i=n.length;o<i;++o)r.push(n[o]);while(r.length)}function qe(t,e){t instanceof Map?(t=[void 0,t],e===void 0&&(e=xs)):e===void 0&&(e=ds);for(var r=new ae(t),n,o=[r],i,a,u,f;n=o.pop();)if((a=e(n.data))&&(f=(a=Array.from(a)).length))for(n.children=a,u=f-1;u>=0;--u)o.push(i=a[u]=new ae(a[u])),i.parent=n,i.depth=n.depth+1;return r.eachBefore(ys)}function hs(){return qe(this).eachBefore(gs)}function ds(t){return t.children}function xs(t){return Array.isArray(t)?t[1]:null}function gs(t){t.data.value!==void 0&&(t.value=t.data.value),t.data=t.data.data}function ys(t){var e=0;do t.height=e;while((t=t.parent)&&t.height<++e)}function ae(t){this.data=t,this.depth=this.height=0,this.parent=null}ae.prototype=qe.prototype={constructor:ae,count:Ho,each:Po,eachAfter:Bo,eachBefore:qo,find:Wo,sum:Xo,sort:Vo,path:Zo,ancestors:Go,descendants:Qo,leaves:Ko,links:Jo,copy:hs,[Symbol.iterator]:jo};function ti(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function ei(t,e,r,n,o){for(var i=t.children,a,u=-1,f=i.length,s=t.value&&(n-e)/t.value;++u<f;)a=i[u],a.y0=r,a.y1=o,a.x0=e,a.x1=e+=a.value*s}function ri(t,e,r,n,o){for(var i=t.children,a,u=-1,f=i.length,s=t.value&&(o-r)/t.value;++u<f;)a=i[u],a.x0=e,a.x1=n,a.y0=r,a.y1=r+=a.value*s}var vs=(1+Math.sqrt(5))/2;function ws(t,e,r,n,o,i){for(var a=[],u=e.children,f,s,m=0,c=0,l=u.length,p,d,v=e.value,y,_,A,b,T,k,g;m<l;){p=o-r,d=i-n;do y=u[c++].value;while(!y&&c<l);for(_=A=y,k=Math.max(d/p,p/d)/(v*t),g=y*y*k,T=Math.max(A/g,g/_);c<l;++c){if(y+=s=u[c].value,s<_&&(_=s),s>A&&(A=s),g=y*y*k,b=Math.max(A/g,g/_),b>T){y-=s;break}T=b}a.push(f={value:y,dice:p<d,children:u.slice(m,c)}),f.dice?ei(f,r,n,o,v?n+=d*y/v:i):ri(f,r,n,v?r+=p*y/v:o,i),v-=y,m=c}return a}var ni=(function t(e){function r(n,o,i,a,u){ws(e,n,o,i,a,u)}return r.ratio=function(n){return t((n=+n)>1?n:1)},r})(vs);function oi(t){if(typeof t!="function")throw new Error;return t}function Rt(){return 0}function Lt(t){return function(){return t}}function _s(){var t=ni,e=!1,r=1,n=1,o=[0],i=Rt,a=Rt,u=Rt,f=Rt,s=Rt;function m(l){return l.x0=l.y0=0,l.x1=r,l.y1=n,l.eachBefore(c),o=[0],e&&l.eachBefore(ti),l}function c(l){var p=o[l.depth],d=l.x0+p,v=l.y0+p,y=l.x1-p,_=l.y1-p;y<d&&(d=y=(d+y)/2),_<v&&(v=_=(v+_)/2),l.x0=d,l.y0=v,l.x1=y,l.y1=_,l.children&&(p=o[l.depth+1]=i(l)/2,d+=s(l)-p,v+=a(l)-p,y-=u(l)-p,_-=f(l)-p,y<d&&(d=y=(d+y)/2),_<v&&(v=_=(v+_)/2),t(l,d,v,y,_))}return m.round=function(l){return arguments.length?(e=!!l,m):e},m.size=function(l){return arguments.length?(r=+l[0],n=+l[1],m):[r,n]},m.tile=function(l){return arguments.length?(t=oi(l),m):t},m.padding=function(l){return arguments.length?m.paddingInner(l).paddingOuter(l):m.paddingInner()},m.paddingInner=function(l){return arguments.length?(i=typeof l=="function"?l:Lt(+l),m):i},m.paddingOuter=function(l){return arguments.length?m.paddingTop(l).paddingRight(l).paddingBottom(l).paddingLeft(l):m.paddingTop()},m.paddingTop=function(l){return arguments.length?(a=typeof l=="function"?l:Lt(+l),m):a},m.paddingRight=function(l){return arguments.length?(u=typeof l=="function"?l:Lt(+l),m):u},m.paddingBottom=function(l){return arguments.length?(f=typeof l=="function"?l:Lt(+l),m):f},m.paddingLeft=function(l){return arguments.length?(s=typeof l=="function"?l:Lt(+l),m):s},m}function Pr(t){return function(){return t}}function qr(t){return+t}var ii=[0,1];function it(t){return t}function Br(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:Pr(isNaN(e)?NaN:.5)}function bs(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function Ms(t,e,r){var n=t[0],o=t[1],i=e[0],a=e[1];return o<n?(n=Br(o,n),i=r(a,i)):(n=Br(n,o),i=r(i,a)),function(u){return i(n(u))}}function Ts(t,e,r){var n=Math.min(t.length,e.length)-1,o=new Array(n),i=new Array(n),a=-1;for(t[n]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<n;)o[a]=Br(t[a],t[a+1]),i[a]=r(e[a],e[a+1]);return function(u){var f=yr(t,u,1,n)-1;return i[f](o[f](u))}}function Be(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function ks(){var t=ii,e=ii,r=ot,n,o,i,a=it,u,f,s;function m(){var l=Math.min(t.length,e.length);return a!==it&&(a=bs(t[0],t[l-1])),u=l>2?Ts:Ms,f=s=null,c}function c(l){return l==null||isNaN(l=+l)?i:(f||(f=u(t.map(n),e,r)))(n(a(l)))}return c.invert=function(l){return a(o((s||(s=u(e,t.map(n),z)))(l)))},c.domain=function(l){return arguments.length?(t=Array.from(l,qr),m()):t.slice()},c.range=function(l){return arguments.length?(e=Array.from(l),m()):e.slice()},c.rangeRound=function(l){return e=Array.from(l),r=ie,m()},c.clamp=function(l){return arguments.length?(a=l?!0:it,m()):a!==it},c.interpolate=function(l){return arguments.length?(r=l,m()):r},c.unknown=function(l){return arguments.length?(i=l,c):i},function(l,p){return n=l,o=p,m()}}function ue(){return ks()(it,it)}function We(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function ai(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}function Wr(t,e,r,n){var o=$t(t,e,r),i;switch(n=mt(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(i=Lr(o,a))&&(n.precision=i),Pe(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=Hr(o,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=Rr(o))&&(n.precision=i-(n.type==="%")*2);break}}return He(n)}function Xr(t){var e=t.domain;return t.ticks=function(r){var n=e();return Te(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var o=e();return Wr(o[0],o[o.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),o=0,i=n.length-1,a=n[o],u=n[i],f,s,m=10;for(u<a&&(s=a,a=u,u=s,s=o,o=i,i=s);m-- >0;){if(s=Gt(a,u,r),s===f)return n[o]=a,n[i]=u,e(n);if(s>0)a=Math.floor(a/s)*s,u=Math.ceil(u/s)*s;else if(s<0)a=Math.ceil(a*s)/s,u=Math.floor(u*s)/s;else break;f=s}return t},t}function Vr(){var t=ue();return t.copy=function(){return Be(t,Vr())},We.apply(t,arguments),Xr(t)}var Zr=new Date,Gr=new Date;function D(t,e,r,n){function o(i){return t(i=arguments.length===0?new Date:new Date(+i)),i}return o.floor=i=>(t(i=new Date(+i)),i),o.ceil=i=>(t(i=new Date(i-1)),e(i,1),t(i),i),o.round=i=>{let a=o(i),u=o.ceil(i);return i-a<u-i?a:u},o.offset=(i,a)=>(e(i=new Date(+i),a==null?1:Math.floor(a)),i),o.range=(i,a,u)=>{let f=[];if(i=o.ceil(i),u=u==null?1:Math.floor(u),!(i<a)||!(u>0))return f;let s;do f.push(s=new Date(+i)),e(i,u),t(i);while(s<i&&i<a);return f},o.filter=i=>D(a=>{if(a>=a)for(;t(a),!i(a);)a.setTime(a-1)},(a,u)=>{if(a>=a)if(u<0)for(;++u<=0;)for(;e(a,-1),!i(a););else for(;--u>=0;)for(;e(a,1),!i(a););}),r&&(o.count=(i,a)=>(Zr.setTime(+i),Gr.setTime(+a),t(Zr),t(Gr),Math.floor(r(Zr,Gr))),o.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?o.filter(n?a=>n(a)%i===0:a=>o.count(0,a)%i===0):o)),o}var se=D(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);se.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?D(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):se);var b0=se.range;var tt=D(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),ui=tt.range;var Ht=D(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),Ss=Ht.range,Xe=D(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),Cs=Xe.range;var Pt=D(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),As=Pt.range,Ve=D(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),Ds=Ve.range;var at=D(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),Ns=at.range,le=D(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),Is=le.range,Ze=D(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),Es=Ze.range;function Ct(t){return D(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}var ut=Ct(0),qt=Ct(1),fi=Ct(2),li=Ct(3),pt=Ct(4),ci=Ct(5),mi=Ct(6),pi=ut.range,Fs=qt.range,Os=fi.range,Us=li.range,$s=pt.range,Ys=ci.range,zs=mi.range;function At(t){return D(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/6048e5)}var Dt=At(0),Bt=At(1),hi=At(2),di=At(3),ht=At(4),xi=At(5),gi=At(6),yi=Dt.range,Rs=Bt.range,Ls=hi.range,Hs=di.range,Ps=ht.range,qs=xi.range,Bs=gi.range;var Wt=D(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),Ws=Wt.range,Ge=D(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),Xs=Ge.range;var W=D(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());W.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:D(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});var Vs=W.range,Q=D(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());Q.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:D(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});var Zs=Q.range;function wi(t,e,r,n,o,i){let a=[[tt,1,1e3],[tt,5,5*1e3],[tt,15,15*1e3],[tt,30,30*1e3],[i,1,6e4],[i,5,5*6e4],[i,15,15*6e4],[i,30,30*6e4],[o,1,36e5],[o,3,3*36e5],[o,6,6*36e5],[o,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function u(s,m,c){let l=m<s;l&&([s,m]=[m,s]);let p=c&&typeof c.range=="function"?c:f(s,m,c),d=p?p.range(s,+m+1):[];return l?d.reverse():d}function f(s,m,c){let l=Math.abs(m-s)/c,p=vt(([,,y])=>y).right(a,l);if(p===a.length)return t.every($t(s/31536e6,m/31536e6,c));if(p===0)return se.every(Math.max($t(s,m,c),1));let[d,v]=a[l/a[p-1][2]<a[p][2]/l?p-1:p];return d.every(v)}return[u,f]}var[Qs,Ks]=wi(Q,Ge,Dt,Ze,Ve,Xe),[Qr,Kr]=wi(W,Wt,ut,at,Pt,Ht);function Jr(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function jr(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function ce(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function tn(t){var e=t.dateTime,r=t.date,n=t.time,o=t.periods,i=t.days,a=t.shortDays,u=t.months,f=t.shortMonths,s=me(o),m=pe(o),c=me(i),l=pe(i),p=me(a),d=pe(a),v=me(u),y=pe(u),_=me(f),A=pe(f),b={a:Ot,A:Ut,b:V,B:Ca,c:null,d:Si,e:Si,f:_f,g:If,G:Ff,H:yf,I:vf,j:wf,L:Ii,m:bf,M:Mf,p:Aa,q:Da,Q:Di,s:Ni,S:Tf,u:kf,U:Sf,V:Cf,w:Af,W:Df,x:null,X:null,y:Nf,Y:Ef,Z:Of,"%":Ai},T={a:Na,A:Ia,b:Ea,B:Fa,c:null,d:Ci,e:Ci,f:zf,g:Zf,G:Qf,H:Uf,I:$f,j:Yf,L:Fi,m:Rf,M:Lf,p:Oa,q:Ua,Q:Di,s:Ni,S:Hf,u:Pf,U:qf,V:Bf,w:Wf,W:Xf,x:null,X:null,y:Vf,Y:Gf,Z:Kf,"%":Ai},k={a:K,A:w,b:$,B:O,c:lt,d:Ti,e:Ti,f:hf,g:Mi,G:bi,H:ki,I:ki,j:lf,L:pf,m:ff,M:cf,p:ft,q:sf,Q:xf,s:gf,S:mf,u:rf,U:nf,V:of,w:ef,W:af,x:be,X:Ft,y:Mi,Y:bi,Z:uf,"%":df};b.x=g(r,b),b.X=g(n,b),b.c=g(e,b),T.x=g(r,T),T.X=g(n,T),T.c=g(e,T);function g(x,M){return function(S){var h=[],H=-1,I=0,q=x.length,B,gt,hn;for(S instanceof Date||(S=new Date(+S));++H<q;)x.charCodeAt(H)===37&&(h.push(x.slice(I,H)),(gt=_i[B=x.charAt(++H)])!=null?B=x.charAt(++H):gt=B==="e"?" ":"0",(hn=M[B])&&(B=hn(S,gt)),h.push(B),I=H+1);return h.push(x.slice(I,H)),h.join("")}}function N(x,M){return function(S){var h=ce(1900,void 0,1),H=X(h,x,S+="",0),I,q;if(H!=S.length)return null;if("Q"in h)return new Date(h.Q);if("s"in h)return new Date(h.s*1e3+("L"in h?h.L:0));if(M&&!("Z"in h)&&(h.Z=0),"p"in h&&(h.H=h.H%12+h.p*12),h.m===void 0&&(h.m="q"in h?h.q:0),"V"in h){if(h.V<1||h.V>53)return null;"w"in h||(h.w=1),"Z"in h?(I=jr(ce(h.y,0,1)),q=I.getUTCDay(),I=q>4||q===0?Bt.ceil(I):Bt(I),I=le.offset(I,(h.V-1)*7),h.y=I.getUTCFullYear(),h.m=I.getUTCMonth(),h.d=I.getUTCDate()+(h.w+6)%7):(I=Jr(ce(h.y,0,1)),q=I.getDay(),I=q>4||q===0?qt.ceil(I):qt(I),I=at.offset(I,(h.V-1)*7),h.y=I.getFullYear(),h.m=I.getMonth(),h.d=I.getDate()+(h.w+6)%7)}else("W"in h||"U"in h)&&("w"in h||(h.w="u"in h?h.u%7:"W"in h?1:0),q="Z"in h?jr(ce(h.y,0,1)).getUTCDay():Jr(ce(h.y,0,1)).getDay(),h.m=0,h.d="W"in h?(h.w+6)%7+h.W*7-(q+5)%7:h.w+h.U*7-(q+6)%7);return"Z"in h?(h.H+=h.Z/100|0,h.M+=h.Z%100,jr(h)):Jr(h)}}function X(x,M,S,h){for(var H=0,I=M.length,q=S.length,B,gt;H<I;){if(h>=q)return-1;if(B=M.charCodeAt(H++),B===37){if(B=M.charAt(H++),gt=k[B in _i?M.charAt(H++):B],!gt||(h=gt(x,S,h))<0)return-1}else if(B!=S.charCodeAt(h++))return-1}return h}function ft(x,M,S){var h=s.exec(M.slice(S));return h?(x.p=m.get(h[0].toLowerCase()),S+h[0].length):-1}function K(x,M,S){var h=p.exec(M.slice(S));return h?(x.w=d.get(h[0].toLowerCase()),S+h[0].length):-1}function w(x,M,S){var h=c.exec(M.slice(S));return h?(x.w=l.get(h[0].toLowerCase()),S+h[0].length):-1}function $(x,M,S){var h=_.exec(M.slice(S));return h?(x.m=A.get(h[0].toLowerCase()),S+h[0].length):-1}function O(x,M,S){var h=v.exec(M.slice(S));return h?(x.m=y.get(h[0].toLowerCase()),S+h[0].length):-1}function lt(x,M,S){return X(x,e,M,S)}function be(x,M,S){return X(x,r,M,S)}function Ft(x,M,S){return X(x,n,M,S)}function Ot(x){return a[x.getDay()]}function Ut(x){return i[x.getDay()]}function V(x){return f[x.getMonth()]}function Ca(x){return u[x.getMonth()]}function Aa(x){return o[+(x.getHours()>=12)]}function Da(x){return 1+~~(x.getMonth()/3)}function Na(x){return a[x.getUTCDay()]}function Ia(x){return i[x.getUTCDay()]}function Ea(x){return f[x.getUTCMonth()]}function Fa(x){return u[x.getUTCMonth()]}function Oa(x){return o[+(x.getUTCHours()>=12)]}function Ua(x){return 1+~~(x.getUTCMonth()/3)}return{format:function(x){var M=g(x+="",b);return M.toString=function(){return x},M},parse:function(x){var M=N(x+="",!1);return M.toString=function(){return x},M},utcFormat:function(x){var M=g(x+="",T);return M.toString=function(){return x},M},utcParse:function(x){var M=N(x+="",!0);return M.toString=function(){return x},M}}}var _i={"-":"",_:" ",0:"0"},Y=/^\s*\d+/,Js=/^%/,js=/[\\^$*+?|[\]().{}]/g;function C(t,e,r){var n=t<0?"-":"",o=(n?-t:t)+"",i=o.length;return n+(i<r?new Array(r-i+1).join(e)+o:o)}function tf(t){return t.replace(js,"\\$&")}function me(t){return new RegExp("^(?:"+t.map(tf).join("|")+")","i")}function pe(t){return new Map(t.map((e,r)=>[e.toLowerCase(),r]))}function ef(t,e,r){var n=Y.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function rf(t,e,r){var n=Y.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function nf(t,e,r){var n=Y.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function of(t,e,r){var n=Y.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function af(t,e,r){var n=Y.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function bi(t,e,r){var n=Y.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function Mi(t,e,r){var n=Y.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function uf(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function sf(t,e,r){var n=Y.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function ff(t,e,r){var n=Y.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function Ti(t,e,r){var n=Y.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function lf(t,e,r){var n=Y.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function ki(t,e,r){var n=Y.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function cf(t,e,r){var n=Y.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function mf(t,e,r){var n=Y.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function pf(t,e,r){var n=Y.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function hf(t,e,r){var n=Y.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function df(t,e,r){var n=Js.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function xf(t,e,r){var n=Y.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function gf(t,e,r){var n=Y.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function Si(t,e){return C(t.getDate(),e,2)}function yf(t,e){return C(t.getHours(),e,2)}function vf(t,e){return C(t.getHours()%12||12,e,2)}function wf(t,e){return C(1+at.count(W(t),t),e,3)}function Ii(t,e){return C(t.getMilliseconds(),e,3)}function _f(t,e){return Ii(t,e)+"000"}function bf(t,e){return C(t.getMonth()+1,e,2)}function Mf(t,e){return C(t.getMinutes(),e,2)}function Tf(t,e){return C(t.getSeconds(),e,2)}function kf(t){var e=t.getDay();return e===0?7:e}function Sf(t,e){return C(ut.count(W(t)-1,t),e,2)}function Ei(t){var e=t.getDay();return e>=4||e===0?pt(t):pt.ceil(t)}function Cf(t,e){return t=Ei(t),C(pt.count(W(t),t)+(W(t).getDay()===4),e,2)}function Af(t){return t.getDay()}function Df(t,e){return C(qt.count(W(t)-1,t),e,2)}function Nf(t,e){return C(t.getFullYear()%100,e,2)}function If(t,e){return t=Ei(t),C(t.getFullYear()%100,e,2)}function Ef(t,e){return C(t.getFullYear()%1e4,e,4)}function Ff(t,e){var r=t.getDay();return t=r>=4||r===0?pt(t):pt.ceil(t),C(t.getFullYear()%1e4,e,4)}function Of(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+C(e/60|0,"0",2)+C(e%60,"0",2)}function Ci(t,e){return C(t.getUTCDate(),e,2)}function Uf(t,e){return C(t.getUTCHours(),e,2)}function $f(t,e){return C(t.getUTCHours()%12||12,e,2)}function Yf(t,e){return C(1+le.count(Q(t),t),e,3)}function Fi(t,e){return C(t.getUTCMilliseconds(),e,3)}function zf(t,e){return Fi(t,e)+"000"}function Rf(t,e){return C(t.getUTCMonth()+1,e,2)}function Lf(t,e){return C(t.getUTCMinutes(),e,2)}function Hf(t,e){return C(t.getUTCSeconds(),e,2)}function Pf(t){var e=t.getUTCDay();return e===0?7:e}function qf(t,e){return C(Dt.count(Q(t)-1,t),e,2)}function Oi(t){var e=t.getUTCDay();return e>=4||e===0?ht(t):ht.ceil(t)}function Bf(t,e){return t=Oi(t),C(ht.count(Q(t),t)+(Q(t).getUTCDay()===4),e,2)}function Wf(t){return t.getUTCDay()}function Xf(t,e){return C(Bt.count(Q(t)-1,t),e,2)}function Vf(t,e){return C(t.getUTCFullYear()%100,e,2)}function Zf(t,e){return t=Oi(t),C(t.getUTCFullYear()%100,e,2)}function Gf(t,e){return C(t.getUTCFullYear()%1e4,e,4)}function Qf(t,e){var r=t.getUTCDay();return t=r>=4||r===0?ht(t):ht.ceil(t),C(t.getUTCFullYear()%1e4,e,4)}function Kf(){return"+0000"}function Ai(){return"%"}function Di(t){return+t}function Ni(t){return Math.floor(+t/1e3)}var Xt,Qe,Ui,$i,Yi;en({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function en(t){return Xt=tn(t),Qe=Xt.format,Ui=Xt.parse,$i=Xt.utcFormat,Yi=Xt.utcParse,Xt}function rn(t,e){t=t.slice();var r=0,n=t.length-1,o=t[r],i=t[n],a;return i<o&&(a=r,r=n,n=a,a=o,o=i,i=a),t[r]=e.floor(o),t[n]=e.ceil(i),t}function Jf(t){return new Date(t)}function jf(t){return t instanceof Date?+t:+new Date(+t)}function zi(t,e,r,n,o,i,a,u,f,s){var m=ue(),c=m.invert,l=m.domain,p=s(".%L"),d=s(":%S"),v=s("%I:%M"),y=s("%I %p"),_=s("%a %d"),A=s("%b %d"),b=s("%B"),T=s("%Y");function k(g){return(f(g)<g?p:u(g)<g?d:a(g)<g?v:i(g)<g?y:n(g)<g?o(g)<g?_:A:r(g)<g?b:T)(g)}return m.invert=function(g){return new Date(c(g))},m.domain=function(g){return arguments.length?l(Array.from(g,jf)):l().map(Jf)},m.ticks=function(g){var N=l();return t(N[0],N[N.length-1],g??10)},m.tickFormat=function(g,N){return N==null?k:s(N)},m.nice=function(g){var N=l();return(!g||typeof g.range!="function")&&(g=e(N[0],N[N.length-1],g??10)),g?l(rn(N,g)):m},m.copy=function(){return Be(m,zi(t,e,r,n,o,i,a,u,f,s))},m}function Ri(){return We.apply(zi(Qr,Kr,W,Wt,ut,at,Pt,Ht,tt,Qe).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function tl(){var t=0,e=1,r,n,o,i,a=it,u=!1,f;function s(c){return c==null||isNaN(c=+c)?f:a(o===0?.5:(c=(i(c)-r)*o,u?Math.max(0,Math.min(1,c)):c))}s.domain=function(c){return arguments.length?([t,e]=c,r=i(t=+t),n=i(e=+e),o=r===n?0:1/(n-r),s):[t,e]},s.clamp=function(c){return arguments.length?(u=!!c,s):u},s.interpolator=function(c){return arguments.length?(a=c,s):a};function m(c){return function(l){var p,d;return arguments.length?([p,d]=l,a=c(p,d),s):[a(0),a(1)]}}return s.range=m(ot),s.rangeRound=m(ie),s.unknown=function(c){return arguments.length?(f=c,s):f},function(c){return i=c,r=c(t),n=c(e),o=r===n?0:1/(n-r),s}}function el(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function nn(){var t=Xr(tl()(it));return t.copy=function(){return el(t,nn())},ai.apply(t,arguments)}var Dx=Array.prototype.slice;function Ke(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function F(t){return function(){return t}}function Li(t){this._context=t}Li.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function Je(t){return new Li(t)}var on=Math.PI,an=2*on,Nt=1e-6,rl=an-Nt;function Hi(t){this._+=t[0];for(let e=1,r=t.length;e<r;++e)this._+=arguments[e]+t[e]}function nl(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Hi;let r=10**e;return function(n){this._+=n[0];for(let o=1,i=n.length;o<i;++o)this._+=Math.round(arguments[o]*r)/r+n[o]}}var It=class{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?Hi:nl(e)}moveTo(e,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,r){this._append`L${this._x1=+e},${this._y1=+r}`}quadraticCurveTo(e,r,n,o){this._append`Q${+e},${+r},${this._x1=+n},${this._y1=+o}`}bezierCurveTo(e,r,n,o,i,a){this._append`C${+e},${+r},${+n},${+o},${this._x1=+i},${this._y1=+a}`}arcTo(e,r,n,o,i){if(e=+e,r=+r,n=+n,o=+o,i=+i,i<0)throw new Error(`negative radius: ${i}`);let a=this._x1,u=this._y1,f=n-e,s=o-r,m=a-e,c=u-r,l=m*m+c*c;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(l>Nt)if(!(Math.abs(c*f-s*m)>Nt)||!i)this._append`L${this._x1=e},${this._y1=r}`;else{let p=n-a,d=o-u,v=f*f+s*s,y=p*p+d*d,_=Math.sqrt(v),A=Math.sqrt(l),b=i*Math.tan((on-Math.acos((v+l-y)/(2*_*A)))/2),T=b/A,k=b/_;Math.abs(T-1)>Nt&&this._append`L${e+T*m},${r+T*c}`,this._append`A${i},${i},0,0,${+(c*p>m*d)},${this._x1=e+k*f},${this._y1=r+k*s}`}}arc(e,r,n,o,i,a){if(e=+e,r=+r,n=+n,a=!!a,n<0)throw new Error(`negative radius: ${n}`);let u=n*Math.cos(o),f=n*Math.sin(o),s=e+u,m=r+f,c=1^a,l=a?o-i:i-o;this._x1===null?this._append`M${s},${m}`:(Math.abs(this._x1-s)>Nt||Math.abs(this._y1-m)>Nt)&&this._append`L${s},${m}`,n&&(l<0&&(l=l%an+an),l>rl?this._append`A${n},${n},0,1,${c},${e-u},${r-f}A${n},${n},0,1,${c},${this._x1=s},${this._y1=m}`:l>Nt&&this._append`A${n},${n},0,${+(l>=on)},${c},${this._x1=e+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(e,r,n,o){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}};function Pi(){return new It}Pi.prototype=It.prototype;function je(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);e=n}return t},()=>new It(e)}function tr(t){return t[0]}function er(t){return t[1]}function un(t,e){var r=F(!0),n=null,o=Je,i=null,a=je(u);t=typeof t=="function"?t:t===void 0?tr:F(t),e=typeof e=="function"?e:e===void 0?er:F(e);function u(f){var s,m=(f=Ke(f)).length,c,l=!1,p;for(n==null&&(i=o(p=a())),s=0;s<=m;++s)!(s<m&&r(c=f[s],s,f))===l&&((l=!l)?i.lineStart():i.lineEnd()),l&&i.point(+t(c,s,f),+e(c,s,f));if(p)return i=null,p+""||null}return u.x=function(f){return arguments.length?(t=typeof f=="function"?f:F(+f),u):t},u.y=function(f){return arguments.length?(e=typeof f=="function"?f:F(+f),u):e},u.defined=function(f){return arguments.length?(r=typeof f=="function"?f:F(!!f),u):r},u.curve=function(f){return arguments.length?(o=f,n!=null&&(i=o(n)),u):o},u.context=function(f){return arguments.length?(f==null?n=i=null:i=o(n=f),u):n},u}function ol(t,e,r){var n=null,o=F(!0),i=null,a=Je,u=null,f=je(s);t=typeof t=="function"?t:t===void 0?tr:F(+t),e=typeof e=="function"?e:e===void 0?F(0):F(+e),r=typeof r=="function"?r:r===void 0?er:F(+r);function s(c){var l,p,d,v=(c=Ke(c)).length,y,_=!1,A,b=new Array(v),T=new Array(v);for(i==null&&(u=a(A=f())),l=0;l<=v;++l){if(!(l<v&&o(y=c[l],l,c))===_)if(_=!_)p=l,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),d=l-1;d>=p;--d)u.point(b[d],T[d]);u.lineEnd(),u.areaEnd()}_&&(b[l]=+t(y,l,c),T[l]=+e(y,l,c),u.point(n?+n(y,l,c):b[l],r?+r(y,l,c):T[l]))}if(A)return u=null,A+""||null}function m(){return un().defined(o).curve(a).context(i)}return s.x=function(c){return arguments.length?(t=typeof c=="function"?c:F(+c),n=null,s):t},s.x0=function(c){return arguments.length?(t=typeof c=="function"?c:F(+c),s):t},s.x1=function(c){return arguments.length?(n=c==null?null:typeof c=="function"?c:F(+c),s):n},s.y=function(c){return arguments.length?(e=typeof c=="function"?c:F(+c),r=null,s):e},s.y0=function(c){return arguments.length?(e=typeof c=="function"?c:F(+c),s):e},s.y1=function(c){return arguments.length?(r=c==null?null:typeof c=="function"?c:F(+c),s):r},s.lineX0=s.lineY0=function(){return m().x(t).y(e)},s.lineY1=function(){return m().x(t).y(r)},s.lineX1=function(){return m().x(n).y(e)},s.defined=function(c){return arguments.length?(o=typeof c=="function"?c:F(!!c),s):o},s.curve=function(c){return arguments.length?(a=c,i!=null&&(u=a(i)),s):a},s.context=function(c){return arguments.length?(c==null?i=u=null:u=a(i=c),s):i},s}function qi(t){return t<0?-1:1}function Bi(t,e,r){var n=t._x1-t._x0,o=e-t._x1,i=(t._y1-t._y0)/(n||o<0&&-0),a=(r-t._y1)/(o||n<0&&-0),u=(i*o+a*n)/(n+o);return(qi(i)+qi(a))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs(u))||0}function Wi(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function sn(t,e,r){var n=t._x0,o=t._y0,i=t._x1,a=t._y1,u=(i-n)/3;t._context.bezierCurveTo(n+u,o+u*e,i-u,a-u*r,i,a)}function rr(t){this._context=t}rr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:sn(this,this._t0,Wi(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var r=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,sn(this,Wi(this,r=Bi(this,t,e)),r);break;default:sn(this,this._t0,r=Bi(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}}};function il(t){this._context=new Xi(t)}(il.prototype=Object.create(rr.prototype)).point=function(t,e){rr.prototype.point.call(this,e,t)};function Xi(t){this._context=t}Xi.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,r,n,o,i){this._context.bezierCurveTo(e,t,n,r,i,o)}};function al(t){return new rr(t)}var ul={value:()=>{}};function Zi(){for(var t=0,e=arguments.length,r={},n;t<e;++t){if(!(n=arguments[t]+"")||n in r||/[\s.]/.test(n))throw new Error("illegal type: "+n);r[n]=[]}return new nr(r)}function nr(t){this._=t}function sl(t,e){return t.trim().split(/^|\s+/).map(function(r){var n="",o=r.indexOf(".");if(o>=0&&(n=r.slice(o+1),r=r.slice(0,o)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}nr.prototype=Zi.prototype={constructor:nr,on:function(t,e){var r=this._,n=sl(t+"",r),o,i=-1,a=n.length;if(arguments.length<2){for(;++i<a;)if((o=(t=n[i]).type)&&(o=fl(r[o],t.name)))return o;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++i<a;)if(o=(t=n[i]).type)r[o]=Vi(r[o],t.name,e);else if(e==null)for(o in r)r[o]=Vi(r[o],t.name,null);return this},copy:function(){var t={},e=this._;for(var r in e)t[r]=e[r].slice();return new nr(t)},call:function(t,e){if((o=arguments.length-2)>0)for(var r=new Array(o),n=0,o,i;n<o;++n)r[n]=arguments[n+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(i=this._[t],n=0,o=i.length;n<o;++n)i[n].value.apply(e,r)},apply:function(t,e,r){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var n=this._[t],o=0,i=n.length;o<i;++o)n[o].value.apply(e,r)}};function fl(t,e){for(var r=0,n=t.length,o;r<n;++r)if((o=t[r]).name===e)return o.value}function Vi(t,e,r){for(var n=0,o=t.length;n<o;++n)if(t[n].name===e){t[n]=ul,t=t.slice(0,n).concat(t.slice(n+1));break}return r!=null&&t.push({name:e,value:r}),t}var fn=Zi;var Vt=0,de=0,he=0,Qi=1e3,or,xe,ir=0,Et=0,ar=0,ge=typeof performance=="object"&&performance.now?performance:Date,Ki=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function ve(){return Et||(Ki(ll),Et=ge.now()+ar)}function ll(){Et=0}function ye(){this._call=this._time=this._next=null}ye.prototype=ur.prototype={constructor:ye,restart:function(t,e,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?ve():+r)+(e==null?0:+e),!this._next&&xe!==this&&(xe?xe._next=this:or=this,xe=this),this._call=t,this._time=r,ln()},stop:function(){this._call&&(this._call=null,this._time=1/0,ln())}};function ur(t,e,r){var n=new ye;return n.restart(t,e,r),n}function Ji(){ve(),++Vt;for(var t=or,e;t;)(e=Et-t._time)>=0&&t._call.call(void 0,e),t=t._next;--Vt}function Gi(){Et=(ir=ge.now())+ar,Vt=de=0;try{Ji()}finally{Vt=0,ml(),Et=0}}function cl(){var t=ge.now(),e=t-ir;e>Qi&&(ar-=e,ir=t)}function ml(){for(var t,e=or,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:or=r);xe=t,ln(n)}function ln(t){if(!Vt){de&&(de=clearTimeout(de));var e=t-Et;e>24?(t<1/0&&(de=setTimeout(Gi,t-ge.now()-ar)),he&&(he=clearInterval(he))):(he||(ir=ge.now(),he=setInterval(cl,Qi)),Vt=1,Ki(Gi))}}function sr(t,e,r){var n=new ye;return e=e==null?0:+e,n.restart(o=>{n.stop(),t(o+e)},e,r),n}var pl=fn("start","end","cancel","interrupt"),hl=[],ea=0,ji=1,lr=2,fr=3,ta=4,cr=5,we=6;function dt(t,e,r,n,o,i){var a=t.__transition;if(!a)t.__transition={};else if(r in a)return;dl(t,r,{name:e,index:n,group:o,on:pl,tween:hl,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:ea})}function _e(t,e){var r=U(t,e);if(r.state>ea)throw new Error("too late; already scheduled");return r}function R(t,e){var r=U(t,e);if(r.state>fr)throw new Error("too late; already running");return r}function U(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function dl(t,e,r){var n=t.__transition,o;n[e]=r,r.timer=ur(i,0,r.time);function i(s){r.state=ji,r.timer.restart(a,r.delay,r.time),r.delay<=s&&a(s-r.delay)}function a(s){var m,c,l,p;if(r.state!==ji)return f();for(m in n)if(p=n[m],p.name===r.name){if(p.state===fr)return sr(a);p.state===ta?(p.state=we,p.timer.stop(),p.on.call("interrupt",t,t.__data__,p.index,p.group),delete n[m]):+m<e&&(p.state=we,p.timer.stop(),p.on.call("cancel",t,t.__data__,p.index,p.group),delete n[m])}if(sr(function(){r.state===fr&&(r.state=ta,r.timer.restart(u,r.delay,r.time),u(s))}),r.state=lr,r.on.call("start",t,t.__data__,r.index,r.group),r.state===lr){for(r.state=fr,o=new Array(l=r.tween.length),m=0,c=-1;m<l;++m)(p=r.tween[m].value.call(t,t.__data__,r.index,r.group))&&(o[++c]=p);o.length=c+1}}function u(s){for(var m=s<r.duration?r.ease.call(null,s/r.duration):(r.timer.restart(f),r.state=cr,1),c=-1,l=o.length;++c<l;)o[c].call(t,m);r.state===cr&&(r.on.call("end",t,t.__data__,r.index,r.group),f())}function f(){r.state=we,r.timer.stop(),delete n[e];for(var s in n)return;delete t.__transition}}function mr(t,e){var r=t.__transition,n,o,i=!0,a;if(r){e=e==null?null:e+"";for(a in r){if((n=r[a]).name!==e){i=!1;continue}o=n.state>lr&&n.state<cr,n.state=we,n.timer.stop(),n.on.call(o?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete r[a]}i&&delete t.__transition}}function ra(t){return this.each(function(){mr(this,t)})}function xl(t,e){var r,n;return function(){var o=R(this,t),i=o.tween;if(i!==r){n=r=i;for(var a=0,u=n.length;a<u;++a)if(n[a].name===e){n=n.slice(),n.splice(a,1);break}}o.tween=n}}function gl(t,e,r){var n,o;if(typeof r!="function")throw new Error;return function(){var i=R(this,t),a=i.tween;if(a!==n){o=(n=a).slice();for(var u={name:e,value:r},f=0,s=o.length;f<s;++f)if(o[f].name===e){o[f]=u;break}f===s&&o.push(u)}i.tween=o}}function na(t,e){var r=this._id;if(t+="",arguments.length<2){for(var n=U(this.node(),r).tween,o=0,i=n.length,a;o<i;++o)if((a=n[o]).name===t)return a.value;return null}return this.each((e==null?xl:gl)(r,t,e))}function Zt(t,e,r){var n=t._id;return t.each(function(){var o=R(this,n);(o.value||(o.value={}))[e]=r.apply(this,arguments)}),function(o){return U(o,n).value[e]}}function pr(t,e){var r;return(typeof e=="number"?z:e instanceof G?Mt:(r=G(e))?(e=r,Mt):oe)(t,e)}function yl(t){return function(){this.removeAttribute(t)}}function vl(t){return function(){this.removeAttributeNS(t.space,t.local)}}function wl(t,e,r){var n,o=r+"",i;return function(){var a=this.getAttribute(t);return a===o?null:a===n?i:i=e(n=a,r)}}function _l(t,e,r){var n,o=r+"",i;return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===n?i:i=e(n=a,r)}}function bl(t,e,r){var n,o,i;return function(){var a,u=r(this),f;return u==null?void this.removeAttribute(t):(a=this.getAttribute(t),f=u+"",a===f?null:a===n&&f===o?i:(o=f,i=e(n=a,u)))}}function Ml(t,e,r){var n,o,i;return function(){var a,u=r(this),f;return u==null?void this.removeAttributeNS(t.space,t.local):(a=this.getAttributeNS(t.space,t.local),f=u+"",a===f?null:a===n&&f===o?i:(o=f,i=e(n=a,u)))}}function oa(t,e){var r=rt(t),n=r==="transform"?Fr:pr;return this.attrTween(t,typeof e=="function"?(r.local?Ml:bl)(r,n,Zt(this,"attr."+t,e)):e==null?(r.local?vl:yl)(r):(r.local?_l:wl)(r,n,e))}function Tl(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function kl(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function Sl(t,e){var r,n;function o(){var i=e.apply(this,arguments);return i!==n&&(r=(n=i)&&kl(t,i)),r}return o._value=e,o}function Cl(t,e){var r,n;function o(){var i=e.apply(this,arguments);return i!==n&&(r=(n=i)&&Tl(t,i)),r}return o._value=e,o}function ia(t,e){var r="attr."+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;var n=rt(t);return this.tween(r,(n.local?Sl:Cl)(n,e))}function Al(t,e){return function(){_e(this,t).delay=+e.apply(this,arguments)}}function Dl(t,e){return e=+e,function(){_e(this,t).delay=e}}function aa(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Al:Dl)(e,t)):U(this.node(),e).delay}function Nl(t,e){return function(){R(this,t).duration=+e.apply(this,arguments)}}function Il(t,e){return e=+e,function(){R(this,t).duration=e}}function ua(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Nl:Il)(e,t)):U(this.node(),e).duration}function El(t,e){if(typeof e!="function")throw new Error;return function(){R(this,t).ease=e}}function sa(t){var e=this._id;return arguments.length?this.each(El(e,t)):U(this.node(),e).ease}function Fl(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!="function")throw new Error;R(this,t).ease=r}}function fa(t){if(typeof t!="function")throw new Error;return this.each(Fl(this._id,t))}function la(t){typeof t!="function"&&(t=Jt(t));for(var e=this._groups,r=e.length,n=new Array(r),o=0;o<r;++o)for(var i=e[o],a=i.length,u=n[o]=[],f,s=0;s<a;++s)(f=i[s])&&t.call(f,f.__data__,s,i)&&u.push(f);return new L(n,this._parents,this._name,this._id)}function ca(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,o=r.length,i=Math.min(n,o),a=new Array(n),u=0;u<i;++u)for(var f=e[u],s=r[u],m=f.length,c=a[u]=new Array(m),l,p=0;p<m;++p)(l=f[p]||s[p])&&(c[p]=l);for(;u<n;++u)a[u]=e[u];return new L(a,this._parents,this._name,this._id)}function Ol(t){return(t+"").trim().split(/^|\s+/).every(function(e){var r=e.indexOf(".");return r>=0&&(e=e.slice(0,r)),!e||e==="start"})}function Ul(t,e,r){var n,o,i=Ol(e)?_e:R;return function(){var a=i(this,t),u=a.on;u!==n&&(o=(n=u).copy()).on(e,r),a.on=o}}function ma(t,e){var r=this._id;return arguments.length<2?U(this.node(),r).on.on(t):this.each(Ul(r,t,e))}function $l(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function pa(){return this.on("end.remove",$l(this._id))}function ha(t){var e=this._name,r=this._id;typeof t!="function"&&(t=wt(t));for(var n=this._groups,o=n.length,i=new Array(o),a=0;a<o;++a)for(var u=n[a],f=u.length,s=i[a]=new Array(f),m,c,l=0;l<f;++l)(m=u[l])&&(c=t.call(m,m.__data__,l,u))&&("__data__"in m&&(c.__data__=m.__data__),s[l]=c,dt(s[l],e,r,l,s,U(m,r)));return new L(i,this._parents,e,r)}function da(t){var e=this._name,r=this._id;typeof t!="function"&&(t=Kt(t));for(var n=this._groups,o=n.length,i=[],a=[],u=0;u<o;++u)for(var f=n[u],s=f.length,m,c=0;c<s;++c)if(m=f[c]){for(var l=t.call(m,m.__data__,c,f),p,d=U(m,r),v=0,y=l.length;v<y;++v)(p=l[v])&&dt(p,e,r,v,l,d);i.push(l),a.push(m)}return new L(i,a,e,r)}var Yl=nt.prototype.constructor;function xa(){return new Yl(this._groups,this._parents)}function zl(t,e){var r,n,o;return function(){var i=ct(this,t),a=(this.style.removeProperty(t),ct(this,t));return i===a?null:i===r&&a===n?o:o=e(r=i,n=a)}}function ga(t){return function(){this.style.removeProperty(t)}}function Rl(t,e,r){var n,o=r+"",i;return function(){var a=ct(this,t);return a===o?null:a===n?i:i=e(n=a,r)}}function Ll(t,e,r){var n,o,i;return function(){var a=ct(this,t),u=r(this),f=u+"";return u==null&&(f=u=(this.style.removeProperty(t),ct(this,t))),a===f?null:a===n&&f===o?i:(o=f,i=e(n=a,u))}}function Hl(t,e){var r,n,o,i="style."+e,a="end."+i,u;return function(){var f=R(this,t),s=f.on,m=f.value[i]==null?u||(u=ga(e)):void 0;(s!==r||o!==m)&&(n=(r=s).copy()).on(a,o=m),f.on=n}}function ya(t,e,r){var n=(t+="")=="transform"?Er:pr;return e==null?this.styleTween(t,zl(t,n)).on("end.style."+t,ga(t)):typeof e=="function"?this.styleTween(t,Ll(t,n,Zt(this,"style."+t,e))).each(Hl(this._id,t)):this.styleTween(t,Rl(t,n,e),r).on("end.style."+t,null)}function Pl(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function ql(t,e,r){var n,o;function i(){var a=e.apply(this,arguments);return a!==o&&(n=(o=a)&&Pl(t,a,r)),n}return i._value=e,i}function va(t,e,r){var n="style."+(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;return this.tween(n,ql(t,e,r??""))}function Bl(t){return function(){this.textContent=t}}function Wl(t){return function(){var e=t(this);this.textContent=e??""}}function wa(t){return this.tween("text",typeof t=="function"?Wl(Zt(this,"text",t)):Bl(t==null?"":t+""))}function Xl(t){return function(e){this.textContent=t.call(this,e)}}function Vl(t){var e,r;function n(){var o=t.apply(this,arguments);return o!==r&&(e=(r=o)&&Xl(o)),e}return n._value=t,n}function _a(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,Vl(t))}function ba(){for(var t=this._name,e=this._id,r=hr(),n=this._groups,o=n.length,i=0;i<o;++i)for(var a=n[i],u=a.length,f,s=0;s<u;++s)if(f=a[s]){var m=U(f,e);dt(f,t,r,s,a,{time:m.time+m.delay+m.duration,delay:0,duration:m.duration,ease:m.ease})}return new L(n,this._parents,t,r)}function Ma(){var t,e,r=this,n=r._id,o=r.size();return new Promise(function(i,a){var u={value:a},f={value:function(){--o===0&&i()}};r.each(function(){var s=R(this,n),m=s.on;m!==t&&(e=(t=m).copy(),e._.cancel.push(u),e._.interrupt.push(u),e._.end.push(f)),s.on=e}),o===0&&i()})}var Zl=0;function L(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function Ta(t){return nt().transition(t)}function hr(){return++Zl}var st=nt.prototype;L.prototype=Ta.prototype={constructor:L,select:ha,selectAll:da,selectChild:st.selectChild,selectChildren:st.selectChildren,filter:la,merge:ca,selection:xa,transition:ba,call:st.call,nodes:st.nodes,node:st.node,size:st.size,empty:st.empty,each:st.each,on:ma,attr:oa,attrTween:ia,style:ya,styleTween:va,text:wa,textTween:_a,remove:pa,tween:na,delay:aa,duration:ua,ease:sa,easeVarying:fa,end:Ma,[Symbol.iterator]:st[Symbol.iterator]};function dr(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var Gl={time:null,delay:0,duration:250,ease:dr};function Ql(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function ka(t){var e,r;t instanceof L?(e=t._id,t=t._name):(e=hr(),(r=Gl).time=ve(),t=t==null?null:t+"");for(var n=this._groups,o=n.length,i=0;i<o;++i)for(var a=n[i],u=a.length,f,s=0;s<u;++s)(f=a[s])&&dt(f,t,e,s,a,r||Ql(f,e));return new L(n,this._parents,t,e)}nt.prototype.interrupt=ra;nt.prototype.transition=ka;var{abs:h1,max:d1,min:x1}=Math;function Sa(t){return[+t[0],+t[1]]}function Kl(t){return[Sa(t[0]),Sa(t[1])]}var g1={name:"x",handles:["w","e"].map(cn),input:function(t,e){return t==null?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},y1={name:"y",handles:["n","s"].map(cn),input:function(t,e){return t==null?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},v1={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(cn),input:function(t){return t==null?null:Kl(t)},output:function(t){return t}};function cn(t){return{type:t}}function xt(t,e,r){this.k=t,this.x=e,this.y=r}xt.prototype={constructor:xt,scale:function(t){return t===1?this:new xt(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new xt(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 mn=new xt(1,0,0);pn.prototype=xt.prototype;function pn(t){for(;!t.__zoom;)if(!(t=t.parentNode))return mn;return t.__zoom}export{vt as a,dn as b,xn as c,Va as d,Za as e,Ga as f,Xu as g,Vu as h,Mt as i,He as j,qe as k,_s as l,Vr as m,Ri as n,nn as o,un as p,ol as q,al as r};
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
<meta name="theme-color" content="#0b1020" media="(prefers-color-scheme: dark)">
|
|
10
10
|
<meta name="theme-color" content="#f7f8fa" media="(prefers-color-scheme: light)">
|
|
11
11
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%234f46e5' d='M12 .5a11.5 11.5 0 1 0 11.5 11.5A11.5 11.5 0 0 0 12 .5Zm5.7 14.83a1 1 0 0 1-1.41 1.41L13 13.41V19a1 1 0 0 1-2 0v-5.59l-3.29 3.33A1 1 0 1 1 6.3 15.34l5-5.05a1 1 0 0 1 1.42 0Z'/%3E%3C/svg%3E">
|
|
12
|
-
<style>*,:before,:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}:root{color-scheme:light;--bg-app:#f7f8fa;--bg-surface:#ffffff;--bg-surface-2:#f3f4f6;--bg-elevated:#ffffff;--bg-panel:rgba(255, 255, 255, .78);--bg-glass:rgba(255, 255, 255, .72);--bg-hover:#eef2ff;--bg-selected:#e0e7ff;--bg-overlay:rgba(15, 23, 42, .45);--bg-gradient:radial-gradient(circle at 12% -8%, rgba(79, 70, 229, .12), transparent 34%), radial-gradient(circle at 90% 0%, rgba(6, 182, 212, .12), transparent 28%), linear-gradient(180deg, #f8fafc 0%, #eef2f7 100%);--fg-primary:#0f172a;--fg-secondary:#475569;--fg-muted:#64748b;--fg-subtle:#94a3b8;--fg-inverted:#ffffff;--border-soft:#e2e8f0;--border-strong:#cbd5e1;--border-focus:#6366f1;--accent:#4f46e5;--accent-hover:#4338ca;--accent-soft:#eef2ff;--accent-fg:#ffffff;--accent-ring:rgba(99, 102, 241, .18);--success:#16a34a;--warning:#d97706;--danger:#dc2626;--diff-add-bg:#dcfce7;--diff-add-fg:#14532d;--diff-add-gutter:#86efac;--diff-del-bg:#fee2e2;--diff-del-fg:#7f1d1d;--diff-del-gutter:#fca5a5;--diff-hunk-bg:#f1f5f9;--diff-hunk-fg:#475569;--graph-guide:rgba(148, 163, 184, .28);--graph-row-alt:rgba(15, 23, 42, .025);--graph-row-hover:rgba(79, 70, 229, .08);--graph-row-selected:rgba(79, 70, 229, .14);--graph-node-ring:#ffffff;--graph-shadow:rgba(15, 23, 42, .12);--chart-add:#16a34a;--chart-del:#dc2626;--chart-line:#4f46e5;--chart-fill:rgba(79, 70, 229, .16);--shadow-sm:0 1px 2px rgba(15, 23, 42, .06);--shadow-md:0 4px 12px rgba(15, 23, 42, .08);--shadow-lg:0 12px 32px rgba(15, 23, 42, .12);--shadow-glow:0 16px 60px rgba(79, 70, 229, .14);--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Liberation Mono", "Courier New", monospace}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--fg-primary);background:var(--bg-gradient);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}</style><link rel="stylesheet" href="styles-
|
|
12
|
+
<style>*,:before,:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}:root{color-scheme:light;--bg-app:#f7f8fa;--bg-surface:#ffffff;--bg-surface-2:#f3f4f6;--bg-elevated:#ffffff;--bg-panel:rgba(255, 255, 255, .78);--bg-glass:rgba(255, 255, 255, .72);--bg-hover:#eef2ff;--bg-selected:#e0e7ff;--bg-overlay:rgba(15, 23, 42, .45);--bg-gradient:radial-gradient(circle at 12% -8%, rgba(79, 70, 229, .12), transparent 34%), radial-gradient(circle at 90% 0%, rgba(6, 182, 212, .12), transparent 28%), linear-gradient(180deg, #f8fafc 0%, #eef2f7 100%);--fg-primary:#0f172a;--fg-secondary:#475569;--fg-muted:#64748b;--fg-subtle:#94a3b8;--fg-inverted:#ffffff;--border-soft:#e2e8f0;--border-strong:#cbd5e1;--border-focus:#6366f1;--accent:#4f46e5;--accent-hover:#4338ca;--accent-soft:#eef2ff;--accent-fg:#ffffff;--accent-ring:rgba(99, 102, 241, .18);--success:#16a34a;--warning:#d97706;--danger:#dc2626;--diff-add-bg:#dcfce7;--diff-add-fg:#14532d;--diff-add-gutter:#86efac;--diff-del-bg:#fee2e2;--diff-del-fg:#7f1d1d;--diff-del-gutter:#fca5a5;--diff-hunk-bg:#f1f5f9;--diff-hunk-fg:#475569;--graph-guide:rgba(148, 163, 184, .28);--graph-row-alt:rgba(15, 23, 42, .025);--graph-row-hover:rgba(79, 70, 229, .08);--graph-row-selected:rgba(79, 70, 229, .14);--graph-node-ring:#ffffff;--graph-shadow:rgba(15, 23, 42, .12);--chart-add:#16a34a;--chart-del:#dc2626;--chart-line:#4f46e5;--chart-fill:rgba(79, 70, 229, .16);--shadow-sm:0 1px 2px rgba(15, 23, 42, .06);--shadow-md:0 4px 12px rgba(15, 23, 42, .08);--shadow-lg:0 12px 32px rgba(15, 23, 42, .12);--shadow-glow:0 16px 60px rgba(79, 70, 229, .14);--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Liberation Mono", "Courier New", monospace}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--fg-primary);background:var(--bg-gradient);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}</style><link rel="stylesheet" href="styles-RQGRQK4Z.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-RQGRQK4Z.css"></noscript></head>
|
|
13
13
|
<body>
|
|
14
14
|
<app-root></app-root>
|
|
15
|
-
<link rel="modulepreload" href="chunk-
|
|
15
|
+
<link rel="modulepreload" href="chunk-F6HZ5OVS.js"><link rel="modulepreload" href="chunk-GHSRMAIR.js"><link rel="modulepreload" href="chunk-VGAHCEAA.js"><link rel="modulepreload" href="chunk-STUSEB5P.js"><link rel="modulepreload" href="chunk-PXNKNORB.js"><link rel="modulepreload" href="chunk-UM7ESEXJ.js"><script src="polyfills-5CFQRCPP.js" type="module"></script><script src="main-W5NQX3FE.js" type="module"></script></body>
|
|
16
16
|
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as ye,b as Me,c as Te}from"./chunk-F6HZ5OVS.js";import{a as B,b as R,c as q,e as ve,f as Ce,g as xe,h as j}from"./chunk-GHSRMAIR.js";import{a as Se}from"./chunk-VGAHCEAA.js";import{a as O}from"./chunk-STUSEB5P.js";import{a as ce,c as ge,d as he,f as fe,g as _e,h as be}from"./chunk-PXNKNORB.js";import{$ as v,Ac as me,Bc as ue,Cc as we,D as ne,Db as L,Dc as ke,Eb as N,F as ie,Fb as H,Ib as A,Kb as l,Lb as b,Mb as C,Oa as ae,Pa as D,Qa as a,R as oe,Vb as se,W as re,Za as w,ac as le,bc as z,cb as h,cc as y,dc as k,ea as m,fa as u,ga as P,ha as W,lb as E,oa as M,ob as c,pb as o,pc as I,q as te,qb as r,qc as S,rb as x,tc as T,vb as V,wb as F,xb as _,yb as d,yc as pe,zb as g,zc as de}from"./chunk-UM7ESEXJ.js";var Oe=[{path:"",loadComponent:()=>import("./chunk-ACWXPHRR.js").then(n=>n.HomeShellComponent),pathMatch:"full"},{path:"timeline",loadComponent:()=>import("./chunk-XLGWMKXV.js").then(n=>n.TimelineComponent)},{path:"file/:path",loadComponent:()=>import("./chunk-PRY6VAFG.js").then(n=>n.FileHistoryComponent)},{path:"insights",loadComponent:()=>import("./chunk-J5ZVP6TN.js").then(n=>n.InsightsComponent)},{path:"**",redirectTo:""}];var Pe={providers:[le({eventCoalescing:!0}),be(Oe),me(ue())]};var Ie=["input"];function Ve(n,e){if(n&1){let t=_();o(0,"div",3),d("click",function(){m(t);let s=g();return u(s.close())}),r()}}function Fe(n,e){if(n&1){let t=_();o(0,"li",11),d("mouseenter",function(){let s=m(t).index,p=g(2);return u(p.index.set(s))})("click",function(){let s=m(t).$implicit,p=g(2);return u(p.pick(s))}),o(1,"span",12),l(2),r(),o(3,"span",13),l(4),r(),o(5,"span",14),l(6),r()()}if(n&2){let t=e.$implicit,i=e.index,s=g(2);A("active",i===s.index()),E("aria-selected",i===s.index()),a(2),b(t.shortHash),a(2),b(t.subject),a(2),b(t.author)}}function De(n,e){n&1&&(o(0,"li",15),l(1,"No matches."),r())}function Le(n,e){if(n&1){let t=_();o(0,"div",4)(1,"input",5,0),d("ngModelChange",function(s){m(t);let p=g();return u(p.onQuery(s))})("keydown",function(s){m(t);let p=g();return u(p.onKey(s))}),r(),o(3,"ul",6),h(4,Fe,7,6,"li",7)(5,De,2,0,"li",8),r(),o(6,"div",9)(7,"span")(8,"kbd",10),l(9,"\u2191"),r(),o(10,"kbd",10),l(11,"\u2193"),r(),l(12," navigate"),r(),o(13,"span")(14,"kbd",10),l(15,"Enter"),r(),l(16," select"),r(),o(17,"span")(18,"kbd",10),l(19,"Esc"),r(),l(20," close"),r()()()}if(n&2){let t=g();a(),c("ngModel",t.query()),a(3),c("ngForOf",t.results())("ngForTrackBy",t.trackByHash),a(),c("ngIf",!t.results().length)}}var K=class n{state=v(O);input;query=M("");index=M(0);results=y(()=>{let e=this.query().trim().toLowerCase(),t=this.state.commits();return e?t.filter(i=>i.hash.toLowerCase().startsWith(e)||i.shortHash.toLowerCase().startsWith(e)||i.subject.toLowerCase().includes(e)||i.author.toLowerCase().includes(e)).slice(0,50):t.slice(0,50)});constructor(){k(()=>{this.state.paletteOpen()&&(this.query.set(""),this.index.set(0),queueMicrotask(()=>this.input?.nativeElement.focus()))}),k(()=>{let e=this.results().length;this.index()>=e&&this.index.set(Math.max(0,e-1))})}trackByHash(e,t){return t.hash}onQuery(e){this.query.set(e),this.index.set(0)}onKey(e){if(e.key==="ArrowDown")e.preventDefault(),this.index.update(t=>Math.min(this.results().length-1,t+1));else if(e.key==="ArrowUp")e.preventDefault(),this.index.update(t=>Math.max(0,t-1));else if(e.key==="Enter"){e.preventDefault();let t=this.results()[this.index()];t&&this.pick(t)}else e.key==="Escape"&&(e.preventDefault(),this.close())}pick(e){this.state.selectHash(e.hash),this.close()}close(){this.state.paletteOpen.set(!1)}onGlobal(e){(e.metaKey||e.ctrlKey)&&(e.key==="k"||e.key==="K")&&(e.preventDefault(),this.state.paletteOpen.set(!this.state.paletteOpen()))}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=w({type:n,selectors:[["app-command-palette"]],viewQuery:function(t,i){if(t&1&&L(Ie,5),t&2){let s;N(s=H())&&(i.input=s.first)}},hostBindings:function(t,i){t&1&&d("keydown",function(p){return i.onGlobal(p)},D)},decls:2,vars:2,consts:[["input",""],["class","backdrop",3,"click",4,"ngIf"],["class","palette","role","dialog","aria-modal","true",4,"ngIf"],[1,"backdrop",3,"click"],["role","dialog","aria-modal","true",1,"palette"],["type","text","placeholder","Jump to a commit by hash, subject, or author\u2026",1,"search",3,"ngModelChange","keydown","ngModel"],["role","listbox",1,"results"],["class","result",3,"active","mouseenter","click",4,"ngFor","ngForOf","ngForTrackBy"],["class","result empty",4,"ngIf"],[1,"footer"],[1,"kbd"],[1,"result",3,"mouseenter","click"],[1,"hash"],[1,"subj"],[1,"auth"],[1,"result","empty"]],template:function(t,i){t&1&&h(0,Ve,1,0,"div",1)(1,Le,21,4,"div",2),t&2&&(c("ngIf",i.state.paletteOpen()),a(),c("ngIf",i.state.paletteOpen()))},dependencies:[T,I,S,j,B,R,q],styles:[".backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;background:var(--bg-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:90}.palette[_ngcontent-%COMP%]{position:fixed;top:12vh;left:50%;transform:translate(-50%);width:min(640px,calc(100vw - 32px));background:color-mix(in oklab,var(--bg-glass) 96%,transparent);border:1px solid var(--border-soft);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg),var(--shadow-glow);-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2);z-index:100;overflow:hidden}.search[_ngcontent-%COMP%]{width:100%;border:0;outline:0;padding:1rem 1.1rem;background:transparent;color:var(--fg-primary);font-size:14px;border-bottom:1px solid var(--border-soft)}.results[_ngcontent-%COMP%]{list-style:none;margin:0;padding:.25rem 0;max-height:50vh;overflow:auto}.result[_ngcontent-%COMP%]{display:grid;grid-template-columns:70px 1fr auto;align-items:center;gap:.6rem;padding:.52rem 1rem;cursor:pointer;font-size:13px}.result.active[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--accent) 12%,transparent);box-shadow:inset 3px 0 0 var(--accent)}.result.empty[_ngcontent-%COMP%]{grid-template-columns:1fr;color:var(--fg-muted);cursor:default}.hash[_ngcontent-%COMP%]{font-family:var(--font-mono);color:var(--fg-muted)}.subj[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg-primary)}.auth[_ngcontent-%COMP%]{color:var(--fg-muted);font-size:11px}.footer[_ngcontent-%COMP%]{display:flex;gap:1rem;padding:.4rem .75rem;background:color-mix(in oklab,var(--bg-surface-2) 84%,transparent);border-top:1px solid var(--border-soft);font-size:11px;color:var(--fg-muted)}"],changeDetection:0})};function Ne(n,e){if(n&1&&(o(0,"kbd",11),l(1),r()),n&2){let t=e.$implicit;a(),b(t)}}function He(n,e){if(n&1&&(o(0,"li")(1,"span",8),l(2),r(),o(3,"span",9),h(4,Ne,2,1,"kbd",10),r()()),n&2){let t=e.$implicit;a(2),b(t.description),a(2),c("ngForOf",t.keys)}}function Ae(n,e){if(n&1&&(o(0,"section")(1,"h3"),l(2),r(),o(3,"ul"),h(4,He,5,2,"li",7),r()()),n&2){let t=e.$implicit;a(2),b(t.title),a(2),c("ngForOf",t.bindings)}}function ze(n,e){if(n&1){let t=_();V(0),o(1,"div",1),d("click",function(){m(t);let s=g();return u(s.close())}),r(),o(2,"div",2)(3,"div",3)(4,"h2",4),l(5,"Keyboard shortcuts"),r(),o(6,"button",5),d("click",function(){m(t);let s=g();return u(s.close())}),l(7,"\u2715"),r()(),o(8,"div",6),h(9,Ae,5,2,"section",7),r()(),F()}if(n&2){let t=g();a(9),c("ngForOf",t.groups)}}var Be=[{title:"Navigation",bindings:[{keys:["j"],description:"Next commit"},{keys:["k"],description:"Previous commit"},{keys:["g"],description:"Jump to newest commit"},{keys:["G"],description:"Jump to oldest commit"}]},{title:"Search & overlays",bindings:[{keys:["/"],description:"Focus search"},{keys:["\u2318","K"],description:"Open command palette"},{keys:["?"],description:"Show this help"},{keys:["Esc"],description:"Close overlays"}]}],$=class n{state=v(O);groups=Be;close(){this.state.shortcutsOpen.set(!1)}onKey(e){e.key==="?"&&!this.isTyping(e.target)&&(e.preventDefault(),this.state.shortcutsOpen.set(!0)),e.key==="Escape"&&(this.state.shortcutsOpen.set(!1),this.state.paletteOpen.set(!1))}isTyping(e){return e instanceof HTMLElement?["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable:!1}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=w({type:n,selectors:[["app-shortcuts-modal"]],hostBindings:function(t,i){t&1&&d("keydown",function(p){return i.onKey(p)},D)},decls:1,vars:1,consts:[[4,"ngIf"],[1,"backdrop",3,"click"],["role","dialog","aria-modal","true","aria-labelledby","shortcuts-title",1,"modal"],[1,"head"],["id","shortcuts-title"],["aria-label","Close",1,"btn","btn-ghost","btn-icon",3,"click"],[1,"body"],[4,"ngFor","ngForOf"],[1,"desc"],[1,"keys"],["class","kbd",4,"ngFor","ngForOf"],[1,"kbd"]],template:function(t,i){t&1&&h(0,ze,10,1,"ng-container",0),t&2&&c("ngIf",i.state.shortcutsOpen())},dependencies:[T,I,S],styles:[".backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;background:var(--bg-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:90}.modal[_ngcontent-%COMP%]{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(560px,calc(100vw - 32px));max-height:80vh;overflow:auto;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:100}.head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border-soft)}.head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:16px}.body[_ngcontent-%COMP%]{padding:.75rem 1rem 1rem}h3[_ngcontent-%COMP%]{margin:1rem 0 .4rem;font-size:12px;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.04em}h3[_ngcontent-%COMP%]:first-child{margin-top:0}ul[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}li[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:.45rem .25rem;border-bottom:1px dashed var(--border-soft)}li[_ngcontent-%COMP%]:last-child{border-bottom:0}.desc[_ngcontent-%COMP%]{color:var(--fg-secondary);font-size:13px}.keys[_ngcontent-%COMP%]{display:flex;gap:4px}"],changeDetection:0})};var Re=["searchInput"],qe=()=>({exact:!0});function je(n,e){if(n&1&&(o(0,"span",36),l(1),r()),n&2){let t=e.ngIf;a(),b(t)}}function Ke(n,e){n&1&&(V(0),P(),o(1,"svg",37),x(2,"path",38),r(),F())}function Ge(n,e){n&1&&(V(0),o(1,"span",39),l(2,"AI"),r(),F())}function $e(n,e){n&1&&(o(0,"kbd",40),l(1,"/"),r())}function Ze(n,e){if(n&1&&(o(0,"option",41),l(1),r()),n&2){let t=e.$implicit,i=g();c("value",t),a(),b(i.shortBranch(t))}}function Qe(n,e){if(n&1&&(o(0,"option",41),l(1),r()),n&2){let t=e.$implicit;c("value",t),a(),b(t)}}function Ue(n,e){if(n&1){let t=_();o(0,"button",42),d("click",function(){m(t);let s=g();return u(s.clearFilters())}),l(1),r()}if(n&2){let t=g();a(),C(" Clear ",t.activeFilterCount()," ")}}function We(n,e){n&1&&(P(),o(0,"svg",28),x(1,"path",43),r())}function Je(n,e){n&1&&(P(),o(0,"svg",28),x(1,"path",44),r())}function Xe(n,e){if(n&1&&(o(0,"span",50),l(1),r()),n&2){let t=g().ngIf;a(),C("author: ",t.author)}}function Ye(n,e){if(n&1&&(o(0,"span",50),l(1),r()),n&2){let t=g().ngIf;a(),C("since: ",t.since)}}function et(n,e){if(n&1&&(o(0,"span",50),l(1),r()),n&2){let t=g().ngIf;a(),C("until: ",t.until)}}function tt(n,e){if(n&1&&(o(0,"span",50),l(1),r()),n&2){let t=e.$implicit;a(),b(t)}}function nt(n,e){n&1&&(o(0,"span",51),l(1,"no structured filters detected"),r())}function it(n,e){if(n&1&&(o(0,"div",45)(1,"span",46),l(2,"Interpreted as"),r(),h(3,Xe,2,1,"span",47)(4,Ye,2,1,"span",47)(5,et,2,1,"span",47)(6,tt,2,1,"span",48)(7,nt,2,0,"span",49),r()),n&2){let t=e.ngIf;a(3),c("ngIf",t.author),a(),c("ngIf",t.since),a(),c("ngIf",t.until),a(),c("ngForOf",t.keywords),a(),c("ngIf",t.keywords.length===0&&!t.author&&!t.since)}}function ot(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onBranch(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf,i=g(2);a(),C(" branch: ",i.shortBranch(t)," ")}}function rt(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onAuthor(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf;a(),C(" author: ",t," ")}}function at(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onSince(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf;a(),C(" since: ",t," ")}}function st(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onUntil(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf;a(),C(" until: ",t," ")}}function lt(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onFile(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf;a(),C(" file: ",t," ")}}function ct(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onSearchInput(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf;a(),C(" search: ",t," ")}}function pt(n,e){if(n&1&&(o(0,"div",52)(1,"span",46),l(2,"Active filters"),r(),h(3,ot,4,1,"button",53)(4,rt,4,1,"button",53)(5,at,4,1,"button",53)(6,st,4,1,"button",53)(7,lt,4,1,"button",53)(8,ct,4,1,"button",53),r()),n&2){let t=g();a(3),c("ngIf",t.state.filters().branch),a(),c("ngIf",t.state.filters().author),a(),c("ngIf",t.state.filters().since),a(),c("ngIf",t.state.filters().until),a(),c("ngIf",t.state.filters().file),a(),c("ngIf",t.state.filters().search)}}var Z=class n{state=v(O);theme=v(Te);searchEl;searchValue=M("");totalLabel=y(()=>{let e=this.state.total();return e?`${e.toLocaleString()} commits`:""});themeLabel=y(()=>`Switch to ${this.theme.resolved()==="light"?"dark":"light"} mode`);searchPlaceholder=y(()=>this.state.searchMode()==="nl"?'Ask anything: "login bug last month", "payments by alice"\u2026':"Search commits\u2026 ( / )");searchModeTooltip=y(()=>this.state.searchMode()==="nl"?"Natural-language search active. Click to switch to literal search.":"Literal git-grep search. Click to switch to natural-language search.");viewModeTooltip=y(()=>this.state.viewMode()==="grouped"?"Showing PR / feature groups. Click for flat list.":"Showing flat commit list. Click for PR / feature groups.");branchOptions=y(()=>{let e=this.state.branches(),t=e.filter(i=>!dt(i));return t.length?t:e});activeFilterCount=y(()=>{let e=this.state.filters();return[e.branch,e.author,e.since,e.until,e.file,e.search].filter(Boolean).length});debounce=null;constructor(){k(()=>{let e=this.state.filters();this.searchValue.set(e.search??"")})}onKeydown(e){e.key==="/"&&!this.isTyping(e.target)&&(e.preventDefault(),queueMicrotask(()=>this.searchEl?.nativeElement.focus()))}onSearchInput(e){this.searchValue.set(e),this.debounce&&clearTimeout(this.debounce),this.debounce=setTimeout(()=>{this.state.patchFilters({search:e||void 0})},250)}onAuthor(e){this.state.patchFilters({author:e||void 0})}onBranch(e){this.state.patchFilters({branch:e||void 0})}onSince(e){this.state.patchFilters({since:e||void 0})}onUntil(e){this.state.patchFilters({until:e||void 0})}onFile(e){this.state.patchFilters({file:e||void 0})}toggleSearchMode(){let e=this.state.searchMode()==="classic"?"nl":"classic";this.state.searchMode.set(e),e==="classic"&&this.state.nlInterpretation.set(null),this.state.patchFilters({})}toggleViewMode(){this.state.viewMode.set(this.state.viewMode()==="flat"?"grouped":"flat")}clearFilters(){this.state.patchFilters({branch:void 0,author:void 0,since:void 0,until:void 0,file:void 0,search:void 0}),this.searchValue.set("")}isTyping(e){return e instanceof HTMLElement?["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable:!1}shortBranch(e){return e.startsWith("origin/")?e.slice(7):e}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=w({type:n,selectors:[["app-toolbar"]],viewQuery:function(t,i){if(t&1&&L(Re,5),t&2){let s;N(s=H())&&(i.searchEl=s.first)}},hostBindings:function(t,i){t&1&&d("keydown",function(p){return i.onKeydown(p)},ae)},decls:49,vars:29,consts:[["searchInput",""],[1,"toolbar"],[1,"brand"],["aria-hidden","true",1,"brand-mark"],[1,"brand-text"],[1,"brand-title"],["class","brand-sub",4,"ngIf"],[1,"nav"],["routerLink","/","routerLinkActive","active",3,"routerLinkActiveOptions"],["routerLink","/timeline","routerLinkActive","active"],["routerLink","/insights","routerLinkActive","active"],[1,"filters"],[1,"search"],["type","button",1,"search-mode",3,"click","title"],[4,"ngIf"],["type","text","aria-label","Search commits",1,"search-input",3,"ngModelChange","placeholder","ngModel"],["class","kbd",4,"ngIf"],["aria-label","Filter by branch",1,"select",3,"ngModelChange","ngModel"],["value",""],[3,"value",4,"ngFor","ngForOf"],["aria-label","Filter by author",1,"select","author",3,"ngModelChange","ngModel"],["type","date","aria-label","Since date",1,"input","date",3,"ngModelChange","ngModel"],["type","date","aria-label","Until date",1,"input","date",3,"ngModelChange","ngModel"],["type","text","placeholder","path/to/file","aria-label","Filter by file path",1,"input","file",3,"ngModelChange","ngModel"],[1,"actions"],["class","btn btn-ghost clear-filters","title","Clear active filters",3,"click",4,"ngIf"],[1,"btn","btn-ghost","view-toggle",3,"click","title"],["title","Command palette (\u2318K)",1,"btn","btn-ghost","btn-icon",3,"click"],["viewBox","0 0 24 24","width","16","height","16","aria-hidden","true"],["fill","currentColor","d","M3 6a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3Zm3-1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1Zm2 4h2v2H8Zm4 0h6v2h-6Zm-4 4h6v2H8Zm8 0h2v2h-2Z"],["title","Keyboard shortcuts (?)",1,"btn","btn-ghost","btn-icon",3,"click"],["fill","currentColor","d","M11 18h2v-2h-2Zm1-16a8 8 0 0 0-8 8h2a6 6 0 1 1 9.6 4.8c-1.06.8-1.6 1.42-1.6 3.2v.5h-2v-.5c0-2.6.94-3.5 2.13-4.39A4 4 0 1 0 8 10H6a6 6 0 0 1 6-8Z"],[1,"btn","btn-ghost","btn-icon",3,"click","title"],["viewBox","0 0 24 24","width","16","height","16","aria-hidden","true",4,"ngIf"],["class","nl-chips",4,"ngIf"],["class","filter-chips",4,"ngIf"],[1,"brand-sub"],["viewBox","0 0 20 20","width","14","height","14","aria-hidden","true"],["fill","currentColor","d","M9 2a7 7 0 1 1-4.32 12.5l-3.1 3.09a1 1 0 0 1-1.42-1.42l3.1-3.09A7 7 0 0 1 9 2Zm0 2a5 5 0 1 0 0 10A5 5 0 0 0 9 4Z"],[1,"ai-pill"],[1,"kbd"],[3,"value"],["title","Clear active filters",1,"btn","btn-ghost","clear-filters",3,"click"],["fill","currentColor","d","M12 4V2m0 20v-2m8-8h2M2 12h2m13.66-6.34 1.42-1.42M4.92 19.08l1.42-1.42m0-11.32L4.92 4.92m14.16 14.16-1.42-1.42M12 7a5 5 0 1 1 0 10 5 5 0 0 1 0-10Z"],["fill","currentColor","d","M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79Z"],[1,"nl-chips"],[1,"chip-label"],["class","chip",4,"ngIf"],["class","chip",4,"ngFor","ngForOf"],["class","chip muted",4,"ngIf"],[1,"chip"],[1,"chip","muted"],[1,"filter-chips"],["class","chip active",3,"click",4,"ngIf"],[1,"chip","active",3,"click"]],template:function(t,i){if(t&1){let s=_();o(0,"header",1)(1,"div",2)(2,"span",3),l(3,"\u2387"),r(),o(4,"div",4)(5,"span",5),l(6,"Git History"),r(),h(7,je,2,1,"span",6),r()(),o(8,"nav",7)(9,"a",8),l(10,"History"),r(),o(11,"a",9),l(12,"Timeline"),r(),o(13,"a",10),l(14,"Insights"),r()(),o(15,"div",11)(16,"label",12)(17,"button",13),d("click",function(){return m(s),u(i.toggleSearchMode())}),h(18,Ke,3,0,"ng-container",14)(19,Ge,3,0,"ng-container",14),r(),o(20,"input",15,0),d("ngModelChange",function(f){return m(s),u(i.onSearchInput(f))}),r(),h(22,$e,2,0,"kbd",16),r(),o(23,"select",17),d("ngModelChange",function(f){return m(s),u(i.onBranch(f))}),o(24,"option",18),l(25,"All branches"),r(),h(26,Ze,2,2,"option",19),r(),o(27,"select",20),d("ngModelChange",function(f){return m(s),u(i.onAuthor(f))}),o(28,"option",18),l(29,"All authors"),r(),h(30,Qe,2,2,"option",19),r(),o(31,"input",21),d("ngModelChange",function(f){return m(s),u(i.onSince(f))}),r(),o(32,"input",22),d("ngModelChange",function(f){return m(s),u(i.onUntil(f))}),r(),o(33,"input",23),d("ngModelChange",function(f){return m(s),u(i.onFile(f))}),r()(),o(34,"div",24),h(35,Ue,2,1,"button",25),o(36,"button",26),d("click",function(){return m(s),u(i.toggleViewMode())}),l(37),r(),o(38,"button",27),d("click",function(){return m(s),u(i.state.paletteOpen.set(!0))}),P(),o(39,"svg",28),x(40,"path",29),r()(),W(),o(41,"button",30),d("click",function(){return m(s),u(i.state.shortcutsOpen.set(!0))}),P(),o(42,"svg",28),x(43,"path",31),r()(),W(),o(44,"button",32),d("click",function(){return m(s),u(i.theme.cycle())}),h(45,We,2,0,"svg",33)(46,Je,2,0,"svg",33),r()()(),h(47,it,8,5,"div",34)(48,pt,9,6,"div",35)}t&2&&(a(7),c("ngIf",i.totalLabel()),a(2),c("routerLinkActiveOptions",se(28,qe)),a(7),A("search-nl",i.state.searchMode()==="nl"),a(),c("title",i.searchModeTooltip()),E("aria-label",i.searchModeTooltip()),a(),c("ngIf",i.state.searchMode()==="classic"),a(),c("ngIf",i.state.searchMode()==="nl"),a(),c("placeholder",i.searchPlaceholder())("ngModel",i.searchValue()),a(2),c("ngIf",!i.searchValue()),a(),c("ngModel",i.state.filters().branch??""),a(3),c("ngForOf",i.branchOptions()),a(),c("ngModel",i.state.filters().author??""),a(3),c("ngForOf",i.state.authors()),a(),c("ngModel",i.state.filters().since??""),a(),c("ngModel",i.state.filters().until??""),a(),c("ngModel",i.state.filters().file??""),a(2),c("ngIf",i.activeFilterCount()),a(),c("title",i.viewModeTooltip()),E("aria-label",i.viewModeTooltip()),a(),C(" ",i.state.viewMode()==="grouped"?"Grouped":"Flat"," "),a(7),c("title",i.themeLabel()),E("aria-label",i.themeLabel()),a(),c("ngIf",i.theme.resolved()==="light"),a(),c("ngIf",i.theme.resolved()==="dark"),a(),c("ngIf",i.state.searchMode()==="nl"&&i.state.nlInterpretation()),a(),c("ngIf",i.activeFilterCount()))},dependencies:[T,I,S,j,Ce,xe,B,ve,R,q,fe,_e],styles:["[_nghost-%COMP%]{display:block;position:sticky;top:0;z-index:50;background:color-mix(in oklab,var(--bg-glass) 94%,transparent);-webkit-backdrop-filter:blur(16px) saturate(1.2);backdrop-filter:blur(16px) saturate(1.2);border-bottom:1px solid var(--border-soft);box-shadow:var(--shadow-sm)}.toolbar[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;column-gap:.75rem;row-gap:.4rem;padding:.65rem 1rem .55rem}.brand[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.6rem;padding-right:.25rem}.brand-mark[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),#06b6d4);color:var(--accent-fg);box-shadow:var(--shadow-glow);font-weight:700;font-size:18px}.brand-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;line-height:1.1}.brand-title[_ngcontent-%COMP%]{font-weight:600}.brand-sub[_ngcontent-%COMP%]{font-size:11px;color:var(--fg-muted)}.filters[_ngcontent-%COMP%]{display:flex;gap:.4rem;align-items:center;min-width:0;justify-content:flex-end}.filters[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{min-width:0}.search[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;gap:.35rem;flex:1 1 220px;min-width:0;max-width:360px;padding:0 .55rem;background:linear-gradient(180deg,color-mix(in oklab,var(--bg-surface) 94%,white 6%),var(--bg-surface));border:1px solid var(--border-soft);border-radius:999px;color:var(--fg-muted)}.search[_ngcontent-%COMP%]:focus-within{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-ring)}.search-input[_ngcontent-%COMP%]{flex:1;border:0;outline:0;background:transparent;color:var(--fg-primary);font-size:13px;padding:.45rem 0}.search-input[_ngcontent-%COMP%]::placeholder{color:var(--fg-subtle)}.search[_ngcontent-%COMP%] .kbd[_ngcontent-%COMP%]{margin-left:.4rem}.date[_ngcontent-%COMP%]{width:8.25rem}.filters[_ngcontent-%COMP%] .input[_ngcontent-%COMP%], .filters[_ngcontent-%COMP%] .select[_ngcontent-%COMP%]{font-size:12px}.filters[_ngcontent-%COMP%] .select[_ngcontent-%COMP%]{max-width:9.5rem}.filters[_ngcontent-%COMP%] .select.author[_ngcontent-%COMP%]{max-width:8.5rem}.filters[_ngcontent-%COMP%] .input.file[_ngcontent-%COMP%]{width:9rem}.actions[_ngcontent-%COMP%]{display:flex;gap:.3rem;align-items:center}.nav[_ngcontent-%COMP%]{display:flex;gap:.15rem;padding:0}.nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{font-size:12px;color:var(--fg-muted);text-decoration:none;padding:.3rem .65rem;border-radius:var(--radius-sm);transition:background .15s ease,color .15s ease}.nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:var(--bg-elevated);color:var(--fg-primary)}.nav[_ngcontent-%COMP%] a.active[_ngcontent-%COMP%]{background:var(--bg-elevated);color:var(--accent);font-weight:600}.search-mode[_ngcontent-%COMP%]{background:transparent;border:0;padding:0;cursor:pointer;color:var(--fg-muted);display:flex;align-items:center}.search-mode[_ngcontent-%COMP%]:hover{color:var(--fg-primary)}.search.search-nl[_ngcontent-%COMP%]{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in oklab,var(--accent) 20%,transparent)}.ai-pill[_ngcontent-%COMP%]{font-size:10px;font-weight:700;letter-spacing:.04em;background:var(--accent);color:var(--accent-fg);padding:1px 5px;border-radius:4px}.view-toggle[_ngcontent-%COMP%]{font-size:11px;letter-spacing:.04em;text-transform:uppercase;padding:.35rem .6rem}.clear-filters[_ngcontent-%COMP%]{font-size:11px;color:var(--danger);border-color:color-mix(in oklab,var(--danger) 24%,transparent)}.nl-chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.4rem 1rem;border-bottom:1px solid var(--border-soft);background:var(--bg-surface);font-size:11px}.filter-chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:0 1rem .55rem;background:color-mix(in oklab,var(--bg-glass) 94%,transparent);font-size:11px}.chip-label[_ngcontent-%COMP%]{color:var(--fg-muted);margin-right:.2rem}.chip[_ngcontent-%COMP%]{background:var(--bg-elevated);border:1px solid var(--border-soft);padding:2px 8px;border-radius:999px;color:var(--fg-secondary)}button.chip[_ngcontent-%COMP%]{cursor:pointer;font-family:inherit}.chip.active[_ngcontent-%COMP%]{display:inline-flex;gap:.35rem;align-items:center;border-color:color-mix(in oklab,var(--accent) 35%,var(--border-soft));color:var(--fg-primary)}.chip.active[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:var(--fg-muted);font-weight:700}.chip.muted[_ngcontent-%COMP%]{font-style:italic;color:var(--fg-subtle)}@media (max-width: 1280px){.filters[_ngcontent-%COMP%] .input.file[_ngcontent-%COMP%]{display:none}}@media (max-width: 1100px){.filters[_ngcontent-%COMP%] .date[_ngcontent-%COMP%]{display:none}.search[_ngcontent-%COMP%]{max-width:280px}}@media (max-width: 900px){.toolbar[_ngcontent-%COMP%]{grid-template-columns:auto minmax(0,1fr) auto;row-gap:.5rem}.nav[_ngcontent-%COMP%]{grid-column:1 / -1;order:5}.filters[_ngcontent-%COMP%] .select[_ngcontent-%COMP%]{display:none}}"],changeDetection:0})};function dt(n){return n.startsWith("origin/")||n.includes("/origin/")}var Q=class n{http=v(de);base="/api";cache=new we(50);naturalLanguage(e,t={}){let s=new pe().set("q",e).set("page",String(t.page??1)).set("pageSize",String(t.pageSize??100));for(let p of["author","since","until","branch","file"]){let f=t[p];f&&(s=s.set(p,String(f)))}return this.cache.get(`nl:${s.toString()}`,()=>this.http.get(`${this.base}/search`,{params:s}),ke.SHORT)}invalidate(){this.cache.clear()}static \u0275fac=function(t){return new(t||n)};static \u0275prov=re({token:n,factory:n.\u0275fac,providedIn:"root"})};function mt(n,e){if(n&1&&(o(0,"div",2)(1,"span"),l(2),r()()),n&2){let t=e.ngIf;a(2),b(t)}}function ut(n,e){n&1&&(o(0,"div",3),x(1,"span",4),l(2," Loading commits\u2026 "),r())}var U=class n{state=v(O);git=v(Se);search=v(Q);route=v(ge);commitsResp=Me(ye(this.state.filters).pipe(ie(200),oe(e=>{this.state.loading.set(!0),this.state.error.set(null);let i=this.state.searchMode()==="nl"&&(e.search||"").trim().length>0,s=!i&&(e.page??1)===1;return(i?this.search.naturalLanguage(e.search||"",e):s?this.git.streamCommits(e):this.git.getCommits(e)).pipe(ne(f=>(this.state.error.set(this.errorMessage(f)),this.state.loading.set(!1),te(null))))})),{initialValue:null});authorsLoaded=M(!1);pendingSharedCommit=M(null);loadingSharedCommit=M(null);constructor(){this.route.queryParamMap.subscribe(e=>{let t=gt(e.get("commit"));t&&(this.pendingSharedCommit.set(t),this.state.selectHash(t))}),k(()=>{let e=this.commitsResp();if(!e)return;let t=z(()=>this.state.selectedHash()),i=t?z(()=>Y(this.state.commits(),t)):void 0,s=i&&!Y(e.commits,i.hash)?[i,...e.commits]:e.commits;this.state.commits.set(s),this.state.total.set(e.total),this.state.page.set(e.page),this.state.pageSize.set(e.pageSize),this.state.loading.set(!1);let p=e.parsedQuery;this.state.nlInterpretation.set(p??null);let f=this.pendingSharedCommit();if(f){let ee=Y(s,f);if(ee){this.state.selectHash(ee.hash),this.pendingSharedCommit.set(null);return}this.loadSharedCommit(f);return}!z(()=>this.state.selectedHash())&&e.commits.length&&this.state.selectHash(e.commits[0].hash)}),k(()=>{this.commitsResp()&&!this.authorsLoaded()&&(this.authorsLoaded.set(!0),this.git.getAuthors().subscribe({next:e=>this.state.authors.set(e),error:()=>this.state.authors.set([])}),this.git.getBranches().subscribe({next:e=>this.state.branches.set(e),error:()=>this.state.branches.set([])}),this.git.getTags().subscribe({next:e=>this.state.tags.set(e),error:()=>this.state.tags.set([])}))})}errorMessage(e){if(e&&typeof e=="object"&&"error"in e){let t=e.error;if(t?.error)return t.error}return e instanceof Error?e.message:"Failed to load commits."}loadSharedCommit(e){this.loadingSharedCommit()!==e&&(this.loadingSharedCommit.set(e),this.git.getCommit(e).subscribe({next:t=>{this.state.commits.update(i=>i.some(s=>s.hash===t.hash)?i:[t,...i]),this.state.selectHash(t.hash),this.pendingSharedCommit.set(null),this.loadingSharedCommit.set(null)},error:()=>{this.state.error.set(`Shared commit not found: ${e}`),this.pendingSharedCommit.set(null),this.loadingSharedCommit.set(null)}}))}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=w({type:n,selectors:[["app-root"]],decls:6,vars:2,consts:[["class","status-bar",4,"ngIf"],["class","loading","aria-live","polite",4,"ngIf"],[1,"status-bar"],["aria-live","polite",1,"loading"],[1,"spinner"]],template:function(t,i){t&1&&(x(0,"app-toolbar"),h(1,mt,3,1,"div",0),x(2,"router-outlet"),h(3,ut,3,0,"div",1),x(4,"app-command-palette")(5,"app-shortcuts-modal")),t&2&&(a(),c("ngIf",i.state.error()),a(2),c("ngIf",i.state.loading()))},dependencies:[T,S,he,Z,K,$],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden;background:var(--bg-app);color:var(--fg-primary)}.status-bar[_ngcontent-%COMP%]{padding:.5rem 1rem;background:#dc26261a;color:var(--danger);border-bottom:1px solid var(--border-soft);font-size:13px}.loading[_ngcontent-%COMP%]{position:fixed;bottom:1rem;right:1rem;display:flex;align-items:center;gap:.5rem;padding:.5rem .85rem;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-size:12px;color:var(--fg-secondary);z-index:80}.spinner[_ngcontent-%COMP%]{width:14px;height:14px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:_ngcontent-%COMP%_spin .7s linear infinite}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}"],changeDetection:0})};function gt(n){let e=n?.trim();return e&&/^[0-9a-f]{7,40}$/i.test(e)?e:null}function Y(n,e){let t=e.toLowerCase();return n.find(i=>i.hash.toLowerCase()===t||i.shortHash.toLowerCase()===t||i.hash.toLowerCase().startsWith(t))}ce(U,Pe).catch(n=>console.error(n));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.flex-shrink{flex-shrink:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.border{border-width:1px}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.underline{text-decoration-line:underline}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{color-scheme:light;--bg-app: #f7f8fa;--bg-surface: #ffffff;--bg-surface-2: #f3f4f6;--bg-elevated: #ffffff;--bg-panel: rgba(255, 255, 255, .78);--bg-glass: rgba(255, 255, 255, .72);--bg-hover: #eef2ff;--bg-selected: #e0e7ff;--bg-overlay: rgba(15, 23, 42, .45);--bg-gradient: radial-gradient(circle at 12% -8%, rgba(79, 70, 229, .12), transparent 34%), radial-gradient(circle at 90% 0%, rgba(6, 182, 212, .12), transparent 28%), linear-gradient(180deg, #f8fafc 0%, #eef2f7 100%);--fg-primary: #0f172a;--fg-secondary: #475569;--fg-muted: #64748b;--fg-subtle: #94a3b8;--fg-inverted: #ffffff;--border-soft: #e2e8f0;--border-strong: #cbd5e1;--border-focus: #6366f1;--accent: #4f46e5;--accent-hover: #4338ca;--accent-soft: #eef2ff;--accent-fg: #ffffff;--accent-ring: rgba(99, 102, 241, .18);--success: #16a34a;--warning: #d97706;--danger: #dc2626;--diff-add-bg: #dcfce7;--diff-add-fg: #14532d;--diff-add-gutter: #86efac;--diff-del-bg: #fee2e2;--diff-del-fg: #7f1d1d;--diff-del-gutter: #fca5a5;--diff-hunk-bg: #f1f5f9;--diff-hunk-fg: #475569;--graph-guide: rgba(148, 163, 184, .28);--graph-row-alt: rgba(15, 23, 42, .025);--graph-row-hover: rgba(79, 70, 229, .08);--graph-row-selected: rgba(79, 70, 229, .14);--graph-node-ring: #ffffff;--graph-shadow: rgba(15, 23, 42, .12);--chart-add: #16a34a;--chart-del: #dc2626;--chart-line: #4f46e5;--chart-fill: rgba(79, 70, 229, .16);--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 4px 12px rgba(15, 23, 42, .08);--shadow-lg: 0 12px 32px rgba(15, 23, 42, .12);--shadow-glow: 0 16px 60px rgba(79, 70, 229, .14);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Liberation Mono", "Courier New", monospace}:root.dark{color-scheme:dark;--bg-app: #0b1020;--bg-surface: #111827;--bg-surface-2: #0f172a;--bg-elevated: #1f2937;--bg-panel: rgba(17, 24, 39, .74);--bg-glass: rgba(15, 23, 42, .72);--bg-hover: #1e293b;--bg-selected: #312e81;--bg-overlay: rgba(2, 6, 23, .6);--bg-gradient: radial-gradient(circle at 10% -10%, rgba(129, 140, 248, .18), transparent 34%), radial-gradient(circle at 94% 2%, rgba(34, 211, 238, .12), transparent 30%), linear-gradient(180deg, #0b1020 0%, #020617 100%);--fg-primary: #f8fafc;--fg-secondary: #cbd5e1;--fg-muted: #94a3b8;--fg-subtle: #64748b;--fg-inverted: #0b1020;--border-soft: #1f2937;--border-strong: #334155;--border-focus: #818cf8;--accent: #818cf8;--accent-hover: #a5b4fc;--accent-soft: #1e1b4b;--accent-fg: #0b1020;--accent-ring: rgba(129, 140, 248, .24);--success: #4ade80;--warning: #fbbf24;--danger: #f87171;--diff-add-bg: rgba(34, 197, 94, .16);--diff-add-fg: #bbf7d0;--diff-add-gutter: #166534;--diff-del-bg: rgba(239, 68, 68, .18);--diff-del-fg: #fecaca;--diff-del-gutter: #7f1d1d;--diff-hunk-bg: #1f2937;--diff-hunk-fg: #cbd5e1;--graph-guide: rgba(148, 163, 184, .22);--graph-row-alt: rgba(248, 250, 252, .025);--graph-row-hover: rgba(129, 140, 248, .12);--graph-row-selected: rgba(129, 140, 248, .2);--graph-node-ring: #111827;--graph-shadow: rgba(0, 0, 0, .45);--chart-add: #4ade80;--chart-del: #f87171;--chart-line: #a5b4fc;--chart-fill: rgba(129, 140, 248, .18);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45);--shadow-md: 0 6px 16px rgba(0, 0, 0, .45);--shadow-lg: 0 18px 40px rgba(0, 0, 0, .55);--shadow-glow: 0 24px 80px rgba(79, 70, 229, .18)}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--fg-primary);background:var(--bg-gradient);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}::selection{background:var(--accent);color:var(--accent-fg)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}button{font-family:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.45rem .85rem;font-size:13px;font-weight:500;border-radius:calc(var(--radius-sm) + 2px);background:linear-gradient(180deg,color-mix(in oklab,var(--bg-surface) 92%,white 8%),var(--bg-surface-2));color:var(--fg-primary);border:1px solid var(--border-soft);cursor:pointer;box-shadow:var(--shadow-sm);transition:background .12s,border-color .12s,color .12s,transform 60ms,box-shadow .12s}.btn:hover{background:var(--bg-hover);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);color:var(--accent-fg);border-color:transparent}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;border-color:transparent;box-shadow:none}.btn-ghost:hover{background:var(--bg-hover)}.btn-icon{width:32px;padding:0;height:32px}.input,.select{background:color-mix(in oklab,var(--bg-surface) 88%,transparent);color:var(--fg-primary);border:1px solid var(--border-soft);border-radius:calc(var(--radius-sm) + 2px);padding:.4rem .6rem;font-size:13px;outline:none;min-height:32px}.input::placeholder{color:var(--fg-subtle)}.input:focus,.select:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-ring)}.panel-card{background:linear-gradient(180deg,color-mix(in oklab,var(--bg-panel) 94%,white 6%),var(--bg-panel));border:1px solid color-mix(in oklab,var(--border-soft) 88%,transparent);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.metric-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;border:1px solid var(--border-soft);border-radius:999px;background:var(--bg-surface-2);color:var(--fg-secondary);font-size:11px;font-variant-numeric:tabular-nums}.skeleton{position:relative;overflow:hidden;background:var(--bg-surface-2);border-radius:var(--radius-sm)}.skeleton:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,color-mix(in oklab,var(--fg-muted) 14%,transparent),transparent);animation:shimmer 1.4s infinite}@keyframes shimmer{to{transform:translate(100%)}}.kbd{display:inline-flex;align-items:center;justify-content:center;min-width:22px;padding:1px 6px;font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--fg-secondary);background:var(--bg-surface);border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:4px}.divider{height:1px;background:var(--border-soft)}.hljs{background:transparent;color:var(--fg-primary)}.hljs-keyword,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-section,.hljs-name{color:#c084fc}.dark .hljs-keyword,.dark .hljs-selector-tag,.dark .hljs-meta-keyword,.dark .hljs-doctag,.dark .hljs-section,.dark .hljs-name{color:#d8b4fe}.hljs-string,.hljs-attr,.hljs-symbol,.hljs-bullet,.hljs-addition{color:#15803d}.dark .hljs-string,.dark .hljs-attr,.dark .hljs-symbol,.dark .hljs-bullet,.dark .hljs-addition{color:#86efac}.hljs-number,.hljs-literal,.hljs-link{color:#b45309}.dark .hljs-number,.dark .hljs-literal,.dark .hljs-link{color:#fcd34d}.hljs-comment,.hljs-quote{color:var(--fg-subtle);font-style:italic}.hljs-title,.hljs-class .hljs-title,.hljs-type{color:#1d4ed8}.dark .hljs-title,.dark .hljs-class .hljs-title,.dark .hljs-type{color:#93c5fd}.hljs-deletion{color:#b91c1c}.dark .hljs-deletion{color:#fca5a5}.cdk-overlay-dark-backdrop{background:var(--bg-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
|
|
@@ -55,3 +55,4 @@ export declare function computeChurnByDay(pairs: Array<{
|
|
|
55
55
|
* and recency. Inspired by Microsoft Research's "fault density" findings.
|
|
56
56
|
*/
|
|
57
57
|
export declare function computeRiskyFiles(churn: FileChurn[], limit?: number): RiskyFile[];
|
|
58
|
+
//# sourceMappingURL=aggregations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregations.d.ts","sourceRoot":"","sources":["../../src/backend/aggregations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3F,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAoB5E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC,GAClD,SAAS,EAAE,CA4Bb;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC,GAClD,cAAc,CAAC,YAAY,CAAC,CAmB9B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,SAAK,GAAG,SAAS,EAAE,CAiC7E"}
|
|
@@ -16,7 +16,11 @@ export interface CommitAnnotations {
|
|
|
16
16
|
*/
|
|
17
17
|
export declare class AnnotationsStore {
|
|
18
18
|
private file;
|
|
19
|
+
private journal;
|
|
19
20
|
private mu;
|
|
21
|
+
private cache;
|
|
22
|
+
private cacheSignature;
|
|
23
|
+
private resetJournalOnNextWrite;
|
|
20
24
|
constructor(repoCwd: string);
|
|
21
25
|
list(hash: string): Promise<AnnotationComment[]>;
|
|
22
26
|
add(hash: string, input: {
|
|
@@ -25,6 +29,11 @@ export declare class AnnotationsStore {
|
|
|
25
29
|
}): Promise<AnnotationComment>;
|
|
26
30
|
remove(hash: string, id: string): Promise<boolean>;
|
|
27
31
|
private load;
|
|
28
|
-
private
|
|
32
|
+
private append;
|
|
33
|
+
private saveSnapshot;
|
|
34
|
+
private isValidSnapshotFile;
|
|
35
|
+
private storageSignature;
|
|
36
|
+
private applyJournal;
|
|
29
37
|
private withLock;
|
|
30
38
|
}
|
|
39
|
+
//# sourceMappingURL=annotations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/backend/annotations.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAaD;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,EAAE,CAAoC;IAC9C,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,uBAAuB,CAAS;gBAE5B,OAAO,EAAE,MAAM;IAMrB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKhD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmBtF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAe1C,IAAI;YAmCJ,MAAM;YAcN,YAAY;YAOZ,mBAAmB;YAUnB,gBAAgB;IAQ9B,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,QAAQ;CAQjB"}
|
|
@@ -17,14 +17,19 @@ const ROOT_DIR = path_1.default.join(os_1.default.homedir(), '.git-history-ui');
|
|
|
17
17
|
*/
|
|
18
18
|
class AnnotationsStore {
|
|
19
19
|
file;
|
|
20
|
+
journal;
|
|
20
21
|
mu = Promise.resolve();
|
|
22
|
+
cache = null;
|
|
23
|
+
cacheSignature = '';
|
|
24
|
+
resetJournalOnNextWrite = false;
|
|
21
25
|
constructor(repoCwd) {
|
|
22
26
|
const id = crypto_1.default.createHash('sha256').update(path_1.default.resolve(repoCwd)).digest('hex').slice(0, 16);
|
|
23
27
|
this.file = path_1.default.join(ROOT_DIR, id, 'annotations.json');
|
|
28
|
+
this.journal = path_1.default.join(ROOT_DIR, id, 'annotations.jsonl');
|
|
24
29
|
}
|
|
25
30
|
async list(hash) {
|
|
26
31
|
const data = await this.load();
|
|
27
|
-
return data.byHash[hash] ?? [];
|
|
32
|
+
return [...(data.byHash[hash] ?? [])];
|
|
28
33
|
}
|
|
29
34
|
async add(hash, input) {
|
|
30
35
|
let result;
|
|
@@ -39,7 +44,7 @@ class AnnotationsStore {
|
|
|
39
44
|
const list = data.byHash[hash] ?? [];
|
|
40
45
|
list.push(comment);
|
|
41
46
|
data.byHash[hash] = list;
|
|
42
|
-
await this.
|
|
47
|
+
await this.append({ op: 'add', hash, comment }, data);
|
|
43
48
|
result = comment;
|
|
44
49
|
});
|
|
45
50
|
return result;
|
|
@@ -54,29 +59,99 @@ class AnnotationsStore {
|
|
|
54
59
|
return;
|
|
55
60
|
list.splice(idx, 1);
|
|
56
61
|
data.byHash[hash] = list;
|
|
57
|
-
await this.
|
|
62
|
+
await this.append({ op: 'remove', hash, id }, data);
|
|
58
63
|
removed = true;
|
|
59
64
|
});
|
|
60
65
|
return removed;
|
|
61
66
|
}
|
|
62
67
|
async load() {
|
|
68
|
+
const signature = await this.storageSignature();
|
|
69
|
+
if (this.cache && signature === this.cacheSignature)
|
|
70
|
+
return this.cache;
|
|
71
|
+
let data = { version: 1, byHash: {} };
|
|
72
|
+
let replayJournal = true;
|
|
63
73
|
try {
|
|
64
74
|
const raw = await fs_1.default.promises.readFile(this.file, 'utf8');
|
|
65
75
|
const parsed = JSON.parse(raw);
|
|
66
|
-
if (parsed?.version === 1 && parsed.byHash)
|
|
67
|
-
|
|
76
|
+
if (parsed?.version === 1 && parsed.byHash) {
|
|
77
|
+
data = parsed;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
replayJournal = false;
|
|
81
|
+
this.resetJournalOnNextWrite = true;
|
|
82
|
+
}
|
|
68
83
|
}
|
|
69
|
-
catch {
|
|
70
|
-
|
|
84
|
+
catch (err) {
|
|
85
|
+
const code = err.code;
|
|
86
|
+
replayJournal = code === 'ENOENT';
|
|
87
|
+
if (!replayJournal)
|
|
88
|
+
this.resetJournalOnNextWrite = true;
|
|
89
|
+
}
|
|
90
|
+
if (replayJournal) {
|
|
91
|
+
try {
|
|
92
|
+
const raw = await fs_1.default.promises.readFile(this.journal, 'utf8');
|
|
93
|
+
for (const line of raw.split('\n')) {
|
|
94
|
+
if (!line.trim())
|
|
95
|
+
continue;
|
|
96
|
+
this.applyJournal(data, JSON.parse(line));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
/* missing or corrupt -> default */
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
this.cache = data;
|
|
104
|
+
this.cacheSignature = signature;
|
|
105
|
+
return data;
|
|
106
|
+
}
|
|
107
|
+
async append(entry, data) {
|
|
108
|
+
await fs_1.default.promises.mkdir(path_1.default.dirname(this.journal), { recursive: true });
|
|
109
|
+
if (this.resetJournalOnNextWrite) {
|
|
110
|
+
await fs_1.default.promises.writeFile(this.journal, `${JSON.stringify(entry)}\n`, 'utf8');
|
|
111
|
+
this.resetJournalOnNextWrite = false;
|
|
71
112
|
}
|
|
72
|
-
|
|
113
|
+
else {
|
|
114
|
+
await fs_1.default.promises.appendFile(this.journal, `${JSON.stringify(entry)}\n`, 'utf8');
|
|
115
|
+
}
|
|
116
|
+
if (!(await this.isValidSnapshotFile())) {
|
|
117
|
+
await this.saveSnapshot(data);
|
|
118
|
+
}
|
|
119
|
+
this.cacheSignature = await this.storageSignature();
|
|
73
120
|
}
|
|
74
|
-
async
|
|
121
|
+
async saveSnapshot(data) {
|
|
75
122
|
await fs_1.default.promises.mkdir(path_1.default.dirname(this.file), { recursive: true });
|
|
76
123
|
const tmp = `${this.file}.tmp-${process.pid}`;
|
|
77
124
|
await fs_1.default.promises.writeFile(tmp, JSON.stringify(data, null, 2), 'utf8');
|
|
78
125
|
await fs_1.default.promises.rename(tmp, this.file);
|
|
79
126
|
}
|
|
127
|
+
async isValidSnapshotFile() {
|
|
128
|
+
try {
|
|
129
|
+
const raw = await fs_1.default.promises.readFile(this.file, 'utf8');
|
|
130
|
+
const parsed = JSON.parse(raw);
|
|
131
|
+
return parsed?.version === 1 && !!parsed.byHash;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async storageSignature() {
|
|
138
|
+
const [file, journal] = await Promise.all([
|
|
139
|
+
fs_1.default.promises.stat(this.file).catch(() => null),
|
|
140
|
+
fs_1.default.promises.stat(this.journal).catch(() => null)
|
|
141
|
+
]);
|
|
142
|
+
return `${file?.mtimeMs ?? 0}:${file?.size ?? 0}|${journal?.mtimeMs ?? 0}:${journal?.size ?? 0}`;
|
|
143
|
+
}
|
|
144
|
+
applyJournal(data, entry) {
|
|
145
|
+
if (entry.op === 'add') {
|
|
146
|
+
const list = data.byHash[entry.hash] ?? [];
|
|
147
|
+
if (!list.some((c) => c.id === entry.comment.id))
|
|
148
|
+
list.push(entry.comment);
|
|
149
|
+
data.byHash[entry.hash] = list;
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const list = data.byHash[entry.hash] ?? [];
|
|
153
|
+
data.byHash[entry.hash] = list.filter((c) => c.id !== entry.id);
|
|
154
|
+
}
|
|
80
155
|
withLock(fn) {
|
|
81
156
|
const prev = this.mu;
|
|
82
157
|
let release;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/backend/annotations.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/backend/annotations.ts"],"names":[],"mappings":"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"}
|