@cosmos.gl/graph 2.3.1-beta.1 → 2.4.0
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/.eslintrc +61 -0
- package/CHARTER.md +69 -0
- package/GOVERNANCE.md +21 -0
- package/dist/index.d.ts +46 -15
- package/dist/index.js +2986 -2701
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +180 -62
- package/dist/index.min.js.map +1 -1
- package/dist/modules/GraphData/index.d.ts +18 -2
- package/dist/modules/Points/atlas-utils.d.ts +24 -0
- package/dist/modules/Points/index.d.ts +21 -2
- package/dist/modules/Store/index.d.ts +6 -1
- package/dist/stories/create-story.d.ts +5 -1
- package/dist/stories/shapes/image-example/index.d.ts +5 -0
- package/dist/stories/shapes.stories.d.ts +1 -0
- package/package.json +4 -4
- package/src/config.ts +1 -0
- package/src/declaration.d.ts +5 -0
- package/src/index.ts +119 -67
- package/src/modules/GraphData/index.ts +68 -6
- package/src/modules/Points/atlas-utils.ts +137 -0
- package/src/modules/Points/draw-highlighted.vert +3 -3
- package/src/modules/Points/draw-points.frag +106 -14
- package/src/modules/Points/draw-points.vert +51 -25
- package/src/modules/Points/find-points-on-area-selection.frag +6 -5
- package/src/modules/Points/index.ts +121 -13
- package/src/modules/Store/index.ts +11 -3
- package/src/stories/3. api-reference.mdx +48 -1
- package/src/stories/create-story.ts +32 -5
- package/src/stories/shapes/image-example/icons/box.png +0 -0
- package/src/stories/shapes/image-example/icons/lego.png +0 -0
- package/src/stories/shapes/image-example/icons/s.png +0 -0
- package/src/stories/shapes/image-example/icons/swift.png +0 -0
- package/src/stories/shapes/image-example/icons/toolbox.png +0 -0
- package/src/stories/shapes/image-example/index.ts +239 -0
- package/src/stories/shapes.stories.ts +12 -0
package/dist/index.min.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
(function(Dt,tr){typeof exports=="object"&&typeof module<"u"?tr(exports):typeof define=="function"&&define.amd?define(["exports"],tr):(Dt=typeof globalThis<"u"?globalThis:Dt||self,tr(Dt.Cosmos={}))})(this,function(Dt){"use strict";var tr="http://www.w3.org/1999/xhtml";const ff={svg:"http://www.w3.org/2000/svg",xhtml:tr,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Bi(t){var e=t+="",n=e.indexOf(":");return n>=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),ff.hasOwnProperty(e)?{space:ff[e],local:t}:t}function Wc(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===tr&&e.documentElement.namespaceURI===tr?e.createElement(t):e.createElementNS(n,t)}}function qc(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function uf(t){var e=Bi(t);return(e.local?qc:Wc)(e)}function Yc(){}function ya(t){return t==null?Yc:function(){return this.querySelector(t)}}function Zc(t){typeof t!="function"&&(t=ya(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,f=r[i]=new Array(s),u,l,p=0;p<s;++p)(u=o[p])&&(l=t.call(u,u.__data__,p,o))&&("__data__"in u&&(l.__data__=u.__data__),f[p]=l);return new en(r,this._parents)}function Qc(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function Kc(){return[]}function lf(t){return t==null?Kc:function(){return this.querySelectorAll(t)}}function Jc(t){return function(){return Qc(t.apply(this,arguments))}}function eh(t){typeof t=="function"?t=Jc(t):t=lf(t);for(var e=this._groups,n=e.length,r=[],i=[],o=0;o<n;++o)for(var s=e[o],f=s.length,u,l=0;l<f;++l)(u=s[l])&&(r.push(t.call(u,u.__data__,l,s)),i.push(u));return new en(r,i)}function cf(t){return function(){return this.matches(t)}}function hf(t){return function(e){return e.matches(t)}}var th=Array.prototype.find;function nh(t){return function(){return th.call(this.children,t)}}function rh(){return this.firstElementChild}function ih(t){return this.select(t==null?rh:nh(typeof t=="function"?t:hf(t)))}var oh=Array.prototype.filter;function ah(){return Array.from(this.children)}function sh(t){return function(){return oh.call(this.children,t)}}function fh(t){return this.selectAll(t==null?ah:sh(typeof t=="function"?t:hf(t)))}function uh(t){typeof t!="function"&&(t=cf(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,f=r[i]=[],u,l=0;l<s;++l)(u=o[l])&&t.call(u,u.__data__,l,o)&&f.push(u);return new en(r,this._parents)}function df(t){return new Array(t.length)}function lh(){return new en(this._enter||this._groups.map(df),this._parents)}function Ui(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}Ui.prototype={constructor:Ui,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 ch(t){return function(){return t}}function hh(t,e,n,r,i,o){for(var s=0,f,u=e.length,l=o.length;s<l;++s)(f=e[s])?(f.__data__=o[s],r[s]=f):n[s]=new Ui(t,o[s]);for(;s<u;++s)(f=e[s])&&(i[s]=f)}function dh(t,e,n,r,i,o,s){var f,u,l=new Map,p=e.length,x=o.length,S=new Array(p),D;for(f=0;f<p;++f)(u=e[f])&&(S[f]=D=s.call(u,u.__data__,f,e)+"",l.has(D)?i[f]=u:l.set(D,u));for(f=0;f<x;++f)D=s.call(t,o[f],f,o)+"",(u=l.get(D))?(r[f]=u,u.__data__=o[f],l.delete(D)):n[f]=new Ui(t,o[f]);for(f=0;f<p;++f)(u=e[f])&&l.get(S[f])===u&&(i[f]=u)}function mh(t){return t.__data__}function ph(t,e){if(!arguments.length)return Array.from(this,mh);var n=e?dh:hh,r=this._parents,i=this._groups;typeof t!="function"&&(t=ch(t));for(var o=i.length,s=new Array(o),f=new Array(o),u=new Array(o),l=0;l<o;++l){var p=r[l],x=i[l],S=x.length,D=vh(t.call(p,p&&p.__data__,l,r)),Y=D.length,Ee=f[l]=new Array(Y),Te=s[l]=new Array(Y),se=u[l]=new Array(S);n(p,x,Ee,Te,se,D,e);for(var Ue=0,He=0,H,fe;Ue<Y;++Ue)if(H=Ee[Ue]){for(Ue>=He&&(He=Ue+1);!(fe=Te[He])&&++He<Y;);H._next=fe||null}}return s=new en(s,r),s._enter=f,s._exit=u,s}function vh(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function gh(){return new en(this._exit||this._groups.map(df),this._parents)}function yh(t,e,n){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),n==null?o.remove():n(o),r&&i?r.merge(i).order():i}function xh(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,o=r.length,s=Math.min(i,o),f=new Array(i),u=0;u<s;++u)for(var l=n[u],p=r[u],x=l.length,S=f[u]=new Array(x),D,Y=0;Y<x;++Y)(D=l[Y]||p[Y])&&(S[Y]=D);for(;u<i;++u)f[u]=n[u];return new en(f,this._parents)}function bh(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r=t[e],i=r.length-1,o=r[i],s;--i>=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function _h(t){t||(t=Sh);function e(x,S){return x&&S?t(x.__data__,S.__data__):!x-!S}for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var s=n[o],f=s.length,u=i[o]=new Array(f),l,p=0;p<f;++p)(l=s[p])&&(u[p]=l);u.sort(e)}return new en(i,this._parents).order()}function Sh(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function Th(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function wh(){return Array.from(this)}function Ah(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var s=r[i];if(s)return s}return null}function Eh(){let t=0;for(const e of this)++t;return t}function Ph(){return!this.node()}function Ch(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i=e[n],o=0,s=i.length,f;o<s;++o)(f=i[o])&&t.call(f,f.__data__,o,i);return this}function kh(t){return function(){this.removeAttribute(t)}}function Lh(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Fh(t,e){return function(){this.setAttribute(t,e)}}function Rh(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Ih(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function Dh(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function zh(t,e){var n=Bi(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?Lh:kh:typeof e=="function"?n.local?Dh:Ih:n.local?Rh:Fh)(n,e))}function mf(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Oh(t){return function(){this.style.removeProperty(t)}}function Mh(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Nh(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Gh(t,e,n){return arguments.length>1?this.each((e==null?Oh:typeof e=="function"?Nh:Mh)(t,e,n??"")):Cr(this.node(),t)}function Cr(t,e){return t.style.getPropertyValue(e)||mf(t).getComputedStyle(t,null).getPropertyValue(e)}function Bh(t){return function(){delete this[t]}}function Uh(t,e){return function(){this[t]=e}}function Vh(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function $h(t,e){return arguments.length>1?this.each((e==null?Bh:typeof e=="function"?Vh:Uh)(t,e)):this.node()[t]}function pf(t){return t.trim().split(/^|\s+/)}function xa(t){return t.classList||new vf(t)}function vf(t){this._node=t,this._names=pf(t.getAttribute("class")||"")}vf.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 gf(t,e){for(var n=xa(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function yf(t,e){for(var n=xa(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function Hh(t){return function(){gf(this,t)}}function jh(t){return function(){yf(this,t)}}function Xh(t,e){return function(){(e.apply(this,arguments)?gf:yf)(this,t)}}function Wh(t,e){var n=pf(t+"");if(arguments.length<2){for(var r=xa(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof e=="function"?Xh:e?Hh:jh)(n,e))}function qh(){this.textContent=""}function Yh(t){return function(){this.textContent=t}}function Zh(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function Qh(t){return arguments.length?this.each(t==null?qh:(typeof t=="function"?Zh:Yh)(t)):this.node().textContent}function Kh(){this.innerHTML=""}function Jh(t){return function(){this.innerHTML=t}}function ed(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function td(t){return arguments.length?this.each(t==null?Kh:(typeof t=="function"?ed:Jh)(t)):this.node().innerHTML}function nd(){this.nextSibling&&this.parentNode.appendChild(this)}function rd(){return this.each(nd)}function id(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function od(){return this.each(id)}function ad(t){var e=typeof t=="function"?t:uf(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function sd(){return null}function fd(t,e){var n=typeof t=="function"?t:uf(t),r=e==null?sd:typeof e=="function"?e:ya(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function ud(){var t=this.parentNode;t&&t.removeChild(this)}function ld(){return this.each(ud)}function cd(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function hd(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function dd(t){return this.select(t?hd:cd)}function md(t){return arguments.length?this.property("__data__",t):this.node().__data__}function pd(t){return function(e){t.call(this,e,this.__data__)}}function vd(t){return t.trim().split(/^|\s+/).map(function(e){var n="",r=e.indexOf(".");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function gd(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,o;n<i;++n)o=e[n],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):e[++r]=o;++r?e.length=r:delete this.__on}}}function yd(t,e,n){return function(){var r=this.__on,i,o=pd(e);if(r){for(var s=0,f=r.length;s<f;++s)if((i=r[s]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=n),i.value=e;return}}this.addEventListener(t.type,o,n),i={type:t.type,name:t.name,value:e,listener:o,options:n},r?r.push(i):this.__on=[i]}}function xd(t,e,n){var r=vd(t+""),i,o=r.length,s;if(arguments.length<2){var f=this.node().__on;if(f){for(var u=0,l=f.length,p;u<l;++u)for(i=0,p=f[u];i<o;++i)if((s=r[i]).type===p.type&&s.name===p.name)return p.value}return}for(f=e?yd:gd,i=0;i<o;++i)this.each(f(r[i],e,n));return this}function xf(t,e,n){var r=mf(t),i=r.CustomEvent;typeof i=="function"?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function bd(t,e){return function(){return xf(this,t,e)}}function _d(t,e){return function(){return xf(this,t,e.apply(this,arguments))}}function Sd(t,e){return this.each((typeof e=="function"?_d:bd)(t,e))}function*Td(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length,s;i<o;++i)(s=r[i])&&(yield s)}var bf=[null];function en(t,e){this._groups=t,this._parents=e}function ni(){return new en([[document.documentElement]],bf)}function wd(){return this}en.prototype=ni.prototype={constructor:en,select:Zc,selectAll:eh,selectChild:ih,selectChildren:fh,filter:uh,data:ph,enter:lh,exit:gh,join:yh,merge:xh,selection:wd,order:bh,sort:_h,call:Th,nodes:wh,node:Ah,size:Eh,empty:Ph,each:Ch,attr:zh,style:Gh,property:$h,classed:Wh,text:Qh,html:td,raise:rd,lower:od,append:ad,insert:fd,remove:ld,clone:dd,datum:md,on:xd,dispatch:Sd,[Symbol.iterator]:Td};function zt(t){return typeof t=="string"?new en([[document.querySelector(t)]],[document.documentElement]):new en([[t]],bf)}function Ad(t){let e;for(;e=t.sourceEvent;)t=e;return t}function kn(t,e){if(t=Ad(t),e===void 0&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,r=r.matrixTransform(e.getScreenCTM().inverse()),[r.x,r.y]}if(e.getBoundingClientRect){var i=e.getBoundingClientRect();return[t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop]}}return[t.pageX,t.pageY]}var Ed={value:()=>{}};function Vi(){for(var t=0,e=arguments.length,n={},r;t<e;++t){if(!(r=arguments[t]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new $i(n)}function $i(t){this._=t}function Pd(t,e){return t.trim().split(/^|\s+/).map(function(n){var r="",i=n.indexOf(".");if(i>=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}$i.prototype=Vi.prototype={constructor:$i,on:function(t,e){var n=this._,r=Pd(t+"",n),i,o=-1,s=r.length;if(arguments.length<2){for(;++o<s;)if((i=(t=r[o]).type)&&(i=Cd(n[i],t.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++o<s;)if(i=(t=r[o]).type)n[i]=_f(n[i],t.name,e);else if(e==null)for(i in n)n[i]=_f(n[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new $i(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var n=new Array(i),r=0,i,o;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(e,n)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};function Cd(t,e){for(var n=0,r=t.length,i;n<r;++n)if((i=t[n]).name===e)return i.value}function _f(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=Ed,t=t.slice(0,r).concat(t.slice(r+1));break}return n!=null&&t.push({name:e,value:n}),t}var kr=0,ri=0,ii=0,Sf=1e3,Hi,oi,ji=0,nr=0,Xi=0,ai=typeof performance=="object"&&performance.now?performance:Date,Tf=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function ba(){return nr||(Tf(kd),nr=ai.now()+Xi)}function kd(){nr=0}function Wi(){this._call=this._time=this._next=null}Wi.prototype=wf.prototype={constructor:Wi,restart:function(t,e,n){if(typeof t!="function")throw new TypeError("callback is not a function");n=(n==null?ba():+n)+(e==null?0:+e),!this._next&&oi!==this&&(oi?oi._next=this:Hi=this,oi=this),this._call=t,this._time=n,_a()},stop:function(){this._call&&(this._call=null,this._time=1/0,_a())}};function wf(t,e,n){var r=new Wi;return r.restart(t,e,n),r}function Ld(){ba(),++kr;for(var t=Hi,e;t;)(e=nr-t._time)>=0&&t._call.call(null,e),t=t._next;--kr}function Af(){nr=(ji=ai.now())+Xi,kr=ri=0;try{Ld()}finally{kr=0,Rd(),nr=0}}function Fd(){var t=ai.now(),e=t-ji;e>Sf&&(Xi-=e,ji=t)}function Rd(){for(var t,e=Hi,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Hi=n);oi=t,_a(r)}function _a(t){if(!kr){ri&&(ri=clearTimeout(ri));var e=t-nr;e>24?(t<1/0&&(ri=setTimeout(Af,t-ai.now()-Xi)),ii&&(ii=clearInterval(ii))):(ii||(ji=ai.now(),ii=setInterval(Fd,Sf)),kr=1,Tf(Af))}}function Ef(t,e,n){var r=new Wi;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var Id=Vi("start","end","cancel","interrupt"),Dd=[],Pf=0,Cf=1,Sa=2,qi=3,kf=4,Ta=5,Yi=6;function Zi(t,e,n,r,i,o){var s=t.__transition;if(!s)t.__transition={};else if(n in s)return;zd(t,n,{name:e,index:r,group:i,on:Id,tween:Dd,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Pf})}function wa(t,e){var n=cn(t,e);if(n.state>Pf)throw new Error("too late; already scheduled");return n}function bn(t,e){var n=cn(t,e);if(n.state>qi)throw new Error("too late; already running");return n}function cn(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function zd(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=wf(o,0,n.time);function o(l){n.state=Cf,n.timer.restart(s,n.delay,n.time),n.delay<=l&&s(l-n.delay)}function s(l){var p,x,S,D;if(n.state!==Cf)return u();for(p in r)if(D=r[p],D.name===n.name){if(D.state===qi)return Ef(s);D.state===kf?(D.state=Yi,D.timer.stop(),D.on.call("interrupt",t,t.__data__,D.index,D.group),delete r[p]):+p<e&&(D.state=Yi,D.timer.stop(),D.on.call("cancel",t,t.__data__,D.index,D.group),delete r[p])}if(Ef(function(){n.state===qi&&(n.state=kf,n.timer.restart(f,n.delay,n.time),f(l))}),n.state=Sa,n.on.call("start",t,t.__data__,n.index,n.group),n.state===Sa){for(n.state=qi,i=new Array(S=n.tween.length),p=0,x=-1;p<S;++p)(D=n.tween[p].value.call(t,t.__data__,n.index,n.group))&&(i[++x]=D);i.length=x+1}}function f(l){for(var p=l<n.duration?n.ease.call(null,l/n.duration):(n.timer.restart(u),n.state=Ta,1),x=-1,S=i.length;++x<S;)i[x].call(t,p);n.state===Ta&&(n.on.call("end",t,t.__data__,n.index,n.group),u())}function u(){n.state=Yi,n.timer.stop(),delete r[e];for(var l in r)return;delete t.__transition}}function Qi(t,e){var n=t.__transition,r,i,o=!0,s;if(n){e=e==null?null:e+"";for(s in n){if((r=n[s]).name!==e){o=!1;continue}i=r.state>Sa&&r.state<Ta,r.state=Yi,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[s]}o&&delete t.__transition}}function Od(t){return this.each(function(){Qi(this,t)})}function Aa(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Lf(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function si(){}var fi=.7,Ki=1/fi,Lr="\\s*([+-]?\\d+)\\s*",ui="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",_n="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Md=/^#([0-9a-f]{3,8})$/,Nd=new RegExp(`^rgb\\(${Lr},${Lr},${Lr}\\)$`),Gd=new RegExp(`^rgb\\(${_n},${_n},${_n}\\)$`),Bd=new RegExp(`^rgba\\(${Lr},${Lr},${Lr},${ui}\\)$`),Ud=new RegExp(`^rgba\\(${_n},${_n},${_n},${ui}\\)$`),Vd=new RegExp(`^hsl\\(${ui},${_n},${_n}\\)$`),$d=new RegExp(`^hsla\\(${ui},${_n},${_n},${ui}\\)$`),Ff={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};Aa(si,Un,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Rf,formatHex:Rf,formatHex8:Hd,formatHsl:jd,formatRgb:If,toString:If});function Rf(){return this.rgb().formatHex()}function Hd(){return this.rgb().formatHex8()}function jd(){return Nf(this).formatHsl()}function If(){return this.rgb().formatRgb()}function Un(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Md.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Df(e):n===3?new Zt(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Ji(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Ji(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=Nd.exec(t))?new Zt(e[1],e[2],e[3],1):(e=Gd.exec(t))?new Zt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Bd.exec(t))?Ji(e[1],e[2],e[3],e[4]):(e=Ud.exec(t))?Ji(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Vd.exec(t))?Mf(e[1],e[2]/100,e[3]/100,1):(e=$d.exec(t))?Mf(e[1],e[2]/100,e[3]/100,e[4]):Ff.hasOwnProperty(t)?Df(Ff[t]):t==="transparent"?new Zt(NaN,NaN,NaN,0):null}function Df(t){return new Zt(t>>16&255,t>>8&255,t&255,1)}function Ji(t,e,n,r){return r<=0&&(t=e=n=NaN),new Zt(t,e,n,r)}function Xd(t){return t instanceof si||(t=Un(t)),t?(t=t.rgb(),new Zt(t.r,t.g,t.b,t.opacity)):new Zt}function Ea(t,e,n,r){return arguments.length===1?Xd(t):new Zt(t,e,n,r??1)}function Zt(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Aa(Zt,Ea,Lf(si,{brighter(t){return t=t==null?Ki:Math.pow(Ki,t),new Zt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?fi:Math.pow(fi,t),new Zt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Zt(rr(this.r),rr(this.g),rr(this.b),eo(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:zf,formatHex:zf,formatHex8:Wd,formatRgb:Of,toString:Of}));function zf(){return`#${ir(this.r)}${ir(this.g)}${ir(this.b)}`}function Wd(){return`#${ir(this.r)}${ir(this.g)}${ir(this.b)}${ir((isNaN(this.opacity)?1:this.opacity)*255)}`}function Of(){const t=eo(this.opacity);return`${t===1?"rgb(":"rgba("}${rr(this.r)}, ${rr(this.g)}, ${rr(this.b)}${t===1?")":`, ${t})`}`}function eo(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function rr(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ir(t){return t=rr(t),(t<16?"0":"")+t.toString(16)}function Mf(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new hn(t,e,n,r)}function Nf(t){if(t instanceof hn)return new hn(t.h,t.s,t.l,t.opacity);if(t instanceof si||(t=Un(t)),!t)return new hn;if(t instanceof hn)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,f=o-i,u=(o+i)/2;return f?(e===o?s=(n-r)/f+(n<r)*6:n===o?s=(r-e)/f+2:s=(e-n)/f+4,f/=u<.5?o+i:2-o-i,s*=60):f=u>0&&u<1?0:s,new hn(s,f,u,t.opacity)}function qd(t,e,n,r){return arguments.length===1?Nf(t):new hn(t,e,n,r??1)}function hn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Aa(hn,qd,Lf(si,{brighter(t){return t=t==null?Ki:Math.pow(Ki,t),new hn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?fi:Math.pow(fi,t),new hn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Zt(Pa(t>=240?t-240:t+120,i,r),Pa(t,i,r),Pa(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new hn(Gf(this.h),to(this.s),to(this.l),eo(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=eo(this.opacity);return`${t===1?"hsl(":"hsla("}${Gf(this.h)}, ${to(this.s)*100}%, ${to(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Gf(t){return t=(t||0)%360,t<0?t+360:t}function to(t){return Math.max(0,Math.min(1,t||0))}function Pa(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Ca=t=>()=>t;function Yd(t,e){return function(n){return t+n*e}}function Zd(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Qd(t){return(t=+t)==1?Bf:function(e,n){return n-e?Zd(e,n,t):Ca(isNaN(e)?n:e)}}function Bf(t,e){var n=e-t;return n?Yd(t,n):Ca(isNaN(t)?e:t)}const no=function t(e){var n=Qd(e);function r(i,o){var s=n((i=Ea(i)).r,(o=Ea(o)).r),f=n(i.g,o.g),u=n(i.b,o.b),l=Bf(i.opacity,o.opacity);return function(p){return i.r=s(p),i.g=f(p),i.b=u(p),i.opacity=l(p),i+""}}return r.gamma=t,r}(1);function Kd(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function Jd(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function em(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),s;for(s=0;s<r;++s)i[s]=Fa(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(f){for(s=0;s<r;++s)o[s]=i[s](f);return o}}function tm(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function dn(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function nm(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=Fa(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var ka=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,La=new RegExp(ka.source,"g");function rm(t){return function(){return t}}function im(t){return function(e){return t(e)+""}}function Uf(t,e){var n=ka.lastIndex=La.lastIndex=0,r,i,o,s=-1,f=[],u=[];for(t=t+"",e=e+"";(r=ka.exec(t))&&(i=La.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),f[s]?f[s]+=o:f[++s]=o),(r=r[0])===(i=i[0])?f[s]?f[s]+=i:f[++s]=i:(f[++s]=null,u.push({i:s,x:dn(r,i)})),n=La.lastIndex;return n<e.length&&(o=e.slice(n),f[s]?f[s]+=o:f[++s]=o),f.length<2?u[0]?im(u[0].x):rm(e):(e=u.length,function(l){for(var p=0,x;p<e;++p)f[(x=u[p]).i]=x.x(l);return f.join("")})}function Fa(t,e){var n=typeof e,r;return e==null||n==="boolean"?Ca(e):(n==="number"?dn:n==="string"?(r=Un(e))?(e=r,no):Uf:e instanceof Un?no:e instanceof Date?tm:Jd(e)?Kd:Array.isArray(e)?em:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?nm:dn)(t,e)}function om(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var Vf=180/Math.PI,Ra={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function $f(t,e,n,r,i,o){var s,f,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(f=Math.sqrt(n*n+r*r))&&(n/=f,r/=f,u/=f),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Vf,skewX:Math.atan(u)*Vf,scaleX:s,scaleY:f}}var ro;function am(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Ra:$f(e.a,e.b,e.c,e.d,e.e,e.f)}function sm(t){return t==null||(ro||(ro=document.createElementNS("http://www.w3.org/2000/svg","g")),ro.setAttribute("transform",t),!(t=ro.transform.baseVal.consolidate()))?Ra:(t=t.matrix,$f(t.a,t.b,t.c,t.d,t.e,t.f))}function Hf(t,e,n,r){function i(l){return l.length?l.pop()+" ":""}function o(l,p,x,S,D,Y){if(l!==x||p!==S){var Ee=D.push("translate(",null,e,null,n);Y.push({i:Ee-4,x:dn(l,x)},{i:Ee-2,x:dn(p,S)})}else(x||S)&&D.push("translate("+x+e+S+n)}function s(l,p,x,S){l!==p?(l-p>180?p+=360:p-l>180&&(l+=360),S.push({i:x.push(i(x)+"rotate(",null,r)-2,x:dn(l,p)})):p&&x.push(i(x)+"rotate("+p+r)}function f(l,p,x,S){l!==p?S.push({i:x.push(i(x)+"skewX(",null,r)-2,x:dn(l,p)}):p&&x.push(i(x)+"skewX("+p+r)}function u(l,p,x,S,D,Y){if(l!==x||p!==S){var Ee=D.push(i(D)+"scale(",null,",",null,")");Y.push({i:Ee-4,x:dn(l,x)},{i:Ee-2,x:dn(p,S)})}else(x!==1||S!==1)&&D.push(i(D)+"scale("+x+","+S+")")}return function(l,p){var x=[],S=[];return l=t(l),p=t(p),o(l.translateX,l.translateY,p.translateX,p.translateY,x,S),s(l.rotate,p.rotate,x,S),f(l.skewX,p.skewX,x,S),u(l.scaleX,l.scaleY,p.scaleX,p.scaleY,x,S),l=p=null,function(D){for(var Y=-1,Ee=S.length,Te;++Y<Ee;)x[(Te=S[Y]).i]=Te.x(D);return x.join("")}}}var fm=Hf(am,"px, ","px)","deg)"),um=Hf(sm,", ",")",")"),lm=1e-12;function jf(t){return((t=Math.exp(t))+1/t)/2}function cm(t){return((t=Math.exp(t))-1/t)/2}function hm(t){return((t=Math.exp(2*t))-1)/(t+1)}const dm=function t(e,n,r){function i(o,s){var f=o[0],u=o[1],l=o[2],p=s[0],x=s[1],S=s[2],D=p-f,Y=x-u,Ee=D*D+Y*Y,Te,se;if(Ee<lm)se=Math.log(S/l)/e,Te=function(Ge){return[f+Ge*D,u+Ge*Y,l*Math.exp(e*Ge*se)]};else{var Ue=Math.sqrt(Ee),He=(S*S-l*l+r*Ee)/(2*l*n*Ue),H=(S*S-l*l-r*Ee)/(2*S*n*Ue),fe=Math.log(Math.sqrt(He*He+1)-He),Re=Math.log(Math.sqrt(H*H+1)-H);se=(Re-fe)/e,Te=function(Ge){var Ye=Ge*se,at=jf(fe),ut=l/(n*Ue)*(at*hm(e*Ye+fe)-cm(fe));return[f+ut*D,u+ut*Y,l*at/jf(e*Ye+fe)]}}return Te.duration=se*1e3*e/Math.SQRT2,Te}return i.rho=function(o){var s=Math.max(.001,+o),f=s*s,u=f*f;return t(s,f,u)},i}(Math.SQRT2,2,4);function mm(t,e){var n,r;return function(){var i=bn(this,t),o=i.tween;if(o!==n){r=n=o;for(var s=0,f=r.length;s<f;++s)if(r[s].name===e){r=r.slice(),r.splice(s,1);break}}i.tween=r}}function pm(t,e,n){var r,i;if(typeof n!="function")throw new Error;return function(){var o=bn(this,t),s=o.tween;if(s!==r){i=(r=s).slice();for(var f={name:e,value:n},u=0,l=i.length;u<l;++u)if(i[u].name===e){i[u]=f;break}u===l&&i.push(f)}o.tween=i}}function vm(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r=cn(this.node(),n).tween,i=0,o=r.length,s;i<o;++i)if((s=r[i]).name===t)return s.value;return null}return this.each((e==null?mm:pm)(n,t,e))}function Ia(t,e,n){var r=t._id;return t.each(function(){var i=bn(this,r);(i.value||(i.value={}))[e]=n.apply(this,arguments)}),function(i){return cn(i,r).value[e]}}function Xf(t,e){var n;return(typeof e=="number"?dn:e instanceof Un?no:(n=Un(e))?(e=n,no):Uf)(t,e)}function gm(t){return function(){this.removeAttribute(t)}}function ym(t){return function(){this.removeAttributeNS(t.space,t.local)}}function xm(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttribute(t);return s===i?null:s===r?o:o=e(r=s,n)}}function bm(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===r?o:o=e(r=s,n)}}function _m(t,e,n){var r,i,o;return function(){var s,f=n(this),u;return f==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=f+"",s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,f)))}}function Sm(t,e,n){var r,i,o;return function(){var s,f=n(this),u;return f==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=f+"",s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,f)))}}function Tm(t,e){var n=Bi(t),r=n==="transform"?um:Xf;return this.attrTween(t,typeof e=="function"?(n.local?Sm:_m)(n,r,Ia(this,"attr."+t,e)):e==null?(n.local?ym:gm)(n):(n.local?bm:xm)(n,r,e))}function wm(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function Am(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function Em(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&Am(t,o)),n}return i._value=e,i}function Pm(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&wm(t,o)),n}return i._value=e,i}function Cm(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;var r=Bi(t);return this.tween(n,(r.local?Em:Pm)(r,e))}function km(t,e){return function(){wa(this,t).delay=+e.apply(this,arguments)}}function Lm(t,e){return e=+e,function(){wa(this,t).delay=e}}function Fm(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?km:Lm)(e,t)):cn(this.node(),e).delay}function Rm(t,e){return function(){bn(this,t).duration=+e.apply(this,arguments)}}function Im(t,e){return e=+e,function(){bn(this,t).duration=e}}function Dm(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Rm:Im)(e,t)):cn(this.node(),e).duration}function zm(t,e){if(typeof e!="function")throw new Error;return function(){bn(this,t).ease=e}}function Om(t){var e=this._id;return arguments.length?this.each(zm(e,t)):cn(this.node(),e).ease}function Mm(t,e){return function(){var n=e.apply(this,arguments);if(typeof n!="function")throw new Error;bn(this,t).ease=n}}function Nm(t){if(typeof t!="function")throw new Error;return this.each(Mm(this._id,t))}function Gm(t){typeof t!="function"&&(t=cf(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,f=r[i]=[],u,l=0;l<s;++l)(u=o[l])&&t.call(u,u.__data__,l,o)&&f.push(u);return new Ln(r,this._parents,this._name,this._id)}function Bm(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),s=new Array(r),f=0;f<o;++f)for(var u=e[f],l=n[f],p=u.length,x=s[f]=new Array(p),S,D=0;D<p;++D)(S=u[D]||l[D])&&(x[D]=S);for(;f<r;++f)s[f]=e[f];return new Ln(s,this._parents,this._name,this._id)}function Um(t){return(t+"").trim().split(/^|\s+/).every(function(e){var n=e.indexOf(".");return n>=0&&(e=e.slice(0,n)),!e||e==="start"})}function Vm(t,e,n){var r,i,o=Um(e)?wa:bn;return function(){var s=o(this,t),f=s.on;f!==r&&(i=(r=f).copy()).on(e,n),s.on=i}}function $m(t,e){var n=this._id;return arguments.length<2?cn(this.node(),n).on.on(t):this.each(Vm(n,t,e))}function Hm(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function jm(){return this.on("end.remove",Hm(this._id))}function Xm(t){var e=this._name,n=this._id;typeof t!="function"&&(t=ya(t));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s<i;++s)for(var f=r[s],u=f.length,l=o[s]=new Array(u),p,x,S=0;S<u;++S)(p=f[S])&&(x=t.call(p,p.__data__,S,f))&&("__data__"in p&&(x.__data__=p.__data__),l[S]=x,Zi(l[S],e,n,S,l,cn(p,n)));return new Ln(o,this._parents,e,n)}function Wm(t){var e=this._name,n=this._id;typeof t!="function"&&(t=lf(t));for(var r=this._groups,i=r.length,o=[],s=[],f=0;f<i;++f)for(var u=r[f],l=u.length,p,x=0;x<l;++x)if(p=u[x]){for(var S=t.call(p,p.__data__,x,u),D,Y=cn(p,n),Ee=0,Te=S.length;Ee<Te;++Ee)(D=S[Ee])&&Zi(D,e,n,Ee,S,Y);o.push(S),s.push(p)}return new Ln(o,s,e,n)}var qm=ni.prototype.constructor;function Ym(){return new qm(this._groups,this._parents)}function Zm(t,e){var n,r,i;return function(){var o=Cr(this,t),s=(this.style.removeProperty(t),Cr(this,t));return o===s?null:o===n&&s===r?i:i=e(n=o,r=s)}}function Wf(t){return function(){this.style.removeProperty(t)}}function Qm(t,e,n){var r,i=n+"",o;return function(){var s=Cr(this,t);return s===i?null:s===r?o:o=e(r=s,n)}}function Km(t,e,n){var r,i,o;return function(){var s=Cr(this,t),f=n(this),u=f+"";return f==null&&(u=f=(this.style.removeProperty(t),Cr(this,t))),s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,f))}}function Jm(t,e){var n,r,i,o="style."+e,s="end."+o,f;return function(){var u=bn(this,t),l=u.on,p=u.value[o]==null?f||(f=Wf(e)):void 0;(l!==n||i!==p)&&(r=(n=l).copy()).on(s,i=p),u.on=r}}function ep(t,e,n){var r=(t+="")=="transform"?fm:Xf;return e==null?this.styleTween(t,Zm(t,r)).on("end.style."+t,Wf(t)):typeof e=="function"?this.styleTween(t,Km(t,r,Ia(this,"style."+t,e))).each(Jm(this._id,t)):this.styleTween(t,Qm(t,r,e),n).on("end.style."+t,null)}function tp(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function np(t,e,n){var r,i;function o(){var s=e.apply(this,arguments);return s!==i&&(r=(i=s)&&tp(t,s,n)),r}return o._value=e,o}function rp(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;return this.tween(r,np(t,e,n??""))}function ip(t){return function(){this.textContent=t}}function op(t){return function(){var e=t(this);this.textContent=e??""}}function ap(t){return this.tween("text",typeof t=="function"?op(Ia(this,"text",t)):ip(t==null?"":t+""))}function sp(t){return function(e){this.textContent=t.call(this,e)}}function fp(t){var e,n;function r(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&sp(i)),e}return r._value=t,r}function up(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,fp(t))}function lp(){for(var t=this._name,e=this._id,n=qf(),r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],f=s.length,u,l=0;l<f;++l)if(u=s[l]){var p=cn(u,e);Zi(u,t,n,l,s,{time:p.time+p.delay+p.duration,delay:0,duration:p.duration,ease:p.ease})}return new Ln(r,this._parents,t,n)}function cp(){var t,e,n=this,r=n._id,i=n.size();return new Promise(function(o,s){var f={value:s},u={value:function(){--i===0&&o()}};n.each(function(){var l=bn(this,r),p=l.on;p!==t&&(e=(t=p).copy(),e._.cancel.push(f),e._.interrupt.push(f),e._.end.push(u)),l.on=e}),i===0&&o()})}var hp=0;function Ln(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function qf(){return++hp}var Fn=ni.prototype;Ln.prototype={constructor:Ln,select:Xm,selectAll:Wm,selectChild:Fn.selectChild,selectChildren:Fn.selectChildren,filter:Gm,merge:Bm,selection:Ym,transition:lp,call:Fn.call,nodes:Fn.nodes,node:Fn.node,size:Fn.size,empty:Fn.empty,each:Fn.each,on:$m,attr:Tm,attrTween:Cm,style:ep,styleTween:rp,text:ap,textTween:up,remove:jm,tween:vm,delay:Fm,duration:Dm,ease:Om,easeVarying:Nm,end:cp,[Symbol.iterator]:Fn[Symbol.iterator]};function dp(t){return t*t}function mp(t){return t*(2-t)}function pp(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function vp(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var gp={time:null,delay:0,duration:250,ease:vp};function yp(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function xp(t){var e,n;t instanceof Ln?(e=t._id,t=t._name):(e=qf(),(n=gp).time=ba(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],f=s.length,u,l=0;l<f;++l)(u=s[l])&&Zi(u,t,e,l,s,n||yp(u,e));return new Ln(r,this._parents,t,e)}ni.prototype.interrupt=Od,ni.prototype.transition=xp;function Da(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function bp(t){if(Object.prototype.hasOwnProperty.call(t,"__esModule"))return t;var e=t.default;if(typeof e=="function"){var n=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}),n}var io={exports:{}},_p=io.exports,Yf;function Sp(){return Yf||(Yf=1,function(t,e){(function(n,r){t.exports=r()})(_p,function(){var n=function(a){return a instanceof Uint8Array||a instanceof Uint16Array||a instanceof Uint32Array||a instanceof Int8Array||a instanceof Int16Array||a instanceof Int32Array||a instanceof Float32Array||a instanceof Float64Array||a instanceof Uint8ClampedArray},r=function(a,h){for(var _=Object.keys(h),O=0;O<_.length;++O)a[_[O]]=h[_[O]];return a},i=`
|
|
2
|
-
`;function o(a){return typeof atob<"u"?atob(a):"base64:"+a}function s(a){var h=new Error("(regl) "+a);throw console.error(h),h}function f(a,h){a||s(h)}function u(a){return a?": "+a:""}function l(a,h,_){a in h||s("unknown parameter ("+a+")"+u(_)+". possible values: "+Object.keys(h).join())}function p(a,h){n(a)||s("invalid parameter type"+u(h)+". must be a typed array")}function x(a,h){switch(h){case"number":return typeof a=="number";case"object":return typeof a=="object";case"string":return typeof a=="string";case"boolean":return typeof a=="boolean";case"function":return typeof a=="function";case"undefined":return typeof a>"u";case"symbol":return typeof a=="symbol"}}function S(a,h,_){x(a,h)||s("invalid parameter type"+u(_)+". expected "+h+", got "+typeof a)}function
|
|
3
|
-
`),O=1,
|
|
4
|
-
`).forEach(function(_){if(!(_.length<5)){var O=/^ERROR:\s+(\d+):(\d+):\s*(.*)$/.exec(_);O?h.push(new
|
|
5
|
-
`,"color:red;text-decoration:underline;font-weight:bold"),ae.lines.forEach(function(ne){if(ne.errors.length>0){J(se(ne.number,4)+"| ","background-color:yellow; font-weight:bold"),J(ne.line+i,"color:red; background-color:yellow; font-weight:bold");var k=0;ne.errors.forEach(function(G){var te=G.message,xe=/^\s*'(.*)'\s*:\s*(.*)$/.exec(te);if(xe){var Z=xe[1];switch(te=xe[2],Z){case"assign":Z="=";break}k=Math.max(ne.line.indexOf(Z,k),0)}else k=0;J(se("| ",6)),J(se("^^^",k+3)+i,"font-weight:bold"),J(se("| ",6)),J(te+i,"font-weight:bold")}),J(se("| ",6)+i)}else J(se(ne.number,4)+"| "),J(ne.line+i,"color:red")}),typeof document<"u"&&!window.chrome?(le[0]=oe.join("%c"),console.log.apply(console,le)):console.log(oe.join(""))}),f.raise("Error compiling "+B+" shader, "+K[0].name)}}function Ae(a,h,_,O,j){if(!a.getProgramParameter(h,a.LINK_STATUS)){var z=a.getProgramInfoLog(h),B=Ge(_,j),K=Ge(O,j),Q='Error linking program with vertex shader, "'+K[0].name+'", and fragment shader "'+B[0].name+'"';typeof document<"u"?console.log("%c"+Q+i+"%c"+z,"color:red;text-decoration:underline;font-weight:bold","color:red"):console.log(Q+i+z),f.raise(Q)}}function lt(a){a._commandRef=fe()}function it(a,h,_,O){lt(a);function j(Q){return Q?O.id(Q):0}a._fragId=j(a.static.frag),a._vertId=j(a.static.vert);function z(Q,ie){Object.keys(ie).forEach(function(ae){Q[O.id(ae)]=!0})}var B=a._uniformSet={};z(B,h.static),z(B,h.dynamic);var K=a._attributeSet={};z(K,_.static),z(K,_.dynamic),a._hasCount="count"in a.static||"count"in a.dynamic||"elements"in a.static||"elements"in a.dynamic}function N(a,h){var _=Re();s(a+" in command "+(h||fe())+(_==="unknown"?"":" called from "+_))}function Ce(a,h,_){a||N(h,_||fe())}function re(a,h,_,O){a in h||N("unknown parameter ("+a+")"+u(_)+". possible values: "+Object.keys(h).join(),O||fe())}function ke(a,h,_,O){x(a,h)||N("invalid parameter type"+u(_)+". expected "+h+", got "+typeof a,O||fe())}function Xe(a){a()}function je(a,h,_){a.texture?Y(a.texture._texture.internalformat,h,"unsupported texture format for attachment"):Y(a.renderbuffer._renderbuffer.format,_,"unsupported renderbuffer format for attachment")}var Qe=33071,Ze=9728,dt=9984,ct=9985,_t=9986,st=9987,$t=5120,Ht=5121,Qt=5122,zn=5123,wo=5124,Ao=5125,On=5126,sr=32819,Tn=32820,Ir=33635,Dr=34042,$n=36193,Ot={};Ot[$t]=Ot[Ht]=1,Ot[Qt]=Ot[zn]=Ot[$n]=Ot[Ir]=Ot[sr]=Ot[Tn]=2,Ot[wo]=Ot[Ao]=Ot[On]=Ot[Dr]=4;function fr(a,h){return a===Tn||a===sr||a===Ir?2:a===Dr?4:Ot[a]*h}function ur(a){return!(a&a-1)&&!!a}function Eo(a,h,_){var O,j=h.width,z=h.height,B=h.channels;f(j>0&&j<=_.maxTextureSize&&z>0&&z<=_.maxTextureSize,"invalid texture shape"),(a.wrapS!==Qe||a.wrapT!==Qe)&&f(ur(j)&&ur(z),"incompatible wrap mode for texture, both width and height must be power of 2"),h.mipmask===1?j!==1&&z!==1&&f(a.minFilter!==dt&&a.minFilter!==_t&&a.minFilter!==ct&&a.minFilter!==st,"min filter requires mipmap"):(f(ur(j)&&ur(z),"texture must be a square power of 2 to support mipmapping"),f(h.mipmask===(j<<1)-1,"missing or incomplete mipmap data")),h.type===On&&(_.extensions.indexOf("oes_texture_float_linear")<0&&f(a.minFilter===Ze&&a.magFilter===Ze,"filter not supported, must enable oes_texture_float_linear"),f(!a.genMipmaps,"mipmap generation not supported with float textures"));var K=h.images;for(O=0;O<16;++O)if(K[O]){var Q=j>>O,ie=z>>O;f(h.mipmask&1<<O,"missing mipmap data");var ae=K[O];if(f(ae.width===Q&&ae.height===ie,"invalid shape for mip images"),f(ae.format===h.format&&ae.internalformat===h.internalformat&&ae.type===h.type,"incompatible type for mip image"),!ae.compressed)if(ae.data){var oe=Math.ceil(fr(ae.type,B)*Q/ae.unpackAlignment)*ae.unpackAlignment;f(ae.data.byteLength===oe*ie,"invalid data for image, buffer size is inconsistent with image format")}else ae.element||ae.copy}else a.genMipmaps||f((h.mipmask&1<<O)===0,"extra mipmap data");h.compressed&&f(!a.genMipmaps,"mipmap generation for compressed images not supported")}function as(a,h,_,O){var j=a.width,z=a.height,B=a.channels;f(j>0&&j<=O.maxTextureSize&&z>0&&z<=O.maxTextureSize,"invalid texture shape"),f(j===z,"cube map must be square"),f(h.wrapS===Qe&&h.wrapT===Qe,"wrap mode not supported by cube map");for(var K=0;K<_.length;++K){var Q=_[K];f(Q.width===j&&Q.height===z,"inconsistent cube map face shape"),h.genMipmaps&&(f(!Q.compressed,"can not generate mipmap for compressed textures"),f(Q.mipmask===1,"can not specify mipmaps and generate mipmaps"));for(var ie=Q.images,ae=0;ae<16;++ae){var oe=ie[ae];if(oe){var le=j>>ae,J=z>>ae;f(Q.mipmask&1<<ae,"missing mipmap data"),f(oe.width===le&&oe.height===J,"invalid shape for mip images"),f(oe.format===a.format&&oe.internalformat===a.internalformat&&oe.type===a.type,"incompatible type for mip image"),oe.compressed||(oe.data?f(oe.data.byteLength===le*J*Math.max(fr(oe.type,B),oe.unpackAlignment),"invalid data for image, buffer size is inconsistent with image format"):oe.element||oe.copy)}}}}var d=r(f,{optional:Xe,raise:s,commandRaise:N,command:Ce,parameter:l,commandParameter:re,constructor:Te,type:S,commandType:ke,isTypedArray:p,nni:D,oneOf:Y,shaderError:ut,linkError:Ae,callSite:Re,saveCommandRef:lt,saveDrawInfo:it,framebufferFormat:je,guessCommand:fe,texture2D:Eo,textureCube:as}),lr=0,Hn=0,jn=5,Po=6;function wn(a,h){this.id=lr++,this.type=a,this.data=h}function yi(a){return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function Mn(a){if(a.length===0)return[];var h=a.charAt(0),_=a.charAt(a.length-1);if(a.length>1&&h===_&&(h==='"'||h==="'"))return['"'+yi(a.substr(1,a.length-2))+'"'];var O=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(a);if(O)return Mn(a.substr(0,O.index)).concat(Mn(O[1])).concat(Mn(a.substr(O.index+O[0].length)));var j=a.split(".");if(j.length===1)return['"'+yi(a)+'"'];for(var z=[],B=0;B<j.length;++B)z=z.concat(Mn(j[B]));return z}function xi(a){return"["+Mn(a).join("][")+"]"}function zr(a,h){return new wn(a,xi(h+""))}function Or(a){return typeof a=="function"&&!a._reglType||a instanceof wn}function sn(a,h){if(typeof a=="function")return new wn(Hn,a);if(typeof a=="number"||typeof a=="boolean")return new wn(jn,a);if(Array.isArray(a))return new wn(Po,a.map(function(_,O){return sn(_,h+"["+O+"]")}));if(a instanceof wn)return a;d(!1,"invalid option type in uniform "+h)}var Lt={DynamicVariable:wn,define:zr,isDynamic:Or,unbox:sn,accessor:xi},cr={next:typeof requestAnimationFrame=="function"?function(a){return requestAnimationFrame(a)}:function(a){return setTimeout(a,16)},cancel:typeof cancelAnimationFrame=="function"?function(a){return cancelAnimationFrame(a)}:clearTimeout},Mr=typeof performance<"u"&&performance.now?function(){return performance.now()}:function(){return+new Date};function ss(){var a={"":0},h=[""];return{id:function(_){var O=a[_];return O||(O=a[_]=h.length,h.push(_),O)},str:function(_){return h[_]}}}function Nr(a,h,_){var O=document.createElement("canvas");r(O.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"}),a.appendChild(O),a===document.body&&(O.style.position="absolute",r(a.style,{margin:0,padding:0}));function j(){var K=window.innerWidth,Q=window.innerHeight;if(a!==document.body){var ie=O.getBoundingClientRect();K=ie.right-ie.left,Q=ie.bottom-ie.top}O.width=_*K,O.height=_*Q}var z;a!==document.body&&typeof ResizeObserver=="function"?(z=new ResizeObserver(function(){setTimeout(j)}),z.observe(a)):window.addEventListener("resize",j,!1);function B(){z?z.disconnect():window.removeEventListener("resize",j),a.removeChild(O)}return j(),{canvas:O,onDestroy:B}}function Gr(a,h){function _(O){try{return a.getContext(O,h)}catch{return null}}return _("webgl")||_("experimental-webgl")||_("webgl-experimental")}function fs(a){return typeof a.nodeName=="string"&&typeof a.appendChild=="function"&&typeof a.getBoundingClientRect=="function"}function hr(a){return typeof a.drawArrays=="function"||typeof a.drawElements=="function"}function Co(a){return typeof a=="string"?a.split():(d(Array.isArray(a),"invalid extension array"),a)}function ko(a){return typeof a=="string"?(d(typeof document<"u","not supported outside of DOM"),document.querySelector(a)):a}function Ft(a){var h=a||{},_,O,j,z,B={},K=[],Q=[],ie=typeof window>"u"?1:window.devicePixelRatio,ae=!1,oe=function(ne){ne&&d.raise(ne)},le=function(){};if(typeof h=="string"?(d(typeof document<"u","selector queries only supported in DOM enviroments"),_=document.querySelector(h),d(_,"invalid query string for element")):typeof h=="object"?fs(h)?_=h:hr(h)?(z=h,j=z.canvas):(d.constructor(h),"gl"in h?z=h.gl:"canvas"in h?j=ko(h.canvas):"container"in h&&(O=ko(h.container)),"attributes"in h&&(B=h.attributes,d.type(B,"object","invalid context attributes")),"extensions"in h&&(K=Co(h.extensions)),"optionalExtensions"in h&&(Q=Co(h.optionalExtensions)),"onDone"in h&&(d.type(h.onDone,"function","invalid or missing onDone callback"),oe=h.onDone),"profile"in h&&(ae=!!h.profile),"pixelRatio"in h&&(ie=+h.pixelRatio,d(ie>0,"invalid pixel ratio"))):d.raise("invalid arguments to regl"),_&&(_.nodeName.toLowerCase()==="canvas"?j=_:O=_),!z){if(!j){d(typeof document<"u","must manually specify webgl context outside of DOM environments");var J=Nr(O||document.body,oe,ie);if(!J)return null;j=J.canvas,le=J.onDestroy}B.premultipliedAlpha===void 0&&(B.premultipliedAlpha=!0),z=Gr(j,B)}return z?{gl:z,canvas:j,container:O,extensions:K,optionalExtensions:Q,pixelRatio:ie,profile:ae,onDone:oe,onDestroy:le}:(le(),oe("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}function Xn(a,h){var _={};function O(B){d.type(B,"string","extension name must be string");var K=B.toLowerCase(),Q;try{Q=_[K]=a.getExtension(K)}catch{}return!!Q}for(var j=0;j<h.extensions.length;++j){var z=h.extensions[j];if(!O(z))return h.onDestroy(),h.onDone('"'+z+'" extension is not supported by the current WebGL context, try upgrading your system or a different browser'),null}return h.optionalExtensions.forEach(O),{extensions:_,restore:function(){Object.keys(_).forEach(function(B){if(_[B]&&!O(B))throw new Error("(regl): error restoring extension "+B)})}}}function Yt(a,h){for(var _=Array(a),O=0;O<a;++O)_[O]=h(O);return _}var Lo=5120,bi=5121,Fo=5122,Ro=5123,us=5124,fn=5125,Wn=5126;function Io(a){for(var h=16;h<=1<<28;h*=16)if(a<=h)return h;return 0}function _i(a){var h,_;return h=(a>65535)<<4,a>>>=h,_=(a>255)<<3,a>>>=_,h|=_,_=(a>15)<<2,a>>>=_,h|=_,_=(a>3)<<1,a>>>=_,h|=_,h|a>>1}function Br(){var a=Yt(8,function(){return[]});function h(z){var B=Io(z),K=a[_i(B)>>2];return K.length>0?K.pop():new ArrayBuffer(B)}function _(z){a[_i(z.byteLength)>>2].push(z)}function O(z,B){var K=null;switch(z){case Lo:K=new Int8Array(h(B),0,B);break;case bi:K=new Uint8Array(h(B),0,B);break;case Fo:K=new Int16Array(h(2*B),0,B);break;case Ro:K=new Uint16Array(h(2*B),0,B);break;case us:K=new Int32Array(h(4*B),0,B);break;case fn:K=new Uint32Array(h(4*B),0,B);break;case Wn:K=new Float32Array(h(4*B),0,B);break;default:return null}return K.length!==B?K.subarray(0,B):K}function j(z){_(z.buffer)}return{alloc:h,free:_,allocType:O,freeType:j}}var gt=Br();gt.zero=Br();var vn=3408,Do=3410,zo=3411,Oo=3412,Mo=3413,ls=3414,Be=3415,C=33901,ve=33902,De=3379,mt=3386,Mt=34921,At=36347,jt=36348,gn=35661,dr=35660,Si=34930,Nt=36349,No=34076,Go=34024,Cg=7936,kg=7937,Lg=7938,Fg=35724,Rg=34047,Ig=36063,Dg=34852,Bo=3553,rl=34067,zg=34069,Og=33984,Ti=6408,cs=5126,il=5121,hs=36160,Mg=36053,Ng=36064,Gg=16384,Bg=function(a,h){var _=1;h.ext_texture_filter_anisotropic&&(_=a.getParameter(Rg));var O=1,j=1;h.webgl_draw_buffers&&(O=a.getParameter(Dg),j=a.getParameter(Ig));var z=!!h.oes_texture_float;if(z){var B=a.createTexture();a.bindTexture(Bo,B),a.texImage2D(Bo,0,Ti,1,1,0,Ti,cs,null);var K=a.createFramebuffer();if(a.bindFramebuffer(hs,K),a.framebufferTexture2D(hs,Ng,Bo,B,0),a.bindTexture(Bo,null),a.checkFramebufferStatus(hs)!==Mg)z=!1;else{a.viewport(0,0,1,1),a.clearColor(1,0,0,1),a.clear(Gg);var Q=gt.allocType(cs,4);a.readPixels(0,0,1,1,Ti,cs,Q),a.getError()?z=!1:(a.deleteFramebuffer(K),a.deleteTexture(B),z=Q[0]===1),gt.freeType(Q)}}var ie=typeof navigator<"u"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent)),ae=!0;if(!ie){var oe=a.createTexture(),le=gt.allocType(il,36);a.activeTexture(Og),a.bindTexture(rl,oe),a.texImage2D(zg,0,Ti,3,3,0,Ti,il,le),gt.freeType(le),a.bindTexture(rl,null),a.deleteTexture(oe),ae=!a.getError()}return{colorBits:[a.getParameter(Do),a.getParameter(zo),a.getParameter(Oo),a.getParameter(Mo)],depthBits:a.getParameter(ls),stencilBits:a.getParameter(Be),subpixelBits:a.getParameter(vn),extensions:Object.keys(h).filter(function(J){return!!h[J]}),maxAnisotropic:_,maxDrawbuffers:O,maxColorAttachments:j,pointSizeDims:a.getParameter(C),lineWidthDims:a.getParameter(ve),maxViewportDims:a.getParameter(mt),maxCombinedTextureUnits:a.getParameter(gn),maxCubeMapSize:a.getParameter(No),maxRenderbufferSize:a.getParameter(Go),maxTextureUnits:a.getParameter(Si),maxTextureSize:a.getParameter(De),maxAttributes:a.getParameter(Mt),maxVertexUniforms:a.getParameter(At),maxVertexTextureUnits:a.getParameter(dr),maxVaryingVectors:a.getParameter(jt),maxFragmentUniforms:a.getParameter(Nt),glsl:a.getParameter(Fg),renderer:a.getParameter(kg),vendor:a.getParameter(Cg),version:a.getParameter(Lg),readFloat:z,npotTextureCube:ae}};function yn(a){return!!a&&typeof a=="object"&&Array.isArray(a.shape)&&Array.isArray(a.stride)&&typeof a.offset=="number"&&a.shape.length===a.stride.length&&(Array.isArray(a.data)||n(a.data))}var nn=function(a){return Object.keys(a).map(function(h){return a[h]})},Uo={shape:Hg,flatten:$g};function Ug(a,h,_){for(var O=0;O<h;++O)_[O]=a[O]}function Vg(a,h,_,O){for(var j=0,z=0;z<h;++z)for(var B=a[z],K=0;K<_;++K)O[j++]=B[K]}function ol(a,h,_,O,j,z){for(var B=z,K=0;K<h;++K)for(var Q=a[K],ie=0;ie<_;++ie)for(var ae=Q[ie],oe=0;oe<O;++oe)j[B++]=ae[oe]}function al(a,h,_,O,j){for(var z=1,B=_+1;B<h.length;++B)z*=h[B];var K=h[_];if(h.length-_===4){var Q=h[_+1],ie=h[_+2],ae=h[_+3];for(B=0;B<K;++B)ol(a[B],Q,ie,ae,O,j),j+=z}else for(B=0;B<K;++B)al(a[B],h,_+1,O,j),j+=z}function $g(a,h,_,O){var j=1;if(h.length)for(var z=0;z<h.length;++z)j*=h[z];else j=0;var B=O||gt.allocType(_,j);switch(h.length){case 0:break;case 1:Ug(a,h[0],B);break;case 2:Vg(a,h[0],h[1],B);break;case 3:ol(a,h[0],h[1],h[2],B,0);break;default:al(a,h,0,B,0)}return B}function Hg(a){for(var h=[],_=a;_.length;_=_[0])h.push(_.length);return h}var ds={"[object Int8Array]":5120,"[object Int16Array]":5122,"[object Int32Array]":5124,"[object Uint8Array]":5121,"[object Uint8ClampedArray]":5121,"[object Uint16Array]":5123,"[object Uint32Array]":5125,"[object Float32Array]":5126,"[object Float64Array]":5121,"[object ArrayBuffer]":5121},jg=5120,Xg=5122,Wg=5124,qg=5121,Yg=5123,Zg=5125,Qg=5126,Kg=5126,mr={int8:jg,int16:Xg,int32:Wg,uint8:qg,uint16:Yg,uint32:Zg,float:Qg,float32:Kg},Jg=35048,ey=35040,Vo={dynamic:Jg,stream:ey,static:35044},ms=Uo.flatten,sl=Uo.shape,fl=35044,ty=35040,ps=5121,vs=5126,qn=[];qn[5120]=1,qn[5122]=2,qn[5124]=4,qn[5121]=1,qn[5123]=2,qn[5125]=4,qn[5126]=4;function $o(a){return ds[Object.prototype.toString.call(a)]|0}function ul(a,h){for(var _=0;_<h.length;++_)a[_]=h[_]}function ll(a,h,_,O,j,z,B){for(var K=0,Q=0;Q<_;++Q)for(var ie=0;ie<O;++ie)a[K++]=h[j*Q+z*ie+B]}function ny(a,h,_,O){var j=0,z={};function B(k){this.id=j++,this.buffer=a.createBuffer(),this.type=k,this.usage=fl,this.byteLength=0,this.dimension=1,this.dtype=ps,this.persistentData=null,_.profile&&(this.stats={size:0})}B.prototype.bind=function(){a.bindBuffer(this.type,this.buffer)},B.prototype.destroy=function(){le(this)};var K=[];function Q(k,G){var te=K.pop();return te||(te=new B(k)),te.bind(),oe(te,G,ty,0,1,!1),te}function ie(k){K.push(k)}function ae(k,G,te){k.byteLength=G.byteLength,a.bufferData(k.type,G,te)}function oe(k,G,te,xe,Z,ge){var me;if(k.usage=te,Array.isArray(G)){if(k.dtype=xe||vs,G.length>0){var Fe;if(Array.isArray(G[0])){me=sl(G);for(var X=1,$=1;$<me.length;++$)X*=me[$];k.dimension=X,Fe=ms(G,me,k.dtype),ae(k,Fe,te),ge?k.persistentData=Fe:gt.freeType(Fe)}else if(typeof G[0]=="number"){k.dimension=Z;var Se=gt.allocType(k.dtype,G.length);ul(Se,G),ae(k,Se,te),ge?k.persistentData=Se:gt.freeType(Se)}else n(G[0])?(k.dimension=G[0].length,k.dtype=xe||$o(G[0])||vs,Fe=ms(G,[G.length,G[0].length],k.dtype),ae(k,Fe,te),ge?k.persistentData=Fe:gt.freeType(Fe)):d.raise("invalid buffer data")}}else if(n(G))k.dtype=xe||$o(G),k.dimension=Z,ae(k,G,te),ge&&(k.persistentData=new Uint8Array(new Uint8Array(G.buffer)));else if(yn(G)){me=G.shape;var ce=G.stride,ee=G.offset,he=0,de=0,Ve=0,Ne=0;me.length===1?(he=me[0],de=1,Ve=ce[0],Ne=0):me.length===2?(he=me[0],de=me[1],Ve=ce[0],Ne=ce[1]):d.raise("invalid shape"),k.dtype=xe||$o(G.data)||vs,k.dimension=de;var pe=gt.allocType(k.dtype,he*de);ll(pe,G.data,he,de,Ve,Ne,ee),ae(k,pe,te),ge?k.persistentData=pe:gt.freeType(pe)}else G instanceof ArrayBuffer?(k.dtype=ps,k.dimension=Z,ae(k,G,te),ge&&(k.persistentData=new Uint8Array(new Uint8Array(G)))):d.raise("invalid buffer data")}function le(k){h.bufferCount--,O(k);var G=k.buffer;d(G,"buffer must not be deleted already"),a.deleteBuffer(G),k.buffer=null,delete z[k.id]}function J(k,G,te,xe){h.bufferCount++;var Z=new B(G);z[Z.id]=Z;function ge(X){var $=fl,Se=null,ce=0,ee=0,he=1;return Array.isArray(X)||n(X)||yn(X)||X instanceof ArrayBuffer?Se=X:typeof X=="number"?ce=X|0:X&&(d.type(X,"object","buffer arguments must be an object, a number or an array"),"data"in X&&(d(Se===null||Array.isArray(Se)||n(Se)||yn(Se),"invalid data for buffer"),Se=X.data),"usage"in X&&(d.parameter(X.usage,Vo,"invalid buffer usage"),$=Vo[X.usage]),"type"in X&&(d.parameter(X.type,mr,"invalid buffer type"),ee=mr[X.type]),"dimension"in X&&(d.type(X.dimension,"number","invalid dimension"),he=X.dimension|0),"length"in X&&(d.nni(ce,"buffer length must be a nonnegative integer"),ce=X.length|0)),Z.bind(),Se?oe(Z,Se,$,ee,he,xe):(ce&&a.bufferData(Z.type,ce,$),Z.dtype=ee||ps,Z.usage=$,Z.dimension=he,Z.byteLength=ce),_.profile&&(Z.stats.size=Z.byteLength*qn[Z.dtype]),ge}function me(X,$){d($+X.byteLength<=Z.byteLength,"invalid buffer subdata call, buffer is too small. Can't write data of size "+X.byteLength+" starting from offset "+$+" to a buffer of size "+Z.byteLength),a.bufferSubData(Z.type,$,X)}function Fe(X,$){var Se=($||0)|0,ce;if(Z.bind(),n(X)||X instanceof ArrayBuffer)me(X,Se);else if(Array.isArray(X)){if(X.length>0)if(typeof X[0]=="number"){var ee=gt.allocType(Z.dtype,X.length);ul(ee,X),me(ee,Se),gt.freeType(ee)}else if(Array.isArray(X[0])||n(X[0])){ce=sl(X);var he=ms(X,ce,Z.dtype);me(he,Se),gt.freeType(he)}else d.raise("invalid buffer data")}else if(yn(X)){ce=X.shape;var de=X.stride,Ve=0,Ne=0,pe=0,ye=0;ce.length===1?(Ve=ce[0],Ne=1,pe=de[0],ye=0):ce.length===2?(Ve=ce[0],Ne=ce[1],pe=de[0],ye=de[1]):d.raise("invalid shape");var ze=Array.isArray(X.data)?Z.dtype:$o(X.data),$e=gt.allocType(ze,Ve*Ne);ll($e,X.data,Ve,Ne,pe,ye,X.offset),me($e,Se),gt.freeType($e)}else d.raise("invalid data for buffer subdata");return ge}return te||ge(k),ge._reglType="buffer",ge._buffer=Z,ge.subdata=Fe,_.profile&&(ge.stats=Z.stats),ge.destroy=function(){le(Z)},ge}function ne(){nn(z).forEach(function(k){k.buffer=a.createBuffer(),a.bindBuffer(k.type,k.buffer),a.bufferData(k.type,k.persistentData||k.byteLength,k.usage)})}return _.profile&&(h.getTotalBufferSize=function(){var k=0;return Object.keys(z).forEach(function(G){k+=z[G].stats.size}),k}),{create:J,createStream:Q,destroyStream:ie,clear:function(){nn(z).forEach(le),K.forEach(le)},getBuffer:function(k){return k&&k._buffer instanceof B?k._buffer:null},restore:ne,_initBuffer:oe}}var ry=0,iy=0,oy=1,ay=1,sy=4,fy=4,Yn={points:ry,point:iy,lines:oy,line:ay,triangles:sy,triangle:fy,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},uy=0,ly=1,wi=4,cy=5120,Ur=5121,cl=5122,Vr=5123,hl=5124,pr=5125,gs=34963,hy=35040,dy=35044;function my(a,h,_,O){var j={},z=0,B={uint8:Ur,uint16:Vr};h.oes_element_index_uint&&(B.uint32=pr);function K(ne){this.id=z++,j[this.id]=this,this.buffer=ne,this.primType=wi,this.vertCount=0,this.type=0}K.prototype.bind=function(){this.buffer.bind()};var Q=[];function ie(ne){var k=Q.pop();return k||(k=new K(_.create(null,gs,!0,!1)._buffer)),oe(k,ne,hy,-1,-1,0,0),k}function ae(ne){Q.push(ne)}function oe(ne,k,G,te,xe,Z,ge){ne.buffer.bind();var me;if(k){var Fe=ge;!ge&&(!n(k)||yn(k)&&!n(k.data))&&(Fe=h.oes_element_index_uint?pr:Vr),_._initBuffer(ne.buffer,k,G,Fe,3)}else a.bufferData(gs,Z,G),ne.buffer.dtype=me||Ur,ne.buffer.usage=G,ne.buffer.dimension=3,ne.buffer.byteLength=Z;if(me=ge,!ge){switch(ne.buffer.dtype){case Ur:case cy:me=Ur;break;case Vr:case cl:me=Vr;break;case pr:case hl:me=pr;break;default:d.raise("unsupported type for element array")}ne.buffer.dtype=me}ne.type=me,d(me!==pr||!!h.oes_element_index_uint,"32 bit element buffers not supported, enable oes_element_index_uint first");var X=xe;X<0&&(X=ne.buffer.byteLength,me===Vr?X>>=1:me===pr&&(X>>=2)),ne.vertCount=X;var $=te;if(te<0){$=wi;var Se=ne.buffer.dimension;Se===1&&($=uy),Se===2&&($=ly),Se===3&&($=wi)}ne.primType=$}function le(ne){O.elementsCount--,d(ne.buffer!==null,"must not double destroy elements"),delete j[ne.id],ne.buffer.destroy(),ne.buffer=null}function J(ne,k){var G=_.create(null,gs,!0),te=new K(G._buffer);O.elementsCount++;function xe(Z){if(!Z)G(),te.primType=wi,te.vertCount=0,te.type=Ur;else if(typeof Z=="number")G(Z),te.primType=wi,te.vertCount=Z|0,te.type=Ur;else{var ge=null,me=dy,Fe=-1,X=-1,$=0,Se=0;Array.isArray(Z)||n(Z)||yn(Z)?ge=Z:(d.type(Z,"object","invalid arguments for elements"),"data"in Z&&(ge=Z.data,d(Array.isArray(ge)||n(ge)||yn(ge),"invalid data for element buffer")),"usage"in Z&&(d.parameter(Z.usage,Vo,"invalid element buffer usage"),me=Vo[Z.usage]),"primitive"in Z&&(d.parameter(Z.primitive,Yn,"invalid element buffer primitive"),Fe=Yn[Z.primitive]),"count"in Z&&(d(typeof Z.count=="number"&&Z.count>=0,"invalid vertex count for elements"),X=Z.count|0),"type"in Z&&(d.parameter(Z.type,B,"invalid buffer type"),Se=B[Z.type]),"length"in Z?$=Z.length|0:($=X,Se===Vr||Se===cl?$*=2:(Se===pr||Se===hl)&&($*=4))),oe(te,ge,me,Fe,X,$,Se)}return xe}return xe(ne),xe._reglType="elements",xe._elements=te,xe.subdata=function(Z,ge){return G.subdata(Z,ge),xe},xe.destroy=function(){le(te)},xe}return{create:J,createStream:ie,destroyStream:ae,getElements:function(ne){return typeof ne=="function"&&ne._elements instanceof K?ne._elements:null},clear:function(){nn(j).forEach(le)}}}var dl=new Float32Array(1),py=new Uint32Array(dl.buffer),vy=5123;function ml(a){for(var h=gt.allocType(vy,a.length),_=0;_<a.length;++_)if(isNaN(a[_]))h[_]=65535;else if(a[_]===1/0)h[_]=31744;else if(a[_]===-1/0)h[_]=64512;else{dl[0]=a[_];var O=py[0],j=O>>>31<<15,z=(O<<1>>>24)-127,B=O>>13&1023;if(z<-24)h[_]=j;else if(z<-14){var K=-14-z;h[_]=j+(B+1024>>K)}else z>15?h[_]=j+31744:h[_]=j+(z+15<<10)+B}return h}function pt(a){return Array.isArray(a)||n(a)}var pl=function(a){return!(a&a-1)&&!!a},gy=34467,An=3553,ys=34067,Ho=34069,vr=6408,xs=6406,jo=6407,Ai=6409,Xo=6410,vl=32854,bs=32855,gl=36194,yy=32819,xy=32820,by=33635,_y=34042,_s=6402,Wo=34041,Ss=35904,Ts=35906,$r=36193,ws=33776,As=33777,Es=33778,Ps=33779,yl=35986,xl=35987,bl=34798,_l=35840,Sl=35841,Tl=35842,wl=35843,Al=36196,Hr=5121,Cs=5123,ks=5125,Ei=5126,Sy=10242,Ty=10243,wy=10497,Ls=33071,Ay=33648,Ey=10240,Py=10241,Fs=9728,Cy=9729,Rs=9984,El=9985,Pl=9986,Is=9987,ky=33170,qo=4352,Ly=4353,Fy=4354,Ry=34046,Iy=3317,Dy=37440,zy=37441,Oy=37443,Cl=37444,Pi=33984,My=[Rs,Pl,El,Is],Yo=[0,Ai,Xo,jo,vr],un={};un[Ai]=un[xs]=un[_s]=1,un[Wo]=un[Xo]=2,un[jo]=un[Ss]=3,un[vr]=un[Ts]=4;function jr(a){return"[object "+a+"]"}var kl=jr("HTMLCanvasElement"),Ll=jr("OffscreenCanvas"),Fl=jr("CanvasRenderingContext2D"),Rl=jr("ImageBitmap"),Il=jr("HTMLImageElement"),Dl=jr("HTMLVideoElement"),Ny=Object.keys(ds).concat([kl,Ll,Fl,Rl,Il,Dl]),Xr=[];Xr[Hr]=1,Xr[Ei]=4,Xr[$r]=2,Xr[Cs]=2,Xr[ks]=4;var Gt=[];Gt[vl]=2,Gt[bs]=2,Gt[gl]=2,Gt[Wo]=4,Gt[ws]=.5,Gt[As]=.5,Gt[Es]=1,Gt[Ps]=1,Gt[yl]=.5,Gt[xl]=1,Gt[bl]=1,Gt[_l]=.5,Gt[Sl]=.25,Gt[Tl]=.5,Gt[wl]=.25,Gt[Al]=.5;function zl(a){return Array.isArray(a)&&(a.length===0||typeof a[0]=="number")}function Ol(a){if(!Array.isArray(a))return!1;var h=a.length;return!(h===0||!pt(a[0]))}function gr(a){return Object.prototype.toString.call(a)}function Ml(a){return gr(a)===kl}function Nl(a){return gr(a)===Ll}function Gy(a){return gr(a)===Fl}function By(a){return gr(a)===Rl}function Uy(a){return gr(a)===Il}function Vy(a){return gr(a)===Dl}function Ds(a){if(!a)return!1;var h=gr(a);return Ny.indexOf(h)>=0?!0:zl(a)||Ol(a)||yn(a)}function Gl(a){return ds[Object.prototype.toString.call(a)]|0}function $y(a,h){var _=h.length;switch(a.type){case Hr:case Cs:case ks:case Ei:var O=gt.allocType(a.type,_);O.set(h),a.data=O;break;case $r:a.data=ml(h);break;default:d.raise("unsupported texture type, must specify a typed array")}}function Bl(a,h){return gt.allocType(a.type===$r?Ei:a.type,h)}function Ul(a,h){a.type===$r?(a.data=ml(h),gt.freeType(h)):a.data=h}function Hy(a,h,_,O,j,z){for(var B=a.width,K=a.height,Q=a.channels,ie=B*K*Q,ae=Bl(a,ie),oe=0,le=0;le<K;++le)for(var J=0;J<B;++J)for(var ne=0;ne<Q;++ne)ae[oe++]=h[_*J+O*le+j*ne+z];Ul(a,ae)}function Zo(a,h,_,O,j,z){var B;if(typeof Gt[a]<"u"?B=Gt[a]:B=un[a]*Xr[h],z&&(B*=6),j){for(var K=0,Q=_;Q>=1;)K+=B*Q*Q,Q/=2;return K}else return B*_*O}function jy(a,h,_,O,j,z,B){var K={"don't care":qo,"dont care":qo,nice:Fy,fast:Ly},Q={repeat:wy,clamp:Ls,mirror:Ay},ie={nearest:Fs,linear:Cy},ae=r({mipmap:Is,"nearest mipmap nearest":Rs,"linear mipmap nearest":El,"nearest mipmap linear":Pl,"linear mipmap linear":Is},ie),oe={none:0,browser:Cl},le={uint8:Hr,rgba4:yy,rgb565:by,"rgb5 a1":xy},J={alpha:xs,luminance:Ai,"luminance alpha":Xo,rgb:jo,rgba:vr,rgba4:vl,"rgb5 a1":bs,rgb565:gl},ne={};h.ext_srgb&&(J.srgb=Ss,J.srgba=Ts),h.oes_texture_float&&(le.float32=le.float=Ei),h.oes_texture_half_float&&(le.float16=le["half float"]=$r),h.webgl_depth_texture&&(r(J,{depth:_s,"depth stencil":Wo}),r(le,{uint16:Cs,uint32:ks,"depth stencil":_y})),h.webgl_compressed_texture_s3tc&&r(ne,{"rgb s3tc dxt1":ws,"rgba s3tc dxt1":As,"rgba s3tc dxt3":Es,"rgba s3tc dxt5":Ps}),h.webgl_compressed_texture_atc&&r(ne,{"rgb atc":yl,"rgba atc explicit alpha":xl,"rgba atc interpolated alpha":bl}),h.webgl_compressed_texture_pvrtc&&r(ne,{"rgb pvrtc 4bppv1":_l,"rgb pvrtc 2bppv1":Sl,"rgba pvrtc 4bppv1":Tl,"rgba pvrtc 2bppv1":wl}),h.webgl_compressed_texture_etc1&&(ne["rgb etc1"]=Al);var k=Array.prototype.slice.call(a.getParameter(gy));Object.keys(ne).forEach(function(y){var M=ne[y];k.indexOf(M)>=0&&(J[y]=M)});var G=Object.keys(J);_.textureFormats=G;var te=[];Object.keys(J).forEach(function(y){var M=J[y];te[M]=y});var xe=[];Object.keys(le).forEach(function(y){var M=le[y];xe[M]=y});var Z=[];Object.keys(ie).forEach(function(y){var M=ie[y];Z[M]=y});var ge=[];Object.keys(ae).forEach(function(y){var M=ae[y];ge[M]=y});var me=[];Object.keys(Q).forEach(function(y){var M=Q[y];me[M]=y});var Fe=G.reduce(function(y,M){var I=J[M];return I===Ai||I===xs||I===Ai||I===Xo||I===_s||I===Wo||h.ext_srgb&&(I===Ss||I===Ts)?y[I]=I:I===bs||M.indexOf("rgba")>=0?y[I]=vr:y[I]=jo,y},{});function X(){this.internalformat=vr,this.format=vr,this.type=Hr,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=Cl,this.width=0,this.height=0,this.channels=0}function $(y,M){y.internalformat=M.internalformat,y.format=M.format,y.type=M.type,y.compressed=M.compressed,y.premultiplyAlpha=M.premultiplyAlpha,y.flipY=M.flipY,y.unpackAlignment=M.unpackAlignment,y.colorSpace=M.colorSpace,y.width=M.width,y.height=M.height,y.channels=M.channels}function Se(y,M){if(!(typeof M!="object"||!M)){if("premultiplyAlpha"in M&&(d.type(M.premultiplyAlpha,"boolean","invalid premultiplyAlpha"),y.premultiplyAlpha=M.premultiplyAlpha),"flipY"in M&&(d.type(M.flipY,"boolean","invalid texture flip"),y.flipY=M.flipY),"alignment"in M&&(d.oneOf(M.alignment,[1,2,4,8],"invalid texture unpack alignment"),y.unpackAlignment=M.alignment),"colorSpace"in M&&(d.parameter(M.colorSpace,oe,"invalid colorSpace"),y.colorSpace=oe[M.colorSpace]),"type"in M){var I=M.type;d(h.oes_texture_float||!(I==="float"||I==="float32"),"you must enable the OES_texture_float extension in order to use floating point textures."),d(h.oes_texture_half_float||!(I==="half float"||I==="float16"),"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures."),d(h.webgl_depth_texture||!(I==="uint16"||I==="uint32"||I==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),d.parameter(I,le,"invalid texture type"),y.type=le[I]}var _e=y.width,Ke=y.height,m=y.channels,c=!1;"shape"in M?(d(Array.isArray(M.shape)&&M.shape.length>=2,"shape must be an array"),_e=M.shape[0],Ke=M.shape[1],M.shape.length===3&&(m=M.shape[2],d(m>0&&m<=4,"invalid number of channels"),c=!0),d(_e>=0&&_e<=_.maxTextureSize,"invalid width"),d(Ke>=0&&Ke<=_.maxTextureSize,"invalid height")):("radius"in M&&(_e=Ke=M.radius,d(_e>=0&&_e<=_.maxTextureSize,"invalid radius")),"width"in M&&(_e=M.width,d(_e>=0&&_e<=_.maxTextureSize,"invalid width")),"height"in M&&(Ke=M.height,d(Ke>=0&&Ke<=_.maxTextureSize,"invalid height")),"channels"in M&&(m=M.channels,d(m>0&&m<=4,"invalid number of channels"),c=!0)),y.width=_e|0,y.height=Ke|0,y.channels=m|0;var T=!1;if("format"in M){var P=M.format;d(h.webgl_depth_texture||!(P==="depth"||P==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),d.parameter(P,J,"invalid texture format");var L=y.internalformat=J[P];y.format=Fe[L],P in le&&("type"in M||(y.type=le[P])),P in ne&&(y.compressed=!0),T=!0}!c&&T?y.channels=un[y.format]:c&&!T?y.channels!==Yo[y.format]&&(y.format=y.internalformat=Yo[y.channels]):T&&c&&d(y.channels===un[y.format],"number of channels inconsistent with specified format")}}function ce(y){a.pixelStorei(Dy,y.flipY),a.pixelStorei(zy,y.premultiplyAlpha),a.pixelStorei(Oy,y.colorSpace),a.pixelStorei(Iy,y.unpackAlignment)}function ee(){X.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function he(y,M){var I=null;if(Ds(M)?I=M:M&&(d.type(M,"object","invalid pixel data type"),Se(y,M),"x"in M&&(y.xOffset=M.x|0),"y"in M&&(y.yOffset=M.y|0),Ds(M.data)&&(I=M.data)),d(!y.compressed||I instanceof Uint8Array,"compressed texture data must be stored in a uint8array"),M.copy){d(!I,"can not specify copy and data field for the same texture");var _e=j.viewportWidth,Ke=j.viewportHeight;y.width=y.width||_e-y.xOffset,y.height=y.height||Ke-y.yOffset,y.needsCopy=!0,d(y.xOffset>=0&&y.xOffset<_e&&y.yOffset>=0&&y.yOffset<Ke&&y.width>0&&y.width<=_e&&y.height>0&&y.height<=Ke,"copy texture read out of bounds")}else if(!I)y.width=y.width||1,y.height=y.height||1,y.channels=y.channels||4;else if(n(I))y.channels=y.channels||4,y.data=I,!("type"in M)&&y.type===Hr&&(y.type=Gl(I));else if(zl(I))y.channels=y.channels||4,$y(y,I),y.alignment=1,y.needsFree=!0;else if(yn(I)){var m=I.data;!Array.isArray(m)&&y.type===Hr&&(y.type=Gl(m));var c=I.shape,T=I.stride,P,L,A,w,E,v;c.length===3?(A=c[2],v=T[2]):(d(c.length===2,"invalid ndarray pixel data, must be 2 or 3D"),A=1,v=1),P=c[0],L=c[1],w=T[0],E=T[1],y.alignment=1,y.width=P,y.height=L,y.channels=A,y.format=y.internalformat=Yo[A],y.needsFree=!0,Hy(y,m,w,E,v,I.offset)}else if(Ml(I)||Nl(I)||Gy(I))Ml(I)||Nl(I)?y.element=I:y.element=I.canvas,y.width=y.element.width,y.height=y.element.height,y.channels=4;else if(By(I))y.element=I,y.width=I.width,y.height=I.height,y.channels=4;else if(Uy(I))y.element=I,y.width=I.naturalWidth,y.height=I.naturalHeight,y.channels=4;else if(Vy(I))y.element=I,y.width=I.videoWidth,y.height=I.videoHeight,y.channels=4;else if(Ol(I)){var b=y.width||I[0].length,g=y.height||I.length,R=y.channels;pt(I[0][0])?R=R||I[0][0].length:R=R||1;for(var F=Uo.shape(I),V=1,W=0;W<F.length;++W)V*=F[W];var ue=Bl(y,V);Uo.flatten(I,F,"",ue),Ul(y,ue),y.alignment=1,y.width=b,y.height=g,y.channels=R,y.format=y.internalformat=Yo[R],y.needsFree=!0}y.type===Ei?d(_.extensions.indexOf("oes_texture_float")>=0,"oes_texture_float extension not enabled"):y.type===$r&&d(_.extensions.indexOf("oes_texture_half_float")>=0,"oes_texture_half_float extension not enabled")}function de(y,M,I){var _e=y.element,Ke=y.data,m=y.internalformat,c=y.format,T=y.type,P=y.width,L=y.height;ce(y),_e?a.texImage2D(M,I,c,c,T,_e):y.compressed?a.compressedTexImage2D(M,I,m,P,L,0,Ke):y.needsCopy?(O(),a.copyTexImage2D(M,I,c,y.xOffset,y.yOffset,P,L,0)):a.texImage2D(M,I,c,P,L,0,c,T,Ke||null)}function Ve(y,M,I,_e,Ke){var m=y.element,c=y.data,T=y.internalformat,P=y.format,L=y.type,A=y.width,w=y.height;ce(y),m?a.texSubImage2D(M,Ke,I,_e,P,L,m):y.compressed?a.compressedTexSubImage2D(M,Ke,I,_e,T,A,w,c):y.needsCopy?(O(),a.copyTexSubImage2D(M,Ke,I,_e,y.xOffset,y.yOffset,A,w)):a.texSubImage2D(M,Ke,I,_e,A,w,P,L,c)}var Ne=[];function pe(){return Ne.pop()||new ee}function ye(y){y.needsFree&>.freeType(y.data),ee.call(y),Ne.push(y)}function ze(){X.call(this),this.genMipmaps=!1,this.mipmapHint=qo,this.mipmask=0,this.images=Array(16)}function $e(y,M,I){var _e=y.images[0]=pe();y.mipmask=1,_e.width=y.width=M,_e.height=y.height=I,_e.channels=y.channels=4}function Je(y,M){var I=null;if(Ds(M))I=y.images[0]=pe(),$(I,y),he(I,M),y.mipmask=1;else if(Se(y,M),Array.isArray(M.mipmap))for(var _e=M.mipmap,Ke=0;Ke<_e.length;++Ke)I=y.images[Ke]=pe(),$(I,y),I.width>>=Ke,I.height>>=Ke,he(I,_e[Ke]),y.mipmask|=1<<Ke;else I=y.images[0]=pe(),$(I,y),he(I,M),y.mipmask=1;$(y,y.images[0]),y.compressed&&(y.internalformat===ws||y.internalformat===As||y.internalformat===Es||y.internalformat===Ps)&&d(y.width%4===0&&y.height%4===0,"for compressed texture formats, mipmap level 0 must have width and height that are a multiple of 4")}function vt(y,M){for(var I=y.images,_e=0;_e<I.length;++_e){if(!I[_e])return;de(I[_e],M,_e)}}var yt=[];function tt(){var y=yt.pop()||new ze;X.call(y),y.mipmask=0;for(var M=0;M<16;++M)y.images[M]=null;return y}function Et(y){for(var M=y.images,I=0;I<M.length;++I)M[I]&&ye(M[I]),M[I]=null;yt.push(y)}function ht(){this.minFilter=Fs,this.magFilter=Fs,this.wrapS=Ls,this.wrapT=Ls,this.anisotropic=1,this.genMipmaps=!1,this.mipmapHint=qo}function Tt(y,M){if("min"in M){var I=M.min;d.parameter(I,ae),y.minFilter=ae[I],My.indexOf(y.minFilter)>=0&&!("faces"in M)&&(y.genMipmaps=!0)}if("mag"in M){var _e=M.mag;d.parameter(_e,ie),y.magFilter=ie[_e]}var Ke=y.wrapS,m=y.wrapT;if("wrap"in M){var c=M.wrap;typeof c=="string"?(d.parameter(c,Q),Ke=m=Q[c]):Array.isArray(c)&&(d.parameter(c[0],Q),d.parameter(c[1],Q),Ke=Q[c[0]],m=Q[c[1]])}else{if("wrapS"in M){var T=M.wrapS;d.parameter(T,Q),Ke=Q[T]}if("wrapT"in M){var P=M.wrapT;d.parameter(P,Q),m=Q[P]}}if(y.wrapS=Ke,y.wrapT=m,"anisotropic"in M){var L=M.anisotropic;d(typeof L=="number"&&L>=1&&L<=_.maxAnisotropic,"aniso samples must be between 1 and "),y.anisotropic=M.anisotropic}if("mipmap"in M){var A=!1;switch(typeof M.mipmap){case"string":d.parameter(M.mipmap,K,"invalid mipmap hint"),y.mipmapHint=K[M.mipmap],y.genMipmaps=!0,A=!0;break;case"boolean":A=y.genMipmaps=M.mipmap;break;case"object":d(Array.isArray(M.mipmap),"invalid mipmap type"),y.genMipmaps=!1,A=!0;break;default:d.raise("invalid mipmap type")}A&&!("min"in M)&&(y.minFilter=Rs)}}function Pt(y,M){a.texParameteri(M,Py,y.minFilter),a.texParameteri(M,Ey,y.magFilter),a.texParameteri(M,Sy,y.wrapS),a.texParameteri(M,Ty,y.wrapT),h.ext_texture_filter_anisotropic&&a.texParameteri(M,Ry,y.anisotropic),y.genMipmaps&&(a.hint(ky,y.mipmapHint),a.generateMipmap(M))}var Ct=0,It={},Bt=_.maxTextureUnits,xt=Array(Bt).map(function(){return null});function qe(y){X.call(this),this.mipmask=0,this.internalformat=vr,this.id=Ct++,this.refCount=1,this.target=y,this.texture=a.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new ht,B.profile&&(this.stats={size:0})}function Ut(y){a.activeTexture(Pi),a.bindTexture(y.target,y.texture)}function ot(){var y=xt[0];y?a.bindTexture(y.target,y.texture):a.bindTexture(An,null)}function Ie(y){var M=y.texture;d(M,"must not double destroy texture");var I=y.unit,_e=y.target;I>=0&&(a.activeTexture(Pi+I),a.bindTexture(_e,null),xt[I]=null),a.deleteTexture(M),y.texture=null,y.params=null,y.pixels=null,y.refCount=0,delete It[y.id],z.textureCount--}r(qe.prototype,{bind:function(){var y=this;y.bindCount+=1;var M=y.unit;if(M<0){for(var I=0;I<Bt;++I){var _e=xt[I];if(_e){if(_e.bindCount>0)continue;_e.unit=-1}xt[I]=y,M=I;break}M>=Bt&&d.raise("insufficient number of texture units"),B.profile&&z.maxTextureUnits<M+1&&(z.maxTextureUnits=M+1),y.unit=M,a.activeTexture(Pi+M),a.bindTexture(y.target,y.texture)}return M},unbind:function(){this.bindCount-=1},decRef:function(){--this.refCount<=0&&Ie(this)}});function et(y,M){var I=new qe(An);It[I.id]=I,z.textureCount++;function _e(c,T){var P=I.texInfo;ht.call(P);var L=tt();return typeof c=="number"?typeof T=="number"?$e(L,c|0,T|0):$e(L,c|0,c|0):c?(d.type(c,"object","invalid arguments to regl.texture"),Tt(P,c),Je(L,c)):$e(L,1,1),P.genMipmaps&&(L.mipmask=(L.width<<1)-1),I.mipmask=L.mipmask,$(I,L),d.texture2D(P,L,_),I.internalformat=L.internalformat,_e.width=L.width,_e.height=L.height,Ut(I),vt(L,An),Pt(P,An),ot(),Et(L),B.profile&&(I.stats.size=Zo(I.internalformat,I.type,L.width,L.height,P.genMipmaps,!1)),_e.format=te[I.internalformat],_e.type=xe[I.type],_e.mag=Z[P.magFilter],_e.min=ge[P.minFilter],_e.wrapS=me[P.wrapS],_e.wrapT=me[P.wrapT],_e}function Ke(c,T,P,L){d(!!c,"must specify image data");var A=T|0,w=P|0,E=L|0,v=pe();return $(v,I),v.width=0,v.height=0,he(v,c),v.width=v.width||(I.width>>E)-A,v.height=v.height||(I.height>>E)-w,d(I.type===v.type&&I.format===v.format&&I.internalformat===v.internalformat,"incompatible format for texture.subimage"),d(A>=0&&w>=0&&A+v.width<=I.width&&w+v.height<=I.height,"texture.subimage write out of bounds"),d(I.mipmask&1<<E,"missing mipmap data"),d(v.data||v.element||v.needsCopy,"missing image data"),Ut(I),Ve(v,An,A,w,E),ot(),ye(v),_e}function m(c,T){var P=c|0,L=T|0||P;if(P===I.width&&L===I.height)return _e;_e.width=I.width=P,_e.height=I.height=L,Ut(I);for(var A=0;I.mipmask>>A;++A){var w=P>>A,E=L>>A;if(!w||!E)break;a.texImage2D(An,A,I.format,w,E,0,I.format,I.type,null)}return ot(),B.profile&&(I.stats.size=Zo(I.internalformat,I.type,P,L,!1,!1)),_e}return _e(y,M),_e.subimage=Ke,_e.resize=m,_e._reglType="texture2d",_e._texture=I,B.profile&&(_e.stats=I.stats),_e.destroy=function(){I.decRef()},_e}function nt(y,M,I,_e,Ke,m){var c=new qe(ys);It[c.id]=c,z.cubeCount++;var T=new Array(6);function P(w,E,v,b,g,R){var F,V=c.texInfo;for(ht.call(V),F=0;F<6;++F)T[F]=tt();if(typeof w=="number"||!w){var W=w|0||1;for(F=0;F<6;++F)$e(T[F],W,W)}else if(typeof w=="object")if(E)Je(T[0],w),Je(T[1],E),Je(T[2],v),Je(T[3],b),Je(T[4],g),Je(T[5],R);else if(Tt(V,w),Se(c,w),"faces"in w){var ue=w.faces;for(d(Array.isArray(ue)&&ue.length===6,"cube faces must be a length 6 array"),F=0;F<6;++F)d(typeof ue[F]=="object"&&!!ue[F],"invalid input for cube map face"),$(T[F],c),Je(T[F],ue[F])}else for(F=0;F<6;++F)Je(T[F],w);else d.raise("invalid arguments to cube map");for($(c,T[0]),d.optional(function(){_.npotTextureCube||d(pl(c.width)&&pl(c.height),"your browser does not support non power or two texture dimensions")}),V.genMipmaps?c.mipmask=(T[0].width<<1)-1:c.mipmask=T[0].mipmask,d.textureCube(c,V,T,_),c.internalformat=T[0].internalformat,P.width=T[0].width,P.height=T[0].height,Ut(c),F=0;F<6;++F)vt(T[F],Ho+F);for(Pt(V,ys),ot(),B.profile&&(c.stats.size=Zo(c.internalformat,c.type,P.width,P.height,V.genMipmaps,!0)),P.format=te[c.internalformat],P.type=xe[c.type],P.mag=Z[V.magFilter],P.min=ge[V.minFilter],P.wrapS=me[V.wrapS],P.wrapT=me[V.wrapT],F=0;F<6;++F)Et(T[F]);return P}function L(w,E,v,b,g){d(!!E,"must specify image data"),d(typeof w=="number"&&w===(w|0)&&w>=0&&w<6,"invalid face");var R=v|0,F=b|0,V=g|0,W=pe();return $(W,c),W.width=0,W.height=0,he(W,E),W.width=W.width||(c.width>>V)-R,W.height=W.height||(c.height>>V)-F,d(c.type===W.type&&c.format===W.format&&c.internalformat===W.internalformat,"incompatible format for texture.subimage"),d(R>=0&&F>=0&&R+W.width<=c.width&&F+W.height<=c.height,"texture.subimage write out of bounds"),d(c.mipmask&1<<V,"missing mipmap data"),d(W.data||W.element||W.needsCopy,"missing image data"),Ut(c),Ve(W,Ho+w,R,F,V),ot(),ye(W),P}function A(w){var E=w|0;if(E!==c.width){P.width=c.width=E,P.height=c.height=E,Ut(c);for(var v=0;v<6;++v)for(var b=0;c.mipmask>>b;++b)a.texImage2D(Ho+v,b,c.format,E>>b,E>>b,0,c.format,c.type,null);return ot(),B.profile&&(c.stats.size=Zo(c.internalformat,c.type,P.width,P.height,!1,!0)),P}}return P(y,M,I,_e,Ke,m),P.subimage=L,P.resize=A,P._reglType="textureCube",P._texture=c,B.profile&&(P.stats=c.stats),P.destroy=function(){c.decRef()},P}function bt(){for(var y=0;y<Bt;++y)a.activeTexture(Pi+y),a.bindTexture(An,null),xt[y]=null;nn(It).forEach(Ie),z.cubeCount=0,z.textureCount=0}B.profile&&(z.getTotalTextureSize=function(){var y=0;return Object.keys(It).forEach(function(M){y+=It[M].stats.size}),y});function Pn(){for(var y=0;y<Bt;++y){var M=xt[y];M&&(M.bindCount=0,M.unit=-1,xt[y]=null)}nn(It).forEach(function(I){I.texture=a.createTexture(),a.bindTexture(I.target,I.texture);for(var _e=0;_e<32;++_e)if((I.mipmask&1<<_e)!==0)if(I.target===An)a.texImage2D(An,_e,I.internalformat,I.width>>_e,I.height>>_e,0,I.internalformat,I.type,null);else for(var Ke=0;Ke<6;++Ke)a.texImage2D(Ho+Ke,_e,I.internalformat,I.width>>_e,I.height>>_e,0,I.internalformat,I.type,null);Pt(I.texInfo,I.target)})}function wr(){for(var y=0;y<Bt;++y){var M=xt[y];M&&(M.bindCount=0,M.unit=-1,xt[y]=null),a.activeTexture(Pi+y),a.bindTexture(An,null),a.bindTexture(ys,null)}}return{create2D:et,createCube:nt,clear:bt,getTexture:function(y){return null},restore:Pn,refresh:wr}}var Zn=36161,Qo=32854,Vl=32855,$l=36194,Hl=33189,jl=36168,Xl=34041,Wl=35907,ql=34836,Yl=34842,Zl=34843,xn=[];xn[Qo]=2,xn[Vl]=2,xn[$l]=2,xn[Hl]=2,xn[jl]=1,xn[Xl]=4,xn[Wl]=4,xn[ql]=16,xn[Yl]=8,xn[Zl]=6;function Ql(a,h,_){return xn[a]*h*_}var Xy=function(a,h,_,O,j){var z={rgba4:Qo,rgb565:$l,"rgb5 a1":Vl,depth:Hl,stencil:jl,"depth stencil":Xl};h.ext_srgb&&(z.srgba=Wl),h.ext_color_buffer_half_float&&(z.rgba16f=Yl,z.rgb16f=Zl),h.webgl_color_buffer_float&&(z.rgba32f=ql);var B=[];Object.keys(z).forEach(function(J){var ne=z[J];B[ne]=J});var K=0,Q={};function ie(J){this.id=K++,this.refCount=1,this.renderbuffer=J,this.format=Qo,this.width=0,this.height=0,j.profile&&(this.stats={size:0})}ie.prototype.decRef=function(){--this.refCount<=0&&ae(this)};function ae(J){var ne=J.renderbuffer;d(ne,"must not double destroy renderbuffer"),a.bindRenderbuffer(Zn,null),a.deleteRenderbuffer(ne),J.renderbuffer=null,J.refCount=0,delete Q[J.id],O.renderbufferCount--}function oe(J,ne){var k=new ie(a.createRenderbuffer());Q[k.id]=k,O.renderbufferCount++;function G(xe,Z){var ge=0,me=0,Fe=Qo;if(typeof xe=="object"&&xe){var X=xe;if("shape"in X){var $=X.shape;d(Array.isArray($)&&$.length>=2,"invalid renderbuffer shape"),ge=$[0]|0,me=$[1]|0}else"radius"in X&&(ge=me=X.radius|0),"width"in X&&(ge=X.width|0),"height"in X&&(me=X.height|0);"format"in X&&(d.parameter(X.format,z,"invalid renderbuffer format"),Fe=z[X.format])}else typeof xe=="number"?(ge=xe|0,typeof Z=="number"?me=Z|0:me=ge):xe?d.raise("invalid arguments to renderbuffer constructor"):ge=me=1;if(d(ge>0&&me>0&&ge<=_.maxRenderbufferSize&&me<=_.maxRenderbufferSize,"invalid renderbuffer size"),!(ge===k.width&&me===k.height&&Fe===k.format))return G.width=k.width=ge,G.height=k.height=me,k.format=Fe,a.bindRenderbuffer(Zn,k.renderbuffer),a.renderbufferStorage(Zn,Fe,ge,me),d(a.getError()===0,"invalid render buffer format"),j.profile&&(k.stats.size=Ql(k.format,k.width,k.height)),G.format=B[k.format],G}function te(xe,Z){var ge=xe|0,me=Z|0||ge;return ge===k.width&&me===k.height||(d(ge>0&&me>0&&ge<=_.maxRenderbufferSize&&me<=_.maxRenderbufferSize,"invalid renderbuffer size"),G.width=k.width=ge,G.height=k.height=me,a.bindRenderbuffer(Zn,k.renderbuffer),a.renderbufferStorage(Zn,k.format,ge,me),d(a.getError()===0,"invalid render buffer format"),j.profile&&(k.stats.size=Ql(k.format,k.width,k.height))),G}return G(J,ne),G.resize=te,G._reglType="renderbuffer",G._renderbuffer=k,j.profile&&(G.stats=k.stats),G.destroy=function(){k.decRef()},G}j.profile&&(O.getTotalRenderbufferSize=function(){var J=0;return Object.keys(Q).forEach(function(ne){J+=Q[ne].stats.size}),J});function le(){nn(Q).forEach(function(J){J.renderbuffer=a.createRenderbuffer(),a.bindRenderbuffer(Zn,J.renderbuffer),a.renderbufferStorage(Zn,J.format,J.width,J.height)}),a.bindRenderbuffer(Zn,null)}return{create:oe,clear:function(){nn(Q).forEach(ae)},restore:le}},Nn=36160,zs=36161,yr=3553,Ko=34069,Kl=36064,Jl=36096,ec=36128,tc=33306,nc=36053,Wy=36054,qy=36055,Yy=36057,Zy=36061,Qy=36193,Ky=5121,Jy=5126,rc=6407,ic=6408,ex=6402,tx=[rc,ic],Os=[];Os[ic]=4,Os[rc]=3;var Jo=[];Jo[Ky]=1,Jo[Jy]=4,Jo[Qy]=2;var nx=32854,rx=32855,ix=36194,ox=33189,ax=36168,oc=34041,sx=35907,fx=34836,ux=34842,lx=34843,cx=[nx,rx,ix,sx,ux,lx,fx],Wr={};Wr[nc]="complete",Wr[Wy]="incomplete attachment",Wr[Yy]="incomplete dimensions",Wr[qy]="incomplete, missing attachment",Wr[Zy]="unsupported";function hx(a,h,_,O,j,z){var B={cur:null,next:null,dirty:!1,setFBO:null},K=["rgba"],Q=["rgba4","rgb565","rgb5 a1"];h.ext_srgb&&Q.push("srgba"),h.ext_color_buffer_half_float&&Q.push("rgba16f","rgb16f"),h.webgl_color_buffer_float&&Q.push("rgba32f");var ie=["uint8"];h.oes_texture_half_float&&ie.push("half float","float16"),h.oes_texture_float&&ie.push("float","float32");function ae(ee,he,de){this.target=ee,this.texture=he,this.renderbuffer=de;var Ve=0,Ne=0;he?(Ve=he.width,Ne=he.height):de&&(Ve=de.width,Ne=de.height),this.width=Ve,this.height=Ne}function oe(ee){ee&&(ee.texture&&ee.texture._texture.decRef(),ee.renderbuffer&&ee.renderbuffer._renderbuffer.decRef())}function le(ee,he,de){if(ee)if(ee.texture){var Ve=ee.texture._texture,Ne=Math.max(1,Ve.width),pe=Math.max(1,Ve.height);d(Ne===he&&pe===de,"inconsistent width/height for supplied texture"),Ve.refCount+=1}else{var ye=ee.renderbuffer._renderbuffer;d(ye.width===he&&ye.height===de,"inconsistent width/height for renderbuffer"),ye.refCount+=1}}function J(ee,he){he&&(he.texture?a.framebufferTexture2D(Nn,ee,he.target,he.texture._texture.texture,0):a.framebufferRenderbuffer(Nn,ee,zs,he.renderbuffer._renderbuffer.renderbuffer))}function ne(ee){var he=yr,de=null,Ve=null,Ne=ee;typeof ee=="object"&&(Ne=ee.data,"target"in ee&&(he=ee.target|0)),d.type(Ne,"function","invalid attachment data");var pe=Ne._reglType;return pe==="texture2d"?(de=Ne,d(he===yr)):pe==="textureCube"?(de=Ne,d(he>=Ko&&he<Ko+6,"invalid cube map target")):pe==="renderbuffer"?(Ve=Ne,he=zs):d.raise("invalid regl object for attachment"),new ae(he,de,Ve)}function k(ee,he,de,Ve,Ne){if(de){var pe=O.create2D({width:ee,height:he,format:Ve,type:Ne});return pe._texture.refCount=0,new ae(yr,pe,null)}else{var ye=j.create({width:ee,height:he,format:Ve});return ye._renderbuffer.refCount=0,new ae(zs,null,ye)}}function G(ee){return ee&&(ee.texture||ee.renderbuffer)}function te(ee,he,de){ee&&(ee.texture?ee.texture.resize(he,de):ee.renderbuffer&&ee.renderbuffer.resize(he,de),ee.width=he,ee.height=de)}var xe=0,Z={};function ge(){this.id=xe++,Z[this.id]=this,this.framebuffer=a.createFramebuffer(),this.width=0,this.height=0,this.colorAttachments=[],this.depthAttachment=null,this.stencilAttachment=null,this.depthStencilAttachment=null}function me(ee){ee.colorAttachments.forEach(oe),oe(ee.depthAttachment),oe(ee.stencilAttachment),oe(ee.depthStencilAttachment)}function Fe(ee){var he=ee.framebuffer;d(he,"must not double destroy framebuffer"),a.deleteFramebuffer(he),ee.framebuffer=null,z.framebufferCount--,delete Z[ee.id]}function X(ee){var he;a.bindFramebuffer(Nn,ee.framebuffer);var de=ee.colorAttachments;for(he=0;he<de.length;++he)J(Kl+he,de[he]);for(he=de.length;he<_.maxColorAttachments;++he)a.framebufferTexture2D(Nn,Kl+he,yr,null,0);a.framebufferTexture2D(Nn,tc,yr,null,0),a.framebufferTexture2D(Nn,Jl,yr,null,0),a.framebufferTexture2D(Nn,ec,yr,null,0),J(Jl,ee.depthAttachment),J(ec,ee.stencilAttachment),J(tc,ee.depthStencilAttachment);var Ve=a.checkFramebufferStatus(Nn);!a.isContextLost()&&Ve!==nc&&d.raise("framebuffer configuration not supported, status = "+Wr[Ve]),a.bindFramebuffer(Nn,B.next?B.next.framebuffer:null),B.cur=B.next,a.getError()}function $(ee,he){var de=new ge;z.framebufferCount++;function Ve(pe,ye){var ze;d(B.next!==de,"can not update framebuffer which is currently in use");var $e=0,Je=0,vt=!0,yt=!0,tt=null,Et=!0,ht="rgba",Tt="uint8",Pt=1,Ct=null,It=null,Bt=null,xt=!1;if(typeof pe=="number")$e=pe|0,Je=ye|0||$e;else if(!pe)$e=Je=1;else{d.type(pe,"object","invalid arguments for framebuffer");var qe=pe;if("shape"in qe){var Ut=qe.shape;d(Array.isArray(Ut)&&Ut.length>=2,"invalid shape for framebuffer"),$e=Ut[0],Je=Ut[1]}else"radius"in qe&&($e=Je=qe.radius),"width"in qe&&($e=qe.width),"height"in qe&&(Je=qe.height);("color"in qe||"colors"in qe)&&(tt=qe.color||qe.colors,Array.isArray(tt)&&d(tt.length===1||h.webgl_draw_buffers,"multiple render targets not supported")),tt||("colorCount"in qe&&(Pt=qe.colorCount|0,d(Pt>0,"invalid color buffer count")),"colorTexture"in qe&&(Et=!!qe.colorTexture,ht="rgba4"),"colorType"in qe&&(Tt=qe.colorType,Et?(d(h.oes_texture_float||!(Tt==="float"||Tt==="float32"),"you must enable OES_texture_float in order to use floating point framebuffer objects"),d(h.oes_texture_half_float||!(Tt==="half float"||Tt==="float16"),"you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects")):Tt==="half float"||Tt==="float16"?(d(h.ext_color_buffer_half_float,"you must enable EXT_color_buffer_half_float to use 16-bit render buffers"),ht="rgba16f"):(Tt==="float"||Tt==="float32")&&(d(h.webgl_color_buffer_float,"you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers"),ht="rgba32f"),d.oneOf(Tt,ie,"invalid color type")),"colorFormat"in qe&&(ht=qe.colorFormat,K.indexOf(ht)>=0?Et=!0:Q.indexOf(ht)>=0?Et=!1:d.optional(function(){Et?d.oneOf(qe.colorFormat,K,"invalid color format for texture"):d.oneOf(qe.colorFormat,Q,"invalid color format for renderbuffer")}))),("depthTexture"in qe||"depthStencilTexture"in qe)&&(xt=!!(qe.depthTexture||qe.depthStencilTexture),d(!xt||h.webgl_depth_texture,"webgl_depth_texture extension not supported")),"depth"in qe&&(typeof qe.depth=="boolean"?vt=qe.depth:(Ct=qe.depth,yt=!1)),"stencil"in qe&&(typeof qe.stencil=="boolean"?yt=qe.stencil:(It=qe.stencil,vt=!1)),"depthStencil"in qe&&(typeof qe.depthStencil=="boolean"?vt=yt=qe.depthStencil:(Bt=qe.depthStencil,vt=!1,yt=!1))}var ot=null,Ie=null,et=null,nt=null;if(Array.isArray(tt))ot=tt.map(ne);else if(tt)ot=[ne(tt)];else for(ot=new Array(Pt),ze=0;ze<Pt;++ze)ot[ze]=k($e,Je,Et,ht,Tt);d(h.webgl_draw_buffers||ot.length<=1,"you must enable the WEBGL_draw_buffers extension in order to use multiple color buffers."),d(ot.length<=_.maxColorAttachments,"too many color attachments, not supported"),$e=$e||ot[0].width,Je=Je||ot[0].height,Ct?Ie=ne(Ct):vt&&!yt&&(Ie=k($e,Je,xt,"depth","uint32")),It?et=ne(It):yt&&!vt&&(et=k($e,Je,!1,"stencil","uint8")),Bt?nt=ne(Bt):!Ct&&!It&&yt&&vt&&(nt=k($e,Je,xt,"depth stencil","depth stencil")),d(!!Ct+!!It+!!Bt<=1,"invalid framebuffer configuration, can specify exactly one depth/stencil attachment");var bt=null;for(ze=0;ze<ot.length;++ze)if(le(ot[ze],$e,Je),d(!ot[ze]||ot[ze].texture&&tx.indexOf(ot[ze].texture._texture.format)>=0||ot[ze].renderbuffer&&cx.indexOf(ot[ze].renderbuffer._renderbuffer.format)>=0,"framebuffer color attachment "+ze+" is invalid"),ot[ze]&&ot[ze].texture){var Pn=Os[ot[ze].texture._texture.format]*Jo[ot[ze].texture._texture.type];bt===null?bt=Pn:d(bt===Pn,"all color attachments much have the same number of bits per pixel.")}return le(Ie,$e,Je),d(!Ie||Ie.texture&&Ie.texture._texture.format===ex||Ie.renderbuffer&&Ie.renderbuffer._renderbuffer.format===ox,"invalid depth attachment for framebuffer object"),le(et,$e,Je),d(!et||et.renderbuffer&&et.renderbuffer._renderbuffer.format===ax,"invalid stencil attachment for framebuffer object"),le(nt,$e,Je),d(!nt||nt.texture&&nt.texture._texture.format===oc||nt.renderbuffer&&nt.renderbuffer._renderbuffer.format===oc,"invalid depth-stencil attachment for framebuffer object"),me(de),de.width=$e,de.height=Je,de.colorAttachments=ot,de.depthAttachment=Ie,de.stencilAttachment=et,de.depthStencilAttachment=nt,Ve.color=ot.map(G),Ve.depth=G(Ie),Ve.stencil=G(et),Ve.depthStencil=G(nt),Ve.width=de.width,Ve.height=de.height,X(de),Ve}function Ne(pe,ye){d(B.next!==de,"can not resize a framebuffer which is currently in use");var ze=Math.max(pe|0,1),$e=Math.max(ye|0||ze,1);if(ze===de.width&&$e===de.height)return Ve;for(var Je=de.colorAttachments,vt=0;vt<Je.length;++vt)te(Je[vt],ze,$e);return te(de.depthAttachment,ze,$e),te(de.stencilAttachment,ze,$e),te(de.depthStencilAttachment,ze,$e),de.width=Ve.width=ze,de.height=Ve.height=$e,X(de),Ve}return Ve(ee,he),r(Ve,{resize:Ne,_reglType:"framebuffer",_framebuffer:de,destroy:function(){Fe(de),me(de)},use:function(pe){B.setFBO({framebuffer:Ve},pe)}})}function Se(ee){var he=Array(6);function de(Ne){var pe;d(he.indexOf(B.next)<0,"can not update framebuffer which is currently in use");var ye={color:null},ze=0,$e=null,Je="rgba",vt="uint8",yt=1;if(typeof Ne=="number")ze=Ne|0;else if(!Ne)ze=1;else{d.type(Ne,"object","invalid arguments for framebuffer");var tt=Ne;if("shape"in tt){var Et=tt.shape;d(Array.isArray(Et)&&Et.length>=2,"invalid shape for framebuffer"),d(Et[0]===Et[1],"cube framebuffer must be square"),ze=Et[0]}else"radius"in tt&&(ze=tt.radius|0),"width"in tt?(ze=tt.width|0,"height"in tt&&d(tt.height===ze,"must be square")):"height"in tt&&(ze=tt.height|0);("color"in tt||"colors"in tt)&&($e=tt.color||tt.colors,Array.isArray($e)&&d($e.length===1||h.webgl_draw_buffers,"multiple render targets not supported")),$e||("colorCount"in tt&&(yt=tt.colorCount|0,d(yt>0,"invalid color buffer count")),"colorType"in tt&&(d.oneOf(tt.colorType,ie,"invalid color type"),vt=tt.colorType),"colorFormat"in tt&&(Je=tt.colorFormat,d.oneOf(tt.colorFormat,K,"invalid color format for texture"))),"depth"in tt&&(ye.depth=tt.depth),"stencil"in tt&&(ye.stencil=tt.stencil),"depthStencil"in tt&&(ye.depthStencil=tt.depthStencil)}var ht;if($e)if(Array.isArray($e))for(ht=[],pe=0;pe<$e.length;++pe)ht[pe]=$e[pe];else ht=[$e];else{ht=Array(yt);var Tt={radius:ze,format:Je,type:vt};for(pe=0;pe<yt;++pe)ht[pe]=O.createCube(Tt)}for(ye.color=Array(ht.length),pe=0;pe<ht.length;++pe){var Pt=ht[pe];d(typeof Pt=="function"&&Pt._reglType==="textureCube","invalid cube map"),ze=ze||Pt.width,d(Pt.width===ze&&Pt.height===ze,"invalid cube map shape"),ye.color[pe]={target:Ko,data:ht[pe]}}for(pe=0;pe<6;++pe){for(var Ct=0;Ct<ht.length;++Ct)ye.color[Ct].target=Ko+pe;pe>0&&(ye.depth=he[0].depth,ye.stencil=he[0].stencil,ye.depthStencil=he[0].depthStencil),he[pe]?he[pe](ye):he[pe]=$(ye)}return r(de,{width:ze,height:ze,color:ht})}function Ve(Ne){var pe,ye=Ne|0;if(d(ye>0&&ye<=_.maxCubeMapSize,"invalid radius for cube fbo"),ye===de.width)return de;var ze=de.color;for(pe=0;pe<ze.length;++pe)ze[pe].resize(ye);for(pe=0;pe<6;++pe)he[pe].resize(ye);return de.width=de.height=ye,de}return de(ee),r(de,{faces:he,resize:Ve,_reglType:"framebufferCube",destroy:function(){he.forEach(function(Ne){Ne.destroy()})}})}function ce(){B.cur=null,B.next=null,B.dirty=!0,nn(Z).forEach(function(ee){ee.framebuffer=a.createFramebuffer(),X(ee)})}return r(B,{getFramebuffer:function(ee){if(typeof ee=="function"&&ee._reglType==="framebuffer"){var he=ee._framebuffer;if(he instanceof ge)return he}return null},create:$,createCube:Se,clear:function(){nn(Z).forEach(Fe)},restore:ce})}var dx=5126,ac=34962,ea=34963,sc=["attributes","elements","offset","count","primitive","instances"];function Ms(){this.state=0,this.x=0,this.y=0,this.z=0,this.w=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=dx,this.offset=0,this.stride=0,this.divisor=0}function mx(a,h,_,O,j,z,B){for(var K=_.maxAttributes,Q=new Array(K),ie=0;ie<K;++ie)Q[ie]=new Ms;var ae=0,oe={},le={Record:Ms,scope:{},state:Q,currentVAO:null,targetVAO:null,restore:ne()?me:function(){},createVAO:Fe,getVAO:G,destroyBuffer:J,setVAO:ne()?te:xe,clear:ne()?Z:function(){}};function J(X){for(var $=0;$<Q.length;++$){var Se=Q[$];Se.buffer===X&&(a.disableVertexAttribArray($),Se.buffer=null)}}function ne(){return h.oes_vertex_array_object}function k(){return h.angle_instanced_arrays}function G(X){return typeof X=="function"&&X._vao?X._vao:null}function te(X){if(X!==le.currentVAO){var $=ne();X?$.bindVertexArrayOES(X.vao):$.bindVertexArrayOES(null),le.currentVAO=X}}function xe(X){if(X!==le.currentVAO){if(X)X.bindAttrs();else{for(var $=k(),Se=0;Se<Q.length;++Se){var ce=Q[Se];ce.buffer?(a.enableVertexAttribArray(Se),ce.buffer.bind(),a.vertexAttribPointer(Se,ce.size,ce.type,ce.normalized,ce.stride,ce.offfset),$&&ce.divisor&&$.vertexAttribDivisorANGLE(Se,ce.divisor)):(a.disableVertexAttribArray(Se),a.vertexAttrib4f(Se,ce.x,ce.y,ce.z,ce.w))}B.elements?a.bindBuffer(ea,B.elements.buffer.buffer):a.bindBuffer(ea,null)}le.currentVAO=X}}function Z(){nn(oe).forEach(function(X){X.destroy()})}function ge(){this.id=++ae,this.attributes=[],this.elements=null,this.ownsElements=!1,this.count=0,this.offset=0,this.instances=-1,this.primitive=4;var X=ne();X?this.vao=X.createVertexArrayOES():this.vao=null,oe[this.id]=this,this.buffers=[]}ge.prototype.bindAttrs=function(){for(var X=k(),$=this.attributes,Se=0;Se<$.length;++Se){var ce=$[Se];ce.buffer?(a.enableVertexAttribArray(Se),a.bindBuffer(ac,ce.buffer.buffer),a.vertexAttribPointer(Se,ce.size,ce.type,ce.normalized,ce.stride,ce.offset),X&&ce.divisor&&X.vertexAttribDivisorANGLE(Se,ce.divisor)):(a.disableVertexAttribArray(Se),a.vertexAttrib4f(Se,ce.x,ce.y,ce.z,ce.w))}for(var ee=$.length;ee<K;++ee)a.disableVertexAttribArray(ee);var he=z.getElements(this.elements);he?a.bindBuffer(ea,he.buffer.buffer):a.bindBuffer(ea,null)},ge.prototype.refresh=function(){var X=ne();X&&(X.bindVertexArrayOES(this.vao),this.bindAttrs(),le.currentVAO=null,X.bindVertexArrayOES(null))},ge.prototype.destroy=function(){if(this.vao){var X=ne();this===le.currentVAO&&(le.currentVAO=null,X.bindVertexArrayOES(null)),X.deleteVertexArrayOES(this.vao),this.vao=null}this.ownsElements&&(this.elements.destroy(),this.elements=null,this.ownsElements=!1),oe[this.id]&&(delete oe[this.id],O.vaoCount-=1)};function me(){var X=ne();X&&nn(oe).forEach(function($){$.refresh()})}function Fe(X){var $=new ge;O.vaoCount+=1;function Se(ce){var ee;if(Array.isArray(ce))ee=ce,$.elements&&$.ownsElements&&$.elements.destroy(),$.elements=null,$.ownsElements=!1,$.offset=0,$.count=0,$.instances=-1,$.primitive=4;else{if(d(typeof ce=="object","invalid arguments for create vao"),d("attributes"in ce,"must specify attributes for vao"),ce.elements){var he=ce.elements;$.ownsElements?typeof he=="function"&&he._reglType==="elements"?($.elements.destroy(),$.ownsElements=!1):($.elements(he),$.ownsElements=!1):z.getElements(ce.elements)?($.elements=ce.elements,$.ownsElements=!1):($.elements=z.create(ce.elements),$.ownsElements=!0)}else $.elements=null,$.ownsElements=!1;ee=ce.attributes,$.offset=0,$.count=-1,$.instances=-1,$.primitive=4,$.elements&&($.count=$.elements._elements.vertCount,$.primitive=$.elements._elements.primType),"offset"in ce&&($.offset=ce.offset|0),"count"in ce&&($.count=ce.count|0),"instances"in ce&&($.instances=ce.instances|0),"primitive"in ce&&(d(ce.primitive in Yn,"bad primitive type: "+ce.primitive),$.primitive=Yn[ce.primitive]),d.optional(()=>{for(var vt=Object.keys(ce),yt=0;yt<vt.length;++yt)d(sc.indexOf(vt[yt])>=0,'invalid option for vao: "'+vt[yt]+'" valid options are '+sc)}),d(Array.isArray(ee),"attributes must be an array")}d(ee.length<K,"too many attributes"),d(ee.length>0,"must specify at least one attribute");var de={},Ve=$.attributes;Ve.length=ee.length;for(var Ne=0;Ne<ee.length;++Ne){var pe=ee[Ne],ye=Ve[Ne]=new Ms,ze=pe.data||pe;if(Array.isArray(ze)||n(ze)||yn(ze)){var $e;$.buffers[Ne]&&($e=$.buffers[Ne],n(ze)&&$e._buffer.byteLength>=ze.byteLength?$e.subdata(ze):($e.destroy(),$.buffers[Ne]=null)),$.buffers[Ne]||($e=$.buffers[Ne]=j.create(pe,ac,!1,!0)),ye.buffer=j.getBuffer($e),ye.size=ye.buffer.dimension|0,ye.normalized=!1,ye.type=ye.buffer.dtype,ye.offset=0,ye.stride=0,ye.divisor=0,ye.state=1,de[Ne]=1}else j.getBuffer(pe)?(ye.buffer=j.getBuffer(pe),ye.size=ye.buffer.dimension|0,ye.normalized=!1,ye.type=ye.buffer.dtype,ye.offset=0,ye.stride=0,ye.divisor=0,ye.state=1):j.getBuffer(pe.buffer)?(ye.buffer=j.getBuffer(pe.buffer),ye.size=(+pe.size||ye.buffer.dimension)|0,ye.normalized=!!pe.normalized||!1,"type"in pe?(d.parameter(pe.type,mr,"invalid buffer type"),ye.type=mr[pe.type]):ye.type=ye.buffer.dtype,ye.offset=(pe.offset||0)|0,ye.stride=(pe.stride||0)|0,ye.divisor=(pe.divisor||0)|0,ye.state=1,d(ye.size>=1&&ye.size<=4,"size must be between 1 and 4"),d(ye.offset>=0,"invalid offset"),d(ye.stride>=0&&ye.stride<=255,"stride must be between 0 and 255"),d(ye.divisor>=0,"divisor must be positive"),d(!ye.divisor||!!h.angle_instanced_arrays,"ANGLE_instanced_arrays must be enabled to use divisor")):"x"in pe?(d(Ne>0,"first attribute must not be a constant"),ye.x=+pe.x||0,ye.y=+pe.y||0,ye.z=+pe.z||0,ye.w=+pe.w||0,ye.state=2):d(!1,"invalid attribute spec for location "+Ne)}for(var Je=0;Je<$.buffers.length;++Je)!de[Je]&&$.buffers[Je]&&($.buffers[Je].destroy(),$.buffers[Je]=null);return $.refresh(),Se}return Se.destroy=function(){for(var ce=0;ce<$.buffers.length;++ce)$.buffers[ce]&&$.buffers[ce].destroy();$.buffers.length=0,$.ownsElements&&($.elements.destroy(),$.elements=null,$.ownsElements=!1),$.destroy()},Se._vao=$,Se._reglType="vao",Se(X)}return le}var fc=35632,px=35633,vx=35718,gx=35721;function yx(a,h,_,O){var j={},z={};function B(k,G,te,xe){this.name=k,this.id=G,this.location=te,this.info=xe}function K(k,G){for(var te=0;te<k.length;++te)if(k[te].id===G.id){k[te].location=G.location;return}k.push(G)}function Q(k,G,te){var xe=k===fc?j:z,Z=xe[G];if(!Z){var ge=h.str(G);Z=a.createShader(k),a.shaderSource(Z,ge),a.compileShader(Z),d.shaderError(a,Z,ge,k,te),xe[G]=Z}return Z}var ie={},ae=[],oe=0;function le(k,G){this.id=oe++,this.fragId=k,this.vertId=G,this.program=null,this.uniforms=[],this.attributes=[],this.refCount=1,O.profile&&(this.stats={uniformsCount:0,attributesCount:0})}function J(k,G,te){var xe,Z,ge=Q(fc,k.fragId),me=Q(px,k.vertId),Fe=k.program=a.createProgram();if(a.attachShader(Fe,ge),a.attachShader(Fe,me),te)for(xe=0;xe<te.length;++xe){var X=te[xe];a.bindAttribLocation(Fe,X[0],X[1])}a.linkProgram(Fe),d.linkError(a,Fe,h.str(k.fragId),h.str(k.vertId),G);var $=a.getProgramParameter(Fe,vx);O.profile&&(k.stats.uniformsCount=$);var Se=k.uniforms;for(xe=0;xe<$;++xe)if(Z=a.getActiveUniform(Fe,xe),Z){if(Z.size>1)for(var ce=0;ce<Z.size;++ce){var ee=Z.name.replace("[0]","["+ce+"]");K(Se,new B(ee,h.id(ee),a.getUniformLocation(Fe,ee),Z))}var he=Z.name;Z.size>1&&(he=he.replace("[0]","")),K(Se,new B(he,h.id(he),a.getUniformLocation(Fe,he),Z))}var de=a.getProgramParameter(Fe,gx);O.profile&&(k.stats.attributesCount=de);var Ve=k.attributes;for(xe=0;xe<de;++xe)Z=a.getActiveAttrib(Fe,xe),Z&&K(Ve,new B(Z.name,h.id(Z.name),a.getAttribLocation(Fe,Z.name),Z))}O.profile&&(_.getMaxUniformsCount=function(){var k=0;return ae.forEach(function(G){G.stats.uniformsCount>k&&(k=G.stats.uniformsCount)}),k},_.getMaxAttributesCount=function(){var k=0;return ae.forEach(function(G){G.stats.attributesCount>k&&(k=G.stats.attributesCount)}),k});function ne(){j={},z={};for(var k=0;k<ae.length;++k)J(ae[k],null,ae[k].attributes.map(function(G){return[G.location,G.name]}))}return{clear:function(){var k=a.deleteShader.bind(a);nn(j).forEach(k),j={},nn(z).forEach(k),z={},ae.forEach(function(G){a.deleteProgram(G.program)}),ae.length=0,ie={},_.shaderCount=0},program:function(k,G,te,xe){d.command(k>=0,"missing vertex shader",te),d.command(G>=0,"missing fragment shader",te);var Z=ie[G];Z||(Z=ie[G]={});var ge=Z[k];if(ge&&(ge.refCount++,!xe))return ge;var me=new le(G,k);return _.shaderCount++,J(me,te,xe),ge||(Z[k]=me),ae.push(me),r(me,{destroy:function(){if(me.refCount--,me.refCount<=0){a.deleteProgram(me.program);var Fe=ae.indexOf(me);ae.splice(Fe,1),_.shaderCount--}Z[me.vertId].refCount<=0&&(a.deleteShader(z[me.vertId]),delete z[me.vertId],delete ie[me.fragId][me.vertId]),Object.keys(ie[me.fragId]).length||(a.deleteShader(j[me.fragId]),delete j[me.fragId],delete ie[me.fragId])}})},restore:ne,shader:Q,frag:-1,vert:-1}}var xx=6408,Ci=5121,bx=3333,ta=5126;function _x(a,h,_,O,j,z,B){function K(ae){var oe;h.next===null?(d(j.preserveDrawingBuffer,'you must create a webgl context with "preserveDrawingBuffer":true in order to read pixels from the drawing buffer'),oe=Ci):(d(h.next.colorAttachments[0].texture!==null,"You cannot read from a renderbuffer"),oe=h.next.colorAttachments[0].texture._texture.type,d.optional(function(){z.oes_texture_float?(d(oe===Ci||oe===ta,"Reading from a framebuffer is only allowed for the types 'uint8' and 'float'"),oe===ta&&d(B.readFloat,"Reading 'float' values is not permitted in your browser. For a fallback, please see: https://www.npmjs.com/package/glsl-read-float")):d(oe===Ci,"Reading from a framebuffer is only allowed for the type 'uint8'")}));var le=0,J=0,ne=O.framebufferWidth,k=O.framebufferHeight,G=null;n(ae)?G=ae:ae&&(d.type(ae,"object","invalid arguments to regl.read()"),le=ae.x|0,J=ae.y|0,d(le>=0&&le<O.framebufferWidth,"invalid x offset for regl.read"),d(J>=0&&J<O.framebufferHeight,"invalid y offset for regl.read"),ne=(ae.width||O.framebufferWidth-le)|0,k=(ae.height||O.framebufferHeight-J)|0,G=ae.data||null),G&&(oe===Ci?d(G instanceof Uint8Array,"buffer must be 'Uint8Array' when reading from a framebuffer of type 'uint8'"):oe===ta&&d(G instanceof Float32Array,"buffer must be 'Float32Array' when reading from a framebuffer of type 'float'")),d(ne>0&&ne+le<=O.framebufferWidth,"invalid width for read pixels"),d(k>0&&k+J<=O.framebufferHeight,"invalid height for read pixels"),_();var te=ne*k*4;return G||(oe===Ci?G=new Uint8Array(te):oe===ta&&(G=G||new Float32Array(te))),d.isTypedArray(G,"data buffer for regl.read() must be a typedarray"),d(G.byteLength>=te,"data buffer for regl.read() too small"),a.pixelStorei(bx,4),a.readPixels(le,J,ne,k,xx,oe,G),G}function Q(ae){var oe;return h.setFBO({framebuffer:ae.framebuffer},function(){oe=K(ae)}),oe}function ie(ae){return!ae||!("framebuffer"in ae)?K(ae):Q(ae)}return ie}function qr(a){return Array.prototype.slice.call(a)}function Yr(a){return qr(a).join("")}function Sx(){var a=0,h=[],_=[];function O(oe){for(var le=0;le<_.length;++le)if(_[le]===oe)return h[le];var J="g"+a++;return h.push(J),_.push(oe),J}function j(){var oe=[];function le(){oe.push.apply(oe,qr(arguments))}var J=[];function ne(){var k="v"+a++;return J.push(k),arguments.length>0&&(oe.push(k,"="),oe.push.apply(oe,qr(arguments)),oe.push(";")),k}return r(le,{def:ne,toString:function(){return Yr([J.length>0?"var "+J.join(",")+";":"",Yr(oe)])}})}function z(){var oe=j(),le=j(),J=oe.toString,ne=le.toString;function k(G,te){le(G,te,"=",oe.def(G,te),";")}return r(function(){oe.apply(oe,qr(arguments))},{def:oe.def,entry:oe,exit:le,save:k,set:function(G,te,xe){k(G,te),oe(G,te,"=",xe,";")},toString:function(){return J()+ne()}})}function B(){var oe=Yr(arguments),le=z(),J=z(),ne=le.toString,k=J.toString;return r(le,{then:function(){return le.apply(le,qr(arguments)),this},else:function(){return J.apply(J,qr(arguments)),this},toString:function(){var G=k();return G&&(G="else{"+G+"}"),Yr(["if(",oe,"){",ne(),"}",G])}})}var K=j(),Q={};function ie(oe,le){var J=[];function ne(){var Z="a"+J.length;return J.push(Z),Z}le=le||0;for(var k=0;k<le;++k)ne();var G=z(),te=G.toString,xe=Q[oe]=r(G,{arg:ne,toString:function(){return Yr(["function(",J.join(),"){",te(),"}"])}});return xe}function ae(){var oe=['"use strict";',K,"return {"];Object.keys(Q).forEach(function(ne){oe.push('"',ne,'":',Q[ne].toString(),",")}),oe.push("}");var le=Yr(oe).replace(/;/g,`;
|
|
1
|
+
(function(zt,tr){typeof exports=="object"&&typeof module<"u"?tr(exports):typeof define=="function"&&define.amd?define(["exports"],tr):(zt=typeof globalThis<"u"?globalThis:zt||self,tr(zt.Cosmos={}))})(this,function(zt){"use strict";var tr="http://www.w3.org/1999/xhtml";const ff={svg:"http://www.w3.org/2000/svg",xhtml:tr,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Bi(t){var e=t+="",n=e.indexOf(":");return n>=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),ff.hasOwnProperty(e)?{space:ff[e],local:t}:t}function jc(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===tr&&e.documentElement.namespaceURI===tr?e.createElement(t):e.createElementNS(n,t)}}function qc(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function uf(t){var e=Bi(t);return(e.local?qc:jc)(e)}function Yc(){}function ya(t){return t==null?Yc:function(){return this.querySelector(t)}}function Zc(t){typeof t!="function"&&(t=ya(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,f=r[i]=new Array(s),u,l,p=0;p<s;++p)(u=o[p])&&(l=t.call(u,u.__data__,p,o))&&("__data__"in u&&(l.__data__=u.__data__),f[p]=l);return new en(r,this._parents)}function Qc(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function Kc(){return[]}function lf(t){return t==null?Kc:function(){return this.querySelectorAll(t)}}function Jc(t){return function(){return Qc(t.apply(this,arguments))}}function eh(t){typeof t=="function"?t=Jc(t):t=lf(t);for(var e=this._groups,n=e.length,r=[],i=[],o=0;o<n;++o)for(var s=e[o],f=s.length,u,l=0;l<f;++l)(u=s[l])&&(r.push(t.call(u,u.__data__,l,s)),i.push(u));return new en(r,i)}function cf(t){return function(){return this.matches(t)}}function hf(t){return function(e){return e.matches(t)}}var th=Array.prototype.find;function nh(t){return function(){return th.call(this.children,t)}}function rh(){return this.firstElementChild}function ih(t){return this.select(t==null?rh:nh(typeof t=="function"?t:hf(t)))}var oh=Array.prototype.filter;function ah(){return Array.from(this.children)}function sh(t){return function(){return oh.call(this.children,t)}}function fh(t){return this.selectAll(t==null?ah:sh(typeof t=="function"?t:hf(t)))}function uh(t){typeof t!="function"&&(t=cf(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,f=r[i]=[],u,l=0;l<s;++l)(u=o[l])&&t.call(u,u.__data__,l,o)&&f.push(u);return new en(r,this._parents)}function df(t){return new Array(t.length)}function lh(){return new en(this._enter||this._groups.map(df),this._parents)}function Ui(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}Ui.prototype={constructor:Ui,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 ch(t){return function(){return t}}function hh(t,e,n,r,i,o){for(var s=0,f,u=e.length,l=o.length;s<l;++s)(f=e[s])?(f.__data__=o[s],r[s]=f):n[s]=new Ui(t,o[s]);for(;s<u;++s)(f=e[s])&&(i[s]=f)}function dh(t,e,n,r,i,o,s){var f,u,l=new Map,p=e.length,x=o.length,S=new Array(p),z;for(f=0;f<p;++f)(u=e[f])&&(S[f]=z=s.call(u,u.__data__,f,e)+"",l.has(z)?i[f]=u:l.set(z,u));for(f=0;f<x;++f)z=s.call(t,o[f],f,o)+"",(u=l.get(z))?(r[f]=u,u.__data__=o[f],l.delete(z)):n[f]=new Ui(t,o[f]);for(f=0;f<p;++f)(u=e[f])&&l.get(S[f])===u&&(i[f]=u)}function mh(t){return t.__data__}function ph(t,e){if(!arguments.length)return Array.from(this,mh);var n=e?dh:hh,r=this._parents,i=this._groups;typeof t!="function"&&(t=ch(t));for(var o=i.length,s=new Array(o),f=new Array(o),u=new Array(o),l=0;l<o;++l){var p=r[l],x=i[l],S=x.length,z=vh(t.call(p,p&&p.__data__,l,r)),q=z.length,Te=f[l]=new Array(q),we=s[l]=new Array(q),fe=u[l]=new Array(S);n(p,x,Te,we,fe,z,e);for(var Me=0,Ue=0,V,se;Me<q;++Me)if(V=Te[Me]){for(Me>=Ue&&(Ue=Me+1);!(se=we[Ue])&&++Ue<q;);V._next=se||null}}return s=new en(s,r),s._enter=f,s._exit=u,s}function vh(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function gh(){return new en(this._exit||this._groups.map(df),this._parents)}function yh(t,e,n){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),n==null?o.remove():n(o),r&&i?r.merge(i).order():i}function xh(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,o=r.length,s=Math.min(i,o),f=new Array(i),u=0;u<s;++u)for(var l=n[u],p=r[u],x=l.length,S=f[u]=new Array(x),z,q=0;q<x;++q)(z=l[q]||p[q])&&(S[q]=z);for(;u<i;++u)f[u]=n[u];return new en(f,this._parents)}function bh(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r=t[e],i=r.length-1,o=r[i],s;--i>=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function _h(t){t||(t=Sh);function e(x,S){return x&&S?t(x.__data__,S.__data__):!x-!S}for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var s=n[o],f=s.length,u=i[o]=new Array(f),l,p=0;p<f;++p)(l=s[p])&&(u[p]=l);u.sort(e)}return new en(i,this._parents).order()}function Sh(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function Th(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function wh(){return Array.from(this)}function Ah(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var s=r[i];if(s)return s}return null}function Eh(){let t=0;for(const e of this)++t;return t}function Ch(){return!this.node()}function Ph(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i=e[n],o=0,s=i.length,f;o<s;++o)(f=i[o])&&t.call(f,f.__data__,o,i);return this}function kh(t){return function(){this.removeAttribute(t)}}function Ih(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Lh(t,e){return function(){this.setAttribute(t,e)}}function Dh(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Fh(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function zh(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Rh(t,e){var n=Bi(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?Ih:kh:typeof e=="function"?n.local?zh:Fh:n.local?Dh:Lh)(n,e))}function mf(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Oh(t){return function(){this.style.removeProperty(t)}}function Mh(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Nh(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Gh(t,e,n){return arguments.length>1?this.each((e==null?Oh:typeof e=="function"?Nh:Mh)(t,e,n??"")):Pr(this.node(),t)}function Pr(t,e){return t.style.getPropertyValue(e)||mf(t).getComputedStyle(t,null).getPropertyValue(e)}function Bh(t){return function(){delete this[t]}}function Uh(t,e){return function(){this[t]=e}}function Vh(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function $h(t,e){return arguments.length>1?this.each((e==null?Bh:typeof e=="function"?Vh:Uh)(t,e)):this.node()[t]}function pf(t){return t.trim().split(/^|\s+/)}function xa(t){return t.classList||new vf(t)}function vf(t){this._node=t,this._names=pf(t.getAttribute("class")||"")}vf.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 gf(t,e){for(var n=xa(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function yf(t,e){for(var n=xa(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function Hh(t){return function(){gf(this,t)}}function Xh(t){return function(){yf(this,t)}}function Wh(t,e){return function(){(e.apply(this,arguments)?gf:yf)(this,t)}}function jh(t,e){var n=pf(t+"");if(arguments.length<2){for(var r=xa(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof e=="function"?Wh:e?Hh:Xh)(n,e))}function qh(){this.textContent=""}function Yh(t){return function(){this.textContent=t}}function Zh(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function Qh(t){return arguments.length?this.each(t==null?qh:(typeof t=="function"?Zh:Yh)(t)):this.node().textContent}function Kh(){this.innerHTML=""}function Jh(t){return function(){this.innerHTML=t}}function ed(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function td(t){return arguments.length?this.each(t==null?Kh:(typeof t=="function"?ed:Jh)(t)):this.node().innerHTML}function nd(){this.nextSibling&&this.parentNode.appendChild(this)}function rd(){return this.each(nd)}function id(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function od(){return this.each(id)}function ad(t){var e=typeof t=="function"?t:uf(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function sd(){return null}function fd(t,e){var n=typeof t=="function"?t:uf(t),r=e==null?sd:typeof e=="function"?e:ya(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function ud(){var t=this.parentNode;t&&t.removeChild(this)}function ld(){return this.each(ud)}function cd(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function hd(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function dd(t){return this.select(t?hd:cd)}function md(t){return arguments.length?this.property("__data__",t):this.node().__data__}function pd(t){return function(e){t.call(this,e,this.__data__)}}function vd(t){return t.trim().split(/^|\s+/).map(function(e){var n="",r=e.indexOf(".");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function gd(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,o;n<i;++n)o=e[n],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):e[++r]=o;++r?e.length=r:delete this.__on}}}function yd(t,e,n){return function(){var r=this.__on,i,o=pd(e);if(r){for(var s=0,f=r.length;s<f;++s)if((i=r[s]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=n),i.value=e;return}}this.addEventListener(t.type,o,n),i={type:t.type,name:t.name,value:e,listener:o,options:n},r?r.push(i):this.__on=[i]}}function xd(t,e,n){var r=vd(t+""),i,o=r.length,s;if(arguments.length<2){var f=this.node().__on;if(f){for(var u=0,l=f.length,p;u<l;++u)for(i=0,p=f[u];i<o;++i)if((s=r[i]).type===p.type&&s.name===p.name)return p.value}return}for(f=e?yd:gd,i=0;i<o;++i)this.each(f(r[i],e,n));return this}function xf(t,e,n){var r=mf(t),i=r.CustomEvent;typeof i=="function"?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function bd(t,e){return function(){return xf(this,t,e)}}function _d(t,e){return function(){return xf(this,t,e.apply(this,arguments))}}function Sd(t,e){return this.each((typeof e=="function"?_d:bd)(t,e))}function*Td(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length,s;i<o;++i)(s=r[i])&&(yield s)}var bf=[null];function en(t,e){this._groups=t,this._parents=e}function ni(){return new en([[document.documentElement]],bf)}function wd(){return this}en.prototype=ni.prototype={constructor:en,select:Zc,selectAll:eh,selectChild:ih,selectChildren:fh,filter:uh,data:ph,enter:lh,exit:gh,join:yh,merge:xh,selection:wd,order:bh,sort:_h,call:Th,nodes:wh,node:Ah,size:Eh,empty:Ch,each:Ph,attr:Rh,style:Gh,property:$h,classed:jh,text:Qh,html:td,raise:rd,lower:od,append:ad,insert:fd,remove:ld,clone:dd,datum:md,on:xd,dispatch:Sd,[Symbol.iterator]:Td};function Rt(t){return typeof t=="string"?new en([[document.querySelector(t)]],[document.documentElement]):new en([[t]],bf)}function Ad(t){let e;for(;e=t.sourceEvent;)t=e;return t}function kn(t,e){if(t=Ad(t),e===void 0&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,r=r.matrixTransform(e.getScreenCTM().inverse()),[r.x,r.y]}if(e.getBoundingClientRect){var i=e.getBoundingClientRect();return[t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop]}}return[t.pageX,t.pageY]}var Ed={value:()=>{}};function Vi(){for(var t=0,e=arguments.length,n={},r;t<e;++t){if(!(r=arguments[t]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new $i(n)}function $i(t){this._=t}function Cd(t,e){return t.trim().split(/^|\s+/).map(function(n){var r="",i=n.indexOf(".");if(i>=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}$i.prototype=Vi.prototype={constructor:$i,on:function(t,e){var n=this._,r=Cd(t+"",n),i,o=-1,s=r.length;if(arguments.length<2){for(;++o<s;)if((i=(t=r[o]).type)&&(i=Pd(n[i],t.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++o<s;)if(i=(t=r[o]).type)n[i]=_f(n[i],t.name,e);else if(e==null)for(i in n)n[i]=_f(n[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new $i(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var n=new Array(i),r=0,i,o;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(e,n)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};function Pd(t,e){for(var n=0,r=t.length,i;n<r;++n)if((i=t[n]).name===e)return i.value}function _f(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=Ed,t=t.slice(0,r).concat(t.slice(r+1));break}return n!=null&&t.push({name:e,value:n}),t}var kr=0,ri=0,ii=0,Sf=1e3,Hi,oi,Xi=0,nr=0,Wi=0,ai=typeof performance=="object"&&performance.now?performance:Date,Tf=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function ba(){return nr||(Tf(kd),nr=ai.now()+Wi)}function kd(){nr=0}function ji(){this._call=this._time=this._next=null}ji.prototype=wf.prototype={constructor:ji,restart:function(t,e,n){if(typeof t!="function")throw new TypeError("callback is not a function");n=(n==null?ba():+n)+(e==null?0:+e),!this._next&&oi!==this&&(oi?oi._next=this:Hi=this,oi=this),this._call=t,this._time=n,_a()},stop:function(){this._call&&(this._call=null,this._time=1/0,_a())}};function wf(t,e,n){var r=new ji;return r.restart(t,e,n),r}function Id(){ba(),++kr;for(var t=Hi,e;t;)(e=nr-t._time)>=0&&t._call.call(null,e),t=t._next;--kr}function Af(){nr=(Xi=ai.now())+Wi,kr=ri=0;try{Id()}finally{kr=0,Dd(),nr=0}}function Ld(){var t=ai.now(),e=t-Xi;e>Sf&&(Wi-=e,Xi=t)}function Dd(){for(var t,e=Hi,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Hi=n);oi=t,_a(r)}function _a(t){if(!kr){ri&&(ri=clearTimeout(ri));var e=t-nr;e>24?(t<1/0&&(ri=setTimeout(Af,t-ai.now()-Wi)),ii&&(ii=clearInterval(ii))):(ii||(Xi=ai.now(),ii=setInterval(Ld,Sf)),kr=1,Tf(Af))}}function Ef(t,e,n){var r=new ji;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var Fd=Vi("start","end","cancel","interrupt"),zd=[],Cf=0,Pf=1,Sa=2,qi=3,kf=4,Ta=5,Yi=6;function Zi(t,e,n,r,i,o){var s=t.__transition;if(!s)t.__transition={};else if(n in s)return;Rd(t,n,{name:e,index:r,group:i,on:Fd,tween:zd,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Cf})}function wa(t,e){var n=cn(t,e);if(n.state>Cf)throw new Error("too late; already scheduled");return n}function bn(t,e){var n=cn(t,e);if(n.state>qi)throw new Error("too late; already running");return n}function cn(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Rd(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=wf(o,0,n.time);function o(l){n.state=Pf,n.timer.restart(s,n.delay,n.time),n.delay<=l&&s(l-n.delay)}function s(l){var p,x,S,z;if(n.state!==Pf)return u();for(p in r)if(z=r[p],z.name===n.name){if(z.state===qi)return Ef(s);z.state===kf?(z.state=Yi,z.timer.stop(),z.on.call("interrupt",t,t.__data__,z.index,z.group),delete r[p]):+p<e&&(z.state=Yi,z.timer.stop(),z.on.call("cancel",t,t.__data__,z.index,z.group),delete r[p])}if(Ef(function(){n.state===qi&&(n.state=kf,n.timer.restart(f,n.delay,n.time),f(l))}),n.state=Sa,n.on.call("start",t,t.__data__,n.index,n.group),n.state===Sa){for(n.state=qi,i=new Array(S=n.tween.length),p=0,x=-1;p<S;++p)(z=n.tween[p].value.call(t,t.__data__,n.index,n.group))&&(i[++x]=z);i.length=x+1}}function f(l){for(var p=l<n.duration?n.ease.call(null,l/n.duration):(n.timer.restart(u),n.state=Ta,1),x=-1,S=i.length;++x<S;)i[x].call(t,p);n.state===Ta&&(n.on.call("end",t,t.__data__,n.index,n.group),u())}function u(){n.state=Yi,n.timer.stop(),delete r[e];for(var l in r)return;delete t.__transition}}function Qi(t,e){var n=t.__transition,r,i,o=!0,s;if(n){e=e==null?null:e+"";for(s in n){if((r=n[s]).name!==e){o=!1;continue}i=r.state>Sa&&r.state<Ta,r.state=Yi,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[s]}o&&delete t.__transition}}function Od(t){return this.each(function(){Qi(this,t)})}function Aa(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function If(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function si(){}var fi=.7,Ki=1/fi,Ir="\\s*([+-]?\\d+)\\s*",ui="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",_n="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Md=/^#([0-9a-f]{3,8})$/,Nd=new RegExp(`^rgb\\(${Ir},${Ir},${Ir}\\)$`),Gd=new RegExp(`^rgb\\(${_n},${_n},${_n}\\)$`),Bd=new RegExp(`^rgba\\(${Ir},${Ir},${Ir},${ui}\\)$`),Ud=new RegExp(`^rgba\\(${_n},${_n},${_n},${ui}\\)$`),Vd=new RegExp(`^hsl\\(${ui},${_n},${_n}\\)$`),$d=new RegExp(`^hsla\\(${ui},${_n},${_n},${ui}\\)$`),Lf={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};Aa(si,Un,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Df,formatHex:Df,formatHex8:Hd,formatHsl:Xd,formatRgb:Ff,toString:Ff});function Df(){return this.rgb().formatHex()}function Hd(){return this.rgb().formatHex8()}function Xd(){return Nf(this).formatHsl()}function Ff(){return this.rgb().formatRgb()}function Un(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Md.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?zf(e):n===3?new Zt(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Ji(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Ji(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=Nd.exec(t))?new Zt(e[1],e[2],e[3],1):(e=Gd.exec(t))?new Zt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Bd.exec(t))?Ji(e[1],e[2],e[3],e[4]):(e=Ud.exec(t))?Ji(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Vd.exec(t))?Mf(e[1],e[2]/100,e[3]/100,1):(e=$d.exec(t))?Mf(e[1],e[2]/100,e[3]/100,e[4]):Lf.hasOwnProperty(t)?zf(Lf[t]):t==="transparent"?new Zt(NaN,NaN,NaN,0):null}function zf(t){return new Zt(t>>16&255,t>>8&255,t&255,1)}function Ji(t,e,n,r){return r<=0&&(t=e=n=NaN),new Zt(t,e,n,r)}function Wd(t){return t instanceof si||(t=Un(t)),t?(t=t.rgb(),new Zt(t.r,t.g,t.b,t.opacity)):new Zt}function Ea(t,e,n,r){return arguments.length===1?Wd(t):new Zt(t,e,n,r??1)}function Zt(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Aa(Zt,Ea,If(si,{brighter(t){return t=t==null?Ki:Math.pow(Ki,t),new Zt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?fi:Math.pow(fi,t),new Zt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Zt(rr(this.r),rr(this.g),rr(this.b),eo(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:Rf,formatHex:Rf,formatHex8:jd,formatRgb:Of,toString:Of}));function Rf(){return`#${ir(this.r)}${ir(this.g)}${ir(this.b)}`}function jd(){return`#${ir(this.r)}${ir(this.g)}${ir(this.b)}${ir((isNaN(this.opacity)?1:this.opacity)*255)}`}function Of(){const t=eo(this.opacity);return`${t===1?"rgb(":"rgba("}${rr(this.r)}, ${rr(this.g)}, ${rr(this.b)}${t===1?")":`, ${t})`}`}function eo(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function rr(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ir(t){return t=rr(t),(t<16?"0":"")+t.toString(16)}function Mf(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new hn(t,e,n,r)}function Nf(t){if(t instanceof hn)return new hn(t.h,t.s,t.l,t.opacity);if(t instanceof si||(t=Un(t)),!t)return new hn;if(t instanceof hn)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,f=o-i,u=(o+i)/2;return f?(e===o?s=(n-r)/f+(n<r)*6:n===o?s=(r-e)/f+2:s=(e-n)/f+4,f/=u<.5?o+i:2-o-i,s*=60):f=u>0&&u<1?0:s,new hn(s,f,u,t.opacity)}function qd(t,e,n,r){return arguments.length===1?Nf(t):new hn(t,e,n,r??1)}function hn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Aa(hn,qd,If(si,{brighter(t){return t=t==null?Ki:Math.pow(Ki,t),new hn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?fi:Math.pow(fi,t),new hn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Zt(Ca(t>=240?t-240:t+120,i,r),Ca(t,i,r),Ca(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new hn(Gf(this.h),to(this.s),to(this.l),eo(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=eo(this.opacity);return`${t===1?"hsl(":"hsla("}${Gf(this.h)}, ${to(this.s)*100}%, ${to(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Gf(t){return t=(t||0)%360,t<0?t+360:t}function to(t){return Math.max(0,Math.min(1,t||0))}function Ca(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Pa=t=>()=>t;function Yd(t,e){return function(n){return t+n*e}}function Zd(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Qd(t){return(t=+t)==1?Bf:function(e,n){return n-e?Zd(e,n,t):Pa(isNaN(e)?n:e)}}function Bf(t,e){var n=e-t;return n?Yd(t,n):Pa(isNaN(t)?e:t)}const no=function t(e){var n=Qd(e);function r(i,o){var s=n((i=Ea(i)).r,(o=Ea(o)).r),f=n(i.g,o.g),u=n(i.b,o.b),l=Bf(i.opacity,o.opacity);return function(p){return i.r=s(p),i.g=f(p),i.b=u(p),i.opacity=l(p),i+""}}return r.gamma=t,r}(1);function Kd(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function Jd(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function em(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),s;for(s=0;s<r;++s)i[s]=La(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(f){for(s=0;s<r;++s)o[s]=i[s](f);return o}}function tm(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function dn(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function nm(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=La(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var ka=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ia=new RegExp(ka.source,"g");function rm(t){return function(){return t}}function im(t){return function(e){return t(e)+""}}function Uf(t,e){var n=ka.lastIndex=Ia.lastIndex=0,r,i,o,s=-1,f=[],u=[];for(t=t+"",e=e+"";(r=ka.exec(t))&&(i=Ia.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),f[s]?f[s]+=o:f[++s]=o),(r=r[0])===(i=i[0])?f[s]?f[s]+=i:f[++s]=i:(f[++s]=null,u.push({i:s,x:dn(r,i)})),n=Ia.lastIndex;return n<e.length&&(o=e.slice(n),f[s]?f[s]+=o:f[++s]=o),f.length<2?u[0]?im(u[0].x):rm(e):(e=u.length,function(l){for(var p=0,x;p<e;++p)f[(x=u[p]).i]=x.x(l);return f.join("")})}function La(t,e){var n=typeof e,r;return e==null||n==="boolean"?Pa(e):(n==="number"?dn:n==="string"?(r=Un(e))?(e=r,no):Uf:e instanceof Un?no:e instanceof Date?tm:Jd(e)?Kd:Array.isArray(e)?em:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?nm:dn)(t,e)}function om(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var Vf=180/Math.PI,Da={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function $f(t,e,n,r,i,o){var s,f,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(f=Math.sqrt(n*n+r*r))&&(n/=f,r/=f,u/=f),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Vf,skewX:Math.atan(u)*Vf,scaleX:s,scaleY:f}}var ro;function am(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Da:$f(e.a,e.b,e.c,e.d,e.e,e.f)}function sm(t){return t==null||(ro||(ro=document.createElementNS("http://www.w3.org/2000/svg","g")),ro.setAttribute("transform",t),!(t=ro.transform.baseVal.consolidate()))?Da:(t=t.matrix,$f(t.a,t.b,t.c,t.d,t.e,t.f))}function Hf(t,e,n,r){function i(l){return l.length?l.pop()+" ":""}function o(l,p,x,S,z,q){if(l!==x||p!==S){var Te=z.push("translate(",null,e,null,n);q.push({i:Te-4,x:dn(l,x)},{i:Te-2,x:dn(p,S)})}else(x||S)&&z.push("translate("+x+e+S+n)}function s(l,p,x,S){l!==p?(l-p>180?p+=360:p-l>180&&(l+=360),S.push({i:x.push(i(x)+"rotate(",null,r)-2,x:dn(l,p)})):p&&x.push(i(x)+"rotate("+p+r)}function f(l,p,x,S){l!==p?S.push({i:x.push(i(x)+"skewX(",null,r)-2,x:dn(l,p)}):p&&x.push(i(x)+"skewX("+p+r)}function u(l,p,x,S,z,q){if(l!==x||p!==S){var Te=z.push(i(z)+"scale(",null,",",null,")");q.push({i:Te-4,x:dn(l,x)},{i:Te-2,x:dn(p,S)})}else(x!==1||S!==1)&&z.push(i(z)+"scale("+x+","+S+")")}return function(l,p){var x=[],S=[];return l=t(l),p=t(p),o(l.translateX,l.translateY,p.translateX,p.translateY,x,S),s(l.rotate,p.rotate,x,S),f(l.skewX,p.skewX,x,S),u(l.scaleX,l.scaleY,p.scaleX,p.scaleY,x,S),l=p=null,function(z){for(var q=-1,Te=S.length,we;++q<Te;)x[(we=S[q]).i]=we.x(z);return x.join("")}}}var fm=Hf(am,"px, ","px)","deg)"),um=Hf(sm,", ",")",")"),lm=1e-12;function Xf(t){return((t=Math.exp(t))+1/t)/2}function cm(t){return((t=Math.exp(t))-1/t)/2}function hm(t){return((t=Math.exp(2*t))-1)/(t+1)}const dm=function t(e,n,r){function i(o,s){var f=o[0],u=o[1],l=o[2],p=s[0],x=s[1],S=s[2],z=p-f,q=x-u,Te=z*z+q*q,we,fe;if(Te<lm)fe=Math.log(S/l)/e,we=function(Ge){return[f+Ge*z,u+Ge*q,l*Math.exp(e*Ge*fe)]};else{var Me=Math.sqrt(Te),Ue=(S*S-l*l+r*Te)/(2*l*n*Me),V=(S*S-l*l-r*Te)/(2*S*n*Me),se=Math.log(Math.sqrt(Ue*Ue+1)-Ue),Le=Math.log(Math.sqrt(V*V+1)-V);fe=(Le-se)/e,we=function(Ge){var Xe=Ge*fe,nt=Xf(se),ut=l/(n*Me)*(nt*hm(e*Xe+se)-cm(se));return[f+ut*z,u+ut*q,l*nt/Xf(e*Xe+se)]}}return we.duration=fe*1e3*e/Math.SQRT2,we}return i.rho=function(o){var s=Math.max(.001,+o),f=s*s,u=f*f;return t(s,f,u)},i}(Math.SQRT2,2,4);function mm(t,e){var n,r;return function(){var i=bn(this,t),o=i.tween;if(o!==n){r=n=o;for(var s=0,f=r.length;s<f;++s)if(r[s].name===e){r=r.slice(),r.splice(s,1);break}}i.tween=r}}function pm(t,e,n){var r,i;if(typeof n!="function")throw new Error;return function(){var o=bn(this,t),s=o.tween;if(s!==r){i=(r=s).slice();for(var f={name:e,value:n},u=0,l=i.length;u<l;++u)if(i[u].name===e){i[u]=f;break}u===l&&i.push(f)}o.tween=i}}function vm(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r=cn(this.node(),n).tween,i=0,o=r.length,s;i<o;++i)if((s=r[i]).name===t)return s.value;return null}return this.each((e==null?mm:pm)(n,t,e))}function Fa(t,e,n){var r=t._id;return t.each(function(){var i=bn(this,r);(i.value||(i.value={}))[e]=n.apply(this,arguments)}),function(i){return cn(i,r).value[e]}}function Wf(t,e){var n;return(typeof e=="number"?dn:e instanceof Un?no:(n=Un(e))?(e=n,no):Uf)(t,e)}function gm(t){return function(){this.removeAttribute(t)}}function ym(t){return function(){this.removeAttributeNS(t.space,t.local)}}function xm(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttribute(t);return s===i?null:s===r?o:o=e(r=s,n)}}function bm(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===r?o:o=e(r=s,n)}}function _m(t,e,n){var r,i,o;return function(){var s,f=n(this),u;return f==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=f+"",s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,f)))}}function Sm(t,e,n){var r,i,o;return function(){var s,f=n(this),u;return f==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=f+"",s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,f)))}}function Tm(t,e){var n=Bi(t),r=n==="transform"?um:Wf;return this.attrTween(t,typeof e=="function"?(n.local?Sm:_m)(n,r,Fa(this,"attr."+t,e)):e==null?(n.local?ym:gm)(n):(n.local?bm:xm)(n,r,e))}function wm(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function Am(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function Em(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&Am(t,o)),n}return i._value=e,i}function Cm(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&wm(t,o)),n}return i._value=e,i}function Pm(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;var r=Bi(t);return this.tween(n,(r.local?Em:Cm)(r,e))}function km(t,e){return function(){wa(this,t).delay=+e.apply(this,arguments)}}function Im(t,e){return e=+e,function(){wa(this,t).delay=e}}function Lm(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?km:Im)(e,t)):cn(this.node(),e).delay}function Dm(t,e){return function(){bn(this,t).duration=+e.apply(this,arguments)}}function Fm(t,e){return e=+e,function(){bn(this,t).duration=e}}function zm(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Dm:Fm)(e,t)):cn(this.node(),e).duration}function Rm(t,e){if(typeof e!="function")throw new Error;return function(){bn(this,t).ease=e}}function Om(t){var e=this._id;return arguments.length?this.each(Rm(e,t)):cn(this.node(),e).ease}function Mm(t,e){return function(){var n=e.apply(this,arguments);if(typeof n!="function")throw new Error;bn(this,t).ease=n}}function Nm(t){if(typeof t!="function")throw new Error;return this.each(Mm(this._id,t))}function Gm(t){typeof t!="function"&&(t=cf(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,f=r[i]=[],u,l=0;l<s;++l)(u=o[l])&&t.call(u,u.__data__,l,o)&&f.push(u);return new In(r,this._parents,this._name,this._id)}function Bm(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),s=new Array(r),f=0;f<o;++f)for(var u=e[f],l=n[f],p=u.length,x=s[f]=new Array(p),S,z=0;z<p;++z)(S=u[z]||l[z])&&(x[z]=S);for(;f<r;++f)s[f]=e[f];return new In(s,this._parents,this._name,this._id)}function Um(t){return(t+"").trim().split(/^|\s+/).every(function(e){var n=e.indexOf(".");return n>=0&&(e=e.slice(0,n)),!e||e==="start"})}function Vm(t,e,n){var r,i,o=Um(e)?wa:bn;return function(){var s=o(this,t),f=s.on;f!==r&&(i=(r=f).copy()).on(e,n),s.on=i}}function $m(t,e){var n=this._id;return arguments.length<2?cn(this.node(),n).on.on(t):this.each(Vm(n,t,e))}function Hm(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function Xm(){return this.on("end.remove",Hm(this._id))}function Wm(t){var e=this._name,n=this._id;typeof t!="function"&&(t=ya(t));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s<i;++s)for(var f=r[s],u=f.length,l=o[s]=new Array(u),p,x,S=0;S<u;++S)(p=f[S])&&(x=t.call(p,p.__data__,S,f))&&("__data__"in p&&(x.__data__=p.__data__),l[S]=x,Zi(l[S],e,n,S,l,cn(p,n)));return new In(o,this._parents,e,n)}function jm(t){var e=this._name,n=this._id;typeof t!="function"&&(t=lf(t));for(var r=this._groups,i=r.length,o=[],s=[],f=0;f<i;++f)for(var u=r[f],l=u.length,p,x=0;x<l;++x)if(p=u[x]){for(var S=t.call(p,p.__data__,x,u),z,q=cn(p,n),Te=0,we=S.length;Te<we;++Te)(z=S[Te])&&Zi(z,e,n,Te,S,q);o.push(S),s.push(p)}return new In(o,s,e,n)}var qm=ni.prototype.constructor;function Ym(){return new qm(this._groups,this._parents)}function Zm(t,e){var n,r,i;return function(){var o=Pr(this,t),s=(this.style.removeProperty(t),Pr(this,t));return o===s?null:o===n&&s===r?i:i=e(n=o,r=s)}}function jf(t){return function(){this.style.removeProperty(t)}}function Qm(t,e,n){var r,i=n+"",o;return function(){var s=Pr(this,t);return s===i?null:s===r?o:o=e(r=s,n)}}function Km(t,e,n){var r,i,o;return function(){var s=Pr(this,t),f=n(this),u=f+"";return f==null&&(u=f=(this.style.removeProperty(t),Pr(this,t))),s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,f))}}function Jm(t,e){var n,r,i,o="style."+e,s="end."+o,f;return function(){var u=bn(this,t),l=u.on,p=u.value[o]==null?f||(f=jf(e)):void 0;(l!==n||i!==p)&&(r=(n=l).copy()).on(s,i=p),u.on=r}}function ep(t,e,n){var r=(t+="")=="transform"?fm:Wf;return e==null?this.styleTween(t,Zm(t,r)).on("end.style."+t,jf(t)):typeof e=="function"?this.styleTween(t,Km(t,r,Fa(this,"style."+t,e))).each(Jm(this._id,t)):this.styleTween(t,Qm(t,r,e),n).on("end.style."+t,null)}function tp(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function np(t,e,n){var r,i;function o(){var s=e.apply(this,arguments);return s!==i&&(r=(i=s)&&tp(t,s,n)),r}return o._value=e,o}function rp(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;return this.tween(r,np(t,e,n??""))}function ip(t){return function(){this.textContent=t}}function op(t){return function(){var e=t(this);this.textContent=e??""}}function ap(t){return this.tween("text",typeof t=="function"?op(Fa(this,"text",t)):ip(t==null?"":t+""))}function sp(t){return function(e){this.textContent=t.call(this,e)}}function fp(t){var e,n;function r(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&sp(i)),e}return r._value=t,r}function up(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,fp(t))}function lp(){for(var t=this._name,e=this._id,n=qf(),r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],f=s.length,u,l=0;l<f;++l)if(u=s[l]){var p=cn(u,e);Zi(u,t,n,l,s,{time:p.time+p.delay+p.duration,delay:0,duration:p.duration,ease:p.ease})}return new In(r,this._parents,t,n)}function cp(){var t,e,n=this,r=n._id,i=n.size();return new Promise(function(o,s){var f={value:s},u={value:function(){--i===0&&o()}};n.each(function(){var l=bn(this,r),p=l.on;p!==t&&(e=(t=p).copy(),e._.cancel.push(f),e._.interrupt.push(f),e._.end.push(u)),l.on=e}),i===0&&o()})}var hp=0;function In(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function qf(){return++hp}var Ln=ni.prototype;In.prototype={constructor:In,select:Wm,selectAll:jm,selectChild:Ln.selectChild,selectChildren:Ln.selectChildren,filter:Gm,merge:Bm,selection:Ym,transition:lp,call:Ln.call,nodes:Ln.nodes,node:Ln.node,size:Ln.size,empty:Ln.empty,each:Ln.each,on:$m,attr:Tm,attrTween:Pm,style:ep,styleTween:rp,text:ap,textTween:up,remove:Xm,tween:vm,delay:Lm,duration:zm,ease:Om,easeVarying:Nm,end:cp,[Symbol.iterator]:Ln[Symbol.iterator]};function dp(t){return t*t}function mp(t){return t*(2-t)}function pp(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function vp(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var gp={time:null,delay:0,duration:250,ease:vp};function yp(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function xp(t){var e,n;t instanceof In?(e=t._id,t=t._name):(e=qf(),(n=gp).time=ba(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],f=s.length,u,l=0;l<f;++l)(u=s[l])&&Zi(u,t,e,l,s,n||yp(u,e));return new In(r,this._parents,t,e)}ni.prototype.interrupt=Od,ni.prototype.transition=xp;function za(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function bp(t){if(Object.prototype.hasOwnProperty.call(t,"__esModule"))return t;var e=t.default;if(typeof e=="function"){var n=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}),n}var io={exports:{}},_p=io.exports,Yf;function Sp(){return Yf||(Yf=1,function(t,e){(function(n,r){t.exports=r()})(_p,function(){var n=function(a){return a instanceof Uint8Array||a instanceof Uint16Array||a instanceof Uint32Array||a instanceof Int8Array||a instanceof Int16Array||a instanceof Int32Array||a instanceof Float32Array||a instanceof Float64Array||a instanceof Uint8ClampedArray},r=function(a,h){for(var _=Object.keys(h),O=0;O<_.length;++O)a[_[O]]=h[_[O]];return a},i=`
|
|
2
|
+
`;function o(a){return typeof atob<"u"?atob(a):"base64:"+a}function s(a){var h=new Error("(regl) "+a);throw console.error(h),h}function f(a,h){a||s(h)}function u(a){return a?": "+a:""}function l(a,h,_){a in h||s("unknown parameter ("+a+")"+u(_)+". possible values: "+Object.keys(h).join())}function p(a,h){n(a)||s("invalid parameter type"+u(h)+". must be a typed array")}function x(a,h){switch(h){case"number":return typeof a=="number";case"object":return typeof a=="object";case"string":return typeof a=="string";case"boolean":return typeof a=="boolean";case"function":return typeof a=="function";case"undefined":return typeof a>"u";case"symbol":return typeof a=="symbol"}}function S(a,h,_){x(a,h)||s("invalid parameter type"+u(_)+". expected "+h+", got "+typeof a)}function z(a,h){a>=0&&(a|0)===a||s("invalid parameter type, ("+a+")"+u(h)+". must be a nonnegative integer")}function q(a,h,_){h.indexOf(a)<0&&s("invalid value"+u(_)+". must be one of: "+h)}var Te=["gl","canvas","container","attributes","pixelRatio","extensions","optionalExtensions","profile","onDone"];function we(a){Object.keys(a).forEach(function(h){Te.indexOf(h)<0&&s('invalid regl constructor argument "'+h+'". must be one of '+Te)})}function fe(a,h){for(a=a+"";a.length<h;)a=" "+a;return a}function Me(){this.name="unknown",this.lines=[],this.index={},this.hasErrors=!1}function Ue(a,h){this.number=a,this.line=h,this.errors=[]}function V(a,h,_){this.file=a,this.line=h,this.message=_}function se(){var a=new Error,h=(a.stack||a).toString(),_=/compileProcedure.*\n\s*at.*\((.*)\)/.exec(h);if(_)return _[1];var O=/compileProcedure.*\n\s*at\s+(.*)(\n|$)/.exec(h);return O?O[1]:"unknown"}function Le(){var a=new Error,h=(a.stack||a).toString(),_=/at REGLCommand.*\n\s+at.*\((.*)\)/.exec(h);if(_)return _[1];var O=/at REGLCommand.*\n\s+at\s+(.*)\n/.exec(h);return O?O[1]:"unknown"}function Ge(a,h){var _=a.split(`
|
|
3
|
+
`),O=1,X=0,R={unknown:new Me,0:new Me};R.unknown.name=R[0].name=h||se(),R.unknown.lines.push(new Ue(0,""));for(var B=0;B<_.length;++B){var K=_[B],Q=/^\s*#\s*(\w+)\s+(.+)\s*$/.exec(K);if(Q)switch(Q[1]){case"line":var ie=/(\d+)(\s+\d+)?/.exec(Q[2]);ie&&(O=ie[1]|0,ie[2]&&(X=ie[2]|0,X in R||(R[X]=new Me)));break;case"define":var ae=/SHADER_NAME(_B64)?\s+(.*)$/.exec(Q[2]);ae&&(R[X].name=ae[1]?o(ae[2]):ae[2]);break}R[X].lines.push(new Ue(O++,K))}return Object.keys(R).forEach(function(oe){var le=R[oe];le.lines.forEach(function(J){le.index[J.number]=J})}),R}function Xe(a){var h=[];return a.split(`
|
|
4
|
+
`).forEach(function(_){if(!(_.length<5)){var O=/^ERROR:\s+(\d+):(\d+):\s*(.*)$/.exec(_);O?h.push(new V(O[1]|0,O[2]|0,O[3].trim())):_.length>0&&h.push(new V("unknown",0,_))}}),h}function nt(a,h){h.forEach(function(_){var O=a[_.file];if(O){var X=O.index[_.line];if(X){X.errors.push(_),O.hasErrors=!0;return}}a.unknown.hasErrors=!0,a.unknown.lines[0].errors.push(_)})}function ut(a,h,_,O,X){if(!a.getShaderParameter(h,a.COMPILE_STATUS)){var R=a.getShaderInfoLog(h),B=O===a.FRAGMENT_SHADER?"fragment":"vertex";ke(_,"string",B+" shader source must be a string",X);var K=Ge(_,X),Q=Xe(R);nt(K,Q),Object.keys(K).forEach(function(ie){var ae=K[ie];if(!ae.hasErrors)return;var oe=[""],le=[""];function J(ne,k){oe.push(ne),le.push(k||"")}J("file number "+ie+": "+ae.name+`
|
|
5
|
+
`,"color:red;text-decoration:underline;font-weight:bold"),ae.lines.forEach(function(ne){if(ne.errors.length>0){J(fe(ne.number,4)+"| ","background-color:yellow; font-weight:bold"),J(ne.line+i,"color:red; background-color:yellow; font-weight:bold");var k=0;ne.errors.forEach(function(G){var te=G.message,xe=/^\s*'(.*)'\s*:\s*(.*)$/.exec(te);if(xe){var Z=xe[1];switch(te=xe[2],Z){case"assign":Z="=";break}k=Math.max(ne.line.indexOf(Z,k),0)}else k=0;J(fe("| ",6)),J(fe("^^^",k+3)+i,"font-weight:bold"),J(fe("| ",6)),J(te+i,"font-weight:bold")}),J(fe("| ",6)+i)}else J(fe(ne.number,4)+"| "),J(ne.line+i,"color:red")}),typeof document<"u"&&!window.chrome?(le[0]=oe.join("%c"),console.log.apply(console,le)):console.log(oe.join(""))}),f.raise("Error compiling "+B+" shader, "+K[0].name)}}function Ee(a,h,_,O,X){if(!a.getProgramParameter(h,a.LINK_STATUS)){var R=a.getProgramInfoLog(h),B=Ge(_,X),K=Ge(O,X),Q='Error linking program with vertex shader, "'+K[0].name+'", and fragment shader "'+B[0].name+'"';typeof document<"u"?console.log("%c"+Q+i+"%c"+R,"color:red;text-decoration:underline;font-weight:bold","color:red"):console.log(Q+i+R),f.raise(Q)}}function lt(a){a._commandRef=se()}function ot(a,h,_,O){lt(a);function X(Q){return Q?O.id(Q):0}a._fragId=X(a.static.frag),a._vertId=X(a.static.vert);function R(Q,ie){Object.keys(ie).forEach(function(ae){Q[O.id(ae)]=!0})}var B=a._uniformSet={};R(B,h.static),R(B,h.dynamic);var K=a._attributeSet={};R(K,_.static),R(K,_.dynamic),a._hasCount="count"in a.static||"count"in a.dynamic||"elements"in a.static||"elements"in a.dynamic}function N(a,h){var _=Le();s(a+" in command "+(h||se())+(_==="unknown"?"":" called from "+_))}function Pe(a,h,_){a||N(h,_||se())}function re(a,h,_,O){a in h||N("unknown parameter ("+a+")"+u(_)+". possible values: "+Object.keys(h).join(),O||se())}function ke(a,h,_,O){x(a,h)||N("invalid parameter type"+u(_)+". expected "+h+", got "+typeof a,O||se())}function je(a){a()}function We(a,h,_){a.texture?q(a.texture._texture.internalformat,h,"unsupported texture format for attachment"):q(a.renderbuffer._renderbuffer.format,_,"unsupported renderbuffer format for attachment")}var Qe=33071,Ze=9728,dt=9984,ct=9985,_t=9986,st=9987,$t=5120,Ht=5121,Qt=5122,Rn=5123,wo=5124,Ao=5125,On=5126,sr=32819,Tn=32820,Fr=33635,zr=34042,$n=36193,Ot={};Ot[$t]=Ot[Ht]=1,Ot[Qt]=Ot[Rn]=Ot[$n]=Ot[Fr]=Ot[sr]=Ot[Tn]=2,Ot[wo]=Ot[Ao]=Ot[On]=Ot[zr]=4;function fr(a,h){return a===Tn||a===sr||a===Fr?2:a===zr?4:Ot[a]*h}function ur(a){return!(a&a-1)&&!!a}function Eo(a,h,_){var O,X=h.width,R=h.height,B=h.channels;f(X>0&&X<=_.maxTextureSize&&R>0&&R<=_.maxTextureSize,"invalid texture shape"),(a.wrapS!==Qe||a.wrapT!==Qe)&&f(ur(X)&&ur(R),"incompatible wrap mode for texture, both width and height must be power of 2"),h.mipmask===1?X!==1&&R!==1&&f(a.minFilter!==dt&&a.minFilter!==_t&&a.minFilter!==ct&&a.minFilter!==st,"min filter requires mipmap"):(f(ur(X)&&ur(R),"texture must be a square power of 2 to support mipmapping"),f(h.mipmask===(X<<1)-1,"missing or incomplete mipmap data")),h.type===On&&(_.extensions.indexOf("oes_texture_float_linear")<0&&f(a.minFilter===Ze&&a.magFilter===Ze,"filter not supported, must enable oes_texture_float_linear"),f(!a.genMipmaps,"mipmap generation not supported with float textures"));var K=h.images;for(O=0;O<16;++O)if(K[O]){var Q=X>>O,ie=R>>O;f(h.mipmask&1<<O,"missing mipmap data");var ae=K[O];if(f(ae.width===Q&&ae.height===ie,"invalid shape for mip images"),f(ae.format===h.format&&ae.internalformat===h.internalformat&&ae.type===h.type,"incompatible type for mip image"),!ae.compressed)if(ae.data){var oe=Math.ceil(fr(ae.type,B)*Q/ae.unpackAlignment)*ae.unpackAlignment;f(ae.data.byteLength===oe*ie,"invalid data for image, buffer size is inconsistent with image format")}else ae.element||ae.copy}else a.genMipmaps||f((h.mipmask&1<<O)===0,"extra mipmap data");h.compressed&&f(!a.genMipmaps,"mipmap generation for compressed images not supported")}function as(a,h,_,O){var X=a.width,R=a.height,B=a.channels;f(X>0&&X<=O.maxTextureSize&&R>0&&R<=O.maxTextureSize,"invalid texture shape"),f(X===R,"cube map must be square"),f(h.wrapS===Qe&&h.wrapT===Qe,"wrap mode not supported by cube map");for(var K=0;K<_.length;++K){var Q=_[K];f(Q.width===X&&Q.height===R,"inconsistent cube map face shape"),h.genMipmaps&&(f(!Q.compressed,"can not generate mipmap for compressed textures"),f(Q.mipmask===1,"can not specify mipmaps and generate mipmaps"));for(var ie=Q.images,ae=0;ae<16;++ae){var oe=ie[ae];if(oe){var le=X>>ae,J=R>>ae;f(Q.mipmask&1<<ae,"missing mipmap data"),f(oe.width===le&&oe.height===J,"invalid shape for mip images"),f(oe.format===a.format&&oe.internalformat===a.internalformat&&oe.type===a.type,"incompatible type for mip image"),oe.compressed||(oe.data?f(oe.data.byteLength===le*J*Math.max(fr(oe.type,B),oe.unpackAlignment),"invalid data for image, buffer size is inconsistent with image format"):oe.element||oe.copy)}}}}var d=r(f,{optional:je,raise:s,commandRaise:N,command:Pe,parameter:l,commandParameter:re,constructor:we,type:S,commandType:ke,isTypedArray:p,nni:z,oneOf:q,shaderError:ut,linkError:Ee,callSite:Le,saveCommandRef:lt,saveDrawInfo:ot,framebufferFormat:We,guessCommand:se,texture2D:Eo,textureCube:as}),lr=0,Hn=0,Xn=5,Co=6;function wn(a,h){this.id=lr++,this.type=a,this.data=h}function yi(a){return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function Mn(a){if(a.length===0)return[];var h=a.charAt(0),_=a.charAt(a.length-1);if(a.length>1&&h===_&&(h==='"'||h==="'"))return['"'+yi(a.substr(1,a.length-2))+'"'];var O=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(a);if(O)return Mn(a.substr(0,O.index)).concat(Mn(O[1])).concat(Mn(a.substr(O.index+O[0].length)));var X=a.split(".");if(X.length===1)return['"'+yi(a)+'"'];for(var R=[],B=0;B<X.length;++B)R=R.concat(Mn(X[B]));return R}function xi(a){return"["+Mn(a).join("][")+"]"}function Rr(a,h){return new wn(a,xi(h+""))}function Or(a){return typeof a=="function"&&!a._reglType||a instanceof wn}function sn(a,h){if(typeof a=="function")return new wn(Hn,a);if(typeof a=="number"||typeof a=="boolean")return new wn(Xn,a);if(Array.isArray(a))return new wn(Co,a.map(function(_,O){return sn(_,h+"["+O+"]")}));if(a instanceof wn)return a;d(!1,"invalid option type in uniform "+h)}var It={DynamicVariable:wn,define:Rr,isDynamic:Or,unbox:sn,accessor:xi},cr={next:typeof requestAnimationFrame=="function"?function(a){return requestAnimationFrame(a)}:function(a){return setTimeout(a,16)},cancel:typeof cancelAnimationFrame=="function"?function(a){return cancelAnimationFrame(a)}:clearTimeout},Mr=typeof performance<"u"&&performance.now?function(){return performance.now()}:function(){return+new Date};function ss(){var a={"":0},h=[""];return{id:function(_){var O=a[_];return O||(O=a[_]=h.length,h.push(_),O)},str:function(_){return h[_]}}}function Nr(a,h,_){var O=document.createElement("canvas");r(O.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"}),a.appendChild(O),a===document.body&&(O.style.position="absolute",r(a.style,{margin:0,padding:0}));function X(){var K=window.innerWidth,Q=window.innerHeight;if(a!==document.body){var ie=O.getBoundingClientRect();K=ie.right-ie.left,Q=ie.bottom-ie.top}O.width=_*K,O.height=_*Q}var R;a!==document.body&&typeof ResizeObserver=="function"?(R=new ResizeObserver(function(){setTimeout(X)}),R.observe(a)):window.addEventListener("resize",X,!1);function B(){R?R.disconnect():window.removeEventListener("resize",X),a.removeChild(O)}return X(),{canvas:O,onDestroy:B}}function Gr(a,h){function _(O){try{return a.getContext(O,h)}catch{return null}}return _("webgl")||_("experimental-webgl")||_("webgl-experimental")}function fs(a){return typeof a.nodeName=="string"&&typeof a.appendChild=="function"&&typeof a.getBoundingClientRect=="function"}function hr(a){return typeof a.drawArrays=="function"||typeof a.drawElements=="function"}function Po(a){return typeof a=="string"?a.split():(d(Array.isArray(a),"invalid extension array"),a)}function ko(a){return typeof a=="string"?(d(typeof document<"u","not supported outside of DOM"),document.querySelector(a)):a}function Lt(a){var h=a||{},_,O,X,R,B={},K=[],Q=[],ie=typeof window>"u"?1:window.devicePixelRatio,ae=!1,oe=function(ne){ne&&d.raise(ne)},le=function(){};if(typeof h=="string"?(d(typeof document<"u","selector queries only supported in DOM enviroments"),_=document.querySelector(h),d(_,"invalid query string for element")):typeof h=="object"?fs(h)?_=h:hr(h)?(R=h,X=R.canvas):(d.constructor(h),"gl"in h?R=h.gl:"canvas"in h?X=ko(h.canvas):"container"in h&&(O=ko(h.container)),"attributes"in h&&(B=h.attributes,d.type(B,"object","invalid context attributes")),"extensions"in h&&(K=Po(h.extensions)),"optionalExtensions"in h&&(Q=Po(h.optionalExtensions)),"onDone"in h&&(d.type(h.onDone,"function","invalid or missing onDone callback"),oe=h.onDone),"profile"in h&&(ae=!!h.profile),"pixelRatio"in h&&(ie=+h.pixelRatio,d(ie>0,"invalid pixel ratio"))):d.raise("invalid arguments to regl"),_&&(_.nodeName.toLowerCase()==="canvas"?X=_:O=_),!R){if(!X){d(typeof document<"u","must manually specify webgl context outside of DOM environments");var J=Nr(O||document.body,oe,ie);if(!J)return null;X=J.canvas,le=J.onDestroy}B.premultipliedAlpha===void 0&&(B.premultipliedAlpha=!0),R=Gr(X,B)}return R?{gl:R,canvas:X,container:O,extensions:K,optionalExtensions:Q,pixelRatio:ie,profile:ae,onDone:oe,onDestroy:le}:(le(),oe("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}function Wn(a,h){var _={};function O(B){d.type(B,"string","extension name must be string");var K=B.toLowerCase(),Q;try{Q=_[K]=a.getExtension(K)}catch{}return!!Q}for(var X=0;X<h.extensions.length;++X){var R=h.extensions[X];if(!O(R))return h.onDestroy(),h.onDone('"'+R+'" extension is not supported by the current WebGL context, try upgrading your system or a different browser'),null}return h.optionalExtensions.forEach(O),{extensions:_,restore:function(){Object.keys(_).forEach(function(B){if(_[B]&&!O(B))throw new Error("(regl): error restoring extension "+B)})}}}function Yt(a,h){for(var _=Array(a),O=0;O<a;++O)_[O]=h(O);return _}var Io=5120,bi=5121,Lo=5122,Do=5123,us=5124,fn=5125,jn=5126;function Fo(a){for(var h=16;h<=1<<28;h*=16)if(a<=h)return h;return 0}function _i(a){var h,_;return h=(a>65535)<<4,a>>>=h,_=(a>255)<<3,a>>>=_,h|=_,_=(a>15)<<2,a>>>=_,h|=_,_=(a>3)<<1,a>>>=_,h|=_,h|a>>1}function Br(){var a=Yt(8,function(){return[]});function h(R){var B=Fo(R),K=a[_i(B)>>2];return K.length>0?K.pop():new ArrayBuffer(B)}function _(R){a[_i(R.byteLength)>>2].push(R)}function O(R,B){var K=null;switch(R){case Io:K=new Int8Array(h(B),0,B);break;case bi:K=new Uint8Array(h(B),0,B);break;case Lo:K=new Int16Array(h(2*B),0,B);break;case Do:K=new Uint16Array(h(2*B),0,B);break;case us:K=new Int32Array(h(4*B),0,B);break;case fn:K=new Uint32Array(h(4*B),0,B);break;case jn:K=new Float32Array(h(4*B),0,B);break;default:return null}return K.length!==B?K.subarray(0,B):K}function X(R){_(R.buffer)}return{alloc:h,free:_,allocType:O,freeType:X}}var gt=Br();gt.zero=Br();var vn=3408,zo=3410,Ro=3411,Oo=3412,Mo=3413,ls=3414,Ve=3415,P=33901,ve=33902,ze=3379,mt=3386,Mt=34921,At=36347,Xt=36348,gn=35661,dr=35660,Si=34930,Nt=36349,No=34076,Go=34024,kg=7936,Ig=7937,Lg=7938,Dg=35724,Fg=34047,zg=36063,Rg=34852,Bo=3553,rl=34067,Og=34069,Mg=33984,Ti=6408,cs=5126,il=5121,hs=36160,Ng=36053,Gg=36064,Bg=16384,Ug=function(a,h){var _=1;h.ext_texture_filter_anisotropic&&(_=a.getParameter(Fg));var O=1,X=1;h.webgl_draw_buffers&&(O=a.getParameter(Rg),X=a.getParameter(zg));var R=!!h.oes_texture_float;if(R){var B=a.createTexture();a.bindTexture(Bo,B),a.texImage2D(Bo,0,Ti,1,1,0,Ti,cs,null);var K=a.createFramebuffer();if(a.bindFramebuffer(hs,K),a.framebufferTexture2D(hs,Gg,Bo,B,0),a.bindTexture(Bo,null),a.checkFramebufferStatus(hs)!==Ng)R=!1;else{a.viewport(0,0,1,1),a.clearColor(1,0,0,1),a.clear(Bg);var Q=gt.allocType(cs,4);a.readPixels(0,0,1,1,Ti,cs,Q),a.getError()?R=!1:(a.deleteFramebuffer(K),a.deleteTexture(B),R=Q[0]===1),gt.freeType(Q)}}var ie=typeof navigator<"u"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent)),ae=!0;if(!ie){var oe=a.createTexture(),le=gt.allocType(il,36);a.activeTexture(Mg),a.bindTexture(rl,oe),a.texImage2D(Og,0,Ti,3,3,0,Ti,il,le),gt.freeType(le),a.bindTexture(rl,null),a.deleteTexture(oe),ae=!a.getError()}return{colorBits:[a.getParameter(zo),a.getParameter(Ro),a.getParameter(Oo),a.getParameter(Mo)],depthBits:a.getParameter(ls),stencilBits:a.getParameter(Ve),subpixelBits:a.getParameter(vn),extensions:Object.keys(h).filter(function(J){return!!h[J]}),maxAnisotropic:_,maxDrawbuffers:O,maxColorAttachments:X,pointSizeDims:a.getParameter(P),lineWidthDims:a.getParameter(ve),maxViewportDims:a.getParameter(mt),maxCombinedTextureUnits:a.getParameter(gn),maxCubeMapSize:a.getParameter(No),maxRenderbufferSize:a.getParameter(Go),maxTextureUnits:a.getParameter(Si),maxTextureSize:a.getParameter(ze),maxAttributes:a.getParameter(Mt),maxVertexUniforms:a.getParameter(At),maxVertexTextureUnits:a.getParameter(dr),maxVaryingVectors:a.getParameter(Xt),maxFragmentUniforms:a.getParameter(Nt),glsl:a.getParameter(Dg),renderer:a.getParameter(Ig),vendor:a.getParameter(kg),version:a.getParameter(Lg),readFloat:R,npotTextureCube:ae}};function yn(a){return!!a&&typeof a=="object"&&Array.isArray(a.shape)&&Array.isArray(a.stride)&&typeof a.offset=="number"&&a.shape.length===a.stride.length&&(Array.isArray(a.data)||n(a.data))}var rn=function(a){return Object.keys(a).map(function(h){return a[h]})},Uo={shape:Xg,flatten:Hg};function Vg(a,h,_){for(var O=0;O<h;++O)_[O]=a[O]}function $g(a,h,_,O){for(var X=0,R=0;R<h;++R)for(var B=a[R],K=0;K<_;++K)O[X++]=B[K]}function ol(a,h,_,O,X,R){for(var B=R,K=0;K<h;++K)for(var Q=a[K],ie=0;ie<_;++ie)for(var ae=Q[ie],oe=0;oe<O;++oe)X[B++]=ae[oe]}function al(a,h,_,O,X){for(var R=1,B=_+1;B<h.length;++B)R*=h[B];var K=h[_];if(h.length-_===4){var Q=h[_+1],ie=h[_+2],ae=h[_+3];for(B=0;B<K;++B)ol(a[B],Q,ie,ae,O,X),X+=R}else for(B=0;B<K;++B)al(a[B],h,_+1,O,X),X+=R}function Hg(a,h,_,O){var X=1;if(h.length)for(var R=0;R<h.length;++R)X*=h[R];else X=0;var B=O||gt.allocType(_,X);switch(h.length){case 0:break;case 1:Vg(a,h[0],B);break;case 2:$g(a,h[0],h[1],B);break;case 3:ol(a,h[0],h[1],h[2],B,0);break;default:al(a,h,0,B,0)}return B}function Xg(a){for(var h=[],_=a;_.length;_=_[0])h.push(_.length);return h}var ds={"[object Int8Array]":5120,"[object Int16Array]":5122,"[object Int32Array]":5124,"[object Uint8Array]":5121,"[object Uint8ClampedArray]":5121,"[object Uint16Array]":5123,"[object Uint32Array]":5125,"[object Float32Array]":5126,"[object Float64Array]":5121,"[object ArrayBuffer]":5121},Wg=5120,jg=5122,qg=5124,Yg=5121,Zg=5123,Qg=5125,Kg=5126,Jg=5126,mr={int8:Wg,int16:jg,int32:qg,uint8:Yg,uint16:Zg,uint32:Qg,float:Kg,float32:Jg},ey=35048,ty=35040,Vo={dynamic:ey,stream:ty,static:35044},ms=Uo.flatten,sl=Uo.shape,fl=35044,ny=35040,ps=5121,vs=5126,qn=[];qn[5120]=1,qn[5122]=2,qn[5124]=4,qn[5121]=1,qn[5123]=2,qn[5125]=4,qn[5126]=4;function $o(a){return ds[Object.prototype.toString.call(a)]|0}function ul(a,h){for(var _=0;_<h.length;++_)a[_]=h[_]}function ll(a,h,_,O,X,R,B){for(var K=0,Q=0;Q<_;++Q)for(var ie=0;ie<O;++ie)a[K++]=h[X*Q+R*ie+B]}function ry(a,h,_,O){var X=0,R={};function B(k){this.id=X++,this.buffer=a.createBuffer(),this.type=k,this.usage=fl,this.byteLength=0,this.dimension=1,this.dtype=ps,this.persistentData=null,_.profile&&(this.stats={size:0})}B.prototype.bind=function(){a.bindBuffer(this.type,this.buffer)},B.prototype.destroy=function(){le(this)};var K=[];function Q(k,G){var te=K.pop();return te||(te=new B(k)),te.bind(),oe(te,G,ny,0,1,!1),te}function ie(k){K.push(k)}function ae(k,G,te){k.byteLength=G.byteLength,a.bufferData(k.type,G,te)}function oe(k,G,te,xe,Z,ge){var me;if(k.usage=te,Array.isArray(G)){if(k.dtype=xe||vs,G.length>0){var De;if(Array.isArray(G[0])){me=sl(G);for(var W=1,H=1;H<me.length;++H)W*=me[H];k.dimension=W,De=ms(G,me,k.dtype),ae(k,De,te),ge?k.persistentData=De:gt.freeType(De)}else if(typeof G[0]=="number"){k.dimension=Z;var Se=gt.allocType(k.dtype,G.length);ul(Se,G),ae(k,Se,te),ge?k.persistentData=Se:gt.freeType(Se)}else n(G[0])?(k.dimension=G[0].length,k.dtype=xe||$o(G[0])||vs,De=ms(G,[G.length,G[0].length],k.dtype),ae(k,De,te),ge?k.persistentData=De:gt.freeType(De)):d.raise("invalid buffer data")}}else if(n(G))k.dtype=xe||$o(G),k.dimension=Z,ae(k,G,te),ge&&(k.persistentData=new Uint8Array(new Uint8Array(G.buffer)));else if(yn(G)){me=G.shape;var ce=G.stride,ee=G.offset,he=0,de=0,$e=0,Be=0;me.length===1?(he=me[0],de=1,$e=ce[0],Be=0):me.length===2?(he=me[0],de=me[1],$e=ce[0],Be=ce[1]):d.raise("invalid shape"),k.dtype=xe||$o(G.data)||vs,k.dimension=de;var pe=gt.allocType(k.dtype,he*de);ll(pe,G.data,he,de,$e,Be,ee),ae(k,pe,te),ge?k.persistentData=pe:gt.freeType(pe)}else G instanceof ArrayBuffer?(k.dtype=ps,k.dimension=Z,ae(k,G,te),ge&&(k.persistentData=new Uint8Array(new Uint8Array(G)))):d.raise("invalid buffer data")}function le(k){h.bufferCount--,O(k);var G=k.buffer;d(G,"buffer must not be deleted already"),a.deleteBuffer(G),k.buffer=null,delete R[k.id]}function J(k,G,te,xe){h.bufferCount++;var Z=new B(G);R[Z.id]=Z;function ge(W){var H=fl,Se=null,ce=0,ee=0,he=1;return Array.isArray(W)||n(W)||yn(W)||W instanceof ArrayBuffer?Se=W:typeof W=="number"?ce=W|0:W&&(d.type(W,"object","buffer arguments must be an object, a number or an array"),"data"in W&&(d(Se===null||Array.isArray(Se)||n(Se)||yn(Se),"invalid data for buffer"),Se=W.data),"usage"in W&&(d.parameter(W.usage,Vo,"invalid buffer usage"),H=Vo[W.usage]),"type"in W&&(d.parameter(W.type,mr,"invalid buffer type"),ee=mr[W.type]),"dimension"in W&&(d.type(W.dimension,"number","invalid dimension"),he=W.dimension|0),"length"in W&&(d.nni(ce,"buffer length must be a nonnegative integer"),ce=W.length|0)),Z.bind(),Se?oe(Z,Se,H,ee,he,xe):(ce&&a.bufferData(Z.type,ce,H),Z.dtype=ee||ps,Z.usage=H,Z.dimension=he,Z.byteLength=ce),_.profile&&(Z.stats.size=Z.byteLength*qn[Z.dtype]),ge}function me(W,H){d(H+W.byteLength<=Z.byteLength,"invalid buffer subdata call, buffer is too small. Can't write data of size "+W.byteLength+" starting from offset "+H+" to a buffer of size "+Z.byteLength),a.bufferSubData(Z.type,H,W)}function De(W,H){var Se=(H||0)|0,ce;if(Z.bind(),n(W)||W instanceof ArrayBuffer)me(W,Se);else if(Array.isArray(W)){if(W.length>0)if(typeof W[0]=="number"){var ee=gt.allocType(Z.dtype,W.length);ul(ee,W),me(ee,Se),gt.freeType(ee)}else if(Array.isArray(W[0])||n(W[0])){ce=sl(W);var he=ms(W,ce,Z.dtype);me(he,Se),gt.freeType(he)}else d.raise("invalid buffer data")}else if(yn(W)){ce=W.shape;var de=W.stride,$e=0,Be=0,pe=0,ye=0;ce.length===1?($e=ce[0],Be=1,pe=de[0],ye=0):ce.length===2?($e=ce[0],Be=ce[1],pe=de[0],ye=de[1]):d.raise("invalid shape");var Re=Array.isArray(W.data)?Z.dtype:$o(W.data),He=gt.allocType(Re,$e*Be);ll(He,W.data,$e,Be,pe,ye,W.offset),me(He,Se),gt.freeType(He)}else d.raise("invalid data for buffer subdata");return ge}return te||ge(k),ge._reglType="buffer",ge._buffer=Z,ge.subdata=De,_.profile&&(ge.stats=Z.stats),ge.destroy=function(){le(Z)},ge}function ne(){rn(R).forEach(function(k){k.buffer=a.createBuffer(),a.bindBuffer(k.type,k.buffer),a.bufferData(k.type,k.persistentData||k.byteLength,k.usage)})}return _.profile&&(h.getTotalBufferSize=function(){var k=0;return Object.keys(R).forEach(function(G){k+=R[G].stats.size}),k}),{create:J,createStream:Q,destroyStream:ie,clear:function(){rn(R).forEach(le),K.forEach(le)},getBuffer:function(k){return k&&k._buffer instanceof B?k._buffer:null},restore:ne,_initBuffer:oe}}var iy=0,oy=0,ay=1,sy=1,fy=4,uy=4,Yn={points:iy,point:oy,lines:ay,line:sy,triangles:fy,triangle:uy,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},ly=0,cy=1,wi=4,hy=5120,Ur=5121,cl=5122,Vr=5123,hl=5124,pr=5125,gs=34963,dy=35040,my=35044;function py(a,h,_,O){var X={},R=0,B={uint8:Ur,uint16:Vr};h.oes_element_index_uint&&(B.uint32=pr);function K(ne){this.id=R++,X[this.id]=this,this.buffer=ne,this.primType=wi,this.vertCount=0,this.type=0}K.prototype.bind=function(){this.buffer.bind()};var Q=[];function ie(ne){var k=Q.pop();return k||(k=new K(_.create(null,gs,!0,!1)._buffer)),oe(k,ne,dy,-1,-1,0,0),k}function ae(ne){Q.push(ne)}function oe(ne,k,G,te,xe,Z,ge){ne.buffer.bind();var me;if(k){var De=ge;!ge&&(!n(k)||yn(k)&&!n(k.data))&&(De=h.oes_element_index_uint?pr:Vr),_._initBuffer(ne.buffer,k,G,De,3)}else a.bufferData(gs,Z,G),ne.buffer.dtype=me||Ur,ne.buffer.usage=G,ne.buffer.dimension=3,ne.buffer.byteLength=Z;if(me=ge,!ge){switch(ne.buffer.dtype){case Ur:case hy:me=Ur;break;case Vr:case cl:me=Vr;break;case pr:case hl:me=pr;break;default:d.raise("unsupported type for element array")}ne.buffer.dtype=me}ne.type=me,d(me!==pr||!!h.oes_element_index_uint,"32 bit element buffers not supported, enable oes_element_index_uint first");var W=xe;W<0&&(W=ne.buffer.byteLength,me===Vr?W>>=1:me===pr&&(W>>=2)),ne.vertCount=W;var H=te;if(te<0){H=wi;var Se=ne.buffer.dimension;Se===1&&(H=ly),Se===2&&(H=cy),Se===3&&(H=wi)}ne.primType=H}function le(ne){O.elementsCount--,d(ne.buffer!==null,"must not double destroy elements"),delete X[ne.id],ne.buffer.destroy(),ne.buffer=null}function J(ne,k){var G=_.create(null,gs,!0),te=new K(G._buffer);O.elementsCount++;function xe(Z){if(!Z)G(),te.primType=wi,te.vertCount=0,te.type=Ur;else if(typeof Z=="number")G(Z),te.primType=wi,te.vertCount=Z|0,te.type=Ur;else{var ge=null,me=my,De=-1,W=-1,H=0,Se=0;Array.isArray(Z)||n(Z)||yn(Z)?ge=Z:(d.type(Z,"object","invalid arguments for elements"),"data"in Z&&(ge=Z.data,d(Array.isArray(ge)||n(ge)||yn(ge),"invalid data for element buffer")),"usage"in Z&&(d.parameter(Z.usage,Vo,"invalid element buffer usage"),me=Vo[Z.usage]),"primitive"in Z&&(d.parameter(Z.primitive,Yn,"invalid element buffer primitive"),De=Yn[Z.primitive]),"count"in Z&&(d(typeof Z.count=="number"&&Z.count>=0,"invalid vertex count for elements"),W=Z.count|0),"type"in Z&&(d.parameter(Z.type,B,"invalid buffer type"),Se=B[Z.type]),"length"in Z?H=Z.length|0:(H=W,Se===Vr||Se===cl?H*=2:(Se===pr||Se===hl)&&(H*=4))),oe(te,ge,me,De,W,H,Se)}return xe}return xe(ne),xe._reglType="elements",xe._elements=te,xe.subdata=function(Z,ge){return G.subdata(Z,ge),xe},xe.destroy=function(){le(te)},xe}return{create:J,createStream:ie,destroyStream:ae,getElements:function(ne){return typeof ne=="function"&&ne._elements instanceof K?ne._elements:null},clear:function(){rn(X).forEach(le)}}}var dl=new Float32Array(1),vy=new Uint32Array(dl.buffer),gy=5123;function ml(a){for(var h=gt.allocType(gy,a.length),_=0;_<a.length;++_)if(isNaN(a[_]))h[_]=65535;else if(a[_]===1/0)h[_]=31744;else if(a[_]===-1/0)h[_]=64512;else{dl[0]=a[_];var O=vy[0],X=O>>>31<<15,R=(O<<1>>>24)-127,B=O>>13&1023;if(R<-24)h[_]=X;else if(R<-14){var K=-14-R;h[_]=X+(B+1024>>K)}else R>15?h[_]=X+31744:h[_]=X+(R+15<<10)+B}return h}function pt(a){return Array.isArray(a)||n(a)}var pl=function(a){return!(a&a-1)&&!!a},yy=34467,An=3553,ys=34067,Ho=34069,vr=6408,xs=6406,Xo=6407,Ai=6409,Wo=6410,vl=32854,bs=32855,gl=36194,xy=32819,by=32820,_y=33635,Sy=34042,_s=6402,jo=34041,Ss=35904,Ts=35906,$r=36193,ws=33776,As=33777,Es=33778,Cs=33779,yl=35986,xl=35987,bl=34798,_l=35840,Sl=35841,Tl=35842,wl=35843,Al=36196,Hr=5121,Ps=5123,ks=5125,Ei=5126,Ty=10242,wy=10243,Ay=10497,Is=33071,Ey=33648,Cy=10240,Py=10241,Ls=9728,ky=9729,Ds=9984,El=9985,Cl=9986,Fs=9987,Iy=33170,qo=4352,Ly=4353,Dy=4354,Fy=34046,zy=3317,Ry=37440,Oy=37441,My=37443,Pl=37444,Ci=33984,Ny=[Ds,Cl,El,Fs],Yo=[0,Ai,Wo,Xo,vr],un={};un[Ai]=un[xs]=un[_s]=1,un[jo]=un[Wo]=2,un[Xo]=un[Ss]=3,un[vr]=un[Ts]=4;function Xr(a){return"[object "+a+"]"}var kl=Xr("HTMLCanvasElement"),Il=Xr("OffscreenCanvas"),Ll=Xr("CanvasRenderingContext2D"),Dl=Xr("ImageBitmap"),Fl=Xr("HTMLImageElement"),zl=Xr("HTMLVideoElement"),Gy=Object.keys(ds).concat([kl,Il,Ll,Dl,Fl,zl]),Wr=[];Wr[Hr]=1,Wr[Ei]=4,Wr[$r]=2,Wr[Ps]=2,Wr[ks]=4;var Gt=[];Gt[vl]=2,Gt[bs]=2,Gt[gl]=2,Gt[jo]=4,Gt[ws]=.5,Gt[As]=.5,Gt[Es]=1,Gt[Cs]=1,Gt[yl]=.5,Gt[xl]=1,Gt[bl]=1,Gt[_l]=.5,Gt[Sl]=.25,Gt[Tl]=.5,Gt[wl]=.25,Gt[Al]=.5;function Rl(a){return Array.isArray(a)&&(a.length===0||typeof a[0]=="number")}function Ol(a){if(!Array.isArray(a))return!1;var h=a.length;return!(h===0||!pt(a[0]))}function gr(a){return Object.prototype.toString.call(a)}function Ml(a){return gr(a)===kl}function Nl(a){return gr(a)===Il}function By(a){return gr(a)===Ll}function Uy(a){return gr(a)===Dl}function Vy(a){return gr(a)===Fl}function $y(a){return gr(a)===zl}function zs(a){if(!a)return!1;var h=gr(a);return Gy.indexOf(h)>=0?!0:Rl(a)||Ol(a)||yn(a)}function Gl(a){return ds[Object.prototype.toString.call(a)]|0}function Hy(a,h){var _=h.length;switch(a.type){case Hr:case Ps:case ks:case Ei:var O=gt.allocType(a.type,_);O.set(h),a.data=O;break;case $r:a.data=ml(h);break;default:d.raise("unsupported texture type, must specify a typed array")}}function Bl(a,h){return gt.allocType(a.type===$r?Ei:a.type,h)}function Ul(a,h){a.type===$r?(a.data=ml(h),gt.freeType(h)):a.data=h}function Xy(a,h,_,O,X,R){for(var B=a.width,K=a.height,Q=a.channels,ie=B*K*Q,ae=Bl(a,ie),oe=0,le=0;le<K;++le)for(var J=0;J<B;++J)for(var ne=0;ne<Q;++ne)ae[oe++]=h[_*J+O*le+X*ne+R];Ul(a,ae)}function Zo(a,h,_,O,X,R){var B;if(typeof Gt[a]<"u"?B=Gt[a]:B=un[a]*Wr[h],R&&(B*=6),X){for(var K=0,Q=_;Q>=1;)K+=B*Q*Q,Q/=2;return K}else return B*_*O}function Wy(a,h,_,O,X,R,B){var K={"don't care":qo,"dont care":qo,nice:Dy,fast:Ly},Q={repeat:Ay,clamp:Is,mirror:Ey},ie={nearest:Ls,linear:ky},ae=r({mipmap:Fs,"nearest mipmap nearest":Ds,"linear mipmap nearest":El,"nearest mipmap linear":Cl,"linear mipmap linear":Fs},ie),oe={none:0,browser:Pl},le={uint8:Hr,rgba4:xy,rgb565:_y,"rgb5 a1":by},J={alpha:xs,luminance:Ai,"luminance alpha":Wo,rgb:Xo,rgba:vr,rgba4:vl,"rgb5 a1":bs,rgb565:gl},ne={};h.ext_srgb&&(J.srgb=Ss,J.srgba=Ts),h.oes_texture_float&&(le.float32=le.float=Ei),h.oes_texture_half_float&&(le.float16=le["half float"]=$r),h.webgl_depth_texture&&(r(J,{depth:_s,"depth stencil":jo}),r(le,{uint16:Ps,uint32:ks,"depth stencil":Sy})),h.webgl_compressed_texture_s3tc&&r(ne,{"rgb s3tc dxt1":ws,"rgba s3tc dxt1":As,"rgba s3tc dxt3":Es,"rgba s3tc dxt5":Cs}),h.webgl_compressed_texture_atc&&r(ne,{"rgb atc":yl,"rgba atc explicit alpha":xl,"rgba atc interpolated alpha":bl}),h.webgl_compressed_texture_pvrtc&&r(ne,{"rgb pvrtc 4bppv1":_l,"rgb pvrtc 2bppv1":Sl,"rgba pvrtc 4bppv1":Tl,"rgba pvrtc 2bppv1":wl}),h.webgl_compressed_texture_etc1&&(ne["rgb etc1"]=Al);var k=Array.prototype.slice.call(a.getParameter(yy));Object.keys(ne).forEach(function(y){var M=ne[y];k.indexOf(M)>=0&&(J[y]=M)});var G=Object.keys(J);_.textureFormats=G;var te=[];Object.keys(J).forEach(function(y){var M=J[y];te[M]=y});var xe=[];Object.keys(le).forEach(function(y){var M=le[y];xe[M]=y});var Z=[];Object.keys(ie).forEach(function(y){var M=ie[y];Z[M]=y});var ge=[];Object.keys(ae).forEach(function(y){var M=ae[y];ge[M]=y});var me=[];Object.keys(Q).forEach(function(y){var M=Q[y];me[M]=y});var De=G.reduce(function(y,M){var F=J[M];return F===Ai||F===xs||F===Ai||F===Wo||F===_s||F===jo||h.ext_srgb&&(F===Ss||F===Ts)?y[F]=F:F===bs||M.indexOf("rgba")>=0?y[F]=vr:y[F]=Xo,y},{});function W(){this.internalformat=vr,this.format=vr,this.type=Hr,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=Pl,this.width=0,this.height=0,this.channels=0}function H(y,M){y.internalformat=M.internalformat,y.format=M.format,y.type=M.type,y.compressed=M.compressed,y.premultiplyAlpha=M.premultiplyAlpha,y.flipY=M.flipY,y.unpackAlignment=M.unpackAlignment,y.colorSpace=M.colorSpace,y.width=M.width,y.height=M.height,y.channels=M.channels}function Se(y,M){if(!(typeof M!="object"||!M)){if("premultiplyAlpha"in M&&(d.type(M.premultiplyAlpha,"boolean","invalid premultiplyAlpha"),y.premultiplyAlpha=M.premultiplyAlpha),"flipY"in M&&(d.type(M.flipY,"boolean","invalid texture flip"),y.flipY=M.flipY),"alignment"in M&&(d.oneOf(M.alignment,[1,2,4,8],"invalid texture unpack alignment"),y.unpackAlignment=M.alignment),"colorSpace"in M&&(d.parameter(M.colorSpace,oe,"invalid colorSpace"),y.colorSpace=oe[M.colorSpace]),"type"in M){var F=M.type;d(h.oes_texture_float||!(F==="float"||F==="float32"),"you must enable the OES_texture_float extension in order to use floating point textures."),d(h.oes_texture_half_float||!(F==="half float"||F==="float16"),"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures."),d(h.webgl_depth_texture||!(F==="uint16"||F==="uint32"||F==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),d.parameter(F,le,"invalid texture type"),y.type=le[F]}var _e=y.width,Ke=y.height,m=y.channels,c=!1;"shape"in M?(d(Array.isArray(M.shape)&&M.shape.length>=2,"shape must be an array"),_e=M.shape[0],Ke=M.shape[1],M.shape.length===3&&(m=M.shape[2],d(m>0&&m<=4,"invalid number of channels"),c=!0),d(_e>=0&&_e<=_.maxTextureSize,"invalid width"),d(Ke>=0&&Ke<=_.maxTextureSize,"invalid height")):("radius"in M&&(_e=Ke=M.radius,d(_e>=0&&_e<=_.maxTextureSize,"invalid radius")),"width"in M&&(_e=M.width,d(_e>=0&&_e<=_.maxTextureSize,"invalid width")),"height"in M&&(Ke=M.height,d(Ke>=0&&Ke<=_.maxTextureSize,"invalid height")),"channels"in M&&(m=M.channels,d(m>0&&m<=4,"invalid number of channels"),c=!0)),y.width=_e|0,y.height=Ke|0,y.channels=m|0;var T=!1;if("format"in M){var C=M.format;d(h.webgl_depth_texture||!(C==="depth"||C==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),d.parameter(C,J,"invalid texture format");var I=y.internalformat=J[C];y.format=De[I],C in le&&("type"in M||(y.type=le[C])),C in ne&&(y.compressed=!0),T=!0}!c&&T?y.channels=un[y.format]:c&&!T?y.channels!==Yo[y.format]&&(y.format=y.internalformat=Yo[y.channels]):T&&c&&d(y.channels===un[y.format],"number of channels inconsistent with specified format")}}function ce(y){a.pixelStorei(Ry,y.flipY),a.pixelStorei(Oy,y.premultiplyAlpha),a.pixelStorei(My,y.colorSpace),a.pixelStorei(zy,y.unpackAlignment)}function ee(){W.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function he(y,M){var F=null;if(zs(M)?F=M:M&&(d.type(M,"object","invalid pixel data type"),Se(y,M),"x"in M&&(y.xOffset=M.x|0),"y"in M&&(y.yOffset=M.y|0),zs(M.data)&&(F=M.data)),d(!y.compressed||F instanceof Uint8Array,"compressed texture data must be stored in a uint8array"),M.copy){d(!F,"can not specify copy and data field for the same texture");var _e=X.viewportWidth,Ke=X.viewportHeight;y.width=y.width||_e-y.xOffset,y.height=y.height||Ke-y.yOffset,y.needsCopy=!0,d(y.xOffset>=0&&y.xOffset<_e&&y.yOffset>=0&&y.yOffset<Ke&&y.width>0&&y.width<=_e&&y.height>0&&y.height<=Ke,"copy texture read out of bounds")}else if(!F)y.width=y.width||1,y.height=y.height||1,y.channels=y.channels||4;else if(n(F))y.channels=y.channels||4,y.data=F,!("type"in M)&&y.type===Hr&&(y.type=Gl(F));else if(Rl(F))y.channels=y.channels||4,Hy(y,F),y.alignment=1,y.needsFree=!0;else if(yn(F)){var m=F.data;!Array.isArray(m)&&y.type===Hr&&(y.type=Gl(m));var c=F.shape,T=F.stride,C,I,A,w,E,v;c.length===3?(A=c[2],v=T[2]):(d(c.length===2,"invalid ndarray pixel data, must be 2 or 3D"),A=1,v=1),C=c[0],I=c[1],w=T[0],E=T[1],y.alignment=1,y.width=C,y.height=I,y.channels=A,y.format=y.internalformat=Yo[A],y.needsFree=!0,Xy(y,m,w,E,v,F.offset)}else if(Ml(F)||Nl(F)||By(F))Ml(F)||Nl(F)?y.element=F:y.element=F.canvas,y.width=y.element.width,y.height=y.element.height,y.channels=4;else if(Uy(F))y.element=F,y.width=F.width,y.height=F.height,y.channels=4;else if(Vy(F))y.element=F,y.width=F.naturalWidth,y.height=F.naturalHeight,y.channels=4;else if($y(F))y.element=F,y.width=F.videoWidth,y.height=F.videoHeight,y.channels=4;else if(Ol(F)){var b=y.width||F[0].length,g=y.height||F.length,D=y.channels;pt(F[0][0])?D=D||F[0][0].length:D=D||1;for(var L=Uo.shape(F),$=1,j=0;j<L.length;++j)$*=L[j];var ue=Bl(y,$);Uo.flatten(F,L,"",ue),Ul(y,ue),y.alignment=1,y.width=b,y.height=g,y.channels=D,y.format=y.internalformat=Yo[D],y.needsFree=!0}y.type===Ei?d(_.extensions.indexOf("oes_texture_float")>=0,"oes_texture_float extension not enabled"):y.type===$r&&d(_.extensions.indexOf("oes_texture_half_float")>=0,"oes_texture_half_float extension not enabled")}function de(y,M,F){var _e=y.element,Ke=y.data,m=y.internalformat,c=y.format,T=y.type,C=y.width,I=y.height;ce(y),_e?a.texImage2D(M,F,c,c,T,_e):y.compressed?a.compressedTexImage2D(M,F,m,C,I,0,Ke):y.needsCopy?(O(),a.copyTexImage2D(M,F,c,y.xOffset,y.yOffset,C,I,0)):a.texImage2D(M,F,c,C,I,0,c,T,Ke||null)}function $e(y,M,F,_e,Ke){var m=y.element,c=y.data,T=y.internalformat,C=y.format,I=y.type,A=y.width,w=y.height;ce(y),m?a.texSubImage2D(M,Ke,F,_e,C,I,m):y.compressed?a.compressedTexSubImage2D(M,Ke,F,_e,T,A,w,c):y.needsCopy?(O(),a.copyTexSubImage2D(M,Ke,F,_e,y.xOffset,y.yOffset,A,w)):a.texSubImage2D(M,Ke,F,_e,A,w,C,I,c)}var Be=[];function pe(){return Be.pop()||new ee}function ye(y){y.needsFree&>.freeType(y.data),ee.call(y),Be.push(y)}function Re(){W.call(this),this.genMipmaps=!1,this.mipmapHint=qo,this.mipmask=0,this.images=Array(16)}function He(y,M,F){var _e=y.images[0]=pe();y.mipmask=1,_e.width=y.width=M,_e.height=y.height=F,_e.channels=y.channels=4}function Je(y,M){var F=null;if(zs(M))F=y.images[0]=pe(),H(F,y),he(F,M),y.mipmask=1;else if(Se(y,M),Array.isArray(M.mipmap))for(var _e=M.mipmap,Ke=0;Ke<_e.length;++Ke)F=y.images[Ke]=pe(),H(F,y),F.width>>=Ke,F.height>>=Ke,he(F,_e[Ke]),y.mipmask|=1<<Ke;else F=y.images[0]=pe(),H(F,y),he(F,M),y.mipmask=1;H(y,y.images[0]),y.compressed&&(y.internalformat===ws||y.internalformat===As||y.internalformat===Es||y.internalformat===Cs)&&d(y.width%4===0&&y.height%4===0,"for compressed texture formats, mipmap level 0 must have width and height that are a multiple of 4")}function vt(y,M){for(var F=y.images,_e=0;_e<F.length;++_e){if(!F[_e])return;de(F[_e],M,_e)}}var yt=[];function tt(){var y=yt.pop()||new Re;W.call(y),y.mipmask=0;for(var M=0;M<16;++M)y.images[M]=null;return y}function Et(y){for(var M=y.images,F=0;F<M.length;++F)M[F]&&ye(M[F]),M[F]=null;yt.push(y)}function ht(){this.minFilter=Ls,this.magFilter=Ls,this.wrapS=Is,this.wrapT=Is,this.anisotropic=1,this.genMipmaps=!1,this.mipmapHint=qo}function Tt(y,M){if("min"in M){var F=M.min;d.parameter(F,ae),y.minFilter=ae[F],Ny.indexOf(y.minFilter)>=0&&!("faces"in M)&&(y.genMipmaps=!0)}if("mag"in M){var _e=M.mag;d.parameter(_e,ie),y.magFilter=ie[_e]}var Ke=y.wrapS,m=y.wrapT;if("wrap"in M){var c=M.wrap;typeof c=="string"?(d.parameter(c,Q),Ke=m=Q[c]):Array.isArray(c)&&(d.parameter(c[0],Q),d.parameter(c[1],Q),Ke=Q[c[0]],m=Q[c[1]])}else{if("wrapS"in M){var T=M.wrapS;d.parameter(T,Q),Ke=Q[T]}if("wrapT"in M){var C=M.wrapT;d.parameter(C,Q),m=Q[C]}}if(y.wrapS=Ke,y.wrapT=m,"anisotropic"in M){var I=M.anisotropic;d(typeof I=="number"&&I>=1&&I<=_.maxAnisotropic,"aniso samples must be between 1 and "),y.anisotropic=M.anisotropic}if("mipmap"in M){var A=!1;switch(typeof M.mipmap){case"string":d.parameter(M.mipmap,K,"invalid mipmap hint"),y.mipmapHint=K[M.mipmap],y.genMipmaps=!0,A=!0;break;case"boolean":A=y.genMipmaps=M.mipmap;break;case"object":d(Array.isArray(M.mipmap),"invalid mipmap type"),y.genMipmaps=!1,A=!0;break;default:d.raise("invalid mipmap type")}A&&!("min"in M)&&(y.minFilter=Ds)}}function Ct(y,M){a.texParameteri(M,Py,y.minFilter),a.texParameteri(M,Cy,y.magFilter),a.texParameteri(M,Ty,y.wrapS),a.texParameteri(M,wy,y.wrapT),h.ext_texture_filter_anisotropic&&a.texParameteri(M,Fy,y.anisotropic),y.genMipmaps&&(a.hint(Iy,y.mipmapHint),a.generateMipmap(M))}var Pt=0,Ft={},Bt=_.maxTextureUnits,xt=Array(Bt).map(function(){return null});function Ye(y){W.call(this),this.mipmask=0,this.internalformat=vr,this.id=Pt++,this.refCount=1,this.target=y,this.texture=a.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new ht,B.profile&&(this.stats={size:0})}function Ut(y){a.activeTexture(Ci),a.bindTexture(y.target,y.texture)}function at(){var y=xt[0];y?a.bindTexture(y.target,y.texture):a.bindTexture(An,null)}function Fe(y){var M=y.texture;d(M,"must not double destroy texture");var F=y.unit,_e=y.target;F>=0&&(a.activeTexture(Ci+F),a.bindTexture(_e,null),xt[F]=null),a.deleteTexture(M),y.texture=null,y.params=null,y.pixels=null,y.refCount=0,delete Ft[y.id],R.textureCount--}r(Ye.prototype,{bind:function(){var y=this;y.bindCount+=1;var M=y.unit;if(M<0){for(var F=0;F<Bt;++F){var _e=xt[F];if(_e){if(_e.bindCount>0)continue;_e.unit=-1}xt[F]=y,M=F;break}M>=Bt&&d.raise("insufficient number of texture units"),B.profile&&R.maxTextureUnits<M+1&&(R.maxTextureUnits=M+1),y.unit=M,a.activeTexture(Ci+M),a.bindTexture(y.target,y.texture)}return M},unbind:function(){this.bindCount-=1},decRef:function(){--this.refCount<=0&&Fe(this)}});function et(y,M){var F=new Ye(An);Ft[F.id]=F,R.textureCount++;function _e(c,T){var C=F.texInfo;ht.call(C);var I=tt();return typeof c=="number"?typeof T=="number"?He(I,c|0,T|0):He(I,c|0,c|0):c?(d.type(c,"object","invalid arguments to regl.texture"),Tt(C,c),Je(I,c)):He(I,1,1),C.genMipmaps&&(I.mipmask=(I.width<<1)-1),F.mipmask=I.mipmask,H(F,I),d.texture2D(C,I,_),F.internalformat=I.internalformat,_e.width=I.width,_e.height=I.height,Ut(F),vt(I,An),Ct(C,An),at(),Et(I),B.profile&&(F.stats.size=Zo(F.internalformat,F.type,I.width,I.height,C.genMipmaps,!1)),_e.format=te[F.internalformat],_e.type=xe[F.type],_e.mag=Z[C.magFilter],_e.min=ge[C.minFilter],_e.wrapS=me[C.wrapS],_e.wrapT=me[C.wrapT],_e}function Ke(c,T,C,I){d(!!c,"must specify image data");var A=T|0,w=C|0,E=I|0,v=pe();return H(v,F),v.width=0,v.height=0,he(v,c),v.width=v.width||(F.width>>E)-A,v.height=v.height||(F.height>>E)-w,d(F.type===v.type&&F.format===v.format&&F.internalformat===v.internalformat,"incompatible format for texture.subimage"),d(A>=0&&w>=0&&A+v.width<=F.width&&w+v.height<=F.height,"texture.subimage write out of bounds"),d(F.mipmask&1<<E,"missing mipmap data"),d(v.data||v.element||v.needsCopy,"missing image data"),Ut(F),$e(v,An,A,w,E),at(),ye(v),_e}function m(c,T){var C=c|0,I=T|0||C;if(C===F.width&&I===F.height)return _e;_e.width=F.width=C,_e.height=F.height=I,Ut(F);for(var A=0;F.mipmask>>A;++A){var w=C>>A,E=I>>A;if(!w||!E)break;a.texImage2D(An,A,F.format,w,E,0,F.format,F.type,null)}return at(),B.profile&&(F.stats.size=Zo(F.internalformat,F.type,C,I,!1,!1)),_e}return _e(y,M),_e.subimage=Ke,_e.resize=m,_e._reglType="texture2d",_e._texture=F,B.profile&&(_e.stats=F.stats),_e.destroy=function(){F.decRef()},_e}function rt(y,M,F,_e,Ke,m){var c=new Ye(ys);Ft[c.id]=c,R.cubeCount++;var T=new Array(6);function C(w,E,v,b,g,D){var L,$=c.texInfo;for(ht.call($),L=0;L<6;++L)T[L]=tt();if(typeof w=="number"||!w){var j=w|0||1;for(L=0;L<6;++L)He(T[L],j,j)}else if(typeof w=="object")if(E)Je(T[0],w),Je(T[1],E),Je(T[2],v),Je(T[3],b),Je(T[4],g),Je(T[5],D);else if(Tt($,w),Se(c,w),"faces"in w){var ue=w.faces;for(d(Array.isArray(ue)&&ue.length===6,"cube faces must be a length 6 array"),L=0;L<6;++L)d(typeof ue[L]=="object"&&!!ue[L],"invalid input for cube map face"),H(T[L],c),Je(T[L],ue[L])}else for(L=0;L<6;++L)Je(T[L],w);else d.raise("invalid arguments to cube map");for(H(c,T[0]),d.optional(function(){_.npotTextureCube||d(pl(c.width)&&pl(c.height),"your browser does not support non power or two texture dimensions")}),$.genMipmaps?c.mipmask=(T[0].width<<1)-1:c.mipmask=T[0].mipmask,d.textureCube(c,$,T,_),c.internalformat=T[0].internalformat,C.width=T[0].width,C.height=T[0].height,Ut(c),L=0;L<6;++L)vt(T[L],Ho+L);for(Ct($,ys),at(),B.profile&&(c.stats.size=Zo(c.internalformat,c.type,C.width,C.height,$.genMipmaps,!0)),C.format=te[c.internalformat],C.type=xe[c.type],C.mag=Z[$.magFilter],C.min=ge[$.minFilter],C.wrapS=me[$.wrapS],C.wrapT=me[$.wrapT],L=0;L<6;++L)Et(T[L]);return C}function I(w,E,v,b,g){d(!!E,"must specify image data"),d(typeof w=="number"&&w===(w|0)&&w>=0&&w<6,"invalid face");var D=v|0,L=b|0,$=g|0,j=pe();return H(j,c),j.width=0,j.height=0,he(j,E),j.width=j.width||(c.width>>$)-D,j.height=j.height||(c.height>>$)-L,d(c.type===j.type&&c.format===j.format&&c.internalformat===j.internalformat,"incompatible format for texture.subimage"),d(D>=0&&L>=0&&D+j.width<=c.width&&L+j.height<=c.height,"texture.subimage write out of bounds"),d(c.mipmask&1<<$,"missing mipmap data"),d(j.data||j.element||j.needsCopy,"missing image data"),Ut(c),$e(j,Ho+w,D,L,$),at(),ye(j),C}function A(w){var E=w|0;if(E!==c.width){C.width=c.width=E,C.height=c.height=E,Ut(c);for(var v=0;v<6;++v)for(var b=0;c.mipmask>>b;++b)a.texImage2D(Ho+v,b,c.format,E>>b,E>>b,0,c.format,c.type,null);return at(),B.profile&&(c.stats.size=Zo(c.internalformat,c.type,C.width,C.height,!1,!0)),C}}return C(y,M,F,_e,Ke,m),C.subimage=I,C.resize=A,C._reglType="textureCube",C._texture=c,B.profile&&(C.stats=c.stats),C.destroy=function(){c.decRef()},C}function bt(){for(var y=0;y<Bt;++y)a.activeTexture(Ci+y),a.bindTexture(An,null),xt[y]=null;rn(Ft).forEach(Fe),R.cubeCount=0,R.textureCount=0}B.profile&&(R.getTotalTextureSize=function(){var y=0;return Object.keys(Ft).forEach(function(M){y+=Ft[M].stats.size}),y});function Cn(){for(var y=0;y<Bt;++y){var M=xt[y];M&&(M.bindCount=0,M.unit=-1,xt[y]=null)}rn(Ft).forEach(function(F){F.texture=a.createTexture(),a.bindTexture(F.target,F.texture);for(var _e=0;_e<32;++_e)if((F.mipmask&1<<_e)!==0)if(F.target===An)a.texImage2D(An,_e,F.internalformat,F.width>>_e,F.height>>_e,0,F.internalformat,F.type,null);else for(var Ke=0;Ke<6;++Ke)a.texImage2D(Ho+Ke,_e,F.internalformat,F.width>>_e,F.height>>_e,0,F.internalformat,F.type,null);Ct(F.texInfo,F.target)})}function wr(){for(var y=0;y<Bt;++y){var M=xt[y];M&&(M.bindCount=0,M.unit=-1,xt[y]=null),a.activeTexture(Ci+y),a.bindTexture(An,null),a.bindTexture(ys,null)}}return{create2D:et,createCube:rt,clear:bt,getTexture:function(y){return null},restore:Cn,refresh:wr}}var Zn=36161,Qo=32854,Vl=32855,$l=36194,Hl=33189,Xl=36168,Wl=34041,jl=35907,ql=34836,Yl=34842,Zl=34843,xn=[];xn[Qo]=2,xn[Vl]=2,xn[$l]=2,xn[Hl]=2,xn[Xl]=1,xn[Wl]=4,xn[jl]=4,xn[ql]=16,xn[Yl]=8,xn[Zl]=6;function Ql(a,h,_){return xn[a]*h*_}var jy=function(a,h,_,O,X){var R={rgba4:Qo,rgb565:$l,"rgb5 a1":Vl,depth:Hl,stencil:Xl,"depth stencil":Wl};h.ext_srgb&&(R.srgba=jl),h.ext_color_buffer_half_float&&(R.rgba16f=Yl,R.rgb16f=Zl),h.webgl_color_buffer_float&&(R.rgba32f=ql);var B=[];Object.keys(R).forEach(function(J){var ne=R[J];B[ne]=J});var K=0,Q={};function ie(J){this.id=K++,this.refCount=1,this.renderbuffer=J,this.format=Qo,this.width=0,this.height=0,X.profile&&(this.stats={size:0})}ie.prototype.decRef=function(){--this.refCount<=0&&ae(this)};function ae(J){var ne=J.renderbuffer;d(ne,"must not double destroy renderbuffer"),a.bindRenderbuffer(Zn,null),a.deleteRenderbuffer(ne),J.renderbuffer=null,J.refCount=0,delete Q[J.id],O.renderbufferCount--}function oe(J,ne){var k=new ie(a.createRenderbuffer());Q[k.id]=k,O.renderbufferCount++;function G(xe,Z){var ge=0,me=0,De=Qo;if(typeof xe=="object"&&xe){var W=xe;if("shape"in W){var H=W.shape;d(Array.isArray(H)&&H.length>=2,"invalid renderbuffer shape"),ge=H[0]|0,me=H[1]|0}else"radius"in W&&(ge=me=W.radius|0),"width"in W&&(ge=W.width|0),"height"in W&&(me=W.height|0);"format"in W&&(d.parameter(W.format,R,"invalid renderbuffer format"),De=R[W.format])}else typeof xe=="number"?(ge=xe|0,typeof Z=="number"?me=Z|0:me=ge):xe?d.raise("invalid arguments to renderbuffer constructor"):ge=me=1;if(d(ge>0&&me>0&&ge<=_.maxRenderbufferSize&&me<=_.maxRenderbufferSize,"invalid renderbuffer size"),!(ge===k.width&&me===k.height&&De===k.format))return G.width=k.width=ge,G.height=k.height=me,k.format=De,a.bindRenderbuffer(Zn,k.renderbuffer),a.renderbufferStorage(Zn,De,ge,me),d(a.getError()===0,"invalid render buffer format"),X.profile&&(k.stats.size=Ql(k.format,k.width,k.height)),G.format=B[k.format],G}function te(xe,Z){var ge=xe|0,me=Z|0||ge;return ge===k.width&&me===k.height||(d(ge>0&&me>0&&ge<=_.maxRenderbufferSize&&me<=_.maxRenderbufferSize,"invalid renderbuffer size"),G.width=k.width=ge,G.height=k.height=me,a.bindRenderbuffer(Zn,k.renderbuffer),a.renderbufferStorage(Zn,k.format,ge,me),d(a.getError()===0,"invalid render buffer format"),X.profile&&(k.stats.size=Ql(k.format,k.width,k.height))),G}return G(J,ne),G.resize=te,G._reglType="renderbuffer",G._renderbuffer=k,X.profile&&(G.stats=k.stats),G.destroy=function(){k.decRef()},G}X.profile&&(O.getTotalRenderbufferSize=function(){var J=0;return Object.keys(Q).forEach(function(ne){J+=Q[ne].stats.size}),J});function le(){rn(Q).forEach(function(J){J.renderbuffer=a.createRenderbuffer(),a.bindRenderbuffer(Zn,J.renderbuffer),a.renderbufferStorage(Zn,J.format,J.width,J.height)}),a.bindRenderbuffer(Zn,null)}return{create:oe,clear:function(){rn(Q).forEach(ae)},restore:le}},Nn=36160,Rs=36161,yr=3553,Ko=34069,Kl=36064,Jl=36096,ec=36128,tc=33306,nc=36053,qy=36054,Yy=36055,Zy=36057,Qy=36061,Ky=36193,Jy=5121,ex=5126,rc=6407,ic=6408,tx=6402,nx=[rc,ic],Os=[];Os[ic]=4,Os[rc]=3;var Jo=[];Jo[Jy]=1,Jo[ex]=4,Jo[Ky]=2;var rx=32854,ix=32855,ox=36194,ax=33189,sx=36168,oc=34041,fx=35907,ux=34836,lx=34842,cx=34843,hx=[rx,ix,ox,fx,lx,cx,ux],jr={};jr[nc]="complete",jr[qy]="incomplete attachment",jr[Zy]="incomplete dimensions",jr[Yy]="incomplete, missing attachment",jr[Qy]="unsupported";function dx(a,h,_,O,X,R){var B={cur:null,next:null,dirty:!1,setFBO:null},K=["rgba"],Q=["rgba4","rgb565","rgb5 a1"];h.ext_srgb&&Q.push("srgba"),h.ext_color_buffer_half_float&&Q.push("rgba16f","rgb16f"),h.webgl_color_buffer_float&&Q.push("rgba32f");var ie=["uint8"];h.oes_texture_half_float&&ie.push("half float","float16"),h.oes_texture_float&&ie.push("float","float32");function ae(ee,he,de){this.target=ee,this.texture=he,this.renderbuffer=de;var $e=0,Be=0;he?($e=he.width,Be=he.height):de&&($e=de.width,Be=de.height),this.width=$e,this.height=Be}function oe(ee){ee&&(ee.texture&&ee.texture._texture.decRef(),ee.renderbuffer&&ee.renderbuffer._renderbuffer.decRef())}function le(ee,he,de){if(ee)if(ee.texture){var $e=ee.texture._texture,Be=Math.max(1,$e.width),pe=Math.max(1,$e.height);d(Be===he&&pe===de,"inconsistent width/height for supplied texture"),$e.refCount+=1}else{var ye=ee.renderbuffer._renderbuffer;d(ye.width===he&&ye.height===de,"inconsistent width/height for renderbuffer"),ye.refCount+=1}}function J(ee,he){he&&(he.texture?a.framebufferTexture2D(Nn,ee,he.target,he.texture._texture.texture,0):a.framebufferRenderbuffer(Nn,ee,Rs,he.renderbuffer._renderbuffer.renderbuffer))}function ne(ee){var he=yr,de=null,$e=null,Be=ee;typeof ee=="object"&&(Be=ee.data,"target"in ee&&(he=ee.target|0)),d.type(Be,"function","invalid attachment data");var pe=Be._reglType;return pe==="texture2d"?(de=Be,d(he===yr)):pe==="textureCube"?(de=Be,d(he>=Ko&&he<Ko+6,"invalid cube map target")):pe==="renderbuffer"?($e=Be,he=Rs):d.raise("invalid regl object for attachment"),new ae(he,de,$e)}function k(ee,he,de,$e,Be){if(de){var pe=O.create2D({width:ee,height:he,format:$e,type:Be});return pe._texture.refCount=0,new ae(yr,pe,null)}else{var ye=X.create({width:ee,height:he,format:$e});return ye._renderbuffer.refCount=0,new ae(Rs,null,ye)}}function G(ee){return ee&&(ee.texture||ee.renderbuffer)}function te(ee,he,de){ee&&(ee.texture?ee.texture.resize(he,de):ee.renderbuffer&&ee.renderbuffer.resize(he,de),ee.width=he,ee.height=de)}var xe=0,Z={};function ge(){this.id=xe++,Z[this.id]=this,this.framebuffer=a.createFramebuffer(),this.width=0,this.height=0,this.colorAttachments=[],this.depthAttachment=null,this.stencilAttachment=null,this.depthStencilAttachment=null}function me(ee){ee.colorAttachments.forEach(oe),oe(ee.depthAttachment),oe(ee.stencilAttachment),oe(ee.depthStencilAttachment)}function De(ee){var he=ee.framebuffer;d(he,"must not double destroy framebuffer"),a.deleteFramebuffer(he),ee.framebuffer=null,R.framebufferCount--,delete Z[ee.id]}function W(ee){var he;a.bindFramebuffer(Nn,ee.framebuffer);var de=ee.colorAttachments;for(he=0;he<de.length;++he)J(Kl+he,de[he]);for(he=de.length;he<_.maxColorAttachments;++he)a.framebufferTexture2D(Nn,Kl+he,yr,null,0);a.framebufferTexture2D(Nn,tc,yr,null,0),a.framebufferTexture2D(Nn,Jl,yr,null,0),a.framebufferTexture2D(Nn,ec,yr,null,0),J(Jl,ee.depthAttachment),J(ec,ee.stencilAttachment),J(tc,ee.depthStencilAttachment);var $e=a.checkFramebufferStatus(Nn);!a.isContextLost()&&$e!==nc&&d.raise("framebuffer configuration not supported, status = "+jr[$e]),a.bindFramebuffer(Nn,B.next?B.next.framebuffer:null),B.cur=B.next,a.getError()}function H(ee,he){var de=new ge;R.framebufferCount++;function $e(pe,ye){var Re;d(B.next!==de,"can not update framebuffer which is currently in use");var He=0,Je=0,vt=!0,yt=!0,tt=null,Et=!0,ht="rgba",Tt="uint8",Ct=1,Pt=null,Ft=null,Bt=null,xt=!1;if(typeof pe=="number")He=pe|0,Je=ye|0||He;else if(!pe)He=Je=1;else{d.type(pe,"object","invalid arguments for framebuffer");var Ye=pe;if("shape"in Ye){var Ut=Ye.shape;d(Array.isArray(Ut)&&Ut.length>=2,"invalid shape for framebuffer"),He=Ut[0],Je=Ut[1]}else"radius"in Ye&&(He=Je=Ye.radius),"width"in Ye&&(He=Ye.width),"height"in Ye&&(Je=Ye.height);("color"in Ye||"colors"in Ye)&&(tt=Ye.color||Ye.colors,Array.isArray(tt)&&d(tt.length===1||h.webgl_draw_buffers,"multiple render targets not supported")),tt||("colorCount"in Ye&&(Ct=Ye.colorCount|0,d(Ct>0,"invalid color buffer count")),"colorTexture"in Ye&&(Et=!!Ye.colorTexture,ht="rgba4"),"colorType"in Ye&&(Tt=Ye.colorType,Et?(d(h.oes_texture_float||!(Tt==="float"||Tt==="float32"),"you must enable OES_texture_float in order to use floating point framebuffer objects"),d(h.oes_texture_half_float||!(Tt==="half float"||Tt==="float16"),"you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects")):Tt==="half float"||Tt==="float16"?(d(h.ext_color_buffer_half_float,"you must enable EXT_color_buffer_half_float to use 16-bit render buffers"),ht="rgba16f"):(Tt==="float"||Tt==="float32")&&(d(h.webgl_color_buffer_float,"you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers"),ht="rgba32f"),d.oneOf(Tt,ie,"invalid color type")),"colorFormat"in Ye&&(ht=Ye.colorFormat,K.indexOf(ht)>=0?Et=!0:Q.indexOf(ht)>=0?Et=!1:d.optional(function(){Et?d.oneOf(Ye.colorFormat,K,"invalid color format for texture"):d.oneOf(Ye.colorFormat,Q,"invalid color format for renderbuffer")}))),("depthTexture"in Ye||"depthStencilTexture"in Ye)&&(xt=!!(Ye.depthTexture||Ye.depthStencilTexture),d(!xt||h.webgl_depth_texture,"webgl_depth_texture extension not supported")),"depth"in Ye&&(typeof Ye.depth=="boolean"?vt=Ye.depth:(Pt=Ye.depth,yt=!1)),"stencil"in Ye&&(typeof Ye.stencil=="boolean"?yt=Ye.stencil:(Ft=Ye.stencil,vt=!1)),"depthStencil"in Ye&&(typeof Ye.depthStencil=="boolean"?vt=yt=Ye.depthStencil:(Bt=Ye.depthStencil,vt=!1,yt=!1))}var at=null,Fe=null,et=null,rt=null;if(Array.isArray(tt))at=tt.map(ne);else if(tt)at=[ne(tt)];else for(at=new Array(Ct),Re=0;Re<Ct;++Re)at[Re]=k(He,Je,Et,ht,Tt);d(h.webgl_draw_buffers||at.length<=1,"you must enable the WEBGL_draw_buffers extension in order to use multiple color buffers."),d(at.length<=_.maxColorAttachments,"too many color attachments, not supported"),He=He||at[0].width,Je=Je||at[0].height,Pt?Fe=ne(Pt):vt&&!yt&&(Fe=k(He,Je,xt,"depth","uint32")),Ft?et=ne(Ft):yt&&!vt&&(et=k(He,Je,!1,"stencil","uint8")),Bt?rt=ne(Bt):!Pt&&!Ft&&yt&&vt&&(rt=k(He,Je,xt,"depth stencil","depth stencil")),d(!!Pt+!!Ft+!!Bt<=1,"invalid framebuffer configuration, can specify exactly one depth/stencil attachment");var bt=null;for(Re=0;Re<at.length;++Re)if(le(at[Re],He,Je),d(!at[Re]||at[Re].texture&&nx.indexOf(at[Re].texture._texture.format)>=0||at[Re].renderbuffer&&hx.indexOf(at[Re].renderbuffer._renderbuffer.format)>=0,"framebuffer color attachment "+Re+" is invalid"),at[Re]&&at[Re].texture){var Cn=Os[at[Re].texture._texture.format]*Jo[at[Re].texture._texture.type];bt===null?bt=Cn:d(bt===Cn,"all color attachments much have the same number of bits per pixel.")}return le(Fe,He,Je),d(!Fe||Fe.texture&&Fe.texture._texture.format===tx||Fe.renderbuffer&&Fe.renderbuffer._renderbuffer.format===ax,"invalid depth attachment for framebuffer object"),le(et,He,Je),d(!et||et.renderbuffer&&et.renderbuffer._renderbuffer.format===sx,"invalid stencil attachment for framebuffer object"),le(rt,He,Je),d(!rt||rt.texture&&rt.texture._texture.format===oc||rt.renderbuffer&&rt.renderbuffer._renderbuffer.format===oc,"invalid depth-stencil attachment for framebuffer object"),me(de),de.width=He,de.height=Je,de.colorAttachments=at,de.depthAttachment=Fe,de.stencilAttachment=et,de.depthStencilAttachment=rt,$e.color=at.map(G),$e.depth=G(Fe),$e.stencil=G(et),$e.depthStencil=G(rt),$e.width=de.width,$e.height=de.height,W(de),$e}function Be(pe,ye){d(B.next!==de,"can not resize a framebuffer which is currently in use");var Re=Math.max(pe|0,1),He=Math.max(ye|0||Re,1);if(Re===de.width&&He===de.height)return $e;for(var Je=de.colorAttachments,vt=0;vt<Je.length;++vt)te(Je[vt],Re,He);return te(de.depthAttachment,Re,He),te(de.stencilAttachment,Re,He),te(de.depthStencilAttachment,Re,He),de.width=$e.width=Re,de.height=$e.height=He,W(de),$e}return $e(ee,he),r($e,{resize:Be,_reglType:"framebuffer",_framebuffer:de,destroy:function(){De(de),me(de)},use:function(pe){B.setFBO({framebuffer:$e},pe)}})}function Se(ee){var he=Array(6);function de(Be){var pe;d(he.indexOf(B.next)<0,"can not update framebuffer which is currently in use");var ye={color:null},Re=0,He=null,Je="rgba",vt="uint8",yt=1;if(typeof Be=="number")Re=Be|0;else if(!Be)Re=1;else{d.type(Be,"object","invalid arguments for framebuffer");var tt=Be;if("shape"in tt){var Et=tt.shape;d(Array.isArray(Et)&&Et.length>=2,"invalid shape for framebuffer"),d(Et[0]===Et[1],"cube framebuffer must be square"),Re=Et[0]}else"radius"in tt&&(Re=tt.radius|0),"width"in tt?(Re=tt.width|0,"height"in tt&&d(tt.height===Re,"must be square")):"height"in tt&&(Re=tt.height|0);("color"in tt||"colors"in tt)&&(He=tt.color||tt.colors,Array.isArray(He)&&d(He.length===1||h.webgl_draw_buffers,"multiple render targets not supported")),He||("colorCount"in tt&&(yt=tt.colorCount|0,d(yt>0,"invalid color buffer count")),"colorType"in tt&&(d.oneOf(tt.colorType,ie,"invalid color type"),vt=tt.colorType),"colorFormat"in tt&&(Je=tt.colorFormat,d.oneOf(tt.colorFormat,K,"invalid color format for texture"))),"depth"in tt&&(ye.depth=tt.depth),"stencil"in tt&&(ye.stencil=tt.stencil),"depthStencil"in tt&&(ye.depthStencil=tt.depthStencil)}var ht;if(He)if(Array.isArray(He))for(ht=[],pe=0;pe<He.length;++pe)ht[pe]=He[pe];else ht=[He];else{ht=Array(yt);var Tt={radius:Re,format:Je,type:vt};for(pe=0;pe<yt;++pe)ht[pe]=O.createCube(Tt)}for(ye.color=Array(ht.length),pe=0;pe<ht.length;++pe){var Ct=ht[pe];d(typeof Ct=="function"&&Ct._reglType==="textureCube","invalid cube map"),Re=Re||Ct.width,d(Ct.width===Re&&Ct.height===Re,"invalid cube map shape"),ye.color[pe]={target:Ko,data:ht[pe]}}for(pe=0;pe<6;++pe){for(var Pt=0;Pt<ht.length;++Pt)ye.color[Pt].target=Ko+pe;pe>0&&(ye.depth=he[0].depth,ye.stencil=he[0].stencil,ye.depthStencil=he[0].depthStencil),he[pe]?he[pe](ye):he[pe]=H(ye)}return r(de,{width:Re,height:Re,color:ht})}function $e(Be){var pe,ye=Be|0;if(d(ye>0&&ye<=_.maxCubeMapSize,"invalid radius for cube fbo"),ye===de.width)return de;var Re=de.color;for(pe=0;pe<Re.length;++pe)Re[pe].resize(ye);for(pe=0;pe<6;++pe)he[pe].resize(ye);return de.width=de.height=ye,de}return de(ee),r(de,{faces:he,resize:$e,_reglType:"framebufferCube",destroy:function(){he.forEach(function(Be){Be.destroy()})}})}function ce(){B.cur=null,B.next=null,B.dirty=!0,rn(Z).forEach(function(ee){ee.framebuffer=a.createFramebuffer(),W(ee)})}return r(B,{getFramebuffer:function(ee){if(typeof ee=="function"&&ee._reglType==="framebuffer"){var he=ee._framebuffer;if(he instanceof ge)return he}return null},create:H,createCube:Se,clear:function(){rn(Z).forEach(De)},restore:ce})}var mx=5126,ac=34962,ea=34963,sc=["attributes","elements","offset","count","primitive","instances"];function Ms(){this.state=0,this.x=0,this.y=0,this.z=0,this.w=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=mx,this.offset=0,this.stride=0,this.divisor=0}function px(a,h,_,O,X,R,B){for(var K=_.maxAttributes,Q=new Array(K),ie=0;ie<K;++ie)Q[ie]=new Ms;var ae=0,oe={},le={Record:Ms,scope:{},state:Q,currentVAO:null,targetVAO:null,restore:ne()?me:function(){},createVAO:De,getVAO:G,destroyBuffer:J,setVAO:ne()?te:xe,clear:ne()?Z:function(){}};function J(W){for(var H=0;H<Q.length;++H){var Se=Q[H];Se.buffer===W&&(a.disableVertexAttribArray(H),Se.buffer=null)}}function ne(){return h.oes_vertex_array_object}function k(){return h.angle_instanced_arrays}function G(W){return typeof W=="function"&&W._vao?W._vao:null}function te(W){if(W!==le.currentVAO){var H=ne();W?H.bindVertexArrayOES(W.vao):H.bindVertexArrayOES(null),le.currentVAO=W}}function xe(W){if(W!==le.currentVAO){if(W)W.bindAttrs();else{for(var H=k(),Se=0;Se<Q.length;++Se){var ce=Q[Se];ce.buffer?(a.enableVertexAttribArray(Se),ce.buffer.bind(),a.vertexAttribPointer(Se,ce.size,ce.type,ce.normalized,ce.stride,ce.offfset),H&&ce.divisor&&H.vertexAttribDivisorANGLE(Se,ce.divisor)):(a.disableVertexAttribArray(Se),a.vertexAttrib4f(Se,ce.x,ce.y,ce.z,ce.w))}B.elements?a.bindBuffer(ea,B.elements.buffer.buffer):a.bindBuffer(ea,null)}le.currentVAO=W}}function Z(){rn(oe).forEach(function(W){W.destroy()})}function ge(){this.id=++ae,this.attributes=[],this.elements=null,this.ownsElements=!1,this.count=0,this.offset=0,this.instances=-1,this.primitive=4;var W=ne();W?this.vao=W.createVertexArrayOES():this.vao=null,oe[this.id]=this,this.buffers=[]}ge.prototype.bindAttrs=function(){for(var W=k(),H=this.attributes,Se=0;Se<H.length;++Se){var ce=H[Se];ce.buffer?(a.enableVertexAttribArray(Se),a.bindBuffer(ac,ce.buffer.buffer),a.vertexAttribPointer(Se,ce.size,ce.type,ce.normalized,ce.stride,ce.offset),W&&ce.divisor&&W.vertexAttribDivisorANGLE(Se,ce.divisor)):(a.disableVertexAttribArray(Se),a.vertexAttrib4f(Se,ce.x,ce.y,ce.z,ce.w))}for(var ee=H.length;ee<K;++ee)a.disableVertexAttribArray(ee);var he=R.getElements(this.elements);he?a.bindBuffer(ea,he.buffer.buffer):a.bindBuffer(ea,null)},ge.prototype.refresh=function(){var W=ne();W&&(W.bindVertexArrayOES(this.vao),this.bindAttrs(),le.currentVAO=null,W.bindVertexArrayOES(null))},ge.prototype.destroy=function(){if(this.vao){var W=ne();this===le.currentVAO&&(le.currentVAO=null,W.bindVertexArrayOES(null)),W.deleteVertexArrayOES(this.vao),this.vao=null}this.ownsElements&&(this.elements.destroy(),this.elements=null,this.ownsElements=!1),oe[this.id]&&(delete oe[this.id],O.vaoCount-=1)};function me(){var W=ne();W&&rn(oe).forEach(function(H){H.refresh()})}function De(W){var H=new ge;O.vaoCount+=1;function Se(ce){var ee;if(Array.isArray(ce))ee=ce,H.elements&&H.ownsElements&&H.elements.destroy(),H.elements=null,H.ownsElements=!1,H.offset=0,H.count=0,H.instances=-1,H.primitive=4;else{if(d(typeof ce=="object","invalid arguments for create vao"),d("attributes"in ce,"must specify attributes for vao"),ce.elements){var he=ce.elements;H.ownsElements?typeof he=="function"&&he._reglType==="elements"?(H.elements.destroy(),H.ownsElements=!1):(H.elements(he),H.ownsElements=!1):R.getElements(ce.elements)?(H.elements=ce.elements,H.ownsElements=!1):(H.elements=R.create(ce.elements),H.ownsElements=!0)}else H.elements=null,H.ownsElements=!1;ee=ce.attributes,H.offset=0,H.count=-1,H.instances=-1,H.primitive=4,H.elements&&(H.count=H.elements._elements.vertCount,H.primitive=H.elements._elements.primType),"offset"in ce&&(H.offset=ce.offset|0),"count"in ce&&(H.count=ce.count|0),"instances"in ce&&(H.instances=ce.instances|0),"primitive"in ce&&(d(ce.primitive in Yn,"bad primitive type: "+ce.primitive),H.primitive=Yn[ce.primitive]),d.optional(()=>{for(var vt=Object.keys(ce),yt=0;yt<vt.length;++yt)d(sc.indexOf(vt[yt])>=0,'invalid option for vao: "'+vt[yt]+'" valid options are '+sc)}),d(Array.isArray(ee),"attributes must be an array")}d(ee.length<K,"too many attributes"),d(ee.length>0,"must specify at least one attribute");var de={},$e=H.attributes;$e.length=ee.length;for(var Be=0;Be<ee.length;++Be){var pe=ee[Be],ye=$e[Be]=new Ms,Re=pe.data||pe;if(Array.isArray(Re)||n(Re)||yn(Re)){var He;H.buffers[Be]&&(He=H.buffers[Be],n(Re)&&He._buffer.byteLength>=Re.byteLength?He.subdata(Re):(He.destroy(),H.buffers[Be]=null)),H.buffers[Be]||(He=H.buffers[Be]=X.create(pe,ac,!1,!0)),ye.buffer=X.getBuffer(He),ye.size=ye.buffer.dimension|0,ye.normalized=!1,ye.type=ye.buffer.dtype,ye.offset=0,ye.stride=0,ye.divisor=0,ye.state=1,de[Be]=1}else X.getBuffer(pe)?(ye.buffer=X.getBuffer(pe),ye.size=ye.buffer.dimension|0,ye.normalized=!1,ye.type=ye.buffer.dtype,ye.offset=0,ye.stride=0,ye.divisor=0,ye.state=1):X.getBuffer(pe.buffer)?(ye.buffer=X.getBuffer(pe.buffer),ye.size=(+pe.size||ye.buffer.dimension)|0,ye.normalized=!!pe.normalized||!1,"type"in pe?(d.parameter(pe.type,mr,"invalid buffer type"),ye.type=mr[pe.type]):ye.type=ye.buffer.dtype,ye.offset=(pe.offset||0)|0,ye.stride=(pe.stride||0)|0,ye.divisor=(pe.divisor||0)|0,ye.state=1,d(ye.size>=1&&ye.size<=4,"size must be between 1 and 4"),d(ye.offset>=0,"invalid offset"),d(ye.stride>=0&&ye.stride<=255,"stride must be between 0 and 255"),d(ye.divisor>=0,"divisor must be positive"),d(!ye.divisor||!!h.angle_instanced_arrays,"ANGLE_instanced_arrays must be enabled to use divisor")):"x"in pe?(d(Be>0,"first attribute must not be a constant"),ye.x=+pe.x||0,ye.y=+pe.y||0,ye.z=+pe.z||0,ye.w=+pe.w||0,ye.state=2):d(!1,"invalid attribute spec for location "+Be)}for(var Je=0;Je<H.buffers.length;++Je)!de[Je]&&H.buffers[Je]&&(H.buffers[Je].destroy(),H.buffers[Je]=null);return H.refresh(),Se}return Se.destroy=function(){for(var ce=0;ce<H.buffers.length;++ce)H.buffers[ce]&&H.buffers[ce].destroy();H.buffers.length=0,H.ownsElements&&(H.elements.destroy(),H.elements=null,H.ownsElements=!1),H.destroy()},Se._vao=H,Se._reglType="vao",Se(W)}return le}var fc=35632,vx=35633,gx=35718,yx=35721;function xx(a,h,_,O){var X={},R={};function B(k,G,te,xe){this.name=k,this.id=G,this.location=te,this.info=xe}function K(k,G){for(var te=0;te<k.length;++te)if(k[te].id===G.id){k[te].location=G.location;return}k.push(G)}function Q(k,G,te){var xe=k===fc?X:R,Z=xe[G];if(!Z){var ge=h.str(G);Z=a.createShader(k),a.shaderSource(Z,ge),a.compileShader(Z),d.shaderError(a,Z,ge,k,te),xe[G]=Z}return Z}var ie={},ae=[],oe=0;function le(k,G){this.id=oe++,this.fragId=k,this.vertId=G,this.program=null,this.uniforms=[],this.attributes=[],this.refCount=1,O.profile&&(this.stats={uniformsCount:0,attributesCount:0})}function J(k,G,te){var xe,Z,ge=Q(fc,k.fragId),me=Q(vx,k.vertId),De=k.program=a.createProgram();if(a.attachShader(De,ge),a.attachShader(De,me),te)for(xe=0;xe<te.length;++xe){var W=te[xe];a.bindAttribLocation(De,W[0],W[1])}a.linkProgram(De),d.linkError(a,De,h.str(k.fragId),h.str(k.vertId),G);var H=a.getProgramParameter(De,gx);O.profile&&(k.stats.uniformsCount=H);var Se=k.uniforms;for(xe=0;xe<H;++xe)if(Z=a.getActiveUniform(De,xe),Z){if(Z.size>1)for(var ce=0;ce<Z.size;++ce){var ee=Z.name.replace("[0]","["+ce+"]");K(Se,new B(ee,h.id(ee),a.getUniformLocation(De,ee),Z))}var he=Z.name;Z.size>1&&(he=he.replace("[0]","")),K(Se,new B(he,h.id(he),a.getUniformLocation(De,he),Z))}var de=a.getProgramParameter(De,yx);O.profile&&(k.stats.attributesCount=de);var $e=k.attributes;for(xe=0;xe<de;++xe)Z=a.getActiveAttrib(De,xe),Z&&K($e,new B(Z.name,h.id(Z.name),a.getAttribLocation(De,Z.name),Z))}O.profile&&(_.getMaxUniformsCount=function(){var k=0;return ae.forEach(function(G){G.stats.uniformsCount>k&&(k=G.stats.uniformsCount)}),k},_.getMaxAttributesCount=function(){var k=0;return ae.forEach(function(G){G.stats.attributesCount>k&&(k=G.stats.attributesCount)}),k});function ne(){X={},R={};for(var k=0;k<ae.length;++k)J(ae[k],null,ae[k].attributes.map(function(G){return[G.location,G.name]}))}return{clear:function(){var k=a.deleteShader.bind(a);rn(X).forEach(k),X={},rn(R).forEach(k),R={},ae.forEach(function(G){a.deleteProgram(G.program)}),ae.length=0,ie={},_.shaderCount=0},program:function(k,G,te,xe){d.command(k>=0,"missing vertex shader",te),d.command(G>=0,"missing fragment shader",te);var Z=ie[G];Z||(Z=ie[G]={});var ge=Z[k];if(ge&&(ge.refCount++,!xe))return ge;var me=new le(G,k);return _.shaderCount++,J(me,te,xe),ge||(Z[k]=me),ae.push(me),r(me,{destroy:function(){if(me.refCount--,me.refCount<=0){a.deleteProgram(me.program);var De=ae.indexOf(me);ae.splice(De,1),_.shaderCount--}Z[me.vertId].refCount<=0&&(a.deleteShader(R[me.vertId]),delete R[me.vertId],delete ie[me.fragId][me.vertId]),Object.keys(ie[me.fragId]).length||(a.deleteShader(X[me.fragId]),delete X[me.fragId],delete ie[me.fragId])}})},restore:ne,shader:Q,frag:-1,vert:-1}}var bx=6408,Pi=5121,_x=3333,ta=5126;function Sx(a,h,_,O,X,R,B){function K(ae){var oe;h.next===null?(d(X.preserveDrawingBuffer,'you must create a webgl context with "preserveDrawingBuffer":true in order to read pixels from the drawing buffer'),oe=Pi):(d(h.next.colorAttachments[0].texture!==null,"You cannot read from a renderbuffer"),oe=h.next.colorAttachments[0].texture._texture.type,d.optional(function(){R.oes_texture_float?(d(oe===Pi||oe===ta,"Reading from a framebuffer is only allowed for the types 'uint8' and 'float'"),oe===ta&&d(B.readFloat,"Reading 'float' values is not permitted in your browser. For a fallback, please see: https://www.npmjs.com/package/glsl-read-float")):d(oe===Pi,"Reading from a framebuffer is only allowed for the type 'uint8'")}));var le=0,J=0,ne=O.framebufferWidth,k=O.framebufferHeight,G=null;n(ae)?G=ae:ae&&(d.type(ae,"object","invalid arguments to regl.read()"),le=ae.x|0,J=ae.y|0,d(le>=0&&le<O.framebufferWidth,"invalid x offset for regl.read"),d(J>=0&&J<O.framebufferHeight,"invalid y offset for regl.read"),ne=(ae.width||O.framebufferWidth-le)|0,k=(ae.height||O.framebufferHeight-J)|0,G=ae.data||null),G&&(oe===Pi?d(G instanceof Uint8Array,"buffer must be 'Uint8Array' when reading from a framebuffer of type 'uint8'"):oe===ta&&d(G instanceof Float32Array,"buffer must be 'Float32Array' when reading from a framebuffer of type 'float'")),d(ne>0&&ne+le<=O.framebufferWidth,"invalid width for read pixels"),d(k>0&&k+J<=O.framebufferHeight,"invalid height for read pixels"),_();var te=ne*k*4;return G||(oe===Pi?G=new Uint8Array(te):oe===ta&&(G=G||new Float32Array(te))),d.isTypedArray(G,"data buffer for regl.read() must be a typedarray"),d(G.byteLength>=te,"data buffer for regl.read() too small"),a.pixelStorei(_x,4),a.readPixels(le,J,ne,k,bx,oe,G),G}function Q(ae){var oe;return h.setFBO({framebuffer:ae.framebuffer},function(){oe=K(ae)}),oe}function ie(ae){return!ae||!("framebuffer"in ae)?K(ae):Q(ae)}return ie}function qr(a){return Array.prototype.slice.call(a)}function Yr(a){return qr(a).join("")}function Tx(){var a=0,h=[],_=[];function O(oe){for(var le=0;le<_.length;++le)if(_[le]===oe)return h[le];var J="g"+a++;return h.push(J),_.push(oe),J}function X(){var oe=[];function le(){oe.push.apply(oe,qr(arguments))}var J=[];function ne(){var k="v"+a++;return J.push(k),arguments.length>0&&(oe.push(k,"="),oe.push.apply(oe,qr(arguments)),oe.push(";")),k}return r(le,{def:ne,toString:function(){return Yr([J.length>0?"var "+J.join(",")+";":"",Yr(oe)])}})}function R(){var oe=X(),le=X(),J=oe.toString,ne=le.toString;function k(G,te){le(G,te,"=",oe.def(G,te),";")}return r(function(){oe.apply(oe,qr(arguments))},{def:oe.def,entry:oe,exit:le,save:k,set:function(G,te,xe){k(G,te),oe(G,te,"=",xe,";")},toString:function(){return J()+ne()}})}function B(){var oe=Yr(arguments),le=R(),J=R(),ne=le.toString,k=J.toString;return r(le,{then:function(){return le.apply(le,qr(arguments)),this},else:function(){return J.apply(J,qr(arguments)),this},toString:function(){var G=k();return G&&(G="else{"+G+"}"),Yr(["if(",oe,"){",ne(),"}",G])}})}var K=X(),Q={};function ie(oe,le){var J=[];function ne(){var Z="a"+J.length;return J.push(Z),Z}le=le||0;for(var k=0;k<le;++k)ne();var G=R(),te=G.toString,xe=Q[oe]=r(G,{arg:ne,toString:function(){return Yr(["function(",J.join(),"){",te(),"}"])}});return xe}function ae(){var oe=['"use strict";',K,"return {"];Object.keys(Q).forEach(function(ne){oe.push('"',ne,'":',Q[ne].toString(),",")}),oe.push("}");var le=Yr(oe).replace(/;/g,`;
|
|
6
6
|
`).replace(/}/g,`}
|
|
7
7
|
`).replace(/{/g,`{
|
|
8
|
-
`),J=Function.apply(null,h.concat(le));return J.apply(null,_)}return{global:K,link:O,block:j,proc:ie,scope:z,cond:B,compile:ae}}var Zr="xyzw".split(""),uc=5121,Qr=1,Ns=2,Gs=0,Bs=1,Us=2,Vs=3,na=4,lc=5,cc=6,hc="dither",dc="blend.enable",mc="blend.color",$s="blend.equation",Hs="blend.func",pc="depth.enable",vc="depth.func",gc="depth.range",yc="depth.mask",js="colorMask",xc="cull.enable",bc="cull.face",Xs="frontFace",Ws="lineWidth",_c="polygonOffset.enable",qs="polygonOffset.offset",Sc="sample.alpha",Tc="sample.enable",Ys="sample.coverage",wc="stencil.enable",Ac="stencil.mask",Zs="stencil.func",Qs="stencil.opFront",ki="stencil.opBack",Ec="scissor.enable",ra="scissor.box",Gn="viewport",Li="profile",xr="framebuffer",Fi="vert",Ri="frag",br="elements",_r="primitive",Sr="count",ia="offset",oa="instances",Ii="vao",Ks="Width",Js="Height",Kr=xr+Ks,Jr=xr+Js,Tx=Gn+Ks,wx=Gn+Js,Pc="drawingBuffer",Cc=Pc+Ks,kc=Pc+Js,Ax=[Hs,$s,Zs,Qs,ki,Ys,Gn,ra,qs],ei=34962,ef=34963,Ex=35632,Px=35633,Lc=3553,Cx=34067,kx=2884,Lx=3042,Fx=3024,Rx=2960,Ix=2929,Dx=3089,zx=32823,Ox=32926,Mx=32928,tf=5126,aa=35664,sa=35665,fa=35666,nf=5124,ua=35667,la=35668,ca=35669,rf=35670,ha=35671,da=35672,ma=35673,Di=35674,zi=35675,Oi=35676,Mi=35678,Ni=35680,of=4,Gi=1028,Tr=1029,Fc=2304,af=2305,Nx=32775,Gx=32776,Bx=519,Qn=7680,Rc=0,Ic=1,Dc=32774,Ux=513,zc=36160,Vx=36064,En={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},Oc=["constant color, constant alpha","one minus constant color, constant alpha","constant color, one minus constant alpha","one minus constant color, one minus constant alpha","constant alpha, constant color","constant alpha, one minus constant color","one minus constant alpha, constant color","one minus constant alpha, one minus constant color"],ti={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Kn={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},Mc={frag:Ex,vert:Px},sf={cw:Fc,ccw:af};function pa(a){return Array.isArray(a)||n(a)||yn(a)}function Nc(a){return a.sort(function(h,_){return h===Gn?-1:_===Gn?1:h<_?-1:1})}function Rt(a,h,_,O){this.thisDep=a,this.contextDep=h,this.propDep=_,this.append=O}function Jn(a){return a&&!(a.thisDep||a.contextDep||a.propDep)}function St(a){return new Rt(!1,!1,!1,a)}function Kt(a,h){var _=a.type;if(_===Gs){var O=a.data.length;return new Rt(!0,O>=1,O>=2,h)}else if(_===na){var j=a.data;return new Rt(j.thisDep,j.contextDep,j.propDep,h)}else{if(_===lc)return new Rt(!1,!1,!1,h);if(_===cc){for(var z=!1,B=!1,K=!1,Q=0;Q<a.data.length;++Q){var ie=a.data[Q];if(ie.type===Bs)K=!0;else if(ie.type===Us)B=!0;else if(ie.type===Vs)z=!0;else if(ie.type===Gs){z=!0;var ae=ie.data;ae>=1&&(B=!0),ae>=2&&(K=!0)}else ie.type===na&&(z=z||ie.data.thisDep,B=B||ie.data.contextDep,K=K||ie.data.propDep)}return new Rt(z,B,K,h)}else return new Rt(_===Vs,_===Us,_===Bs,h)}}var Gc=new Rt(!1,!1,!1,function(){});function $x(a,h,_,O,j,z,B,K,Q,ie,ae,oe,le,J,ne){var k=ie.Record,G={add:32774,subtract:32778,"reverse subtract":32779};_.ext_blend_minmax&&(G.min=Nx,G.max=Gx);var te=_.angle_instanced_arrays,xe=_.webgl_draw_buffers,Z=_.oes_vertex_array_object,ge={dirty:!0,profile:ne.profile},me={},Fe=[],X={},$={};function Se(m){return m.replace(".","_")}function ce(m,c,T){var P=Se(m);Fe.push(m),me[P]=ge[P]=!!T,X[P]=c}function ee(m,c,T){var P=Se(m);Fe.push(m),Array.isArray(T)?(ge[P]=T.slice(),me[P]=T.slice()):ge[P]=me[P]=T,$[P]=c}ce(hc,Fx),ce(dc,Lx),ee(mc,"blendColor",[0,0,0,0]),ee($s,"blendEquationSeparate",[Dc,Dc]),ee(Hs,"blendFuncSeparate",[Ic,Rc,Ic,Rc]),ce(pc,Ix,!0),ee(vc,"depthFunc",Ux),ee(gc,"depthRange",[0,1]),ee(yc,"depthMask",!0),ee(js,js,[!0,!0,!0,!0]),ce(xc,kx),ee(bc,"cullFace",Tr),ee(Xs,Xs,af),ee(Ws,Ws,1),ce(_c,zx),ee(qs,"polygonOffset",[0,0]),ce(Sc,Ox),ce(Tc,Mx),ee(Ys,"sampleCoverage",[1,!1]),ce(wc,Rx),ee(Ac,"stencilMask",-1),ee(Zs,"stencilFunc",[Bx,0,-1]),ee(Qs,"stencilOpSeparate",[Gi,Qn,Qn,Qn]),ee(ki,"stencilOpSeparate",[Tr,Qn,Qn,Qn]),ce(Ec,Dx),ee(ra,"scissor",[0,0,a.drawingBufferWidth,a.drawingBufferHeight]),ee(Gn,Gn,[0,0,a.drawingBufferWidth,a.drawingBufferHeight]);var he={gl:a,context:le,strings:h,next:me,current:ge,draw:oe,elements:z,buffer:j,shader:ae,attributes:ie.state,vao:ie,uniforms:Q,framebuffer:K,extensions:_,timer:J,isBufferArgs:pa},de={primTypes:Yn,compareFuncs:ti,blendFuncs:En,blendEquations:G,stencilOps:Kn,glTypes:mr,orientationType:sf};d.optional(function(){he.isArrayLike=pt}),xe&&(de.backBuffer=[Tr],de.drawBuffer=Yt(O.maxDrawbuffers,function(m){return m===0?[0]:Yt(m,function(c){return Vx+c})}));var Ve=0;function Ne(){var m=Sx(),c=m.link,T=m.global;m.id=Ve++,m.batchId="0";var P=c(he),L=m.shared={props:"a0"};Object.keys(he).forEach(function(b){L[b]=T.def(P,".",b)}),d.optional(function(){m.CHECK=c(d),m.commandStr=d.guessCommand(),m.command=c(m.commandStr),m.assert=function(b,g,R){b("if(!(",g,"))",this.CHECK,".commandRaise(",c(R),",",this.command,");")},de.invalidBlendCombinations=Oc});var A=m.next={},w=m.current={};Object.keys($).forEach(function(b){Array.isArray(ge[b])&&(A[b]=T.def(L.next,".",b),w[b]=T.def(L.current,".",b))});var E=m.constants={};Object.keys(de).forEach(function(b){E[b]=T.def(JSON.stringify(de[b]))}),m.invoke=function(b,g){switch(g.type){case Gs:var R=["this",L.context,L.props,m.batchId];return b.def(c(g.data),".call(",R.slice(0,Math.max(g.data.length+1,4)),")");case Bs:return b.def(L.props,g.data);case Us:return b.def(L.context,g.data);case Vs:return b.def("this",g.data);case na:return g.data.append(m,b),g.data.ref;case lc:return g.data.toString();case cc:return g.data.map(function(F){return m.invoke(b,F)})}},m.attribCache={};var v={};return m.scopeAttrib=function(b){var g=h.id(b);if(g in v)return v[g];var R=ie.scope[g];R||(R=ie.scope[g]=new k);var F=v[g]=c(R);return F},m}function pe(m){var c=m.static,T=m.dynamic,P;if(Li in c){var L=!!c[Li];P=St(function(w,E){return L}),P.enable=L}else if(Li in T){var A=T[Li];P=Kt(A,function(w,E){return w.invoke(E,A)})}return P}function ye(m,c){var T=m.static,P=m.dynamic;if(xr in T){var L=T[xr];return L?(L=K.getFramebuffer(L),d.command(L,"invalid framebuffer object"),St(function(w,E){var v=w.link(L),b=w.shared;E.set(b.framebuffer,".next",v);var g=b.context;return E.set(g,"."+Kr,v+".width"),E.set(g,"."+Jr,v+".height"),v})):St(function(w,E){var v=w.shared;E.set(v.framebuffer,".next","null");var b=v.context;return E.set(b,"."+Kr,b+"."+Cc),E.set(b,"."+Jr,b+"."+kc),"null"})}else if(xr in P){var A=P[xr];return Kt(A,function(w,E){var v=w.invoke(E,A),b=w.shared,g=b.framebuffer,R=E.def(g,".getFramebuffer(",v,")");d.optional(function(){w.assert(E,"!"+v+"||"+R,"invalid framebuffer object")}),E.set(g,".next",R);var F=b.context;return E.set(F,"."+Kr,R+"?"+R+".width:"+F+"."+Cc),E.set(F,"."+Jr,R+"?"+R+".height:"+F+"."+kc),R})}else return null}function ze(m,c,T){var P=m.static,L=m.dynamic;function A(v){if(v in P){var b=P[v];d.commandType(b,"object","invalid "+v,T.commandStr);var g=!0,R=b.x|0,F=b.y|0,V,W;return"width"in b?(V=b.width|0,d.command(V>=0,"invalid "+v,T.commandStr)):g=!1,"height"in b?(W=b.height|0,d.command(W>=0,"invalid "+v,T.commandStr)):g=!1,new Rt(!g&&c&&c.thisDep,!g&&c&&c.contextDep,!g&&c&&c.propDep,function(Le,be){var q=Le.shared.context,U=V;"width"in b||(U=be.def(q,".",Kr,"-",R));var Pe=W;return"height"in b||(Pe=be.def(q,".",Jr,"-",F)),[R,F,U,Pe]})}else if(v in L){var ue=L[v],Me=Kt(ue,function(Le,be){var q=Le.invoke(be,ue);d.optional(function(){Le.assert(be,q+"&&typeof "+q+'==="object"',"invalid "+v)});var U=Le.shared.context,Pe=be.def(q,".x|0"),we=be.def(q,".y|0"),Oe=be.def('"width" in ',q,"?",q,".width|0:","(",U,".",Kr,"-",Pe,")"),ft=be.def('"height" in ',q,"?",q,".height|0:","(",U,".",Jr,"-",we,")");return d.optional(function(){Le.assert(be,Oe+">=0&&"+ft+">=0","invalid "+v)}),[Pe,we,Oe,ft]});return c&&(Me.thisDep=Me.thisDep||c.thisDep,Me.contextDep=Me.contextDep||c.contextDep,Me.propDep=Me.propDep||c.propDep),Me}else return c?new Rt(c.thisDep,c.contextDep,c.propDep,function(Le,be){var q=Le.shared.context;return[0,0,be.def(q,".",Kr),be.def(q,".",Jr)]}):null}var w=A(Gn);if(w){var E=w;w=new Rt(w.thisDep,w.contextDep,w.propDep,function(v,b){var g=E.append(v,b),R=v.shared.context;return b.set(R,"."+Tx,g[2]),b.set(R,"."+wx,g[3]),g})}return{viewport:w,scissor_box:A(ra)}}function $e(m,c){var T=m.static,P=typeof T[Ri]=="string"&&typeof T[Fi]=="string";if(P){if(Object.keys(c.dynamic).length>0)return null;var L=c.static,A=Object.keys(L);if(A.length>0&&typeof L[A[0]]=="number"){for(var w=[],E=0;E<A.length;++E)d(typeof L[A[E]]=="number","must specify all vertex attribute locations when using vaos"),w.push([L[A[E]]|0,A[E]]);return w}}return null}function Je(m,c,T){var P=m.static,L=m.dynamic;function A(g){if(g in P){var R=h.id(P[g]);d.optional(function(){ae.shader(Mc[g],R,d.guessCommand())});var F=St(function(){return R});return F.id=R,F}else if(g in L){var V=L[g];return Kt(V,function(W,ue){var Me=W.invoke(ue,V),Le=ue.def(W.shared.strings,".id(",Me,")");return d.optional(function(){ue(W.shared.shader,".shader(",Mc[g],",",Le,",",W.command,");")}),Le})}return null}var w=A(Ri),E=A(Fi),v=null,b;return Jn(w)&&Jn(E)?(v=ae.program(E.id,w.id,null,T),b=St(function(g,R){return g.link(v)})):b=new Rt(w&&w.thisDep||E&&E.thisDep,w&&w.contextDep||E&&E.contextDep,w&&w.propDep||E&&E.propDep,function(g,R){var F=g.shared.shader,V;w?V=w.append(g,R):V=R.def(F,".",Ri);var W;E?W=E.append(g,R):W=R.def(F,".",Fi);var ue=F+".program("+W+","+V;return d.optional(function(){ue+=","+g.command}),R.def(ue+")")}),{frag:w,vert:E,progVar:b,program:v}}function vt(m,c){var T=m.static,P=m.dynamic,L={},A=!1;function w(){if(Ii in T){var be=T[Ii];return be!==null&&ie.getVAO(be)===null&&(be=ie.createVAO(be)),A=!0,L.vao=be,St(function(U){var Pe=ie.getVAO(be);return Pe?U.link(Pe):"null"})}else if(Ii in P){A=!0;var q=P[Ii];return Kt(q,function(U,Pe){var we=U.invoke(Pe,q);return Pe.def(U.shared.vao+".getVAO("+we+")")})}return null}var E=w(),v=!1;function b(){if(br in T){var be=T[br];if(L.elements=be,pa(be)){var q=L.elements=z.create(be,!0);be=z.getElements(q),v=!0}else be&&(be=z.getElements(be),v=!0,d.command(be,"invalid elements",c.commandStr));var U=St(function(we,Oe){if(be){var ft=we.link(be);return we.ELEMENTS=ft,ft}return we.ELEMENTS=null,null});return U.value=be,U}else if(br in P){v=!0;var Pe=P[br];return Kt(Pe,function(we,Oe){var ft=we.shared,Vt=ft.isBufferArgs,Ar=ft.elements,Bn=we.invoke(Oe,Pe),Cn=Oe.def("null"),er=Oe.def(Vt,"(",Bn,")"),Er=we.cond(er).then(Cn,"=",Ar,".createStream(",Bn,");").else(Cn,"=",Ar,".getElements(",Bn,");");return d.optional(function(){we.assert(Er.else,"!"+Bn+"||"+Cn,"invalid elements")}),Oe.entry(Er),Oe.exit(we.cond(er).then(Ar,".destroyStream(",Cn,");")),we.ELEMENTS=Cn,Cn})}else if(A)return new Rt(E.thisDep,E.contextDep,E.propDep,function(we,Oe){return Oe.def(we.shared.vao+".currentVAO?"+we.shared.elements+".getElements("+we.shared.vao+".currentVAO.elements):null")});return null}var g=b();function R(){if(_r in T){var be=T[_r];return L.primitive=be,d.commandParameter(be,Yn,"invalid primitve",c.commandStr),St(function(U,Pe){return Yn[be]})}else if(_r in P){var q=P[_r];return Kt(q,function(U,Pe){var we=U.constants.primTypes,Oe=U.invoke(Pe,q);return d.optional(function(){U.assert(Pe,Oe+" in "+we,"invalid primitive, must be one of "+Object.keys(Yn))}),Pe.def(we,"[",Oe,"]")})}else{if(v)return Jn(g)?g.value?St(function(U,Pe){return Pe.def(U.ELEMENTS,".primType")}):St(function(){return of}):new Rt(g.thisDep,g.contextDep,g.propDep,function(U,Pe){var we=U.ELEMENTS;return Pe.def(we,"?",we,".primType:",of)});if(A)return new Rt(E.thisDep,E.contextDep,E.propDep,function(U,Pe){return Pe.def(U.shared.vao+".currentVAO?"+U.shared.vao+".currentVAO.primitive:"+of)})}return null}function F(be,q){if(be in T){var U=T[be]|0;return q?L.offset=U:L.instances=U,d.command(!q||U>=0,"invalid "+be,c.commandStr),St(function(we,Oe){return q&&(we.OFFSET=U),U})}else if(be in P){var Pe=P[be];return Kt(Pe,function(we,Oe){var ft=we.invoke(Oe,Pe);return q&&(we.OFFSET=ft,d.optional(function(){we.assert(Oe,ft+">=0","invalid "+be)})),ft})}else if(q){if(v)return St(function(we,Oe){return we.OFFSET=0,0});if(A)return new Rt(E.thisDep,E.contextDep,E.propDep,function(we,Oe){return Oe.def(we.shared.vao+".currentVAO?"+we.shared.vao+".currentVAO.offset:0")})}else if(A)return new Rt(E.thisDep,E.contextDep,E.propDep,function(we,Oe){return Oe.def(we.shared.vao+".currentVAO?"+we.shared.vao+".currentVAO.instances:-1")});return null}var V=F(ia,!0);function W(){if(Sr in T){var be=T[Sr]|0;return L.count=be,d.command(typeof be=="number"&&be>=0,"invalid vertex count",c.commandStr),St(function(){return be})}else if(Sr in P){var q=P[Sr];return Kt(q,function(Oe,ft){var Vt=Oe.invoke(ft,q);return d.optional(function(){Oe.assert(ft,"typeof "+Vt+'==="number"&&'+Vt+">=0&&"+Vt+"===("+Vt+"|0)","invalid vertex count")}),Vt})}else if(v)if(Jn(g)){if(g)return V?new Rt(V.thisDep,V.contextDep,V.propDep,function(Oe,ft){var Vt=ft.def(Oe.ELEMENTS,".vertCount-",Oe.OFFSET);return d.optional(function(){Oe.assert(ft,Vt+">=0","invalid vertex offset/element buffer too small")}),Vt}):St(function(Oe,ft){return ft.def(Oe.ELEMENTS,".vertCount")});var U=St(function(){return-1});return d.optional(function(){U.MISSING=!0}),U}else{var Pe=new Rt(g.thisDep||V.thisDep,g.contextDep||V.contextDep,g.propDep||V.propDep,function(Oe,ft){var Vt=Oe.ELEMENTS;return Oe.OFFSET?ft.def(Vt,"?",Vt,".vertCount-",Oe.OFFSET,":-1"):ft.def(Vt,"?",Vt,".vertCount:-1")});return d.optional(function(){Pe.DYNAMIC=!0}),Pe}else if(A){var we=new Rt(E.thisDep,E.contextDep,E.propDep,function(Oe,ft){return ft.def(Oe.shared.vao,".currentVAO?",Oe.shared.vao,".currentVAO.count:-1")});return we}return null}var ue=R(),Me=W(),Le=F(oa,!1);return{elements:g,primitive:ue,count:Me,instances:Le,offset:V,vao:E,vaoActive:A,elementsActive:v,static:L}}function yt(m,c){var T=m.static,P=m.dynamic,L={};return Fe.forEach(function(A){var w=Se(A);function E(v,b){if(A in T){var g=v(T[A]);L[w]=St(function(){return g})}else if(A in P){var R=P[A];L[w]=Kt(R,function(F,V){return b(F,V,F.invoke(V,R))})}}switch(A){case xc:case dc:case hc:case wc:case pc:case Ec:case _c:case Sc:case Tc:case yc:return E(function(v){return d.commandType(v,"boolean",A,c.commandStr),v},function(v,b,g){return d.optional(function(){v.assert(b,"typeof "+g+'==="boolean"',"invalid flag "+A,v.commandStr)}),g});case vc:return E(function(v){return d.commandParameter(v,ti,"invalid "+A,c.commandStr),ti[v]},function(v,b,g){var R=v.constants.compareFuncs;return d.optional(function(){v.assert(b,g+" in "+R,"invalid "+A+", must be one of "+Object.keys(ti))}),b.def(R,"[",g,"]")});case gc:return E(function(v){return d.command(pt(v)&&v.length===2&&typeof v[0]=="number"&&typeof v[1]=="number"&&v[0]<=v[1],"depth range is 2d array",c.commandStr),v},function(v,b,g){d.optional(function(){v.assert(b,v.shared.isArrayLike+"("+g+")&&"+g+".length===2&&typeof "+g+'[0]==="number"&&typeof '+g+'[1]==="number"&&'+g+"[0]<="+g+"[1]","depth range must be a 2d array")});var R=b.def("+",g,"[0]"),F=b.def("+",g,"[1]");return[R,F]});case Hs:return E(function(v){d.commandType(v,"object","blend.func",c.commandStr);var b="srcRGB"in v?v.srcRGB:v.src,g="srcAlpha"in v?v.srcAlpha:v.src,R="dstRGB"in v?v.dstRGB:v.dst,F="dstAlpha"in v?v.dstAlpha:v.dst;return d.commandParameter(b,En,w+".srcRGB",c.commandStr),d.commandParameter(g,En,w+".srcAlpha",c.commandStr),d.commandParameter(R,En,w+".dstRGB",c.commandStr),d.commandParameter(F,En,w+".dstAlpha",c.commandStr),d.command(Oc.indexOf(b+", "+R)===-1,"unallowed blending combination (srcRGB, dstRGB) = ("+b+", "+R+")",c.commandStr),[En[b],En[R],En[g],En[F]]},function(v,b,g){var R=v.constants.blendFuncs;d.optional(function(){v.assert(b,g+"&&typeof "+g+'==="object"',"invalid blend func, must be an object")});function F(q,U){var Pe=b.def('"',q,U,'" in ',g,"?",g,".",q,U,":",g,".",q);return d.optional(function(){v.assert(b,Pe+" in "+R,"invalid "+A+"."+q+U+", must be one of "+Object.keys(En))}),Pe}var V=F("src","RGB"),W=F("dst","RGB");d.optional(function(){var q=v.constants.invalidBlendCombinations;v.assert(b,q+".indexOf("+V+'+", "+'+W+") === -1 ","unallowed blending combination for (srcRGB, dstRGB)")});var ue=b.def(R,"[",V,"]"),Me=b.def(R,"[",F("src","Alpha"),"]"),Le=b.def(R,"[",W,"]"),be=b.def(R,"[",F("dst","Alpha"),"]");return[ue,Le,Me,be]});case $s:return E(function(v){if(typeof v=="string")return d.commandParameter(v,G,"invalid "+A,c.commandStr),[G[v],G[v]];if(typeof v=="object")return d.commandParameter(v.rgb,G,A+".rgb",c.commandStr),d.commandParameter(v.alpha,G,A+".alpha",c.commandStr),[G[v.rgb],G[v.alpha]];d.commandRaise("invalid blend.equation",c.commandStr)},function(v,b,g){var R=v.constants.blendEquations,F=b.def(),V=b.def(),W=v.cond("typeof ",g,'==="string"');return d.optional(function(){function ue(Me,Le,be){v.assert(Me,be+" in "+R,"invalid "+Le+", must be one of "+Object.keys(G))}ue(W.then,A,g),v.assert(W.else,g+"&&typeof "+g+'==="object"',"invalid "+A),ue(W.else,A+".rgb",g+".rgb"),ue(W.else,A+".alpha",g+".alpha")}),W.then(F,"=",V,"=",R,"[",g,"];"),W.else(F,"=",R,"[",g,".rgb];",V,"=",R,"[",g,".alpha];"),b(W),[F,V]});case mc:return E(function(v){return d.command(pt(v)&&v.length===4,"blend.color must be a 4d array",c.commandStr),Yt(4,function(b){return+v[b]})},function(v,b,g){return d.optional(function(){v.assert(b,v.shared.isArrayLike+"("+g+")&&"+g+".length===4","blend.color must be a 4d array")}),Yt(4,function(R){return b.def("+",g,"[",R,"]")})});case Ac:return E(function(v){return d.commandType(v,"number",w,c.commandStr),v|0},function(v,b,g){return d.optional(function(){v.assert(b,"typeof "+g+'==="number"',"invalid stencil.mask")}),b.def(g,"|0")});case Zs:return E(function(v){d.commandType(v,"object",w,c.commandStr);var b=v.cmp||"keep",g=v.ref||0,R="mask"in v?v.mask:-1;return d.commandParameter(b,ti,A+".cmp",c.commandStr),d.commandType(g,"number",A+".ref",c.commandStr),d.commandType(R,"number",A+".mask",c.commandStr),[ti[b],g,R]},function(v,b,g){var R=v.constants.compareFuncs;d.optional(function(){function ue(){v.assert(b,Array.prototype.join.call(arguments,""),"invalid stencil.func")}ue(g+"&&typeof ",g,'==="object"'),ue('!("cmp" in ',g,")||(",g,".cmp in ",R,")")});var F=b.def('"cmp" in ',g,"?",R,"[",g,".cmp]",":",Qn),V=b.def(g,".ref|0"),W=b.def('"mask" in ',g,"?",g,".mask|0:-1");return[F,V,W]});case Qs:case ki:return E(function(v){d.commandType(v,"object",w,c.commandStr);var b=v.fail||"keep",g=v.zfail||"keep",R=v.zpass||"keep";return d.commandParameter(b,Kn,A+".fail",c.commandStr),d.commandParameter(g,Kn,A+".zfail",c.commandStr),d.commandParameter(R,Kn,A+".zpass",c.commandStr),[A===ki?Tr:Gi,Kn[b],Kn[g],Kn[R]]},function(v,b,g){var R=v.constants.stencilOps;d.optional(function(){v.assert(b,g+"&&typeof "+g+'==="object"',"invalid "+A)});function F(V){return d.optional(function(){v.assert(b,'!("'+V+'" in '+g+")||("+g+"."+V+" in "+R+")","invalid "+A+"."+V+", must be one of "+Object.keys(Kn))}),b.def('"',V,'" in ',g,"?",R,"[",g,".",V,"]:",Qn)}return[A===ki?Tr:Gi,F("fail"),F("zfail"),F("zpass")]});case qs:return E(function(v){d.commandType(v,"object",w,c.commandStr);var b=v.factor|0,g=v.units|0;return d.commandType(b,"number",w+".factor",c.commandStr),d.commandType(g,"number",w+".units",c.commandStr),[b,g]},function(v,b,g){d.optional(function(){v.assert(b,g+"&&typeof "+g+'==="object"',"invalid "+A)});var R=b.def(g,".factor|0"),F=b.def(g,".units|0");return[R,F]});case bc:return E(function(v){var b=0;return v==="front"?b=Gi:v==="back"&&(b=Tr),d.command(!!b,w,c.commandStr),b},function(v,b,g){return d.optional(function(){v.assert(b,g+'==="front"||'+g+'==="back"',"invalid cull.face")}),b.def(g,'==="front"?',Gi,":",Tr)});case Ws:return E(function(v){return d.command(typeof v=="number"&&v>=O.lineWidthDims[0]&&v<=O.lineWidthDims[1],"invalid line width, must be a positive number between "+O.lineWidthDims[0]+" and "+O.lineWidthDims[1],c.commandStr),v},function(v,b,g){return d.optional(function(){v.assert(b,"typeof "+g+'==="number"&&'+g+">="+O.lineWidthDims[0]+"&&"+g+"<="+O.lineWidthDims[1],"invalid line width")}),g});case Xs:return E(function(v){return d.commandParameter(v,sf,w,c.commandStr),sf[v]},function(v,b,g){return d.optional(function(){v.assert(b,g+'==="cw"||'+g+'==="ccw"',"invalid frontFace, must be one of cw,ccw")}),b.def(g+'==="cw"?'+Fc+":"+af)});case js:return E(function(v){return d.command(pt(v)&&v.length===4,"color.mask must be length 4 array",c.commandStr),v.map(function(b){return!!b})},function(v,b,g){return d.optional(function(){v.assert(b,v.shared.isArrayLike+"("+g+")&&"+g+".length===4","invalid color.mask")}),Yt(4,function(R){return"!!"+g+"["+R+"]"})});case Ys:return E(function(v){d.command(typeof v=="object"&&v,w,c.commandStr);var b="value"in v?v.value:1,g=!!v.invert;return d.command(typeof b=="number"&&b>=0&&b<=1,"sample.coverage.value must be a number between 0 and 1",c.commandStr),[b,g]},function(v,b,g){d.optional(function(){v.assert(b,g+"&&typeof "+g+'==="object"',"invalid sample.coverage")});var R=b.def('"value" in ',g,"?+",g,".value:1"),F=b.def("!!",g,".invert");return[R,F]})}}),L}function tt(m,c){var T=m.static,P=m.dynamic,L={};return Object.keys(T).forEach(function(A){var w=T[A],E;if(typeof w=="number"||typeof w=="boolean")E=St(function(){return w});else if(typeof w=="function"){var v=w._reglType;v==="texture2d"||v==="textureCube"?E=St(function(b){return b.link(w)}):v==="framebuffer"||v==="framebufferCube"?(d.command(w.color.length>0,'missing color attachment for framebuffer sent to uniform "'+A+'"',c.commandStr),E=St(function(b){return b.link(w.color[0])})):d.commandRaise('invalid data for uniform "'+A+'"',c.commandStr)}else pt(w)?E=St(function(b){var g=b.global.def("[",Yt(w.length,function(R){return d.command(typeof w[R]=="number"||typeof w[R]=="boolean","invalid uniform "+A,b.commandStr),w[R]}),"]");return g}):d.commandRaise('invalid or missing data for uniform "'+A+'"',c.commandStr);E.value=w,L[A]=E}),Object.keys(P).forEach(function(A){var w=P[A];L[A]=Kt(w,function(E,v){return E.invoke(v,w)})}),L}function Et(m,c){var T=m.static,P=m.dynamic,L={};return Object.keys(T).forEach(function(A){var w=T[A],E=h.id(A),v=new k;if(pa(w))v.state=Qr,v.buffer=j.getBuffer(j.create(w,ei,!1,!0)),v.type=0;else{var b=j.getBuffer(w);if(b)v.state=Qr,v.buffer=b,v.type=0;else if(d.command(typeof w=="object"&&w,"invalid data for attribute "+A,c.commandStr),"constant"in w){var g=w.constant;v.buffer="null",v.state=Ns,typeof g=="number"?v.x=g:(d.command(pt(g)&&g.length>0&&g.length<=4,"invalid constant for attribute "+A,c.commandStr),Zr.forEach(function(Le,be){be<g.length&&(v[Le]=g[be])}))}else{pa(w.buffer)?b=j.getBuffer(j.create(w.buffer,ei,!1,!0)):b=j.getBuffer(w.buffer),d.command(!!b,'missing buffer for attribute "'+A+'"',c.commandStr);var R=w.offset|0;d.command(R>=0,'invalid offset for attribute "'+A+'"',c.commandStr);var F=w.stride|0;d.command(F>=0&&F<256,'invalid stride for attribute "'+A+'", must be integer betweeen [0, 255]',c.commandStr);var V=w.size|0;d.command(!("size"in w)||V>0&&V<=4,'invalid size for attribute "'+A+'", must be 1,2,3,4',c.commandStr);var W=!!w.normalized,ue=0;"type"in w&&(d.commandParameter(w.type,mr,"invalid type for attribute "+A,c.commandStr),ue=mr[w.type]);var Me=w.divisor|0;d.optional(function(){"divisor"in w&&(d.command(Me===0||te,'cannot specify divisor for attribute "'+A+'", instancing not supported',c.commandStr),d.command(Me>=0,'invalid divisor for attribute "'+A+'"',c.commandStr));var Le=c.commandStr,be=["buffer","offset","divisor","normalized","type","size","stride"];Object.keys(w).forEach(function(q){d.command(be.indexOf(q)>=0,'unknown parameter "'+q+'" for attribute pointer "'+A+'" (valid parameters are '+be+")",Le)})}),v.buffer=b,v.state=Qr,v.size=V,v.normalized=W,v.type=ue||b.dtype,v.offset=R,v.stride=F,v.divisor=Me}}L[A]=St(function(Le,be){var q=Le.attribCache;if(E in q)return q[E];var U={isStream:!1};return Object.keys(v).forEach(function(Pe){U[Pe]=v[Pe]}),v.buffer&&(U.buffer=Le.link(v.buffer),U.type=U.type||U.buffer+".dtype"),q[E]=U,U})}),Object.keys(P).forEach(function(A){var w=P[A];function E(v,b){var g=v.invoke(b,w),R=v.shared,F=v.constants,V=R.isBufferArgs,W=R.buffer;d.optional(function(){v.assert(b,g+"&&(typeof "+g+'==="object"||typeof '+g+'==="function")&&('+V+"("+g+")||"+W+".getBuffer("+g+")||"+W+".getBuffer("+g+".buffer)||"+V+"("+g+'.buffer)||("constant" in '+g+"&&(typeof "+g+'.constant==="number"||'+R.isArrayLike+"("+g+".constant))))",'invalid dynamic attribute "'+A+'"')});var ue={isStream:b.def(!1)},Me=new k;Me.state=Qr,Object.keys(Me).forEach(function(U){ue[U]=b.def(""+Me[U])});var Le=ue.buffer,be=ue.type;b("if(",V,"(",g,")){",ue.isStream,"=true;",Le,"=",W,".createStream(",ei,",",g,");",be,"=",Le,".dtype;","}else{",Le,"=",W,".getBuffer(",g,");","if(",Le,"){",be,"=",Le,".dtype;",'}else if("constant" in ',g,"){",ue.state,"=",Ns,";","if(typeof "+g+'.constant === "number"){',ue[Zr[0]],"=",g,".constant;",Zr.slice(1).map(function(U){return ue[U]}).join("="),"=0;","}else{",Zr.map(function(U,Pe){return ue[U]+"="+g+".constant.length>"+Pe+"?"+g+".constant["+Pe+"]:0;"}).join(""),"}}else{","if(",V,"(",g,".buffer)){",Le,"=",W,".createStream(",ei,",",g,".buffer);","}else{",Le,"=",W,".getBuffer(",g,".buffer);","}",be,'="type" in ',g,"?",F.glTypes,"[",g,".type]:",Le,".dtype;",ue.normalized,"=!!",g,".normalized;");function q(U){b(ue[U],"=",g,".",U,"|0;")}return q("size"),q("offset"),q("stride"),q("divisor"),b("}}"),b.exit("if(",ue.isStream,"){",W,".destroyStream(",Le,");","}"),ue}L[A]=Kt(w,E)}),L}function ht(m){var c=m.static,T=m.dynamic,P={};return Object.keys(c).forEach(function(L){var A=c[L];P[L]=St(function(w,E){return typeof A=="number"||typeof A=="boolean"?""+A:w.link(A)})}),Object.keys(T).forEach(function(L){var A=T[L];P[L]=Kt(A,function(w,E){return w.invoke(E,A)})}),P}function Tt(m,c,T,P,L){var A=m.static,w=m.dynamic;d.optional(function(){var q=[xr,Fi,Ri,br,_r,ia,Sr,oa,Li,Ii].concat(Fe);function U(Pe){Object.keys(Pe).forEach(function(we){d.command(q.indexOf(we)>=0,'unknown parameter "'+we+'"',L.commandStr)})}U(A),U(w)});var E=$e(m,c),v=ye(m),b=ze(m,v,L),g=vt(m,L),R=yt(m,L),F=Je(m,L,E);function V(q){var U=b[q];U&&(R[q]=U)}V(Gn),V(Se(ra));var W=Object.keys(R).length>0,ue={framebuffer:v,draw:g,shader:F,state:R,dirty:W,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(ue.profile=pe(m),ue.uniforms=tt(T,L),ue.drawVAO=ue.scopeVAO=g.vao,!ue.drawVAO&&F.program&&!E&&_.angle_instanced_arrays&&g.static.elements){var Me=!0,Le=F.program.attributes.map(function(q){var U=c.static[q];return Me=Me&&!!U,U});if(Me&&Le.length>0){var be=ie.getVAO(ie.createVAO({attributes:Le,elements:g.static.elements}));ue.drawVAO=new Rt(null,null,null,function(q,U){return q.link(be)}),ue.useVAO=!0}}return E?ue.useVAO=!0:ue.attributes=Et(c,L),ue.context=ht(P),ue}function Pt(m,c,T){var P=m.shared,L=P.context,A=m.scope();Object.keys(T).forEach(function(w){c.save(L,"."+w);var E=T[w],v=E.append(m,c);Array.isArray(v)?A(L,".",w,"=[",v.join(),"];"):A(L,".",w,"=",v,";")}),c(A)}function Ct(m,c,T,P){var L=m.shared,A=L.gl,w=L.framebuffer,E;xe&&(E=c.def(L.extensions,".webgl_draw_buffers"));var v=m.constants,b=v.drawBuffer,g=v.backBuffer,R;T?R=T.append(m,c):R=c.def(w,".next"),P||c("if(",R,"!==",w,".cur){"),c("if(",R,"){",A,".bindFramebuffer(",zc,",",R,".framebuffer);"),xe&&c(E,".drawBuffersWEBGL(",b,"[",R,".colorAttachments.length]);"),c("}else{",A,".bindFramebuffer(",zc,",null);"),xe&&c(E,".drawBuffersWEBGL(",g,");"),c("}",w,".cur=",R,";"),P||c("}")}function It(m,c,T){var P=m.shared,L=P.gl,A=m.current,w=m.next,E=P.current,v=P.next,b=m.cond(E,".dirty");Fe.forEach(function(g){var R=Se(g);if(!(R in T.state)){var F,V;if(R in w){F=w[R],V=A[R];var W=Yt(ge[R].length,function(Me){return b.def(F,"[",Me,"]")});b(m.cond(W.map(function(Me,Le){return Me+"!=="+V+"["+Le+"]"}).join("||")).then(L,".",$[R],"(",W,");",W.map(function(Me,Le){return V+"["+Le+"]="+Me}).join(";"),";"))}else{F=b.def(v,".",R);var ue=m.cond(F,"!==",E,".",R);b(ue),R in X?ue(m.cond(F).then(L,".enable(",X[R],");").else(L,".disable(",X[R],");"),E,".",R,"=",F,";"):ue(L,".",$[R],"(",F,");",E,".",R,"=",F,";")}}}),Object.keys(T.state).length===0&&b(E,".dirty=false;"),c(b)}function Bt(m,c,T,P){var L=m.shared,A=m.current,w=L.current,E=L.gl;Nc(Object.keys(T)).forEach(function(v){var b=T[v];if(!(P&&!P(b))){var g=b.append(m,c);if(X[v]){var R=X[v];Jn(b)?g?c(E,".enable(",R,");"):c(E,".disable(",R,");"):c(m.cond(g).then(E,".enable(",R,");").else(E,".disable(",R,");")),c(w,".",v,"=",g,";")}else if(pt(g)){var F=A[v];c(E,".",$[v],"(",g,");",g.map(function(V,W){return F+"["+W+"]="+V}).join(";"),";")}else c(E,".",$[v],"(",g,");",w,".",v,"=",g,";")}})}function xt(m,c){te&&(m.instancing=c.def(m.shared.extensions,".angle_instanced_arrays"))}function qe(m,c,T,P,L){var A=m.shared,w=m.stats,E=A.current,v=A.timer,b=T.profile;function g(){return typeof performance>"u"?"Date.now()":"performance.now()"}var R,F;function V(q){R=c.def(),q(R,"=",g(),";"),typeof L=="string"?q(w,".count+=",L,";"):q(w,".count++;"),J&&(P?(F=c.def(),q(F,"=",v,".getNumPendingQueries();")):q(v,".beginQuery(",w,");"))}function W(q){q(w,".cpuTime+=",g(),"-",R,";"),J&&(P?q(v,".pushScopeStats(",F,",",v,".getNumPendingQueries(),",w,");"):q(v,".endQuery();"))}function ue(q){var U=c.def(E,".profile");c(E,".profile=",q,";"),c.exit(E,".profile=",U,";")}var Me;if(b){if(Jn(b)){b.enable?(V(c),W(c.exit),ue("true")):ue("false");return}Me=b.append(m,c),ue(Me)}else Me=c.def(E,".profile");var Le=m.block();V(Le),c("if(",Me,"){",Le,"}");var be=m.block();W(be),c.exit("if(",Me,"){",be,"}")}function Ut(m,c,T,P,L){var A=m.shared;function w(v){switch(v){case aa:case ua:case ha:return 2;case sa:case la:case da:return 3;case fa:case ca:case ma:return 4;default:return 1}}function E(v,b,g){var R=A.gl,F=c.def(v,".location"),V=c.def(A.attributes,"[",F,"]"),W=g.state,ue=g.buffer,Me=[g.x,g.y,g.z,g.w],Le=["buffer","normalized","offset","stride"];function be(){c("if(!",V,".buffer){",R,".enableVertexAttribArray(",F,");}");var U=g.type,Pe;if(g.size?Pe=c.def(g.size,"||",b):Pe=b,c("if(",V,".type!==",U,"||",V,".size!==",Pe,"||",Le.map(function(Oe){return V+"."+Oe+"!=="+g[Oe]}).join("||"),"){",R,".bindBuffer(",ei,",",ue,".buffer);",R,".vertexAttribPointer(",[F,Pe,U,g.normalized,g.stride,g.offset],");",V,".type=",U,";",V,".size=",Pe,";",Le.map(function(Oe){return V+"."+Oe+"="+g[Oe]+";"}).join(""),"}"),te){var we=g.divisor;c("if(",V,".divisor!==",we,"){",m.instancing,".vertexAttribDivisorANGLE(",[F,we],");",V,".divisor=",we,";}")}}function q(){c("if(",V,".buffer){",R,".disableVertexAttribArray(",F,");",V,".buffer=null;","}if(",Zr.map(function(U,Pe){return V+"."+U+"!=="+Me[Pe]}).join("||"),"){",R,".vertexAttrib4f(",F,",",Me,");",Zr.map(function(U,Pe){return V+"."+U+"="+Me[Pe]+";"}).join(""),"}")}W===Qr?be():W===Ns?q():(c("if(",W,"===",Qr,"){"),be(),c("}else{"),q(),c("}"))}P.forEach(function(v){var b=v.name,g=T.attributes[b],R;if(g){if(!L(g))return;R=g.append(m,c)}else{if(!L(Gc))return;var F=m.scopeAttrib(b);d.optional(function(){m.assert(c,F+".state","missing attribute "+b)}),R={},Object.keys(new k).forEach(function(V){R[V]=c.def(F,".",V)})}E(m.link(v),w(v.info.type),R)})}function ot(m,c,T,P,L,A){for(var w=m.shared,E=w.gl,v={},b,g=0;g<P.length;++g){var R=P[g],F=R.name,V=R.info.type,W=R.info.size,ue=T.uniforms[F];if(W>1){if(!ue)continue;var Me=F.replace("[0]","");if(v[Me])continue;v[Me]=1}var Le=m.link(R),be=Le+".location",q;if(ue){if(!L(ue))continue;if(Jn(ue)){var U=ue.value;if(d.command(U!==null&&typeof U<"u",'missing uniform "'+F+'"',m.commandStr),V===Mi||V===Ni){d.command(typeof U=="function"&&(V===Mi&&(U._reglType==="texture2d"||U._reglType==="framebuffer")||V===Ni&&(U._reglType==="textureCube"||U._reglType==="framebufferCube")),"invalid texture for uniform "+F,m.commandStr);var Pe=m.link(U._texture||U.color[0]._texture);c(E,".uniform1i(",be,",",Pe+".bind());"),c.exit(Pe,".unbind();")}else if(V===Di||V===zi||V===Oi){d.optional(function(){d.command(pt(U),"invalid matrix for uniform "+F,m.commandStr),d.command(V===Di&&U.length===4||V===zi&&U.length===9||V===Oi&&U.length===16,"invalid length for matrix uniform "+F,m.commandStr)});var we=m.global.def("new Float32Array(["+Array.prototype.slice.call(U)+"])"),Oe=2;V===zi?Oe=3:V===Oi&&(Oe=4),c(E,".uniformMatrix",Oe,"fv(",be,",false,",we,");")}else{switch(V){case tf:W===1?d.commandType(U,"number","uniform "+F,m.commandStr):d.command(pt(U)&&U.length===W,"uniform "+F,m.commandStr),b="1f";break;case aa:d.command(pt(U)&&U.length&&U.length%2===0&&U.length<=W*2,"uniform "+F,m.commandStr),b="2f";break;case sa:d.command(pt(U)&&U.length&&U.length%3===0&&U.length<=W*3,"uniform "+F,m.commandStr),b="3f";break;case fa:d.command(pt(U)&&U.length&&U.length%4===0&&U.length<=W*4,"uniform "+F,m.commandStr),b="4f";break;case rf:W===1?d.commandType(U,"boolean","uniform "+F,m.commandStr):d.command(pt(U)&&U.length===W,"uniform "+F,m.commandStr),b="1i";break;case nf:W===1?d.commandType(U,"number","uniform "+F,m.commandStr):d.command(pt(U)&&U.length===W,"uniform "+F,m.commandStr),b="1i";break;case ha:d.command(pt(U)&&U.length&&U.length%2===0&&U.length<=W*2,"uniform "+F,m.commandStr),b="2i";break;case ua:d.command(pt(U)&&U.length&&U.length%2===0&&U.length<=W*2,"uniform "+F,m.commandStr),b="2i";break;case da:d.command(pt(U)&&U.length&&U.length%3===0&&U.length<=W*3,"uniform "+F,m.commandStr),b="3i";break;case la:d.command(pt(U)&&U.length&&U.length%3===0&&U.length<=W*3,"uniform "+F,m.commandStr),b="3i";break;case ma:d.command(pt(U)&&U.length&&U.length%4===0&&U.length<=W*4,"uniform "+F,m.commandStr),b="4i";break;case ca:d.command(pt(U)&&U.length&&U.length%4===0&&U.length<=W*4,"uniform "+F,m.commandStr),b="4i";break}W>1?(b+="v",U=m.global.def("["+Array.prototype.slice.call(U)+"]")):U=pt(U)?Array.prototype.slice.call(U):U,c(E,".uniform",b,"(",be,",",U,");")}continue}else q=ue.append(m,c)}else{if(!L(Gc))continue;q=c.def(w.uniforms,"[",h.id(F),"]")}V===Mi?(d(!Array.isArray(q),"must specify a scalar prop for textures"),c("if(",q,"&&",q,'._reglType==="framebuffer"){',q,"=",q,".color[0];","}")):V===Ni&&(d(!Array.isArray(q),"must specify a scalar prop for cube maps"),c("if(",q,"&&",q,'._reglType==="framebufferCube"){',q,"=",q,".color[0];","}")),d.optional(function(){function rn(Jt,va){m.assert(c,Jt,'bad data or missing for uniform "'+F+'". '+va)}function Pr(Jt,va){va===1&&d(!Array.isArray(q),"must not specify an array type for uniform"),rn("Array.isArray("+q+") && typeof "+q+'[0]===" '+Jt+'" || typeof '+q+'==="'+Jt+'"',"invalid type, expected "+Jt)}function ln(Jt,va,ga){Array.isArray(q)?d(q.length&&q.length%Jt===0&&q.length<=Jt*ga,"must have length of "+(ga===1?"":"n * ")+Jt):rn(w.isArrayLike+"("+q+")&&"+q+".length && "+q+".length % "+Jt+" === 0 && "+q+".length<="+Jt*ga,"invalid vector, should have length of "+(ga===1?"":"n * ")+Jt,m.commandStr)}function Xc(Jt){d(!Array.isArray(q),"must not specify a value type"),rn("typeof "+q+'==="function"&&'+q+'._reglType==="texture'+(Jt===Lc?"2d":"Cube")+'"',"invalid texture type",m.commandStr)}switch(V){case nf:Pr("number",W);break;case ua:ln(2,"number",W);break;case la:ln(3,"number",W);break;case ca:ln(4,"number",W);break;case tf:Pr("number",W);break;case aa:ln(2,"number",W);break;case sa:ln(3,"number",W);break;case fa:ln(4,"number",W);break;case rf:Pr("boolean",W);break;case ha:ln(2,"boolean",W);break;case da:ln(3,"boolean",W);break;case ma:ln(4,"boolean",W);break;case Di:ln(4,"number",W);break;case zi:ln(9,"number",W);break;case Oi:ln(16,"number",W);break;case Mi:Xc(Lc);break;case Ni:Xc(Cx);break}});var ft=1;switch(V){case Mi:case Ni:var Vt=c.def(q,"._texture");c(E,".uniform1i(",be,",",Vt,".bind());"),c.exit(Vt,".unbind();");continue;case nf:case rf:b="1i";break;case ua:case ha:b="2i",ft=2;break;case la:case da:b="3i",ft=3;break;case ca:case ma:b="4i",ft=4;break;case tf:b="1f";break;case aa:b="2f",ft=2;break;case sa:b="3f",ft=3;break;case fa:b="4f",ft=4;break;case Di:b="Matrix2fv";break;case zi:b="Matrix3fv";break;case Oi:b="Matrix4fv";break}if(b.indexOf("Matrix")===-1&&W>1&&(b+="v",ft=1),b.charAt(0)==="M"){c(E,".uniform",b,"(",be,",");var Ar=Math.pow(V-Di+2,2),Bn=m.global.def("new Float32Array(",Ar,")");Array.isArray(q)?c("false,(",Yt(Ar,function(rn){return Bn+"["+rn+"]="+q[rn]}),",",Bn,")"):c("false,(Array.isArray(",q,")||",q," instanceof Float32Array)?",q,":(",Yt(Ar,function(rn){return Bn+"["+rn+"]="+q+"["+rn+"]"}),",",Bn,")"),c(");")}else if(ft>1){for(var Cn=[],er=[],Er=0;Er<ft;++Er)Array.isArray(q)?er.push(q[Er]):er.push(c.def(q+"["+Er+"]")),A&&Cn.push(c.def());A&&c("if(!",m.batchId,"||",Cn.map(function(rn,Pr){return rn+"!=="+er[Pr]}).join("||"),"){",Cn.map(function(rn,Pr){return rn+"="+er[Pr]+";"}).join("")),c(E,".uniform",b,"(",be,",",er.join(","),");"),A&&c("}")}else{if(d(!Array.isArray(q),"uniform value must not be an array"),A){var jc=c.def();c("if(!",m.batchId,"||",jc,"!==",q,"){",jc,"=",q,";")}c(E,".uniform",b,"(",be,",",q,");"),A&&c("}")}}}function Ie(m,c,T,P){var L=m.shared,A=L.gl,w=L.draw,E=P.draw;function v(){var Pe=E.elements,we,Oe=c;return Pe?((Pe.contextDep&&P.contextDynamic||Pe.propDep)&&(Oe=T),we=Pe.append(m,Oe),E.elementsActive&&Oe("if("+we+")"+A+".bindBuffer("+ef+","+we+".buffer.buffer);")):(we=Oe.def(),Oe(we,"=",w,".",br,";","if(",we,"){",A,".bindBuffer(",ef,",",we,".buffer.buffer);}","else if(",L.vao,".currentVAO){",we,"=",m.shared.elements+".getElements("+L.vao,".currentVAO.elements);",Z?"":"if("+we+")"+A+".bindBuffer("+ef+","+we+".buffer.buffer);","}")),we}function b(){var Pe=E.count,we,Oe=c;return Pe?((Pe.contextDep&&P.contextDynamic||Pe.propDep)&&(Oe=T),we=Pe.append(m,Oe),d.optional(function(){Pe.MISSING&&m.assert(c,"false","missing vertex count"),Pe.DYNAMIC&&m.assert(Oe,we+">=0","missing vertex count")})):(we=Oe.def(w,".",Sr),d.optional(function(){m.assert(Oe,we+">=0","missing vertex count")})),we}var g=v();function R(Pe){var we=E[Pe];return we?we.contextDep&&P.contextDynamic||we.propDep?we.append(m,T):we.append(m,c):c.def(w,".",Pe)}var F=R(_r),V=R(ia),W=b();if(typeof W=="number"){if(W===0)return}else T("if(",W,"){"),T.exit("}");var ue,Me;te&&(ue=R(oa),Me=m.instancing);var Le=g+".type",be=E.elements&&Jn(E.elements)&&!E.vaoActive;function q(){function Pe(){T(Me,".drawElementsInstancedANGLE(",[F,W,Le,V+"<<(("+Le+"-"+uc+")>>1)",ue],");")}function we(){T(Me,".drawArraysInstancedANGLE(",[F,V,W,ue],");")}g&&g!=="null"?be?Pe():(T("if(",g,"){"),Pe(),T("}else{"),we(),T("}")):we()}function U(){function Pe(){T(A+".drawElements("+[F,W,Le,V+"<<(("+Le+"-"+uc+")>>1)"]+");")}function we(){T(A+".drawArrays("+[F,V,W]+");")}g&&g!=="null"?be?Pe():(T("if(",g,"){"),Pe(),T("}else{"),we(),T("}")):we()}te&&(typeof ue!="number"||ue>=0)?typeof ue=="string"?(T("if(",ue,">0){"),q(),T("}else if(",ue,"<0){"),U(),T("}")):q():U()}function et(m,c,T,P,L){var A=Ne(),w=A.proc("body",L);return d.optional(function(){A.commandStr=c.commandStr,A.command=A.link(c.commandStr)}),te&&(A.instancing=w.def(A.shared.extensions,".angle_instanced_arrays")),m(A,w,T,P),A.compile().body}function nt(m,c,T,P){xt(m,c),T.useVAO?T.drawVAO?c(m.shared.vao,".setVAO(",T.drawVAO.append(m,c),");"):c(m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"):(c(m.shared.vao,".setVAO(null);"),Ut(m,c,T,P.attributes,function(){return!0})),ot(m,c,T,P.uniforms,function(){return!0},!1),Ie(m,c,c,T)}function bt(m,c){var T=m.proc("draw",1);xt(m,T),Pt(m,T,c.context),Ct(m,T,c.framebuffer),It(m,T,c),Bt(m,T,c.state),qe(m,T,c,!1,!0);var P=c.shader.progVar.append(m,T);if(T(m.shared.gl,".useProgram(",P,".program);"),c.shader.program)nt(m,T,c,c.shader.program);else{T(m.shared.vao,".setVAO(null);");var L=m.global.def("{}"),A=T.def(P,".id"),w=T.def(L,"[",A,"]");T(m.cond(w).then(w,".call(this,a0);").else(w,"=",L,"[",A,"]=",m.link(function(E){return et(nt,m,c,E,1)}),"(",P,");",w,".call(this,a0);"))}Object.keys(c.state).length>0&&T(m.shared.current,".dirty=true;"),m.shared.vao&&T(m.shared.vao,".setVAO(null);")}function Pn(m,c,T,P){m.batchId="a1",xt(m,c);function L(){return!0}Ut(m,c,T,P.attributes,L),ot(m,c,T,P.uniforms,L,!1),Ie(m,c,c,T)}function wr(m,c,T,P){xt(m,c);var L=T.contextDep,A=c.def(),w="a0",E="a1",v=c.def();m.shared.props=v,m.batchId=A;var b=m.scope(),g=m.scope();c(b.entry,"for(",A,"=0;",A,"<",E,";++",A,"){",v,"=",w,"[",A,"];",g,"}",b.exit);function R(Le){return Le.contextDep&&L||Le.propDep}function F(Le){return!R(Le)}if(T.needsContext&&Pt(m,g,T.context),T.needsFramebuffer&&Ct(m,g,T.framebuffer),Bt(m,g,T.state,R),T.profile&&R(T.profile)&&qe(m,g,T,!1,!0),P)T.useVAO?T.drawVAO?R(T.drawVAO)?g(m.shared.vao,".setVAO(",T.drawVAO.append(m,g),");"):b(m.shared.vao,".setVAO(",T.drawVAO.append(m,b),");"):b(m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"):(b(m.shared.vao,".setVAO(null);"),Ut(m,b,T,P.attributes,F),Ut(m,g,T,P.attributes,R)),ot(m,b,T,P.uniforms,F,!1),ot(m,g,T,P.uniforms,R,!0),Ie(m,b,g,T);else{var V=m.global.def("{}"),W=T.shader.progVar.append(m,g),ue=g.def(W,".id"),Me=g.def(V,"[",ue,"]");g(m.shared.gl,".useProgram(",W,".program);","if(!",Me,"){",Me,"=",V,"[",ue,"]=",m.link(function(Le){return et(Pn,m,T,Le,2)}),"(",W,");}",Me,".call(this,a0[",A,"],",A,");")}}function y(m,c){var T=m.proc("batch",2);m.batchId="0",xt(m,T);var P=!1,L=!0;Object.keys(c.context).forEach(function(V){P=P||c.context[V].propDep}),P||(Pt(m,T,c.context),L=!1);var A=c.framebuffer,w=!1;A?(A.propDep?P=w=!0:A.contextDep&&P&&(w=!0),w||Ct(m,T,A)):Ct(m,T,null),c.state.viewport&&c.state.viewport.propDep&&(P=!0);function E(V){return V.contextDep&&P||V.propDep}It(m,T,c),Bt(m,T,c.state,function(V){return!E(V)}),(!c.profile||!E(c.profile))&&qe(m,T,c,!1,"a1"),c.contextDep=P,c.needsContext=L,c.needsFramebuffer=w;var v=c.shader.progVar;if(v.contextDep&&P||v.propDep)wr(m,T,c,null);else{var b=v.append(m,T);if(T(m.shared.gl,".useProgram(",b,".program);"),c.shader.program)wr(m,T,c,c.shader.program);else{T(m.shared.vao,".setVAO(null);");var g=m.global.def("{}"),R=T.def(b,".id"),F=T.def(g,"[",R,"]");T(m.cond(F).then(F,".call(this,a0,a1);").else(F,"=",g,"[",R,"]=",m.link(function(V){return et(wr,m,c,V,2)}),"(",b,");",F,".call(this,a0,a1);"))}}Object.keys(c.state).length>0&&T(m.shared.current,".dirty=true;"),m.shared.vao&&T(m.shared.vao,".setVAO(null);")}function M(m,c){var T=m.proc("scope",3);m.batchId="a2";var P=m.shared,L=P.current;Pt(m,T,c.context),c.framebuffer&&c.framebuffer.append(m,T),Nc(Object.keys(c.state)).forEach(function(w){var E=c.state[w],v=E.append(m,T);pt(v)?v.forEach(function(b,g){T.set(m.next[w],"["+g+"]",b)}):T.set(P.next,"."+w,v)}),qe(m,T,c,!0,!0),[br,ia,Sr,oa,_r].forEach(function(w){var E=c.draw[w];E&&T.set(P.draw,"."+w,""+E.append(m,T))}),Object.keys(c.uniforms).forEach(function(w){var E=c.uniforms[w].append(m,T);Array.isArray(E)&&(E="["+E.join()+"]"),T.set(P.uniforms,"["+h.id(w)+"]",E)}),Object.keys(c.attributes).forEach(function(w){var E=c.attributes[w].append(m,T),v=m.scopeAttrib(w);Object.keys(new k).forEach(function(b){T.set(v,"."+b,E[b])})}),c.scopeVAO&&T.set(P.vao,".targetVAO",c.scopeVAO.append(m,T));function A(w){var E=c.shader[w];E&&T.set(P.shader,"."+w,E.append(m,T))}A(Fi),A(Ri),Object.keys(c.state).length>0&&(T(L,".dirty=true;"),T.exit(L,".dirty=true;")),T("a1(",m.shared.context,",a0,",m.batchId,");")}function I(m){if(!(typeof m!="object"||pt(m))){for(var c=Object.keys(m),T=0;T<c.length;++T)if(Lt.isDynamic(m[c[T]]))return!0;return!1}}function _e(m,c,T){var P=c.static[T];if(!P||!I(P))return;var L=m.global,A=Object.keys(P),w=!1,E=!1,v=!1,b=m.global.def("{}");A.forEach(function(R){var F=P[R];if(Lt.isDynamic(F)){typeof F=="function"&&(F=P[R]=Lt.unbox(F));var V=Kt(F,null);w=w||V.thisDep,v=v||V.propDep,E=E||V.contextDep}else{switch(L(b,".",R,"="),typeof F){case"number":L(F);break;case"string":L('"',F,'"');break;case"object":Array.isArray(F)&&L("[",F.join(),"]");break;default:L(m.link(F));break}L(";")}});function g(R,F){A.forEach(function(V){var W=P[V];if(Lt.isDynamic(W)){var ue=R.invoke(F,W);F(b,".",V,"=",ue,";")}})}c.dynamic[T]=new Lt.DynamicVariable(na,{thisDep:w,contextDep:E,propDep:v,ref:b,append:g}),delete c.static[T]}function Ke(m,c,T,P,L){var A=Ne();A.stats=A.link(L),Object.keys(c.static).forEach(function(E){_e(A,c,E)}),Ax.forEach(function(E){_e(A,m,E)});var w=Tt(m,c,T,P,A);return bt(A,w),M(A,w),y(A,w),r(A.compile(),{destroy:function(){w.shader.program.destroy()}})}return{next:me,current:ge,procs:function(){var m=Ne(),c=m.proc("poll"),T=m.proc("refresh"),P=m.block();c(P),T(P);var L=m.shared,A=L.gl,w=L.next,E=L.current;P(E,".dirty=false;"),Ct(m,c),Ct(m,T,null,!0);var v;te&&(v=m.link(te)),_.oes_vertex_array_object&&T(m.link(_.oes_vertex_array_object),".bindVertexArrayOES(null);");for(var b=0;b<O.maxAttributes;++b){var g=T.def(L.attributes,"[",b,"]"),R=m.cond(g,".buffer");R.then(A,".enableVertexAttribArray(",b,");",A,".bindBuffer(",ei,",",g,".buffer.buffer);",A,".vertexAttribPointer(",b,",",g,".size,",g,".type,",g,".normalized,",g,".stride,",g,".offset);").else(A,".disableVertexAttribArray(",b,");",A,".vertexAttrib4f(",b,",",g,".x,",g,".y,",g,".z,",g,".w);",g,".buffer=null;"),T(R),te&&T(v,".vertexAttribDivisorANGLE(",b,",",g,".divisor);")}return T(m.shared.vao,".currentVAO=null;",m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"),Object.keys(X).forEach(function(F){var V=X[F],W=P.def(w,".",F),ue=m.block();ue("if(",W,"){",A,".enable(",V,")}else{",A,".disable(",V,")}",E,".",F,"=",W,";"),T(ue),c("if(",W,"!==",E,".",F,"){",ue,"}")}),Object.keys($).forEach(function(F){var V=$[F],W=ge[F],ue,Me,Le=m.block();if(Le(A,".",V,"("),pt(W)){var be=W.length;ue=m.global.def(w,".",F),Me=m.global.def(E,".",F),Le(Yt(be,function(q){return ue+"["+q+"]"}),");",Yt(be,function(q){return Me+"["+q+"]="+ue+"["+q+"];"}).join("")),c("if(",Yt(be,function(q){return ue+"["+q+"]!=="+Me+"["+q+"]"}).join("||"),"){",Le,"}")}else ue=P.def(w,".",F),Me=P.def(E,".",F),Le(ue,");",E,".",F,"=",ue,";"),c("if(",ue,"!==",Me,"){",Le,"}");T(Le)}),m.compile()}(),compile:Ke}}function Hx(){return{vaoCount:0,bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0}}var jx=34918,Xx=34919,Bc=35007,Wx=function(a,h){if(!h.ext_disjoint_timer_query)return null;var _=[];function O(){return _.pop()||h.ext_disjoint_timer_query.createQueryEXT()}function j(te){_.push(te)}var z=[];function B(te){var xe=O();h.ext_disjoint_timer_query.beginQueryEXT(Bc,xe),z.push(xe),J(z.length-1,z.length,te)}function K(){h.ext_disjoint_timer_query.endQueryEXT(Bc)}function Q(){this.startQueryIndex=-1,this.endQueryIndex=-1,this.sum=0,this.stats=null}var ie=[];function ae(){return ie.pop()||new Q}function oe(te){ie.push(te)}var le=[];function J(te,xe,Z){var ge=ae();ge.startQueryIndex=te,ge.endQueryIndex=xe,ge.sum=0,ge.stats=Z,le.push(ge)}var ne=[],k=[];function G(){var te,xe,Z=z.length;if(Z!==0){k.length=Math.max(k.length,Z+1),ne.length=Math.max(ne.length,Z+1),ne[0]=0,k[0]=0;var ge=0;for(te=0,xe=0;xe<z.length;++xe){var me=z[xe];h.ext_disjoint_timer_query.getQueryObjectEXT(me,Xx)?(ge+=h.ext_disjoint_timer_query.getQueryObjectEXT(me,jx),j(me)):z[te++]=me,ne[xe+1]=ge,k[xe+1]=te}for(z.length=te,te=0,xe=0;xe<le.length;++xe){var Fe=le[xe],X=Fe.startQueryIndex,$=Fe.endQueryIndex;Fe.sum+=ne[$]-ne[X];var Se=k[X],ce=k[$];ce===Se?(Fe.stats.gpuTime+=Fe.sum/1e6,oe(Fe)):(Fe.startQueryIndex=Se,Fe.endQueryIndex=ce,le[te++]=Fe)}le.length=te}}return{beginQuery:B,endQuery:K,pushScopeStats:J,update:G,getNumPendingQueries:function(){return z.length},clear:function(){_.push.apply(_,z);for(var te=0;te<_.length;te++)h.ext_disjoint_timer_query.deleteQueryEXT(_[te]);z.length=0,_.length=0},restore:function(){z.length=0,_.length=0}}},qx=16384,Yx=256,Zx=1024,Qx=34962,Uc="webglcontextlost",Vc="webglcontextrestored",$c=1,Kx=2,Jx=3;function Hc(a,h){for(var _=0;_<a.length;++_)if(a[_]===h)return _;return-1}function eb(a){var h=Ft(a);if(!h)return null;var _=h.gl,O=_.getContextAttributes(),j=_.isContextLost(),z=Xn(_,h);if(!z)return null;var B=ss(),K=Hx(),Q=z.extensions,ie=Wx(_,Q),ae=Mr(),oe=_.drawingBufferWidth,le=_.drawingBufferHeight,J={tick:0,time:0,viewportWidth:oe,viewportHeight:le,framebufferWidth:oe,framebufferHeight:le,drawingBufferWidth:oe,drawingBufferHeight:le,pixelRatio:h.pixelRatio},ne={},k={elements:null,primitive:4,count:-1,offset:0,instances:-1},G=Bg(_,Q),te=ny(_,K,h,ge),xe=my(_,Q,te,K),Z=mx(_,Q,G,K,te,xe,k);function ge(Ie){return Z.destroyBuffer(Ie)}var me=yx(_,B,K,h),Fe=jy(_,Q,G,function(){Se.procs.poll()},J,K,h),X=Xy(_,Q,G,K,h),$=hx(_,Q,G,Fe,X,K),Se=$x(_,B,Q,G,te,xe,Fe,$,ne,Z,me,k,J,ie,h),ce=_x(_,$,Se.procs.poll,J,O,Q,G),ee=Se.next,he=_.canvas,de=[],Ve=[],Ne=[],pe=[h.onDestroy],ye=null;function ze(){if(de.length===0){ie&&ie.update(),ye=null;return}ye=cr.next(ze),Bt();for(var Ie=de.length-1;Ie>=0;--Ie){var et=de[Ie];et&&et(J,null,0)}_.flush(),ie&&ie.update()}function $e(){!ye&&de.length>0&&(ye=cr.next(ze))}function Je(){ye&&(cr.cancel(ze),ye=null)}function vt(Ie){Ie.preventDefault(),j=!0,Je(),Ve.forEach(function(et){et()})}function yt(Ie){_.getError(),j=!1,z.restore(),me.restore(),te.restore(),Fe.restore(),X.restore(),$.restore(),Z.restore(),ie&&ie.restore(),Se.procs.refresh(),$e(),Ne.forEach(function(et){et()})}he&&(he.addEventListener(Uc,vt,!1),he.addEventListener(Vc,yt,!1));function tt(){de.length=0,Je(),he&&(he.removeEventListener(Uc,vt),he.removeEventListener(Vc,yt)),me.clear(),$.clear(),X.clear(),Z.clear(),Fe.clear(),xe.clear(),te.clear(),ie&&ie.clear(),pe.forEach(function(Ie){Ie()})}function Et(Ie){d(!!Ie,"invalid args to regl({...})"),d.type(Ie,"object","invalid args to regl({...})");function et(L){var A=r({},L);delete A.uniforms,delete A.attributes,delete A.context,delete A.vao,"stencil"in A&&A.stencil.op&&(A.stencil.opBack=A.stencil.opFront=A.stencil.op,delete A.stencil.op);function w(E){if(E in A){var v=A[E];delete A[E],Object.keys(v).forEach(function(b){A[E+"."+b]=v[b]})}}return w("blend"),w("depth"),w("cull"),w("stencil"),w("polygonOffset"),w("scissor"),w("sample"),"vao"in L&&(A.vao=L.vao),A}function nt(L,A){var w={},E={};return Object.keys(L).forEach(function(v){var b=L[v];if(Lt.isDynamic(b)){E[v]=Lt.unbox(b,v);return}else if(A&&Array.isArray(b)){for(var g=0;g<b.length;++g)if(Lt.isDynamic(b[g])){E[v]=Lt.unbox(b,v);return}}w[v]=b}),{dynamic:E,static:w}}var bt=nt(Ie.context||{},!0),Pn=nt(Ie.uniforms||{},!0),wr=nt(Ie.attributes||{},!1),y=nt(et(Ie),!1),M={gpuTime:0,cpuTime:0,count:0},I=Se.compile(y,wr,Pn,bt,M),_e=I.draw,Ke=I.batch,m=I.scope,c=[];function T(L){for(;c.length<L;)c.push(null);return c}function P(L,A){var w;if(j&&d.raise("context lost"),typeof L=="function")return m.call(this,null,L,0);if(typeof A=="function")if(typeof L=="number")for(w=0;w<L;++w)m.call(this,null,A,w);else if(Array.isArray(L))for(w=0;w<L.length;++w)m.call(this,L[w],A,w);else return m.call(this,L,A,0);else if(typeof L=="number"){if(L>0)return Ke.call(this,T(L|0),L|0)}else if(Array.isArray(L)){if(L.length)return Ke.call(this,L,L.length)}else return _e.call(this,L)}return r(P,{stats:M,destroy:function(){I.destroy()}})}var ht=$.setFBO=Et({framebuffer:Lt.define.call(null,$c,"framebuffer")});function Tt(Ie,et){var nt=0;Se.procs.poll();var bt=et.color;bt&&(_.clearColor(+bt[0]||0,+bt[1]||0,+bt[2]||0,+bt[3]||0),nt|=qx),"depth"in et&&(_.clearDepth(+et.depth),nt|=Yx),"stencil"in et&&(_.clearStencil(et.stencil|0),nt|=Zx),d(!!nt,"called regl.clear with no buffer specified"),_.clear(nt)}function Pt(Ie){if(d(typeof Ie=="object"&&Ie,"regl.clear() takes an object as input"),"framebuffer"in Ie)if(Ie.framebuffer&&Ie.framebuffer_reglType==="framebufferCube")for(var et=0;et<6;++et)ht(r({framebuffer:Ie.framebuffer.faces[et]},Ie),Tt);else ht(Ie,Tt);else Tt(null,Ie)}function Ct(Ie){d.type(Ie,"function","regl.frame() callback must be a function"),de.push(Ie);function et(){var nt=Hc(de,Ie);d(nt>=0,"cannot cancel a frame twice");function bt(){var Pn=Hc(de,bt);de[Pn]=de[de.length-1],de.length-=1,de.length<=0&&Je()}de[nt]=bt}return $e(),{cancel:et}}function It(){var Ie=ee.viewport,et=ee.scissor_box;Ie[0]=Ie[1]=et[0]=et[1]=0,J.viewportWidth=J.framebufferWidth=J.drawingBufferWidth=Ie[2]=et[2]=_.drawingBufferWidth,J.viewportHeight=J.framebufferHeight=J.drawingBufferHeight=Ie[3]=et[3]=_.drawingBufferHeight}function Bt(){J.tick+=1,J.time=qe(),It(),Se.procs.poll()}function xt(){Fe.refresh(),It(),Se.procs.refresh(),ie&&ie.update()}function qe(){return(Mr()-ae)/1e3}xt();function Ut(Ie,et){d.type(et,"function","listener callback must be a function");var nt;switch(Ie){case"frame":return Ct(et);case"lost":nt=Ve;break;case"restore":nt=Ne;break;case"destroy":nt=pe;break;default:d.raise("invalid event, must be one of frame,lost,restore,destroy")}return nt.push(et),{cancel:function(){for(var bt=0;bt<nt.length;++bt)if(nt[bt]===et){nt[bt]=nt[nt.length-1],nt.pop();return}}}}var ot=r(Et,{clear:Pt,prop:Lt.define.bind(null,$c),context:Lt.define.bind(null,Kx),this:Lt.define.bind(null,Jx),draw:Et({}),buffer:function(Ie){return te.create(Ie,Qx,!1,!1)},elements:function(Ie){return xe.create(Ie,!1)},texture:Fe.create2D,cube:Fe.createCube,renderbuffer:X.create,framebuffer:$.create,framebufferCube:$.createCube,vao:Z.createVAO,attributes:O,frame:Ct,on:Ut,limits:G,hasExtension:function(Ie){return G.extensions.indexOf(Ie.toLowerCase())>=0},read:ce,destroy:tt,_gl:_,_refresh:xt,poll:function(){Bt(),ie&&ie.update()},now:qe,stats:K});return h.onDone(null,ot),ot}return eb})}(io)),io.exports}var Tp=Sp();const wp=Da(Tp),Ap="#b3b3b3",Ep=void 0,Pp=void 0,Cp=1,kp=4,Lp="#666666",Fp=.1,Rp=1,Ip=1,Dp="#222222",We={enableSimulation:!0,spaceSize:8192,pointSizeScale:1,linkWidthScale:1,arrowSizeScale:1,renderLinks:!0,curvedLinks:!1,curvedLinkSegments:19,curvedLinkWeight:.8,curvedLinkControlPointDistance:.5,arrowLinks:!1,linkVisibilityDistanceRange:[50,150],linkVisibilityMinTransparency:.25,hoveredPointCursor:"auto",renderHoveredPointRing:!1,hoveredPointRingColor:"white",focusedPointRingColor:"white",focusedPointIndex:void 0,useClassicQuadtree:!1,simulation:{decay:5e3,gravity:.25,center:0,repulsion:1,repulsionTheta:1.15,repulsionQuadtreeLevels:12,linkSpring:1,linkDistance:10,linkDistRandomVariationRange:[1,1.2],repulsionFromMouse:2,friction:.85,cluster:.1},showFPSMonitor:!1,pixelRatio:2,scalePointsOnZoom:!1,scaleLinksOnZoom:!1,enableZoom:!0,enableSimulationDuringZoom:!1,enableDrag:!1,fitViewOnInit:!0,fitViewDelay:250,fitViewPadding:.1,fitViewDuration:250,pointSamplingDistance:150,attribution:"",rescalePositions:void 0,enableRightClickRepulsion:!1},zp=.7,Op=.95,Mp=3;/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */const{entries:Zf,setPrototypeOf:Qf,isFrozen:Np,getPrototypeOf:Gp,getOwnPropertyDescriptor:Bp}=Object;let{freeze:Xt,seal:on,create:Kf}=Object,{apply:za,construct:Oa}=typeof Reflect<"u"&&Reflect;Xt||(Xt=function(e){return e}),on||(on=function(e){return e}),za||(za=function(e,n,r){return e.apply(n,r)}),Oa||(Oa=function(e,n){return new e(...n)});const oo=qt(Array.prototype.forEach),Up=qt(Array.prototype.lastIndexOf),Jf=qt(Array.prototype.pop),li=qt(Array.prototype.push),Vp=qt(Array.prototype.splice),ao=qt(String.prototype.toLowerCase),Ma=qt(String.prototype.toString),eu=qt(String.prototype.match),ci=qt(String.prototype.replace),$p=qt(String.prototype.indexOf),Hp=qt(String.prototype.trim),mn=qt(Object.prototype.hasOwnProperty),Wt=qt(RegExp.prototype.test),hi=jp(TypeError);function qt(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return za(t,e,r)}}function jp(t){return function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return Oa(t,n)}}function rt(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ao;Qf&&Qf(t,null);let r=e.length;for(;r--;){let i=e[r];if(typeof i=="string"){const o=n(i);o!==i&&(Np(e)||(e[r]=o),i=o)}t[i]=!0}return t}function Xp(t){for(let e=0;e<t.length;e++)mn(t,e)||(t[e]=null);return t}function Rn(t){const e=Kf(null);for(const[n,r]of Zf(t))mn(t,n)&&(Array.isArray(r)?e[n]=Xp(r):r&&typeof r=="object"&&r.constructor===Object?e[n]=Rn(r):e[n]=r);return e}function di(t,e){for(;t!==null;){const r=Bp(t,e);if(r){if(r.get)return qt(r.get);if(typeof r.value=="function")return qt(r.value)}t=Gp(t)}function n(){return null}return n}const tu=Xt(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Na=Xt(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Ga=Xt(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Wp=Xt(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Ba=Xt(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),qp=Xt(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),nu=Xt(["#text"]),ru=Xt(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),Ua=Xt(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),iu=Xt(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),so=Xt(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Yp=on(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Zp=on(/<%[\w\W]*|[\w\W]*%>/gm),Qp=on(/\$\{[\w\W]*/gm),Kp=on(/^data-[\-\w.\u00B7-\uFFFF]+$/),Jp=on(/^aria-[\-\w]+$/),ou=on(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),e0=on(/^(?:\w+script|data):/i),t0=on(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),au=on(/^html$/i),n0=on(/^[a-z][.\w]*(-[.\w]+)+$/i);var su=Object.freeze({__proto__:null,ARIA_ATTR:Jp,ATTR_WHITESPACE:t0,CUSTOM_ELEMENT:n0,DATA_ATTR:Kp,DOCTYPE_NAME:au,ERB_EXPR:Zp,IS_ALLOWED_URI:ou,IS_SCRIPT_OR_DATA:e0,MUSTACHE_EXPR:Yp,TMPLIT_EXPR:Qp});const mi={element:1,text:3,progressingInstruction:7,comment:8,document:9},r0=function(){return typeof window>"u"?null:window},i0=function(e,n){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null;const i="data-tt-policy-suffix";n&&n.hasAttribute(i)&&(r=n.getAttribute(i));const o="dompurify"+(r?"#"+r:"");try{return e.createPolicy(o,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}},fu=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function uu(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:r0();const e=Be=>uu(Be);if(e.version="3.2.6",e.removed=[],!t||!t.document||t.document.nodeType!==mi.document||!t.Element)return e.isSupported=!1,e;let{document:n}=t;const r=n,i=r.currentScript,{DocumentFragment:o,HTMLTemplateElement:s,Node:f,Element:u,NodeFilter:l,NamedNodeMap:p=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:x,DOMParser:S,trustedTypes:D}=t,Y=u.prototype,Ee=di(Y,"cloneNode"),Te=di(Y,"remove"),se=di(Y,"nextSibling"),Ue=di(Y,"childNodes"),He=di(Y,"parentNode");if(typeof s=="function"){const Be=n.createElement("template");Be.content&&Be.content.ownerDocument&&(n=Be.content.ownerDocument)}let H,fe="";const{implementation:Re,createNodeIterator:Ge,createDocumentFragment:Ye,getElementsByTagName:at}=n,{importNode:ut}=r;let Ae=fu();e.isSupported=typeof Zf=="function"&&typeof He=="function"&&Re&&Re.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:lt,ERB_EXPR:it,TMPLIT_EXPR:N,DATA_ATTR:Ce,ARIA_ATTR:re,IS_SCRIPT_OR_DATA:ke,ATTR_WHITESPACE:Xe,CUSTOM_ELEMENT:je}=su;let{IS_ALLOWED_URI:Qe}=su,Ze=null;const dt=rt({},[...tu,...Na,...Ga,...Ba,...nu]);let ct=null;const _t=rt({},[...ru,...Ua,...iu,...so]);let st=Object.seal(Kf(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),$t=null,Ht=null,Qt=!0,zn=!0,wo=!1,Ao=!0,On=!1,sr=!0,Tn=!1,Ir=!1,Dr=!1,$n=!1,Ot=!1,fr=!1,ur=!0,Eo=!1;const as="user-content-";let d=!0,lr=!1,Hn={},jn=null;const Po=rt({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let wn=null;const yi=rt({},["audio","video","img","source","image","track"]);let Mn=null;const xi=rt({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),zr="http://www.w3.org/1998/Math/MathML",Or="http://www.w3.org/2000/svg",sn="http://www.w3.org/1999/xhtml";let Lt=sn,cr=!1,Mr=null;const ss=rt({},[zr,Or,sn],Ma);let Nr=rt({},["mi","mo","mn","ms","mtext"]),Gr=rt({},["annotation-xml"]);const fs=rt({},["title","style","font","a","script"]);let hr=null;const Co=["application/xhtml+xml","text/html"],ko="text/html";let Ft=null,Xn=null;const Yt=n.createElement("form"),Lo=function(C){return C instanceof RegExp||C instanceof Function},bi=function(){let C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Xn&&Xn===C)){if((!C||typeof C!="object")&&(C={}),C=Rn(C),hr=Co.indexOf(C.PARSER_MEDIA_TYPE)===-1?ko:C.PARSER_MEDIA_TYPE,Ft=hr==="application/xhtml+xml"?Ma:ao,Ze=mn(C,"ALLOWED_TAGS")?rt({},C.ALLOWED_TAGS,Ft):dt,ct=mn(C,"ALLOWED_ATTR")?rt({},C.ALLOWED_ATTR,Ft):_t,Mr=mn(C,"ALLOWED_NAMESPACES")?rt({},C.ALLOWED_NAMESPACES,Ma):ss,Mn=mn(C,"ADD_URI_SAFE_ATTR")?rt(Rn(xi),C.ADD_URI_SAFE_ATTR,Ft):xi,wn=mn(C,"ADD_DATA_URI_TAGS")?rt(Rn(yi),C.ADD_DATA_URI_TAGS,Ft):yi,jn=mn(C,"FORBID_CONTENTS")?rt({},C.FORBID_CONTENTS,Ft):Po,$t=mn(C,"FORBID_TAGS")?rt({},C.FORBID_TAGS,Ft):Rn({}),Ht=mn(C,"FORBID_ATTR")?rt({},C.FORBID_ATTR,Ft):Rn({}),Hn=mn(C,"USE_PROFILES")?C.USE_PROFILES:!1,Qt=C.ALLOW_ARIA_ATTR!==!1,zn=C.ALLOW_DATA_ATTR!==!1,wo=C.ALLOW_UNKNOWN_PROTOCOLS||!1,Ao=C.ALLOW_SELF_CLOSE_IN_ATTR!==!1,On=C.SAFE_FOR_TEMPLATES||!1,sr=C.SAFE_FOR_XML!==!1,Tn=C.WHOLE_DOCUMENT||!1,$n=C.RETURN_DOM||!1,Ot=C.RETURN_DOM_FRAGMENT||!1,fr=C.RETURN_TRUSTED_TYPE||!1,Dr=C.FORCE_BODY||!1,ur=C.SANITIZE_DOM!==!1,Eo=C.SANITIZE_NAMED_PROPS||!1,d=C.KEEP_CONTENT!==!1,lr=C.IN_PLACE||!1,Qe=C.ALLOWED_URI_REGEXP||ou,Lt=C.NAMESPACE||sn,Nr=C.MATHML_TEXT_INTEGRATION_POINTS||Nr,Gr=C.HTML_INTEGRATION_POINTS||Gr,st=C.CUSTOM_ELEMENT_HANDLING||{},C.CUSTOM_ELEMENT_HANDLING&&Lo(C.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(st.tagNameCheck=C.CUSTOM_ELEMENT_HANDLING.tagNameCheck),C.CUSTOM_ELEMENT_HANDLING&&Lo(C.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(st.attributeNameCheck=C.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),C.CUSTOM_ELEMENT_HANDLING&&typeof C.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(st.allowCustomizedBuiltInElements=C.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),On&&(zn=!1),Ot&&($n=!0),Hn&&(Ze=rt({},nu),ct=[],Hn.html===!0&&(rt(Ze,tu),rt(ct,ru)),Hn.svg===!0&&(rt(Ze,Na),rt(ct,Ua),rt(ct,so)),Hn.svgFilters===!0&&(rt(Ze,Ga),rt(ct,Ua),rt(ct,so)),Hn.mathMl===!0&&(rt(Ze,Ba),rt(ct,iu),rt(ct,so))),C.ADD_TAGS&&(Ze===dt&&(Ze=Rn(Ze)),rt(Ze,C.ADD_TAGS,Ft)),C.ADD_ATTR&&(ct===_t&&(ct=Rn(ct)),rt(ct,C.ADD_ATTR,Ft)),C.ADD_URI_SAFE_ATTR&&rt(Mn,C.ADD_URI_SAFE_ATTR,Ft),C.FORBID_CONTENTS&&(jn===Po&&(jn=Rn(jn)),rt(jn,C.FORBID_CONTENTS,Ft)),d&&(Ze["#text"]=!0),Tn&&rt(Ze,["html","head","body"]),Ze.table&&(rt(Ze,["tbody"]),delete $t.tbody),C.TRUSTED_TYPES_POLICY){if(typeof C.TRUSTED_TYPES_POLICY.createHTML!="function")throw hi('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof C.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw hi('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');H=C.TRUSTED_TYPES_POLICY,fe=H.createHTML("")}else H===void 0&&(H=i0(D,i)),H!==null&&typeof fe=="string"&&(fe=H.createHTML(""));Xt&&Xt(C),Xn=C}},Fo=rt({},[...Na,...Ga,...Wp]),Ro=rt({},[...Ba,...qp]),us=function(C){let ve=He(C);(!ve||!ve.tagName)&&(ve={namespaceURI:Lt,tagName:"template"});const De=ao(C.tagName),mt=ao(ve.tagName);return Mr[C.namespaceURI]?C.namespaceURI===Or?ve.namespaceURI===sn?De==="svg":ve.namespaceURI===zr?De==="svg"&&(mt==="annotation-xml"||Nr[mt]):!!Fo[De]:C.namespaceURI===zr?ve.namespaceURI===sn?De==="math":ve.namespaceURI===Or?De==="math"&&Gr[mt]:!!Ro[De]:C.namespaceURI===sn?ve.namespaceURI===Or&&!Gr[mt]||ve.namespaceURI===zr&&!Nr[mt]?!1:!Ro[De]&&(fs[De]||!Fo[De]):!!(hr==="application/xhtml+xml"&&Mr[C.namespaceURI]):!1},fn=function(C){li(e.removed,{element:C});try{He(C).removeChild(C)}catch{Te(C)}},Wn=function(C,ve){try{li(e.removed,{attribute:ve.getAttributeNode(C),from:ve})}catch{li(e.removed,{attribute:null,from:ve})}if(ve.removeAttribute(C),C==="is")if($n||Ot)try{fn(ve)}catch{}else try{ve.setAttribute(C,"")}catch{}},Io=function(C){let ve=null,De=null;if(Dr)C="<remove></remove>"+C;else{const At=eu(C,/^[\r\n\t ]+/);De=At&&At[0]}hr==="application/xhtml+xml"&&Lt===sn&&(C='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+C+"</body></html>");const mt=H?H.createHTML(C):C;if(Lt===sn)try{ve=new S().parseFromString(mt,hr)}catch{}if(!ve||!ve.documentElement){ve=Re.createDocument(Lt,"template",null);try{ve.documentElement.innerHTML=cr?fe:mt}catch{}}const Mt=ve.body||ve.documentElement;return C&&De&&Mt.insertBefore(n.createTextNode(De),Mt.childNodes[0]||null),Lt===sn?at.call(ve,Tn?"html":"body")[0]:Tn?ve.documentElement:Mt},_i=function(C){return Ge.call(C.ownerDocument||C,C,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Br=function(C){return C instanceof x&&(typeof C.nodeName!="string"||typeof C.textContent!="string"||typeof C.removeChild!="function"||!(C.attributes instanceof p)||typeof C.removeAttribute!="function"||typeof C.setAttribute!="function"||typeof C.namespaceURI!="string"||typeof C.insertBefore!="function"||typeof C.hasChildNodes!="function")},gt=function(C){return typeof f=="function"&&C instanceof f};function vn(Be,C,ve){oo(Be,De=>{De.call(e,C,ve,Xn)})}const Do=function(C){let ve=null;if(vn(Ae.beforeSanitizeElements,C,null),Br(C))return fn(C),!0;const De=Ft(C.nodeName);if(vn(Ae.uponSanitizeElement,C,{tagName:De,allowedTags:Ze}),sr&&C.hasChildNodes()&&!gt(C.firstElementChild)&&Wt(/<[/\w!]/g,C.innerHTML)&&Wt(/<[/\w!]/g,C.textContent)||C.nodeType===mi.progressingInstruction||sr&&C.nodeType===mi.comment&&Wt(/<[/\w]/g,C.data))return fn(C),!0;if(!Ze[De]||$t[De]){if(!$t[De]&&Oo(De)&&(st.tagNameCheck instanceof RegExp&&Wt(st.tagNameCheck,De)||st.tagNameCheck instanceof Function&&st.tagNameCheck(De)))return!1;if(d&&!jn[De]){const mt=He(C)||C.parentNode,Mt=Ue(C)||C.childNodes;if(Mt&&mt){const At=Mt.length;for(let jt=At-1;jt>=0;--jt){const gn=Ee(Mt[jt],!0);gn.__removalCount=(C.__removalCount||0)+1,mt.insertBefore(gn,se(C))}}}return fn(C),!0}return C instanceof u&&!us(C)||(De==="noscript"||De==="noembed"||De==="noframes")&&Wt(/<\/no(script|embed|frames)/i,C.innerHTML)?(fn(C),!0):(On&&C.nodeType===mi.text&&(ve=C.textContent,oo([lt,it,N],mt=>{ve=ci(ve,mt," ")}),C.textContent!==ve&&(li(e.removed,{element:C.cloneNode()}),C.textContent=ve)),vn(Ae.afterSanitizeElements,C,null),!1)},zo=function(C,ve,De){if(ur&&(ve==="id"||ve==="name")&&(De in n||De in Yt))return!1;if(!(zn&&!Ht[ve]&&Wt(Ce,ve))){if(!(Qt&&Wt(re,ve))){if(!ct[ve]||Ht[ve]){if(!(Oo(C)&&(st.tagNameCheck instanceof RegExp&&Wt(st.tagNameCheck,C)||st.tagNameCheck instanceof Function&&st.tagNameCheck(C))&&(st.attributeNameCheck instanceof RegExp&&Wt(st.attributeNameCheck,ve)||st.attributeNameCheck instanceof Function&&st.attributeNameCheck(ve))||ve==="is"&&st.allowCustomizedBuiltInElements&&(st.tagNameCheck instanceof RegExp&&Wt(st.tagNameCheck,De)||st.tagNameCheck instanceof Function&&st.tagNameCheck(De))))return!1}else if(!Mn[ve]){if(!Wt(Qe,ci(De,Xe,""))){if(!((ve==="src"||ve==="xlink:href"||ve==="href")&&C!=="script"&&$p(De,"data:")===0&&wn[C])){if(!(wo&&!Wt(ke,ci(De,Xe,"")))){if(De)return!1}}}}}}return!0},Oo=function(C){return C!=="annotation-xml"&&eu(C,je)},Mo=function(C){vn(Ae.beforeSanitizeAttributes,C,null);const{attributes:ve}=C;if(!ve||Br(C))return;const De={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ct,forceKeepAttr:void 0};let mt=ve.length;for(;mt--;){const Mt=ve[mt],{name:At,namespaceURI:jt,value:gn}=Mt,dr=Ft(At),Si=gn;let Nt=At==="value"?Si:Hp(Si);if(De.attrName=dr,De.attrValue=Nt,De.keepAttr=!0,De.forceKeepAttr=void 0,vn(Ae.uponSanitizeAttribute,C,De),Nt=De.attrValue,Eo&&(dr==="id"||dr==="name")&&(Wn(At,C),Nt=as+Nt),sr&&Wt(/((--!?|])>)|<\/(style|title)/i,Nt)){Wn(At,C);continue}if(De.forceKeepAttr)continue;if(!De.keepAttr){Wn(At,C);continue}if(!Ao&&Wt(/\/>/i,Nt)){Wn(At,C);continue}On&&oo([lt,it,N],Go=>{Nt=ci(Nt,Go," ")});const No=Ft(C.nodeName);if(!zo(No,dr,Nt)){Wn(At,C);continue}if(H&&typeof D=="object"&&typeof D.getAttributeType=="function"&&!jt)switch(D.getAttributeType(No,dr)){case"TrustedHTML":{Nt=H.createHTML(Nt);break}case"TrustedScriptURL":{Nt=H.createScriptURL(Nt);break}}if(Nt!==Si)try{jt?C.setAttributeNS(jt,At,Nt):C.setAttribute(At,Nt),Br(C)?fn(C):Jf(e.removed)}catch{Wn(At,C)}}vn(Ae.afterSanitizeAttributes,C,null)},ls=function Be(C){let ve=null;const De=_i(C);for(vn(Ae.beforeSanitizeShadowDOM,C,null);ve=De.nextNode();)vn(Ae.uponSanitizeShadowNode,ve,null),Do(ve),Mo(ve),ve.content instanceof o&&Be(ve.content);vn(Ae.afterSanitizeShadowDOM,C,null)};return e.sanitize=function(Be){let C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ve=null,De=null,mt=null,Mt=null;if(cr=!Be,cr&&(Be="<!-->"),typeof Be!="string"&&!gt(Be))if(typeof Be.toString=="function"){if(Be=Be.toString(),typeof Be!="string")throw hi("dirty is not a string, aborting")}else throw hi("toString is not a function");if(!e.isSupported)return Be;if(Ir||bi(C),e.removed=[],typeof Be=="string"&&(lr=!1),lr){if(Be.nodeName){const gn=Ft(Be.nodeName);if(!Ze[gn]||$t[gn])throw hi("root node is forbidden and cannot be sanitized in-place")}}else if(Be instanceof f)ve=Io("<!---->"),De=ve.ownerDocument.importNode(Be,!0),De.nodeType===mi.element&&De.nodeName==="BODY"||De.nodeName==="HTML"?ve=De:ve.appendChild(De);else{if(!$n&&!On&&!Tn&&Be.indexOf("<")===-1)return H&&fr?H.createHTML(Be):Be;if(ve=Io(Be),!ve)return $n?null:fr?fe:""}ve&&Dr&&fn(ve.firstChild);const At=_i(lr?Be:ve);for(;mt=At.nextNode();)Do(mt),Mo(mt),mt.content instanceof o&&ls(mt.content);if(lr)return Be;if($n){if(Ot)for(Mt=Ye.call(ve.ownerDocument);ve.firstChild;)Mt.appendChild(ve.firstChild);else Mt=ve;return(ct.shadowroot||ct.shadowrootmode)&&(Mt=ut.call(r,Mt,!0)),Mt}let jt=Tn?ve.outerHTML:ve.innerHTML;return Tn&&Ze["!doctype"]&&ve.ownerDocument&&ve.ownerDocument.doctype&&ve.ownerDocument.doctype.name&&Wt(au,ve.ownerDocument.doctype.name)&&(jt="<!DOCTYPE "+ve.ownerDocument.doctype.name+`>
|
|
9
|
-
`+
|
|
8
|
+
`),J=Function.apply(null,h.concat(le));return J.apply(null,_)}return{global:K,link:O,block:X,proc:ie,scope:R,cond:B,compile:ae}}var Zr="xyzw".split(""),uc=5121,Qr=1,Ns=2,Gs=0,Bs=1,Us=2,Vs=3,na=4,lc=5,cc=6,hc="dither",dc="blend.enable",mc="blend.color",$s="blend.equation",Hs="blend.func",pc="depth.enable",vc="depth.func",gc="depth.range",yc="depth.mask",Xs="colorMask",xc="cull.enable",bc="cull.face",Ws="frontFace",js="lineWidth",_c="polygonOffset.enable",qs="polygonOffset.offset",Sc="sample.alpha",Tc="sample.enable",Ys="sample.coverage",wc="stencil.enable",Ac="stencil.mask",Zs="stencil.func",Qs="stencil.opFront",ki="stencil.opBack",Ec="scissor.enable",ra="scissor.box",Gn="viewport",Ii="profile",xr="framebuffer",Li="vert",Di="frag",br="elements",_r="primitive",Sr="count",ia="offset",oa="instances",Fi="vao",Ks="Width",Js="Height",Kr=xr+Ks,Jr=xr+Js,wx=Gn+Ks,Ax=Gn+Js,Cc="drawingBuffer",Pc=Cc+Ks,kc=Cc+Js,Ex=[Hs,$s,Zs,Qs,ki,Ys,Gn,ra,qs],ei=34962,ef=34963,Cx=35632,Px=35633,Ic=3553,kx=34067,Ix=2884,Lx=3042,Dx=3024,Fx=2960,zx=2929,Rx=3089,Ox=32823,Mx=32926,Nx=32928,tf=5126,aa=35664,sa=35665,fa=35666,nf=5124,ua=35667,la=35668,ca=35669,rf=35670,ha=35671,da=35672,ma=35673,zi=35674,Ri=35675,Oi=35676,Mi=35678,Ni=35680,of=4,Gi=1028,Tr=1029,Lc=2304,af=2305,Gx=32775,Bx=32776,Ux=519,Qn=7680,Dc=0,Fc=1,zc=32774,Vx=513,Rc=36160,$x=36064,En={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},Oc=["constant color, constant alpha","one minus constant color, constant alpha","constant color, one minus constant alpha","one minus constant color, one minus constant alpha","constant alpha, constant color","constant alpha, one minus constant color","one minus constant alpha, constant color","one minus constant alpha, one minus constant color"],ti={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Kn={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},Mc={frag:Cx,vert:Px},sf={cw:Lc,ccw:af};function pa(a){return Array.isArray(a)||n(a)||yn(a)}function Nc(a){return a.sort(function(h,_){return h===Gn?-1:_===Gn?1:h<_?-1:1})}function Dt(a,h,_,O){this.thisDep=a,this.contextDep=h,this.propDep=_,this.append=O}function Jn(a){return a&&!(a.thisDep||a.contextDep||a.propDep)}function St(a){return new Dt(!1,!1,!1,a)}function Kt(a,h){var _=a.type;if(_===Gs){var O=a.data.length;return new Dt(!0,O>=1,O>=2,h)}else if(_===na){var X=a.data;return new Dt(X.thisDep,X.contextDep,X.propDep,h)}else{if(_===lc)return new Dt(!1,!1,!1,h);if(_===cc){for(var R=!1,B=!1,K=!1,Q=0;Q<a.data.length;++Q){var ie=a.data[Q];if(ie.type===Bs)K=!0;else if(ie.type===Us)B=!0;else if(ie.type===Vs)R=!0;else if(ie.type===Gs){R=!0;var ae=ie.data;ae>=1&&(B=!0),ae>=2&&(K=!0)}else ie.type===na&&(R=R||ie.data.thisDep,B=B||ie.data.contextDep,K=K||ie.data.propDep)}return new Dt(R,B,K,h)}else return new Dt(_===Vs,_===Us,_===Bs,h)}}var Gc=new Dt(!1,!1,!1,function(){});function Hx(a,h,_,O,X,R,B,K,Q,ie,ae,oe,le,J,ne){var k=ie.Record,G={add:32774,subtract:32778,"reverse subtract":32779};_.ext_blend_minmax&&(G.min=Gx,G.max=Bx);var te=_.angle_instanced_arrays,xe=_.webgl_draw_buffers,Z=_.oes_vertex_array_object,ge={dirty:!0,profile:ne.profile},me={},De=[],W={},H={};function Se(m){return m.replace(".","_")}function ce(m,c,T){var C=Se(m);De.push(m),me[C]=ge[C]=!!T,W[C]=c}function ee(m,c,T){var C=Se(m);De.push(m),Array.isArray(T)?(ge[C]=T.slice(),me[C]=T.slice()):ge[C]=me[C]=T,H[C]=c}ce(hc,Dx),ce(dc,Lx),ee(mc,"blendColor",[0,0,0,0]),ee($s,"blendEquationSeparate",[zc,zc]),ee(Hs,"blendFuncSeparate",[Fc,Dc,Fc,Dc]),ce(pc,zx,!0),ee(vc,"depthFunc",Vx),ee(gc,"depthRange",[0,1]),ee(yc,"depthMask",!0),ee(Xs,Xs,[!0,!0,!0,!0]),ce(xc,Ix),ee(bc,"cullFace",Tr),ee(Ws,Ws,af),ee(js,js,1),ce(_c,Ox),ee(qs,"polygonOffset",[0,0]),ce(Sc,Mx),ce(Tc,Nx),ee(Ys,"sampleCoverage",[1,!1]),ce(wc,Fx),ee(Ac,"stencilMask",-1),ee(Zs,"stencilFunc",[Ux,0,-1]),ee(Qs,"stencilOpSeparate",[Gi,Qn,Qn,Qn]),ee(ki,"stencilOpSeparate",[Tr,Qn,Qn,Qn]),ce(Ec,Rx),ee(ra,"scissor",[0,0,a.drawingBufferWidth,a.drawingBufferHeight]),ee(Gn,Gn,[0,0,a.drawingBufferWidth,a.drawingBufferHeight]);var he={gl:a,context:le,strings:h,next:me,current:ge,draw:oe,elements:R,buffer:X,shader:ae,attributes:ie.state,vao:ie,uniforms:Q,framebuffer:K,extensions:_,timer:J,isBufferArgs:pa},de={primTypes:Yn,compareFuncs:ti,blendFuncs:En,blendEquations:G,stencilOps:Kn,glTypes:mr,orientationType:sf};d.optional(function(){he.isArrayLike=pt}),xe&&(de.backBuffer=[Tr],de.drawBuffer=Yt(O.maxDrawbuffers,function(m){return m===0?[0]:Yt(m,function(c){return $x+c})}));var $e=0;function Be(){var m=Tx(),c=m.link,T=m.global;m.id=$e++,m.batchId="0";var C=c(he),I=m.shared={props:"a0"};Object.keys(he).forEach(function(b){I[b]=T.def(C,".",b)}),d.optional(function(){m.CHECK=c(d),m.commandStr=d.guessCommand(),m.command=c(m.commandStr),m.assert=function(b,g,D){b("if(!(",g,"))",this.CHECK,".commandRaise(",c(D),",",this.command,");")},de.invalidBlendCombinations=Oc});var A=m.next={},w=m.current={};Object.keys(H).forEach(function(b){Array.isArray(ge[b])&&(A[b]=T.def(I.next,".",b),w[b]=T.def(I.current,".",b))});var E=m.constants={};Object.keys(de).forEach(function(b){E[b]=T.def(JSON.stringify(de[b]))}),m.invoke=function(b,g){switch(g.type){case Gs:var D=["this",I.context,I.props,m.batchId];return b.def(c(g.data),".call(",D.slice(0,Math.max(g.data.length+1,4)),")");case Bs:return b.def(I.props,g.data);case Us:return b.def(I.context,g.data);case Vs:return b.def("this",g.data);case na:return g.data.append(m,b),g.data.ref;case lc:return g.data.toString();case cc:return g.data.map(function(L){return m.invoke(b,L)})}},m.attribCache={};var v={};return m.scopeAttrib=function(b){var g=h.id(b);if(g in v)return v[g];var D=ie.scope[g];D||(D=ie.scope[g]=new k);var L=v[g]=c(D);return L},m}function pe(m){var c=m.static,T=m.dynamic,C;if(Ii in c){var I=!!c[Ii];C=St(function(w,E){return I}),C.enable=I}else if(Ii in T){var A=T[Ii];C=Kt(A,function(w,E){return w.invoke(E,A)})}return C}function ye(m,c){var T=m.static,C=m.dynamic;if(xr in T){var I=T[xr];return I?(I=K.getFramebuffer(I),d.command(I,"invalid framebuffer object"),St(function(w,E){var v=w.link(I),b=w.shared;E.set(b.framebuffer,".next",v);var g=b.context;return E.set(g,"."+Kr,v+".width"),E.set(g,"."+Jr,v+".height"),v})):St(function(w,E){var v=w.shared;E.set(v.framebuffer,".next","null");var b=v.context;return E.set(b,"."+Kr,b+"."+Pc),E.set(b,"."+Jr,b+"."+kc),"null"})}else if(xr in C){var A=C[xr];return Kt(A,function(w,E){var v=w.invoke(E,A),b=w.shared,g=b.framebuffer,D=E.def(g,".getFramebuffer(",v,")");d.optional(function(){w.assert(E,"!"+v+"||"+D,"invalid framebuffer object")}),E.set(g,".next",D);var L=b.context;return E.set(L,"."+Kr,D+"?"+D+".width:"+L+"."+Pc),E.set(L,"."+Jr,D+"?"+D+".height:"+L+"."+kc),D})}else return null}function Re(m,c,T){var C=m.static,I=m.dynamic;function A(v){if(v in C){var b=C[v];d.commandType(b,"object","invalid "+v,T.commandStr);var g=!0,D=b.x|0,L=b.y|0,$,j;return"width"in b?($=b.width|0,d.command($>=0,"invalid "+v,T.commandStr)):g=!1,"height"in b?(j=b.height|0,d.command(j>=0,"invalid "+v,T.commandStr)):g=!1,new Dt(!g&&c&&c.thisDep,!g&&c&&c.contextDep,!g&&c&&c.propDep,function(Ie,be){var Y=Ie.shared.context,U=$;"width"in b||(U=be.def(Y,".",Kr,"-",D));var Ce=j;return"height"in b||(Ce=be.def(Y,".",Jr,"-",L)),[D,L,U,Ce]})}else if(v in I){var ue=I[v],Ne=Kt(ue,function(Ie,be){var Y=Ie.invoke(be,ue);d.optional(function(){Ie.assert(be,Y+"&&typeof "+Y+'==="object"',"invalid "+v)});var U=Ie.shared.context,Ce=be.def(Y,".x|0"),Ae=be.def(Y,".y|0"),Oe=be.def('"width" in ',Y,"?",Y,".width|0:","(",U,".",Kr,"-",Ce,")"),ft=be.def('"height" in ',Y,"?",Y,".height|0:","(",U,".",Jr,"-",Ae,")");return d.optional(function(){Ie.assert(be,Oe+">=0&&"+ft+">=0","invalid "+v)}),[Ce,Ae,Oe,ft]});return c&&(Ne.thisDep=Ne.thisDep||c.thisDep,Ne.contextDep=Ne.contextDep||c.contextDep,Ne.propDep=Ne.propDep||c.propDep),Ne}else return c?new Dt(c.thisDep,c.contextDep,c.propDep,function(Ie,be){var Y=Ie.shared.context;return[0,0,be.def(Y,".",Kr),be.def(Y,".",Jr)]}):null}var w=A(Gn);if(w){var E=w;w=new Dt(w.thisDep,w.contextDep,w.propDep,function(v,b){var g=E.append(v,b),D=v.shared.context;return b.set(D,"."+wx,g[2]),b.set(D,"."+Ax,g[3]),g})}return{viewport:w,scissor_box:A(ra)}}function He(m,c){var T=m.static,C=typeof T[Di]=="string"&&typeof T[Li]=="string";if(C){if(Object.keys(c.dynamic).length>0)return null;var I=c.static,A=Object.keys(I);if(A.length>0&&typeof I[A[0]]=="number"){for(var w=[],E=0;E<A.length;++E)d(typeof I[A[E]]=="number","must specify all vertex attribute locations when using vaos"),w.push([I[A[E]]|0,A[E]]);return w}}return null}function Je(m,c,T){var C=m.static,I=m.dynamic;function A(g){if(g in C){var D=h.id(C[g]);d.optional(function(){ae.shader(Mc[g],D,d.guessCommand())});var L=St(function(){return D});return L.id=D,L}else if(g in I){var $=I[g];return Kt($,function(j,ue){var Ne=j.invoke(ue,$),Ie=ue.def(j.shared.strings,".id(",Ne,")");return d.optional(function(){ue(j.shared.shader,".shader(",Mc[g],",",Ie,",",j.command,");")}),Ie})}return null}var w=A(Di),E=A(Li),v=null,b;return Jn(w)&&Jn(E)?(v=ae.program(E.id,w.id,null,T),b=St(function(g,D){return g.link(v)})):b=new Dt(w&&w.thisDep||E&&E.thisDep,w&&w.contextDep||E&&E.contextDep,w&&w.propDep||E&&E.propDep,function(g,D){var L=g.shared.shader,$;w?$=w.append(g,D):$=D.def(L,".",Di);var j;E?j=E.append(g,D):j=D.def(L,".",Li);var ue=L+".program("+j+","+$;return d.optional(function(){ue+=","+g.command}),D.def(ue+")")}),{frag:w,vert:E,progVar:b,program:v}}function vt(m,c){var T=m.static,C=m.dynamic,I={},A=!1;function w(){if(Fi in T){var be=T[Fi];return be!==null&&ie.getVAO(be)===null&&(be=ie.createVAO(be)),A=!0,I.vao=be,St(function(U){var Ce=ie.getVAO(be);return Ce?U.link(Ce):"null"})}else if(Fi in C){A=!0;var Y=C[Fi];return Kt(Y,function(U,Ce){var Ae=U.invoke(Ce,Y);return Ce.def(U.shared.vao+".getVAO("+Ae+")")})}return null}var E=w(),v=!1;function b(){if(br in T){var be=T[br];if(I.elements=be,pa(be)){var Y=I.elements=R.create(be,!0);be=R.getElements(Y),v=!0}else be&&(be=R.getElements(be),v=!0,d.command(be,"invalid elements",c.commandStr));var U=St(function(Ae,Oe){if(be){var ft=Ae.link(be);return Ae.ELEMENTS=ft,ft}return Ae.ELEMENTS=null,null});return U.value=be,U}else if(br in C){v=!0;var Ce=C[br];return Kt(Ce,function(Ae,Oe){var ft=Ae.shared,Vt=ft.isBufferArgs,Ar=ft.elements,Bn=Ae.invoke(Oe,Ce),Pn=Oe.def("null"),er=Oe.def(Vt,"(",Bn,")"),Er=Ae.cond(er).then(Pn,"=",Ar,".createStream(",Bn,");").else(Pn,"=",Ar,".getElements(",Bn,");");return d.optional(function(){Ae.assert(Er.else,"!"+Bn+"||"+Pn,"invalid elements")}),Oe.entry(Er),Oe.exit(Ae.cond(er).then(Ar,".destroyStream(",Pn,");")),Ae.ELEMENTS=Pn,Pn})}else if(A)return new Dt(E.thisDep,E.contextDep,E.propDep,function(Ae,Oe){return Oe.def(Ae.shared.vao+".currentVAO?"+Ae.shared.elements+".getElements("+Ae.shared.vao+".currentVAO.elements):null")});return null}var g=b();function D(){if(_r in T){var be=T[_r];return I.primitive=be,d.commandParameter(be,Yn,"invalid primitve",c.commandStr),St(function(U,Ce){return Yn[be]})}else if(_r in C){var Y=C[_r];return Kt(Y,function(U,Ce){var Ae=U.constants.primTypes,Oe=U.invoke(Ce,Y);return d.optional(function(){U.assert(Ce,Oe+" in "+Ae,"invalid primitive, must be one of "+Object.keys(Yn))}),Ce.def(Ae,"[",Oe,"]")})}else{if(v)return Jn(g)?g.value?St(function(U,Ce){return Ce.def(U.ELEMENTS,".primType")}):St(function(){return of}):new Dt(g.thisDep,g.contextDep,g.propDep,function(U,Ce){var Ae=U.ELEMENTS;return Ce.def(Ae,"?",Ae,".primType:",of)});if(A)return new Dt(E.thisDep,E.contextDep,E.propDep,function(U,Ce){return Ce.def(U.shared.vao+".currentVAO?"+U.shared.vao+".currentVAO.primitive:"+of)})}return null}function L(be,Y){if(be in T){var U=T[be]|0;return Y?I.offset=U:I.instances=U,d.command(!Y||U>=0,"invalid "+be,c.commandStr),St(function(Ae,Oe){return Y&&(Ae.OFFSET=U),U})}else if(be in C){var Ce=C[be];return Kt(Ce,function(Ae,Oe){var ft=Ae.invoke(Oe,Ce);return Y&&(Ae.OFFSET=ft,d.optional(function(){Ae.assert(Oe,ft+">=0","invalid "+be)})),ft})}else if(Y){if(v)return St(function(Ae,Oe){return Ae.OFFSET=0,0});if(A)return new Dt(E.thisDep,E.contextDep,E.propDep,function(Ae,Oe){return Oe.def(Ae.shared.vao+".currentVAO?"+Ae.shared.vao+".currentVAO.offset:0")})}else if(A)return new Dt(E.thisDep,E.contextDep,E.propDep,function(Ae,Oe){return Oe.def(Ae.shared.vao+".currentVAO?"+Ae.shared.vao+".currentVAO.instances:-1")});return null}var $=L(ia,!0);function j(){if(Sr in T){var be=T[Sr]|0;return I.count=be,d.command(typeof be=="number"&&be>=0,"invalid vertex count",c.commandStr),St(function(){return be})}else if(Sr in C){var Y=C[Sr];return Kt(Y,function(Oe,ft){var Vt=Oe.invoke(ft,Y);return d.optional(function(){Oe.assert(ft,"typeof "+Vt+'==="number"&&'+Vt+">=0&&"+Vt+"===("+Vt+"|0)","invalid vertex count")}),Vt})}else if(v)if(Jn(g)){if(g)return $?new Dt($.thisDep,$.contextDep,$.propDep,function(Oe,ft){var Vt=ft.def(Oe.ELEMENTS,".vertCount-",Oe.OFFSET);return d.optional(function(){Oe.assert(ft,Vt+">=0","invalid vertex offset/element buffer too small")}),Vt}):St(function(Oe,ft){return ft.def(Oe.ELEMENTS,".vertCount")});var U=St(function(){return-1});return d.optional(function(){U.MISSING=!0}),U}else{var Ce=new Dt(g.thisDep||$.thisDep,g.contextDep||$.contextDep,g.propDep||$.propDep,function(Oe,ft){var Vt=Oe.ELEMENTS;return Oe.OFFSET?ft.def(Vt,"?",Vt,".vertCount-",Oe.OFFSET,":-1"):ft.def(Vt,"?",Vt,".vertCount:-1")});return d.optional(function(){Ce.DYNAMIC=!0}),Ce}else if(A){var Ae=new Dt(E.thisDep,E.contextDep,E.propDep,function(Oe,ft){return ft.def(Oe.shared.vao,".currentVAO?",Oe.shared.vao,".currentVAO.count:-1")});return Ae}return null}var ue=D(),Ne=j(),Ie=L(oa,!1);return{elements:g,primitive:ue,count:Ne,instances:Ie,offset:$,vao:E,vaoActive:A,elementsActive:v,static:I}}function yt(m,c){var T=m.static,C=m.dynamic,I={};return De.forEach(function(A){var w=Se(A);function E(v,b){if(A in T){var g=v(T[A]);I[w]=St(function(){return g})}else if(A in C){var D=C[A];I[w]=Kt(D,function(L,$){return b(L,$,L.invoke($,D))})}}switch(A){case xc:case dc:case hc:case wc:case pc:case Ec:case _c:case Sc:case Tc:case yc:return E(function(v){return d.commandType(v,"boolean",A,c.commandStr),v},function(v,b,g){return d.optional(function(){v.assert(b,"typeof "+g+'==="boolean"',"invalid flag "+A,v.commandStr)}),g});case vc:return E(function(v){return d.commandParameter(v,ti,"invalid "+A,c.commandStr),ti[v]},function(v,b,g){var D=v.constants.compareFuncs;return d.optional(function(){v.assert(b,g+" in "+D,"invalid "+A+", must be one of "+Object.keys(ti))}),b.def(D,"[",g,"]")});case gc:return E(function(v){return d.command(pt(v)&&v.length===2&&typeof v[0]=="number"&&typeof v[1]=="number"&&v[0]<=v[1],"depth range is 2d array",c.commandStr),v},function(v,b,g){d.optional(function(){v.assert(b,v.shared.isArrayLike+"("+g+")&&"+g+".length===2&&typeof "+g+'[0]==="number"&&typeof '+g+'[1]==="number"&&'+g+"[0]<="+g+"[1]","depth range must be a 2d array")});var D=b.def("+",g,"[0]"),L=b.def("+",g,"[1]");return[D,L]});case Hs:return E(function(v){d.commandType(v,"object","blend.func",c.commandStr);var b="srcRGB"in v?v.srcRGB:v.src,g="srcAlpha"in v?v.srcAlpha:v.src,D="dstRGB"in v?v.dstRGB:v.dst,L="dstAlpha"in v?v.dstAlpha:v.dst;return d.commandParameter(b,En,w+".srcRGB",c.commandStr),d.commandParameter(g,En,w+".srcAlpha",c.commandStr),d.commandParameter(D,En,w+".dstRGB",c.commandStr),d.commandParameter(L,En,w+".dstAlpha",c.commandStr),d.command(Oc.indexOf(b+", "+D)===-1,"unallowed blending combination (srcRGB, dstRGB) = ("+b+", "+D+")",c.commandStr),[En[b],En[D],En[g],En[L]]},function(v,b,g){var D=v.constants.blendFuncs;d.optional(function(){v.assert(b,g+"&&typeof "+g+'==="object"',"invalid blend func, must be an object")});function L(Y,U){var Ce=b.def('"',Y,U,'" in ',g,"?",g,".",Y,U,":",g,".",Y);return d.optional(function(){v.assert(b,Ce+" in "+D,"invalid "+A+"."+Y+U+", must be one of "+Object.keys(En))}),Ce}var $=L("src","RGB"),j=L("dst","RGB");d.optional(function(){var Y=v.constants.invalidBlendCombinations;v.assert(b,Y+".indexOf("+$+'+", "+'+j+") === -1 ","unallowed blending combination for (srcRGB, dstRGB)")});var ue=b.def(D,"[",$,"]"),Ne=b.def(D,"[",L("src","Alpha"),"]"),Ie=b.def(D,"[",j,"]"),be=b.def(D,"[",L("dst","Alpha"),"]");return[ue,Ie,Ne,be]});case $s:return E(function(v){if(typeof v=="string")return d.commandParameter(v,G,"invalid "+A,c.commandStr),[G[v],G[v]];if(typeof v=="object")return d.commandParameter(v.rgb,G,A+".rgb",c.commandStr),d.commandParameter(v.alpha,G,A+".alpha",c.commandStr),[G[v.rgb],G[v.alpha]];d.commandRaise("invalid blend.equation",c.commandStr)},function(v,b,g){var D=v.constants.blendEquations,L=b.def(),$=b.def(),j=v.cond("typeof ",g,'==="string"');return d.optional(function(){function ue(Ne,Ie,be){v.assert(Ne,be+" in "+D,"invalid "+Ie+", must be one of "+Object.keys(G))}ue(j.then,A,g),v.assert(j.else,g+"&&typeof "+g+'==="object"',"invalid "+A),ue(j.else,A+".rgb",g+".rgb"),ue(j.else,A+".alpha",g+".alpha")}),j.then(L,"=",$,"=",D,"[",g,"];"),j.else(L,"=",D,"[",g,".rgb];",$,"=",D,"[",g,".alpha];"),b(j),[L,$]});case mc:return E(function(v){return d.command(pt(v)&&v.length===4,"blend.color must be a 4d array",c.commandStr),Yt(4,function(b){return+v[b]})},function(v,b,g){return d.optional(function(){v.assert(b,v.shared.isArrayLike+"("+g+")&&"+g+".length===4","blend.color must be a 4d array")}),Yt(4,function(D){return b.def("+",g,"[",D,"]")})});case Ac:return E(function(v){return d.commandType(v,"number",w,c.commandStr),v|0},function(v,b,g){return d.optional(function(){v.assert(b,"typeof "+g+'==="number"',"invalid stencil.mask")}),b.def(g,"|0")});case Zs:return E(function(v){d.commandType(v,"object",w,c.commandStr);var b=v.cmp||"keep",g=v.ref||0,D="mask"in v?v.mask:-1;return d.commandParameter(b,ti,A+".cmp",c.commandStr),d.commandType(g,"number",A+".ref",c.commandStr),d.commandType(D,"number",A+".mask",c.commandStr),[ti[b],g,D]},function(v,b,g){var D=v.constants.compareFuncs;d.optional(function(){function ue(){v.assert(b,Array.prototype.join.call(arguments,""),"invalid stencil.func")}ue(g+"&&typeof ",g,'==="object"'),ue('!("cmp" in ',g,")||(",g,".cmp in ",D,")")});var L=b.def('"cmp" in ',g,"?",D,"[",g,".cmp]",":",Qn),$=b.def(g,".ref|0"),j=b.def('"mask" in ',g,"?",g,".mask|0:-1");return[L,$,j]});case Qs:case ki:return E(function(v){d.commandType(v,"object",w,c.commandStr);var b=v.fail||"keep",g=v.zfail||"keep",D=v.zpass||"keep";return d.commandParameter(b,Kn,A+".fail",c.commandStr),d.commandParameter(g,Kn,A+".zfail",c.commandStr),d.commandParameter(D,Kn,A+".zpass",c.commandStr),[A===ki?Tr:Gi,Kn[b],Kn[g],Kn[D]]},function(v,b,g){var D=v.constants.stencilOps;d.optional(function(){v.assert(b,g+"&&typeof "+g+'==="object"',"invalid "+A)});function L($){return d.optional(function(){v.assert(b,'!("'+$+'" in '+g+")||("+g+"."+$+" in "+D+")","invalid "+A+"."+$+", must be one of "+Object.keys(Kn))}),b.def('"',$,'" in ',g,"?",D,"[",g,".",$,"]:",Qn)}return[A===ki?Tr:Gi,L("fail"),L("zfail"),L("zpass")]});case qs:return E(function(v){d.commandType(v,"object",w,c.commandStr);var b=v.factor|0,g=v.units|0;return d.commandType(b,"number",w+".factor",c.commandStr),d.commandType(g,"number",w+".units",c.commandStr),[b,g]},function(v,b,g){d.optional(function(){v.assert(b,g+"&&typeof "+g+'==="object"',"invalid "+A)});var D=b.def(g,".factor|0"),L=b.def(g,".units|0");return[D,L]});case bc:return E(function(v){var b=0;return v==="front"?b=Gi:v==="back"&&(b=Tr),d.command(!!b,w,c.commandStr),b},function(v,b,g){return d.optional(function(){v.assert(b,g+'==="front"||'+g+'==="back"',"invalid cull.face")}),b.def(g,'==="front"?',Gi,":",Tr)});case js:return E(function(v){return d.command(typeof v=="number"&&v>=O.lineWidthDims[0]&&v<=O.lineWidthDims[1],"invalid line width, must be a positive number between "+O.lineWidthDims[0]+" and "+O.lineWidthDims[1],c.commandStr),v},function(v,b,g){return d.optional(function(){v.assert(b,"typeof "+g+'==="number"&&'+g+">="+O.lineWidthDims[0]+"&&"+g+"<="+O.lineWidthDims[1],"invalid line width")}),g});case Ws:return E(function(v){return d.commandParameter(v,sf,w,c.commandStr),sf[v]},function(v,b,g){return d.optional(function(){v.assert(b,g+'==="cw"||'+g+'==="ccw"',"invalid frontFace, must be one of cw,ccw")}),b.def(g+'==="cw"?'+Lc+":"+af)});case Xs:return E(function(v){return d.command(pt(v)&&v.length===4,"color.mask must be length 4 array",c.commandStr),v.map(function(b){return!!b})},function(v,b,g){return d.optional(function(){v.assert(b,v.shared.isArrayLike+"("+g+")&&"+g+".length===4","invalid color.mask")}),Yt(4,function(D){return"!!"+g+"["+D+"]"})});case Ys:return E(function(v){d.command(typeof v=="object"&&v,w,c.commandStr);var b="value"in v?v.value:1,g=!!v.invert;return d.command(typeof b=="number"&&b>=0&&b<=1,"sample.coverage.value must be a number between 0 and 1",c.commandStr),[b,g]},function(v,b,g){d.optional(function(){v.assert(b,g+"&&typeof "+g+'==="object"',"invalid sample.coverage")});var D=b.def('"value" in ',g,"?+",g,".value:1"),L=b.def("!!",g,".invert");return[D,L]})}}),I}function tt(m,c){var T=m.static,C=m.dynamic,I={};return Object.keys(T).forEach(function(A){var w=T[A],E;if(typeof w=="number"||typeof w=="boolean")E=St(function(){return w});else if(typeof w=="function"){var v=w._reglType;v==="texture2d"||v==="textureCube"?E=St(function(b){return b.link(w)}):v==="framebuffer"||v==="framebufferCube"?(d.command(w.color.length>0,'missing color attachment for framebuffer sent to uniform "'+A+'"',c.commandStr),E=St(function(b){return b.link(w.color[0])})):d.commandRaise('invalid data for uniform "'+A+'"',c.commandStr)}else pt(w)?E=St(function(b){var g=b.global.def("[",Yt(w.length,function(D){return d.command(typeof w[D]=="number"||typeof w[D]=="boolean","invalid uniform "+A,b.commandStr),w[D]}),"]");return g}):d.commandRaise('invalid or missing data for uniform "'+A+'"',c.commandStr);E.value=w,I[A]=E}),Object.keys(C).forEach(function(A){var w=C[A];I[A]=Kt(w,function(E,v){return E.invoke(v,w)})}),I}function Et(m,c){var T=m.static,C=m.dynamic,I={};return Object.keys(T).forEach(function(A){var w=T[A],E=h.id(A),v=new k;if(pa(w))v.state=Qr,v.buffer=X.getBuffer(X.create(w,ei,!1,!0)),v.type=0;else{var b=X.getBuffer(w);if(b)v.state=Qr,v.buffer=b,v.type=0;else if(d.command(typeof w=="object"&&w,"invalid data for attribute "+A,c.commandStr),"constant"in w){var g=w.constant;v.buffer="null",v.state=Ns,typeof g=="number"?v.x=g:(d.command(pt(g)&&g.length>0&&g.length<=4,"invalid constant for attribute "+A,c.commandStr),Zr.forEach(function(Ie,be){be<g.length&&(v[Ie]=g[be])}))}else{pa(w.buffer)?b=X.getBuffer(X.create(w.buffer,ei,!1,!0)):b=X.getBuffer(w.buffer),d.command(!!b,'missing buffer for attribute "'+A+'"',c.commandStr);var D=w.offset|0;d.command(D>=0,'invalid offset for attribute "'+A+'"',c.commandStr);var L=w.stride|0;d.command(L>=0&&L<256,'invalid stride for attribute "'+A+'", must be integer betweeen [0, 255]',c.commandStr);var $=w.size|0;d.command(!("size"in w)||$>0&&$<=4,'invalid size for attribute "'+A+'", must be 1,2,3,4',c.commandStr);var j=!!w.normalized,ue=0;"type"in w&&(d.commandParameter(w.type,mr,"invalid type for attribute "+A,c.commandStr),ue=mr[w.type]);var Ne=w.divisor|0;d.optional(function(){"divisor"in w&&(d.command(Ne===0||te,'cannot specify divisor for attribute "'+A+'", instancing not supported',c.commandStr),d.command(Ne>=0,'invalid divisor for attribute "'+A+'"',c.commandStr));var Ie=c.commandStr,be=["buffer","offset","divisor","normalized","type","size","stride"];Object.keys(w).forEach(function(Y){d.command(be.indexOf(Y)>=0,'unknown parameter "'+Y+'" for attribute pointer "'+A+'" (valid parameters are '+be+")",Ie)})}),v.buffer=b,v.state=Qr,v.size=$,v.normalized=j,v.type=ue||b.dtype,v.offset=D,v.stride=L,v.divisor=Ne}}I[A]=St(function(Ie,be){var Y=Ie.attribCache;if(E in Y)return Y[E];var U={isStream:!1};return Object.keys(v).forEach(function(Ce){U[Ce]=v[Ce]}),v.buffer&&(U.buffer=Ie.link(v.buffer),U.type=U.type||U.buffer+".dtype"),Y[E]=U,U})}),Object.keys(C).forEach(function(A){var w=C[A];function E(v,b){var g=v.invoke(b,w),D=v.shared,L=v.constants,$=D.isBufferArgs,j=D.buffer;d.optional(function(){v.assert(b,g+"&&(typeof "+g+'==="object"||typeof '+g+'==="function")&&('+$+"("+g+")||"+j+".getBuffer("+g+")||"+j+".getBuffer("+g+".buffer)||"+$+"("+g+'.buffer)||("constant" in '+g+"&&(typeof "+g+'.constant==="number"||'+D.isArrayLike+"("+g+".constant))))",'invalid dynamic attribute "'+A+'"')});var ue={isStream:b.def(!1)},Ne=new k;Ne.state=Qr,Object.keys(Ne).forEach(function(U){ue[U]=b.def(""+Ne[U])});var Ie=ue.buffer,be=ue.type;b("if(",$,"(",g,")){",ue.isStream,"=true;",Ie,"=",j,".createStream(",ei,",",g,");",be,"=",Ie,".dtype;","}else{",Ie,"=",j,".getBuffer(",g,");","if(",Ie,"){",be,"=",Ie,".dtype;",'}else if("constant" in ',g,"){",ue.state,"=",Ns,";","if(typeof "+g+'.constant === "number"){',ue[Zr[0]],"=",g,".constant;",Zr.slice(1).map(function(U){return ue[U]}).join("="),"=0;","}else{",Zr.map(function(U,Ce){return ue[U]+"="+g+".constant.length>"+Ce+"?"+g+".constant["+Ce+"]:0;"}).join(""),"}}else{","if(",$,"(",g,".buffer)){",Ie,"=",j,".createStream(",ei,",",g,".buffer);","}else{",Ie,"=",j,".getBuffer(",g,".buffer);","}",be,'="type" in ',g,"?",L.glTypes,"[",g,".type]:",Ie,".dtype;",ue.normalized,"=!!",g,".normalized;");function Y(U){b(ue[U],"=",g,".",U,"|0;")}return Y("size"),Y("offset"),Y("stride"),Y("divisor"),b("}}"),b.exit("if(",ue.isStream,"){",j,".destroyStream(",Ie,");","}"),ue}I[A]=Kt(w,E)}),I}function ht(m){var c=m.static,T=m.dynamic,C={};return Object.keys(c).forEach(function(I){var A=c[I];C[I]=St(function(w,E){return typeof A=="number"||typeof A=="boolean"?""+A:w.link(A)})}),Object.keys(T).forEach(function(I){var A=T[I];C[I]=Kt(A,function(w,E){return w.invoke(E,A)})}),C}function Tt(m,c,T,C,I){var A=m.static,w=m.dynamic;d.optional(function(){var Y=[xr,Li,Di,br,_r,ia,Sr,oa,Ii,Fi].concat(De);function U(Ce){Object.keys(Ce).forEach(function(Ae){d.command(Y.indexOf(Ae)>=0,'unknown parameter "'+Ae+'"',I.commandStr)})}U(A),U(w)});var E=He(m,c),v=ye(m),b=Re(m,v,I),g=vt(m,I),D=yt(m,I),L=Je(m,I,E);function $(Y){var U=b[Y];U&&(D[Y]=U)}$(Gn),$(Se(ra));var j=Object.keys(D).length>0,ue={framebuffer:v,draw:g,shader:L,state:D,dirty:j,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(ue.profile=pe(m),ue.uniforms=tt(T,I),ue.drawVAO=ue.scopeVAO=g.vao,!ue.drawVAO&&L.program&&!E&&_.angle_instanced_arrays&&g.static.elements){var Ne=!0,Ie=L.program.attributes.map(function(Y){var U=c.static[Y];return Ne=Ne&&!!U,U});if(Ne&&Ie.length>0){var be=ie.getVAO(ie.createVAO({attributes:Ie,elements:g.static.elements}));ue.drawVAO=new Dt(null,null,null,function(Y,U){return Y.link(be)}),ue.useVAO=!0}}return E?ue.useVAO=!0:ue.attributes=Et(c,I),ue.context=ht(C),ue}function Ct(m,c,T){var C=m.shared,I=C.context,A=m.scope();Object.keys(T).forEach(function(w){c.save(I,"."+w);var E=T[w],v=E.append(m,c);Array.isArray(v)?A(I,".",w,"=[",v.join(),"];"):A(I,".",w,"=",v,";")}),c(A)}function Pt(m,c,T,C){var I=m.shared,A=I.gl,w=I.framebuffer,E;xe&&(E=c.def(I.extensions,".webgl_draw_buffers"));var v=m.constants,b=v.drawBuffer,g=v.backBuffer,D;T?D=T.append(m,c):D=c.def(w,".next"),C||c("if(",D,"!==",w,".cur){"),c("if(",D,"){",A,".bindFramebuffer(",Rc,",",D,".framebuffer);"),xe&&c(E,".drawBuffersWEBGL(",b,"[",D,".colorAttachments.length]);"),c("}else{",A,".bindFramebuffer(",Rc,",null);"),xe&&c(E,".drawBuffersWEBGL(",g,");"),c("}",w,".cur=",D,";"),C||c("}")}function Ft(m,c,T){var C=m.shared,I=C.gl,A=m.current,w=m.next,E=C.current,v=C.next,b=m.cond(E,".dirty");De.forEach(function(g){var D=Se(g);if(!(D in T.state)){var L,$;if(D in w){L=w[D],$=A[D];var j=Yt(ge[D].length,function(Ne){return b.def(L,"[",Ne,"]")});b(m.cond(j.map(function(Ne,Ie){return Ne+"!=="+$+"["+Ie+"]"}).join("||")).then(I,".",H[D],"(",j,");",j.map(function(Ne,Ie){return $+"["+Ie+"]="+Ne}).join(";"),";"))}else{L=b.def(v,".",D);var ue=m.cond(L,"!==",E,".",D);b(ue),D in W?ue(m.cond(L).then(I,".enable(",W[D],");").else(I,".disable(",W[D],");"),E,".",D,"=",L,";"):ue(I,".",H[D],"(",L,");",E,".",D,"=",L,";")}}}),Object.keys(T.state).length===0&&b(E,".dirty=false;"),c(b)}function Bt(m,c,T,C){var I=m.shared,A=m.current,w=I.current,E=I.gl;Nc(Object.keys(T)).forEach(function(v){var b=T[v];if(!(C&&!C(b))){var g=b.append(m,c);if(W[v]){var D=W[v];Jn(b)?g?c(E,".enable(",D,");"):c(E,".disable(",D,");"):c(m.cond(g).then(E,".enable(",D,");").else(E,".disable(",D,");")),c(w,".",v,"=",g,";")}else if(pt(g)){var L=A[v];c(E,".",H[v],"(",g,");",g.map(function($,j){return L+"["+j+"]="+$}).join(";"),";")}else c(E,".",H[v],"(",g,");",w,".",v,"=",g,";")}})}function xt(m,c){te&&(m.instancing=c.def(m.shared.extensions,".angle_instanced_arrays"))}function Ye(m,c,T,C,I){var A=m.shared,w=m.stats,E=A.current,v=A.timer,b=T.profile;function g(){return typeof performance>"u"?"Date.now()":"performance.now()"}var D,L;function $(Y){D=c.def(),Y(D,"=",g(),";"),typeof I=="string"?Y(w,".count+=",I,";"):Y(w,".count++;"),J&&(C?(L=c.def(),Y(L,"=",v,".getNumPendingQueries();")):Y(v,".beginQuery(",w,");"))}function j(Y){Y(w,".cpuTime+=",g(),"-",D,";"),J&&(C?Y(v,".pushScopeStats(",L,",",v,".getNumPendingQueries(),",w,");"):Y(v,".endQuery();"))}function ue(Y){var U=c.def(E,".profile");c(E,".profile=",Y,";"),c.exit(E,".profile=",U,";")}var Ne;if(b){if(Jn(b)){b.enable?($(c),j(c.exit),ue("true")):ue("false");return}Ne=b.append(m,c),ue(Ne)}else Ne=c.def(E,".profile");var Ie=m.block();$(Ie),c("if(",Ne,"){",Ie,"}");var be=m.block();j(be),c.exit("if(",Ne,"){",be,"}")}function Ut(m,c,T,C,I){var A=m.shared;function w(v){switch(v){case aa:case ua:case ha:return 2;case sa:case la:case da:return 3;case fa:case ca:case ma:return 4;default:return 1}}function E(v,b,g){var D=A.gl,L=c.def(v,".location"),$=c.def(A.attributes,"[",L,"]"),j=g.state,ue=g.buffer,Ne=[g.x,g.y,g.z,g.w],Ie=["buffer","normalized","offset","stride"];function be(){c("if(!",$,".buffer){",D,".enableVertexAttribArray(",L,");}");var U=g.type,Ce;if(g.size?Ce=c.def(g.size,"||",b):Ce=b,c("if(",$,".type!==",U,"||",$,".size!==",Ce,"||",Ie.map(function(Oe){return $+"."+Oe+"!=="+g[Oe]}).join("||"),"){",D,".bindBuffer(",ei,",",ue,".buffer);",D,".vertexAttribPointer(",[L,Ce,U,g.normalized,g.stride,g.offset],");",$,".type=",U,";",$,".size=",Ce,";",Ie.map(function(Oe){return $+"."+Oe+"="+g[Oe]+";"}).join(""),"}"),te){var Ae=g.divisor;c("if(",$,".divisor!==",Ae,"){",m.instancing,".vertexAttribDivisorANGLE(",[L,Ae],");",$,".divisor=",Ae,";}")}}function Y(){c("if(",$,".buffer){",D,".disableVertexAttribArray(",L,");",$,".buffer=null;","}if(",Zr.map(function(U,Ce){return $+"."+U+"!=="+Ne[Ce]}).join("||"),"){",D,".vertexAttrib4f(",L,",",Ne,");",Zr.map(function(U,Ce){return $+"."+U+"="+Ne[Ce]+";"}).join(""),"}")}j===Qr?be():j===Ns?Y():(c("if(",j,"===",Qr,"){"),be(),c("}else{"),Y(),c("}"))}C.forEach(function(v){var b=v.name,g=T.attributes[b],D;if(g){if(!I(g))return;D=g.append(m,c)}else{if(!I(Gc))return;var L=m.scopeAttrib(b);d.optional(function(){m.assert(c,L+".state","missing attribute "+b)}),D={},Object.keys(new k).forEach(function($){D[$]=c.def(L,".",$)})}E(m.link(v),w(v.info.type),D)})}function at(m,c,T,C,I,A){for(var w=m.shared,E=w.gl,v={},b,g=0;g<C.length;++g){var D=C[g],L=D.name,$=D.info.type,j=D.info.size,ue=T.uniforms[L];if(j>1){if(!ue)continue;var Ne=L.replace("[0]","");if(v[Ne])continue;v[Ne]=1}var Ie=m.link(D),be=Ie+".location",Y;if(ue){if(!I(ue))continue;if(Jn(ue)){var U=ue.value;if(d.command(U!==null&&typeof U<"u",'missing uniform "'+L+'"',m.commandStr),$===Mi||$===Ni){d.command(typeof U=="function"&&($===Mi&&(U._reglType==="texture2d"||U._reglType==="framebuffer")||$===Ni&&(U._reglType==="textureCube"||U._reglType==="framebufferCube")),"invalid texture for uniform "+L,m.commandStr);var Ce=m.link(U._texture||U.color[0]._texture);c(E,".uniform1i(",be,",",Ce+".bind());"),c.exit(Ce,".unbind();")}else if($===zi||$===Ri||$===Oi){d.optional(function(){d.command(pt(U),"invalid matrix for uniform "+L,m.commandStr),d.command($===zi&&U.length===4||$===Ri&&U.length===9||$===Oi&&U.length===16,"invalid length for matrix uniform "+L,m.commandStr)});var Ae=m.global.def("new Float32Array(["+Array.prototype.slice.call(U)+"])"),Oe=2;$===Ri?Oe=3:$===Oi&&(Oe=4),c(E,".uniformMatrix",Oe,"fv(",be,",false,",Ae,");")}else{switch($){case tf:j===1?d.commandType(U,"number","uniform "+L,m.commandStr):d.command(pt(U)&&U.length===j,"uniform "+L,m.commandStr),b="1f";break;case aa:d.command(pt(U)&&U.length&&U.length%2===0&&U.length<=j*2,"uniform "+L,m.commandStr),b="2f";break;case sa:d.command(pt(U)&&U.length&&U.length%3===0&&U.length<=j*3,"uniform "+L,m.commandStr),b="3f";break;case fa:d.command(pt(U)&&U.length&&U.length%4===0&&U.length<=j*4,"uniform "+L,m.commandStr),b="4f";break;case rf:j===1?d.commandType(U,"boolean","uniform "+L,m.commandStr):d.command(pt(U)&&U.length===j,"uniform "+L,m.commandStr),b="1i";break;case nf:j===1?d.commandType(U,"number","uniform "+L,m.commandStr):d.command(pt(U)&&U.length===j,"uniform "+L,m.commandStr),b="1i";break;case ha:d.command(pt(U)&&U.length&&U.length%2===0&&U.length<=j*2,"uniform "+L,m.commandStr),b="2i";break;case ua:d.command(pt(U)&&U.length&&U.length%2===0&&U.length<=j*2,"uniform "+L,m.commandStr),b="2i";break;case da:d.command(pt(U)&&U.length&&U.length%3===0&&U.length<=j*3,"uniform "+L,m.commandStr),b="3i";break;case la:d.command(pt(U)&&U.length&&U.length%3===0&&U.length<=j*3,"uniform "+L,m.commandStr),b="3i";break;case ma:d.command(pt(U)&&U.length&&U.length%4===0&&U.length<=j*4,"uniform "+L,m.commandStr),b="4i";break;case ca:d.command(pt(U)&&U.length&&U.length%4===0&&U.length<=j*4,"uniform "+L,m.commandStr),b="4i";break}j>1?(b+="v",U=m.global.def("["+Array.prototype.slice.call(U)+"]")):U=pt(U)?Array.prototype.slice.call(U):U,c(E,".uniform",b,"(",be,",",U,");")}continue}else Y=ue.append(m,c)}else{if(!I(Gc))continue;Y=c.def(w.uniforms,"[",h.id(L),"]")}$===Mi?(d(!Array.isArray(Y),"must specify a scalar prop for textures"),c("if(",Y,"&&",Y,'._reglType==="framebuffer"){',Y,"=",Y,".color[0];","}")):$===Ni&&(d(!Array.isArray(Y),"must specify a scalar prop for cube maps"),c("if(",Y,"&&",Y,'._reglType==="framebufferCube"){',Y,"=",Y,".color[0];","}")),d.optional(function(){function on(Jt,va){m.assert(c,Jt,'bad data or missing for uniform "'+L+'". '+va)}function Cr(Jt,va){va===1&&d(!Array.isArray(Y),"must not specify an array type for uniform"),on("Array.isArray("+Y+") && typeof "+Y+'[0]===" '+Jt+'" || typeof '+Y+'==="'+Jt+'"',"invalid type, expected "+Jt)}function ln(Jt,va,ga){Array.isArray(Y)?d(Y.length&&Y.length%Jt===0&&Y.length<=Jt*ga,"must have length of "+(ga===1?"":"n * ")+Jt):on(w.isArrayLike+"("+Y+")&&"+Y+".length && "+Y+".length % "+Jt+" === 0 && "+Y+".length<="+Jt*ga,"invalid vector, should have length of "+(ga===1?"":"n * ")+Jt,m.commandStr)}function Wc(Jt){d(!Array.isArray(Y),"must not specify a value type"),on("typeof "+Y+'==="function"&&'+Y+'._reglType==="texture'+(Jt===Ic?"2d":"Cube")+'"',"invalid texture type",m.commandStr)}switch($){case nf:Cr("number",j);break;case ua:ln(2,"number",j);break;case la:ln(3,"number",j);break;case ca:ln(4,"number",j);break;case tf:Cr("number",j);break;case aa:ln(2,"number",j);break;case sa:ln(3,"number",j);break;case fa:ln(4,"number",j);break;case rf:Cr("boolean",j);break;case ha:ln(2,"boolean",j);break;case da:ln(3,"boolean",j);break;case ma:ln(4,"boolean",j);break;case zi:ln(4,"number",j);break;case Ri:ln(9,"number",j);break;case Oi:ln(16,"number",j);break;case Mi:Wc(Ic);break;case Ni:Wc(kx);break}});var ft=1;switch($){case Mi:case Ni:var Vt=c.def(Y,"._texture");c(E,".uniform1i(",be,",",Vt,".bind());"),c.exit(Vt,".unbind();");continue;case nf:case rf:b="1i";break;case ua:case ha:b="2i",ft=2;break;case la:case da:b="3i",ft=3;break;case ca:case ma:b="4i",ft=4;break;case tf:b="1f";break;case aa:b="2f",ft=2;break;case sa:b="3f",ft=3;break;case fa:b="4f",ft=4;break;case zi:b="Matrix2fv";break;case Ri:b="Matrix3fv";break;case Oi:b="Matrix4fv";break}if(b.indexOf("Matrix")===-1&&j>1&&(b+="v",ft=1),b.charAt(0)==="M"){c(E,".uniform",b,"(",be,",");var Ar=Math.pow($-zi+2,2),Bn=m.global.def("new Float32Array(",Ar,")");Array.isArray(Y)?c("false,(",Yt(Ar,function(on){return Bn+"["+on+"]="+Y[on]}),",",Bn,")"):c("false,(Array.isArray(",Y,")||",Y," instanceof Float32Array)?",Y,":(",Yt(Ar,function(on){return Bn+"["+on+"]="+Y+"["+on+"]"}),",",Bn,")"),c(");")}else if(ft>1){for(var Pn=[],er=[],Er=0;Er<ft;++Er)Array.isArray(Y)?er.push(Y[Er]):er.push(c.def(Y+"["+Er+"]")),A&&Pn.push(c.def());A&&c("if(!",m.batchId,"||",Pn.map(function(on,Cr){return on+"!=="+er[Cr]}).join("||"),"){",Pn.map(function(on,Cr){return on+"="+er[Cr]+";"}).join("")),c(E,".uniform",b,"(",be,",",er.join(","),");"),A&&c("}")}else{if(d(!Array.isArray(Y),"uniform value must not be an array"),A){var Xc=c.def();c("if(!",m.batchId,"||",Xc,"!==",Y,"){",Xc,"=",Y,";")}c(E,".uniform",b,"(",be,",",Y,");"),A&&c("}")}}}function Fe(m,c,T,C){var I=m.shared,A=I.gl,w=I.draw,E=C.draw;function v(){var Ce=E.elements,Ae,Oe=c;return Ce?((Ce.contextDep&&C.contextDynamic||Ce.propDep)&&(Oe=T),Ae=Ce.append(m,Oe),E.elementsActive&&Oe("if("+Ae+")"+A+".bindBuffer("+ef+","+Ae+".buffer.buffer);")):(Ae=Oe.def(),Oe(Ae,"=",w,".",br,";","if(",Ae,"){",A,".bindBuffer(",ef,",",Ae,".buffer.buffer);}","else if(",I.vao,".currentVAO){",Ae,"=",m.shared.elements+".getElements("+I.vao,".currentVAO.elements);",Z?"":"if("+Ae+")"+A+".bindBuffer("+ef+","+Ae+".buffer.buffer);","}")),Ae}function b(){var Ce=E.count,Ae,Oe=c;return Ce?((Ce.contextDep&&C.contextDynamic||Ce.propDep)&&(Oe=T),Ae=Ce.append(m,Oe),d.optional(function(){Ce.MISSING&&m.assert(c,"false","missing vertex count"),Ce.DYNAMIC&&m.assert(Oe,Ae+">=0","missing vertex count")})):(Ae=Oe.def(w,".",Sr),d.optional(function(){m.assert(Oe,Ae+">=0","missing vertex count")})),Ae}var g=v();function D(Ce){var Ae=E[Ce];return Ae?Ae.contextDep&&C.contextDynamic||Ae.propDep?Ae.append(m,T):Ae.append(m,c):c.def(w,".",Ce)}var L=D(_r),$=D(ia),j=b();if(typeof j=="number"){if(j===0)return}else T("if(",j,"){"),T.exit("}");var ue,Ne;te&&(ue=D(oa),Ne=m.instancing);var Ie=g+".type",be=E.elements&&Jn(E.elements)&&!E.vaoActive;function Y(){function Ce(){T(Ne,".drawElementsInstancedANGLE(",[L,j,Ie,$+"<<(("+Ie+"-"+uc+")>>1)",ue],");")}function Ae(){T(Ne,".drawArraysInstancedANGLE(",[L,$,j,ue],");")}g&&g!=="null"?be?Ce():(T("if(",g,"){"),Ce(),T("}else{"),Ae(),T("}")):Ae()}function U(){function Ce(){T(A+".drawElements("+[L,j,Ie,$+"<<(("+Ie+"-"+uc+")>>1)"]+");")}function Ae(){T(A+".drawArrays("+[L,$,j]+");")}g&&g!=="null"?be?Ce():(T("if(",g,"){"),Ce(),T("}else{"),Ae(),T("}")):Ae()}te&&(typeof ue!="number"||ue>=0)?typeof ue=="string"?(T("if(",ue,">0){"),Y(),T("}else if(",ue,"<0){"),U(),T("}")):Y():U()}function et(m,c,T,C,I){var A=Be(),w=A.proc("body",I);return d.optional(function(){A.commandStr=c.commandStr,A.command=A.link(c.commandStr)}),te&&(A.instancing=w.def(A.shared.extensions,".angle_instanced_arrays")),m(A,w,T,C),A.compile().body}function rt(m,c,T,C){xt(m,c),T.useVAO?T.drawVAO?c(m.shared.vao,".setVAO(",T.drawVAO.append(m,c),");"):c(m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"):(c(m.shared.vao,".setVAO(null);"),Ut(m,c,T,C.attributes,function(){return!0})),at(m,c,T,C.uniforms,function(){return!0},!1),Fe(m,c,c,T)}function bt(m,c){var T=m.proc("draw",1);xt(m,T),Ct(m,T,c.context),Pt(m,T,c.framebuffer),Ft(m,T,c),Bt(m,T,c.state),Ye(m,T,c,!1,!0);var C=c.shader.progVar.append(m,T);if(T(m.shared.gl,".useProgram(",C,".program);"),c.shader.program)rt(m,T,c,c.shader.program);else{T(m.shared.vao,".setVAO(null);");var I=m.global.def("{}"),A=T.def(C,".id"),w=T.def(I,"[",A,"]");T(m.cond(w).then(w,".call(this,a0);").else(w,"=",I,"[",A,"]=",m.link(function(E){return et(rt,m,c,E,1)}),"(",C,");",w,".call(this,a0);"))}Object.keys(c.state).length>0&&T(m.shared.current,".dirty=true;"),m.shared.vao&&T(m.shared.vao,".setVAO(null);")}function Cn(m,c,T,C){m.batchId="a1",xt(m,c);function I(){return!0}Ut(m,c,T,C.attributes,I),at(m,c,T,C.uniforms,I,!1),Fe(m,c,c,T)}function wr(m,c,T,C){xt(m,c);var I=T.contextDep,A=c.def(),w="a0",E="a1",v=c.def();m.shared.props=v,m.batchId=A;var b=m.scope(),g=m.scope();c(b.entry,"for(",A,"=0;",A,"<",E,";++",A,"){",v,"=",w,"[",A,"];",g,"}",b.exit);function D(Ie){return Ie.contextDep&&I||Ie.propDep}function L(Ie){return!D(Ie)}if(T.needsContext&&Ct(m,g,T.context),T.needsFramebuffer&&Pt(m,g,T.framebuffer),Bt(m,g,T.state,D),T.profile&&D(T.profile)&&Ye(m,g,T,!1,!0),C)T.useVAO?T.drawVAO?D(T.drawVAO)?g(m.shared.vao,".setVAO(",T.drawVAO.append(m,g),");"):b(m.shared.vao,".setVAO(",T.drawVAO.append(m,b),");"):b(m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"):(b(m.shared.vao,".setVAO(null);"),Ut(m,b,T,C.attributes,L),Ut(m,g,T,C.attributes,D)),at(m,b,T,C.uniforms,L,!1),at(m,g,T,C.uniforms,D,!0),Fe(m,b,g,T);else{var $=m.global.def("{}"),j=T.shader.progVar.append(m,g),ue=g.def(j,".id"),Ne=g.def($,"[",ue,"]");g(m.shared.gl,".useProgram(",j,".program);","if(!",Ne,"){",Ne,"=",$,"[",ue,"]=",m.link(function(Ie){return et(Cn,m,T,Ie,2)}),"(",j,");}",Ne,".call(this,a0[",A,"],",A,");")}}function y(m,c){var T=m.proc("batch",2);m.batchId="0",xt(m,T);var C=!1,I=!0;Object.keys(c.context).forEach(function($){C=C||c.context[$].propDep}),C||(Ct(m,T,c.context),I=!1);var A=c.framebuffer,w=!1;A?(A.propDep?C=w=!0:A.contextDep&&C&&(w=!0),w||Pt(m,T,A)):Pt(m,T,null),c.state.viewport&&c.state.viewport.propDep&&(C=!0);function E($){return $.contextDep&&C||$.propDep}Ft(m,T,c),Bt(m,T,c.state,function($){return!E($)}),(!c.profile||!E(c.profile))&&Ye(m,T,c,!1,"a1"),c.contextDep=C,c.needsContext=I,c.needsFramebuffer=w;var v=c.shader.progVar;if(v.contextDep&&C||v.propDep)wr(m,T,c,null);else{var b=v.append(m,T);if(T(m.shared.gl,".useProgram(",b,".program);"),c.shader.program)wr(m,T,c,c.shader.program);else{T(m.shared.vao,".setVAO(null);");var g=m.global.def("{}"),D=T.def(b,".id"),L=T.def(g,"[",D,"]");T(m.cond(L).then(L,".call(this,a0,a1);").else(L,"=",g,"[",D,"]=",m.link(function($){return et(wr,m,c,$,2)}),"(",b,");",L,".call(this,a0,a1);"))}}Object.keys(c.state).length>0&&T(m.shared.current,".dirty=true;"),m.shared.vao&&T(m.shared.vao,".setVAO(null);")}function M(m,c){var T=m.proc("scope",3);m.batchId="a2";var C=m.shared,I=C.current;Ct(m,T,c.context),c.framebuffer&&c.framebuffer.append(m,T),Nc(Object.keys(c.state)).forEach(function(w){var E=c.state[w],v=E.append(m,T);pt(v)?v.forEach(function(b,g){T.set(m.next[w],"["+g+"]",b)}):T.set(C.next,"."+w,v)}),Ye(m,T,c,!0,!0),[br,ia,Sr,oa,_r].forEach(function(w){var E=c.draw[w];E&&T.set(C.draw,"."+w,""+E.append(m,T))}),Object.keys(c.uniforms).forEach(function(w){var E=c.uniforms[w].append(m,T);Array.isArray(E)&&(E="["+E.join()+"]"),T.set(C.uniforms,"["+h.id(w)+"]",E)}),Object.keys(c.attributes).forEach(function(w){var E=c.attributes[w].append(m,T),v=m.scopeAttrib(w);Object.keys(new k).forEach(function(b){T.set(v,"."+b,E[b])})}),c.scopeVAO&&T.set(C.vao,".targetVAO",c.scopeVAO.append(m,T));function A(w){var E=c.shader[w];E&&T.set(C.shader,"."+w,E.append(m,T))}A(Li),A(Di),Object.keys(c.state).length>0&&(T(I,".dirty=true;"),T.exit(I,".dirty=true;")),T("a1(",m.shared.context,",a0,",m.batchId,");")}function F(m){if(!(typeof m!="object"||pt(m))){for(var c=Object.keys(m),T=0;T<c.length;++T)if(It.isDynamic(m[c[T]]))return!0;return!1}}function _e(m,c,T){var C=c.static[T];if(!C||!F(C))return;var I=m.global,A=Object.keys(C),w=!1,E=!1,v=!1,b=m.global.def("{}");A.forEach(function(D){var L=C[D];if(It.isDynamic(L)){typeof L=="function"&&(L=C[D]=It.unbox(L));var $=Kt(L,null);w=w||$.thisDep,v=v||$.propDep,E=E||$.contextDep}else{switch(I(b,".",D,"="),typeof L){case"number":I(L);break;case"string":I('"',L,'"');break;case"object":Array.isArray(L)&&I("[",L.join(),"]");break;default:I(m.link(L));break}I(";")}});function g(D,L){A.forEach(function($){var j=C[$];if(It.isDynamic(j)){var ue=D.invoke(L,j);L(b,".",$,"=",ue,";")}})}c.dynamic[T]=new It.DynamicVariable(na,{thisDep:w,contextDep:E,propDep:v,ref:b,append:g}),delete c.static[T]}function Ke(m,c,T,C,I){var A=Be();A.stats=A.link(I),Object.keys(c.static).forEach(function(E){_e(A,c,E)}),Ex.forEach(function(E){_e(A,m,E)});var w=Tt(m,c,T,C,A);return bt(A,w),M(A,w),y(A,w),r(A.compile(),{destroy:function(){w.shader.program.destroy()}})}return{next:me,current:ge,procs:function(){var m=Be(),c=m.proc("poll"),T=m.proc("refresh"),C=m.block();c(C),T(C);var I=m.shared,A=I.gl,w=I.next,E=I.current;C(E,".dirty=false;"),Pt(m,c),Pt(m,T,null,!0);var v;te&&(v=m.link(te)),_.oes_vertex_array_object&&T(m.link(_.oes_vertex_array_object),".bindVertexArrayOES(null);");for(var b=0;b<O.maxAttributes;++b){var g=T.def(I.attributes,"[",b,"]"),D=m.cond(g,".buffer");D.then(A,".enableVertexAttribArray(",b,");",A,".bindBuffer(",ei,",",g,".buffer.buffer);",A,".vertexAttribPointer(",b,",",g,".size,",g,".type,",g,".normalized,",g,".stride,",g,".offset);").else(A,".disableVertexAttribArray(",b,");",A,".vertexAttrib4f(",b,",",g,".x,",g,".y,",g,".z,",g,".w);",g,".buffer=null;"),T(D),te&&T(v,".vertexAttribDivisorANGLE(",b,",",g,".divisor);")}return T(m.shared.vao,".currentVAO=null;",m.shared.vao,".setVAO(",m.shared.vao,".targetVAO);"),Object.keys(W).forEach(function(L){var $=W[L],j=C.def(w,".",L),ue=m.block();ue("if(",j,"){",A,".enable(",$,")}else{",A,".disable(",$,")}",E,".",L,"=",j,";"),T(ue),c("if(",j,"!==",E,".",L,"){",ue,"}")}),Object.keys(H).forEach(function(L){var $=H[L],j=ge[L],ue,Ne,Ie=m.block();if(Ie(A,".",$,"("),pt(j)){var be=j.length;ue=m.global.def(w,".",L),Ne=m.global.def(E,".",L),Ie(Yt(be,function(Y){return ue+"["+Y+"]"}),");",Yt(be,function(Y){return Ne+"["+Y+"]="+ue+"["+Y+"];"}).join("")),c("if(",Yt(be,function(Y){return ue+"["+Y+"]!=="+Ne+"["+Y+"]"}).join("||"),"){",Ie,"}")}else ue=C.def(w,".",L),Ne=C.def(E,".",L),Ie(ue,");",E,".",L,"=",ue,";"),c("if(",ue,"!==",Ne,"){",Ie,"}");T(Ie)}),m.compile()}(),compile:Ke}}function Xx(){return{vaoCount:0,bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0}}var Wx=34918,jx=34919,Bc=35007,qx=function(a,h){if(!h.ext_disjoint_timer_query)return null;var _=[];function O(){return _.pop()||h.ext_disjoint_timer_query.createQueryEXT()}function X(te){_.push(te)}var R=[];function B(te){var xe=O();h.ext_disjoint_timer_query.beginQueryEXT(Bc,xe),R.push(xe),J(R.length-1,R.length,te)}function K(){h.ext_disjoint_timer_query.endQueryEXT(Bc)}function Q(){this.startQueryIndex=-1,this.endQueryIndex=-1,this.sum=0,this.stats=null}var ie=[];function ae(){return ie.pop()||new Q}function oe(te){ie.push(te)}var le=[];function J(te,xe,Z){var ge=ae();ge.startQueryIndex=te,ge.endQueryIndex=xe,ge.sum=0,ge.stats=Z,le.push(ge)}var ne=[],k=[];function G(){var te,xe,Z=R.length;if(Z!==0){k.length=Math.max(k.length,Z+1),ne.length=Math.max(ne.length,Z+1),ne[0]=0,k[0]=0;var ge=0;for(te=0,xe=0;xe<R.length;++xe){var me=R[xe];h.ext_disjoint_timer_query.getQueryObjectEXT(me,jx)?(ge+=h.ext_disjoint_timer_query.getQueryObjectEXT(me,Wx),X(me)):R[te++]=me,ne[xe+1]=ge,k[xe+1]=te}for(R.length=te,te=0,xe=0;xe<le.length;++xe){var De=le[xe],W=De.startQueryIndex,H=De.endQueryIndex;De.sum+=ne[H]-ne[W];var Se=k[W],ce=k[H];ce===Se?(De.stats.gpuTime+=De.sum/1e6,oe(De)):(De.startQueryIndex=Se,De.endQueryIndex=ce,le[te++]=De)}le.length=te}}return{beginQuery:B,endQuery:K,pushScopeStats:J,update:G,getNumPendingQueries:function(){return R.length},clear:function(){_.push.apply(_,R);for(var te=0;te<_.length;te++)h.ext_disjoint_timer_query.deleteQueryEXT(_[te]);R.length=0,_.length=0},restore:function(){R.length=0,_.length=0}}},Yx=16384,Zx=256,Qx=1024,Kx=34962,Uc="webglcontextlost",Vc="webglcontextrestored",$c=1,Jx=2,eb=3;function Hc(a,h){for(var _=0;_<a.length;++_)if(a[_]===h)return _;return-1}function tb(a){var h=Lt(a);if(!h)return null;var _=h.gl,O=_.getContextAttributes(),X=_.isContextLost(),R=Wn(_,h);if(!R)return null;var B=ss(),K=Xx(),Q=R.extensions,ie=qx(_,Q),ae=Mr(),oe=_.drawingBufferWidth,le=_.drawingBufferHeight,J={tick:0,time:0,viewportWidth:oe,viewportHeight:le,framebufferWidth:oe,framebufferHeight:le,drawingBufferWidth:oe,drawingBufferHeight:le,pixelRatio:h.pixelRatio},ne={},k={elements:null,primitive:4,count:-1,offset:0,instances:-1},G=Ug(_,Q),te=ry(_,K,h,ge),xe=py(_,Q,te,K),Z=px(_,Q,G,K,te,xe,k);function ge(Fe){return Z.destroyBuffer(Fe)}var me=xx(_,B,K,h),De=Wy(_,Q,G,function(){Se.procs.poll()},J,K,h),W=jy(_,Q,G,K,h),H=dx(_,Q,G,De,W,K),Se=Hx(_,B,Q,G,te,xe,De,H,ne,Z,me,k,J,ie,h),ce=Sx(_,H,Se.procs.poll,J,O,Q,G),ee=Se.next,he=_.canvas,de=[],$e=[],Be=[],pe=[h.onDestroy],ye=null;function Re(){if(de.length===0){ie&&ie.update(),ye=null;return}ye=cr.next(Re),Bt();for(var Fe=de.length-1;Fe>=0;--Fe){var et=de[Fe];et&&et(J,null,0)}_.flush(),ie&&ie.update()}function He(){!ye&&de.length>0&&(ye=cr.next(Re))}function Je(){ye&&(cr.cancel(Re),ye=null)}function vt(Fe){Fe.preventDefault(),X=!0,Je(),$e.forEach(function(et){et()})}function yt(Fe){_.getError(),X=!1,R.restore(),me.restore(),te.restore(),De.restore(),W.restore(),H.restore(),Z.restore(),ie&&ie.restore(),Se.procs.refresh(),He(),Be.forEach(function(et){et()})}he&&(he.addEventListener(Uc,vt,!1),he.addEventListener(Vc,yt,!1));function tt(){de.length=0,Je(),he&&(he.removeEventListener(Uc,vt),he.removeEventListener(Vc,yt)),me.clear(),H.clear(),W.clear(),Z.clear(),De.clear(),xe.clear(),te.clear(),ie&&ie.clear(),pe.forEach(function(Fe){Fe()})}function Et(Fe){d(!!Fe,"invalid args to regl({...})"),d.type(Fe,"object","invalid args to regl({...})");function et(I){var A=r({},I);delete A.uniforms,delete A.attributes,delete A.context,delete A.vao,"stencil"in A&&A.stencil.op&&(A.stencil.opBack=A.stencil.opFront=A.stencil.op,delete A.stencil.op);function w(E){if(E in A){var v=A[E];delete A[E],Object.keys(v).forEach(function(b){A[E+"."+b]=v[b]})}}return w("blend"),w("depth"),w("cull"),w("stencil"),w("polygonOffset"),w("scissor"),w("sample"),"vao"in I&&(A.vao=I.vao),A}function rt(I,A){var w={},E={};return Object.keys(I).forEach(function(v){var b=I[v];if(It.isDynamic(b)){E[v]=It.unbox(b,v);return}else if(A&&Array.isArray(b)){for(var g=0;g<b.length;++g)if(It.isDynamic(b[g])){E[v]=It.unbox(b,v);return}}w[v]=b}),{dynamic:E,static:w}}var bt=rt(Fe.context||{},!0),Cn=rt(Fe.uniforms||{},!0),wr=rt(Fe.attributes||{},!1),y=rt(et(Fe),!1),M={gpuTime:0,cpuTime:0,count:0},F=Se.compile(y,wr,Cn,bt,M),_e=F.draw,Ke=F.batch,m=F.scope,c=[];function T(I){for(;c.length<I;)c.push(null);return c}function C(I,A){var w;if(X&&d.raise("context lost"),typeof I=="function")return m.call(this,null,I,0);if(typeof A=="function")if(typeof I=="number")for(w=0;w<I;++w)m.call(this,null,A,w);else if(Array.isArray(I))for(w=0;w<I.length;++w)m.call(this,I[w],A,w);else return m.call(this,I,A,0);else if(typeof I=="number"){if(I>0)return Ke.call(this,T(I|0),I|0)}else if(Array.isArray(I)){if(I.length)return Ke.call(this,I,I.length)}else return _e.call(this,I)}return r(C,{stats:M,destroy:function(){F.destroy()}})}var ht=H.setFBO=Et({framebuffer:It.define.call(null,$c,"framebuffer")});function Tt(Fe,et){var rt=0;Se.procs.poll();var bt=et.color;bt&&(_.clearColor(+bt[0]||0,+bt[1]||0,+bt[2]||0,+bt[3]||0),rt|=Yx),"depth"in et&&(_.clearDepth(+et.depth),rt|=Zx),"stencil"in et&&(_.clearStencil(et.stencil|0),rt|=Qx),d(!!rt,"called regl.clear with no buffer specified"),_.clear(rt)}function Ct(Fe){if(d(typeof Fe=="object"&&Fe,"regl.clear() takes an object as input"),"framebuffer"in Fe)if(Fe.framebuffer&&Fe.framebuffer_reglType==="framebufferCube")for(var et=0;et<6;++et)ht(r({framebuffer:Fe.framebuffer.faces[et]},Fe),Tt);else ht(Fe,Tt);else Tt(null,Fe)}function Pt(Fe){d.type(Fe,"function","regl.frame() callback must be a function"),de.push(Fe);function et(){var rt=Hc(de,Fe);d(rt>=0,"cannot cancel a frame twice");function bt(){var Cn=Hc(de,bt);de[Cn]=de[de.length-1],de.length-=1,de.length<=0&&Je()}de[rt]=bt}return He(),{cancel:et}}function Ft(){var Fe=ee.viewport,et=ee.scissor_box;Fe[0]=Fe[1]=et[0]=et[1]=0,J.viewportWidth=J.framebufferWidth=J.drawingBufferWidth=Fe[2]=et[2]=_.drawingBufferWidth,J.viewportHeight=J.framebufferHeight=J.drawingBufferHeight=Fe[3]=et[3]=_.drawingBufferHeight}function Bt(){J.tick+=1,J.time=Ye(),Ft(),Se.procs.poll()}function xt(){De.refresh(),Ft(),Se.procs.refresh(),ie&&ie.update()}function Ye(){return(Mr()-ae)/1e3}xt();function Ut(Fe,et){d.type(et,"function","listener callback must be a function");var rt;switch(Fe){case"frame":return Pt(et);case"lost":rt=$e;break;case"restore":rt=Be;break;case"destroy":rt=pe;break;default:d.raise("invalid event, must be one of frame,lost,restore,destroy")}return rt.push(et),{cancel:function(){for(var bt=0;bt<rt.length;++bt)if(rt[bt]===et){rt[bt]=rt[rt.length-1],rt.pop();return}}}}var at=r(Et,{clear:Ct,prop:It.define.bind(null,$c),context:It.define.bind(null,Jx),this:It.define.bind(null,eb),draw:Et({}),buffer:function(Fe){return te.create(Fe,Kx,!1,!1)},elements:function(Fe){return xe.create(Fe,!1)},texture:De.create2D,cube:De.createCube,renderbuffer:W.create,framebuffer:H.create,framebufferCube:H.createCube,vao:Z.createVAO,attributes:O,frame:Pt,on:Ut,limits:G,hasExtension:function(Fe){return G.extensions.indexOf(Fe.toLowerCase())>=0},read:ce,destroy:tt,_gl:_,_refresh:xt,poll:function(){Bt(),ie&&ie.update()},now:Ye,stats:K});return h.onDone(null,at),at}return tb})}(io)),io.exports}var Tp=Sp();const wp=za(Tp),Ap="#b3b3b3",Ep=void 0,Cp=void 0,Pp=1,kp=4,Ip="#666666",Lp=.1,Dp=1,Fp=1,zp="#222222",qe={enableSimulation:!0,spaceSize:8192,pointSizeScale:1,linkWidthScale:1,arrowSizeScale:1,renderLinks:!0,curvedLinks:!1,curvedLinkSegments:19,curvedLinkWeight:.8,curvedLinkControlPointDistance:.5,arrowLinks:!1,linkVisibilityDistanceRange:[50,150],linkVisibilityMinTransparency:.25,hoveredPointCursor:"auto",renderHoveredPointRing:!1,hoveredPointRingColor:"white",focusedPointRingColor:"white",focusedPointIndex:void 0,useClassicQuadtree:!1,simulation:{decay:5e3,gravity:.25,center:0,repulsion:1,repulsionTheta:1.15,repulsionQuadtreeLevels:12,linkSpring:1,linkDistance:10,linkDistRandomVariationRange:[1,1.2],repulsionFromMouse:2,friction:.85,cluster:.1},showFPSMonitor:!1,pixelRatio:2,scalePointsOnZoom:!1,scaleLinksOnZoom:!1,enableZoom:!0,enableSimulationDuringZoom:!1,enableDrag:!1,fitViewOnInit:!0,fitViewDelay:250,fitViewPadding:.1,fitViewDuration:250,pointSamplingDistance:150,attribution:"",rescalePositions:void 0,enableRightClickRepulsion:!1},Rp=.7,Op=.95,Mp=3;/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */const{entries:Zf,setPrototypeOf:Qf,isFrozen:Np,getPrototypeOf:Gp,getOwnPropertyDescriptor:Bp}=Object;let{freeze:Wt,seal:an,create:Kf}=Object,{apply:Ra,construct:Oa}=typeof Reflect<"u"&&Reflect;Wt||(Wt=function(e){return e}),an||(an=function(e){return e}),Ra||(Ra=function(e,n,r){return e.apply(n,r)}),Oa||(Oa=function(e,n){return new e(...n)});const oo=qt(Array.prototype.forEach),Up=qt(Array.prototype.lastIndexOf),Jf=qt(Array.prototype.pop),li=qt(Array.prototype.push),Vp=qt(Array.prototype.splice),ao=qt(String.prototype.toLowerCase),Ma=qt(String.prototype.toString),eu=qt(String.prototype.match),ci=qt(String.prototype.replace),$p=qt(String.prototype.indexOf),Hp=qt(String.prototype.trim),mn=qt(Object.prototype.hasOwnProperty),jt=qt(RegExp.prototype.test),hi=Xp(TypeError);function qt(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return Ra(t,e,r)}}function Xp(t){return function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return Oa(t,n)}}function it(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ao;Qf&&Qf(t,null);let r=e.length;for(;r--;){let i=e[r];if(typeof i=="string"){const o=n(i);o!==i&&(Np(e)||(e[r]=o),i=o)}t[i]=!0}return t}function Wp(t){for(let e=0;e<t.length;e++)mn(t,e)||(t[e]=null);return t}function Dn(t){const e=Kf(null);for(const[n,r]of Zf(t))mn(t,n)&&(Array.isArray(r)?e[n]=Wp(r):r&&typeof r=="object"&&r.constructor===Object?e[n]=Dn(r):e[n]=r);return e}function di(t,e){for(;t!==null;){const r=Bp(t,e);if(r){if(r.get)return qt(r.get);if(typeof r.value=="function")return qt(r.value)}t=Gp(t)}function n(){return null}return n}const tu=Wt(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Na=Wt(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Ga=Wt(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),jp=Wt(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Ba=Wt(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),qp=Wt(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),nu=Wt(["#text"]),ru=Wt(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),Ua=Wt(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),iu=Wt(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),so=Wt(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Yp=an(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Zp=an(/<%[\w\W]*|[\w\W]*%>/gm),Qp=an(/\$\{[\w\W]*/gm),Kp=an(/^data-[\-\w.\u00B7-\uFFFF]+$/),Jp=an(/^aria-[\-\w]+$/),ou=an(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),e0=an(/^(?:\w+script|data):/i),t0=an(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),au=an(/^html$/i),n0=an(/^[a-z][.\w]*(-[.\w]+)+$/i);var su=Object.freeze({__proto__:null,ARIA_ATTR:Jp,ATTR_WHITESPACE:t0,CUSTOM_ELEMENT:n0,DATA_ATTR:Kp,DOCTYPE_NAME:au,ERB_EXPR:Zp,IS_ALLOWED_URI:ou,IS_SCRIPT_OR_DATA:e0,MUSTACHE_EXPR:Yp,TMPLIT_EXPR:Qp});const mi={element:1,text:3,progressingInstruction:7,comment:8,document:9},r0=function(){return typeof window>"u"?null:window},i0=function(e,n){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null;const i="data-tt-policy-suffix";n&&n.hasAttribute(i)&&(r=n.getAttribute(i));const o="dompurify"+(r?"#"+r:"");try{return e.createPolicy(o,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}},fu=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function uu(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:r0();const e=Ve=>uu(Ve);if(e.version="3.2.6",e.removed=[],!t||!t.document||t.document.nodeType!==mi.document||!t.Element)return e.isSupported=!1,e;let{document:n}=t;const r=n,i=r.currentScript,{DocumentFragment:o,HTMLTemplateElement:s,Node:f,Element:u,NodeFilter:l,NamedNodeMap:p=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:x,DOMParser:S,trustedTypes:z}=t,q=u.prototype,Te=di(q,"cloneNode"),we=di(q,"remove"),fe=di(q,"nextSibling"),Me=di(q,"childNodes"),Ue=di(q,"parentNode");if(typeof s=="function"){const Ve=n.createElement("template");Ve.content&&Ve.content.ownerDocument&&(n=Ve.content.ownerDocument)}let V,se="";const{implementation:Le,createNodeIterator:Ge,createDocumentFragment:Xe,getElementsByTagName:nt}=n,{importNode:ut}=r;let Ee=fu();e.isSupported=typeof Zf=="function"&&typeof Ue=="function"&&Le&&Le.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:lt,ERB_EXPR:ot,TMPLIT_EXPR:N,DATA_ATTR:Pe,ARIA_ATTR:re,IS_SCRIPT_OR_DATA:ke,ATTR_WHITESPACE:je,CUSTOM_ELEMENT:We}=su;let{IS_ALLOWED_URI:Qe}=su,Ze=null;const dt=it({},[...tu,...Na,...Ga,...Ba,...nu]);let ct=null;const _t=it({},[...ru,...Ua,...iu,...so]);let st=Object.seal(Kf(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),$t=null,Ht=null,Qt=!0,Rn=!0,wo=!1,Ao=!0,On=!1,sr=!0,Tn=!1,Fr=!1,zr=!1,$n=!1,Ot=!1,fr=!1,ur=!0,Eo=!1;const as="user-content-";let d=!0,lr=!1,Hn={},Xn=null;const Co=it({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let wn=null;const yi=it({},["audio","video","img","source","image","track"]);let Mn=null;const xi=it({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Rr="http://www.w3.org/1998/Math/MathML",Or="http://www.w3.org/2000/svg",sn="http://www.w3.org/1999/xhtml";let It=sn,cr=!1,Mr=null;const ss=it({},[Rr,Or,sn],Ma);let Nr=it({},["mi","mo","mn","ms","mtext"]),Gr=it({},["annotation-xml"]);const fs=it({},["title","style","font","a","script"]);let hr=null;const Po=["application/xhtml+xml","text/html"],ko="text/html";let Lt=null,Wn=null;const Yt=n.createElement("form"),Io=function(P){return P instanceof RegExp||P instanceof Function},bi=function(){let P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Wn&&Wn===P)){if((!P||typeof P!="object")&&(P={}),P=Dn(P),hr=Po.indexOf(P.PARSER_MEDIA_TYPE)===-1?ko:P.PARSER_MEDIA_TYPE,Lt=hr==="application/xhtml+xml"?Ma:ao,Ze=mn(P,"ALLOWED_TAGS")?it({},P.ALLOWED_TAGS,Lt):dt,ct=mn(P,"ALLOWED_ATTR")?it({},P.ALLOWED_ATTR,Lt):_t,Mr=mn(P,"ALLOWED_NAMESPACES")?it({},P.ALLOWED_NAMESPACES,Ma):ss,Mn=mn(P,"ADD_URI_SAFE_ATTR")?it(Dn(xi),P.ADD_URI_SAFE_ATTR,Lt):xi,wn=mn(P,"ADD_DATA_URI_TAGS")?it(Dn(yi),P.ADD_DATA_URI_TAGS,Lt):yi,Xn=mn(P,"FORBID_CONTENTS")?it({},P.FORBID_CONTENTS,Lt):Co,$t=mn(P,"FORBID_TAGS")?it({},P.FORBID_TAGS,Lt):Dn({}),Ht=mn(P,"FORBID_ATTR")?it({},P.FORBID_ATTR,Lt):Dn({}),Hn=mn(P,"USE_PROFILES")?P.USE_PROFILES:!1,Qt=P.ALLOW_ARIA_ATTR!==!1,Rn=P.ALLOW_DATA_ATTR!==!1,wo=P.ALLOW_UNKNOWN_PROTOCOLS||!1,Ao=P.ALLOW_SELF_CLOSE_IN_ATTR!==!1,On=P.SAFE_FOR_TEMPLATES||!1,sr=P.SAFE_FOR_XML!==!1,Tn=P.WHOLE_DOCUMENT||!1,$n=P.RETURN_DOM||!1,Ot=P.RETURN_DOM_FRAGMENT||!1,fr=P.RETURN_TRUSTED_TYPE||!1,zr=P.FORCE_BODY||!1,ur=P.SANITIZE_DOM!==!1,Eo=P.SANITIZE_NAMED_PROPS||!1,d=P.KEEP_CONTENT!==!1,lr=P.IN_PLACE||!1,Qe=P.ALLOWED_URI_REGEXP||ou,It=P.NAMESPACE||sn,Nr=P.MATHML_TEXT_INTEGRATION_POINTS||Nr,Gr=P.HTML_INTEGRATION_POINTS||Gr,st=P.CUSTOM_ELEMENT_HANDLING||{},P.CUSTOM_ELEMENT_HANDLING&&Io(P.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(st.tagNameCheck=P.CUSTOM_ELEMENT_HANDLING.tagNameCheck),P.CUSTOM_ELEMENT_HANDLING&&Io(P.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(st.attributeNameCheck=P.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),P.CUSTOM_ELEMENT_HANDLING&&typeof P.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(st.allowCustomizedBuiltInElements=P.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),On&&(Rn=!1),Ot&&($n=!0),Hn&&(Ze=it({},nu),ct=[],Hn.html===!0&&(it(Ze,tu),it(ct,ru)),Hn.svg===!0&&(it(Ze,Na),it(ct,Ua),it(ct,so)),Hn.svgFilters===!0&&(it(Ze,Ga),it(ct,Ua),it(ct,so)),Hn.mathMl===!0&&(it(Ze,Ba),it(ct,iu),it(ct,so))),P.ADD_TAGS&&(Ze===dt&&(Ze=Dn(Ze)),it(Ze,P.ADD_TAGS,Lt)),P.ADD_ATTR&&(ct===_t&&(ct=Dn(ct)),it(ct,P.ADD_ATTR,Lt)),P.ADD_URI_SAFE_ATTR&&it(Mn,P.ADD_URI_SAFE_ATTR,Lt),P.FORBID_CONTENTS&&(Xn===Co&&(Xn=Dn(Xn)),it(Xn,P.FORBID_CONTENTS,Lt)),d&&(Ze["#text"]=!0),Tn&&it(Ze,["html","head","body"]),Ze.table&&(it(Ze,["tbody"]),delete $t.tbody),P.TRUSTED_TYPES_POLICY){if(typeof P.TRUSTED_TYPES_POLICY.createHTML!="function")throw hi('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof P.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw hi('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');V=P.TRUSTED_TYPES_POLICY,se=V.createHTML("")}else V===void 0&&(V=i0(z,i)),V!==null&&typeof se=="string"&&(se=V.createHTML(""));Wt&&Wt(P),Wn=P}},Lo=it({},[...Na,...Ga,...jp]),Do=it({},[...Ba,...qp]),us=function(P){let ve=Ue(P);(!ve||!ve.tagName)&&(ve={namespaceURI:It,tagName:"template"});const ze=ao(P.tagName),mt=ao(ve.tagName);return Mr[P.namespaceURI]?P.namespaceURI===Or?ve.namespaceURI===sn?ze==="svg":ve.namespaceURI===Rr?ze==="svg"&&(mt==="annotation-xml"||Nr[mt]):!!Lo[ze]:P.namespaceURI===Rr?ve.namespaceURI===sn?ze==="math":ve.namespaceURI===Or?ze==="math"&&Gr[mt]:!!Do[ze]:P.namespaceURI===sn?ve.namespaceURI===Or&&!Gr[mt]||ve.namespaceURI===Rr&&!Nr[mt]?!1:!Do[ze]&&(fs[ze]||!Lo[ze]):!!(hr==="application/xhtml+xml"&&Mr[P.namespaceURI]):!1},fn=function(P){li(e.removed,{element:P});try{Ue(P).removeChild(P)}catch{we(P)}},jn=function(P,ve){try{li(e.removed,{attribute:ve.getAttributeNode(P),from:ve})}catch{li(e.removed,{attribute:null,from:ve})}if(ve.removeAttribute(P),P==="is")if($n||Ot)try{fn(ve)}catch{}else try{ve.setAttribute(P,"")}catch{}},Fo=function(P){let ve=null,ze=null;if(zr)P="<remove></remove>"+P;else{const At=eu(P,/^[\r\n\t ]+/);ze=At&&At[0]}hr==="application/xhtml+xml"&&It===sn&&(P='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+P+"</body></html>");const mt=V?V.createHTML(P):P;if(It===sn)try{ve=new S().parseFromString(mt,hr)}catch{}if(!ve||!ve.documentElement){ve=Le.createDocument(It,"template",null);try{ve.documentElement.innerHTML=cr?se:mt}catch{}}const Mt=ve.body||ve.documentElement;return P&&ze&&Mt.insertBefore(n.createTextNode(ze),Mt.childNodes[0]||null),It===sn?nt.call(ve,Tn?"html":"body")[0]:Tn?ve.documentElement:Mt},_i=function(P){return Ge.call(P.ownerDocument||P,P,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Br=function(P){return P instanceof x&&(typeof P.nodeName!="string"||typeof P.textContent!="string"||typeof P.removeChild!="function"||!(P.attributes instanceof p)||typeof P.removeAttribute!="function"||typeof P.setAttribute!="function"||typeof P.namespaceURI!="string"||typeof P.insertBefore!="function"||typeof P.hasChildNodes!="function")},gt=function(P){return typeof f=="function"&&P instanceof f};function vn(Ve,P,ve){oo(Ve,ze=>{ze.call(e,P,ve,Wn)})}const zo=function(P){let ve=null;if(vn(Ee.beforeSanitizeElements,P,null),Br(P))return fn(P),!0;const ze=Lt(P.nodeName);if(vn(Ee.uponSanitizeElement,P,{tagName:ze,allowedTags:Ze}),sr&&P.hasChildNodes()&&!gt(P.firstElementChild)&&jt(/<[/\w!]/g,P.innerHTML)&&jt(/<[/\w!]/g,P.textContent)||P.nodeType===mi.progressingInstruction||sr&&P.nodeType===mi.comment&&jt(/<[/\w]/g,P.data))return fn(P),!0;if(!Ze[ze]||$t[ze]){if(!$t[ze]&&Oo(ze)&&(st.tagNameCheck instanceof RegExp&&jt(st.tagNameCheck,ze)||st.tagNameCheck instanceof Function&&st.tagNameCheck(ze)))return!1;if(d&&!Xn[ze]){const mt=Ue(P)||P.parentNode,Mt=Me(P)||P.childNodes;if(Mt&&mt){const At=Mt.length;for(let Xt=At-1;Xt>=0;--Xt){const gn=Te(Mt[Xt],!0);gn.__removalCount=(P.__removalCount||0)+1,mt.insertBefore(gn,fe(P))}}}return fn(P),!0}return P instanceof u&&!us(P)||(ze==="noscript"||ze==="noembed"||ze==="noframes")&&jt(/<\/no(script|embed|frames)/i,P.innerHTML)?(fn(P),!0):(On&&P.nodeType===mi.text&&(ve=P.textContent,oo([lt,ot,N],mt=>{ve=ci(ve,mt," ")}),P.textContent!==ve&&(li(e.removed,{element:P.cloneNode()}),P.textContent=ve)),vn(Ee.afterSanitizeElements,P,null),!1)},Ro=function(P,ve,ze){if(ur&&(ve==="id"||ve==="name")&&(ze in n||ze in Yt))return!1;if(!(Rn&&!Ht[ve]&&jt(Pe,ve))){if(!(Qt&&jt(re,ve))){if(!ct[ve]||Ht[ve]){if(!(Oo(P)&&(st.tagNameCheck instanceof RegExp&&jt(st.tagNameCheck,P)||st.tagNameCheck instanceof Function&&st.tagNameCheck(P))&&(st.attributeNameCheck instanceof RegExp&&jt(st.attributeNameCheck,ve)||st.attributeNameCheck instanceof Function&&st.attributeNameCheck(ve))||ve==="is"&&st.allowCustomizedBuiltInElements&&(st.tagNameCheck instanceof RegExp&&jt(st.tagNameCheck,ze)||st.tagNameCheck instanceof Function&&st.tagNameCheck(ze))))return!1}else if(!Mn[ve]){if(!jt(Qe,ci(ze,je,""))){if(!((ve==="src"||ve==="xlink:href"||ve==="href")&&P!=="script"&&$p(ze,"data:")===0&&wn[P])){if(!(wo&&!jt(ke,ci(ze,je,"")))){if(ze)return!1}}}}}}return!0},Oo=function(P){return P!=="annotation-xml"&&eu(P,We)},Mo=function(P){vn(Ee.beforeSanitizeAttributes,P,null);const{attributes:ve}=P;if(!ve||Br(P))return;const ze={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ct,forceKeepAttr:void 0};let mt=ve.length;for(;mt--;){const Mt=ve[mt],{name:At,namespaceURI:Xt,value:gn}=Mt,dr=Lt(At),Si=gn;let Nt=At==="value"?Si:Hp(Si);if(ze.attrName=dr,ze.attrValue=Nt,ze.keepAttr=!0,ze.forceKeepAttr=void 0,vn(Ee.uponSanitizeAttribute,P,ze),Nt=ze.attrValue,Eo&&(dr==="id"||dr==="name")&&(jn(At,P),Nt=as+Nt),sr&&jt(/((--!?|])>)|<\/(style|title)/i,Nt)){jn(At,P);continue}if(ze.forceKeepAttr)continue;if(!ze.keepAttr){jn(At,P);continue}if(!Ao&&jt(/\/>/i,Nt)){jn(At,P);continue}On&&oo([lt,ot,N],Go=>{Nt=ci(Nt,Go," ")});const No=Lt(P.nodeName);if(!Ro(No,dr,Nt)){jn(At,P);continue}if(V&&typeof z=="object"&&typeof z.getAttributeType=="function"&&!Xt)switch(z.getAttributeType(No,dr)){case"TrustedHTML":{Nt=V.createHTML(Nt);break}case"TrustedScriptURL":{Nt=V.createScriptURL(Nt);break}}if(Nt!==Si)try{Xt?P.setAttributeNS(Xt,At,Nt):P.setAttribute(At,Nt),Br(P)?fn(P):Jf(e.removed)}catch{jn(At,P)}}vn(Ee.afterSanitizeAttributes,P,null)},ls=function Ve(P){let ve=null;const ze=_i(P);for(vn(Ee.beforeSanitizeShadowDOM,P,null);ve=ze.nextNode();)vn(Ee.uponSanitizeShadowNode,ve,null),zo(ve),Mo(ve),ve.content instanceof o&&Ve(ve.content);vn(Ee.afterSanitizeShadowDOM,P,null)};return e.sanitize=function(Ve){let P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ve=null,ze=null,mt=null,Mt=null;if(cr=!Ve,cr&&(Ve="<!-->"),typeof Ve!="string"&&!gt(Ve))if(typeof Ve.toString=="function"){if(Ve=Ve.toString(),typeof Ve!="string")throw hi("dirty is not a string, aborting")}else throw hi("toString is not a function");if(!e.isSupported)return Ve;if(Fr||bi(P),e.removed=[],typeof Ve=="string"&&(lr=!1),lr){if(Ve.nodeName){const gn=Lt(Ve.nodeName);if(!Ze[gn]||$t[gn])throw hi("root node is forbidden and cannot be sanitized in-place")}}else if(Ve instanceof f)ve=Fo("<!---->"),ze=ve.ownerDocument.importNode(Ve,!0),ze.nodeType===mi.element&&ze.nodeName==="BODY"||ze.nodeName==="HTML"?ve=ze:ve.appendChild(ze);else{if(!$n&&!On&&!Tn&&Ve.indexOf("<")===-1)return V&&fr?V.createHTML(Ve):Ve;if(ve=Fo(Ve),!ve)return $n?null:fr?se:""}ve&&zr&&fn(ve.firstChild);const At=_i(lr?Ve:ve);for(;mt=At.nextNode();)zo(mt),Mo(mt),mt.content instanceof o&&ls(mt.content);if(lr)return Ve;if($n){if(Ot)for(Mt=Xe.call(ve.ownerDocument);ve.firstChild;)Mt.appendChild(ve.firstChild);else Mt=ve;return(ct.shadowroot||ct.shadowrootmode)&&(Mt=ut.call(r,Mt,!0)),Mt}let Xt=Tn?ve.outerHTML:ve.innerHTML;return Tn&&Ze["!doctype"]&&ve.ownerDocument&&ve.ownerDocument.doctype&&ve.ownerDocument.doctype.name&&jt(au,ve.ownerDocument.doctype.name)&&(Xt="<!DOCTYPE "+ve.ownerDocument.doctype.name+`>
|
|
9
|
+
`+Xt),On&&oo([lt,ot,N],gn=>{Xt=ci(Xt,gn," ")}),V&&fr?V.createHTML(Xt):Xt},e.setConfig=function(){let Ve=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};bi(Ve),Fr=!0},e.clearConfig=function(){Wn=null,Fr=!1},e.isValidAttribute=function(Ve,P,ve){Wn||bi({});const ze=Lt(Ve),mt=Lt(P);return Ro(ze,mt,ve)},e.addHook=function(Ve,P){typeof P=="function"&&li(Ee[Ve],P)},e.removeHook=function(Ve,P){if(P!==void 0){const ve=Up(Ee[Ve],P);return ve===-1?void 0:Vp(Ee[Ve],ve,1)[0]}return Jf(Ee[Ve])},e.removeHooks=function(Ve){Ee[Ve]=[]},e.removeAllHooks=function(){Ee=fu()},e}var o0=uu();const lu=t=>typeof t=="function",Va=t=>Array.isArray(t),cu=t=>t instanceof Object,hu=t=>t instanceof Object?t.constructor.name!=="Function"&&t.constructor.name!=="Object":!1,$a=t=>cu(t)&&!Va(t)&&!lu(t)&&!hu(t);function Vn(t){let e;if(Va(t))e=t;else{const n=Un(t),r=n==null?void 0:n.rgb();e=[(r==null?void 0:r.r)||0,(r==null?void 0:r.g)||0,(r==null?void 0:r.b)||0,(n==null?void 0:n.opacity)??1]}return[e[0]/255,e[1]/255,e[2]/255,e[3]]}function du(t,e,n){return .2126*t+.7152*e+.0722*n}function tn(t,e){let n=new Float32Array;return t({framebuffer:e})(()=>{n=t.read()}),n}function mu(t,e,n){return Math.min(Math.max(t,e),n)}function nn(t){return t!=null&&!Number.isNaN(t)}function pu(t,e){return o0.sanitize(t,{ALLOWED_TAGS:["a","b","i","em","strong","span","div","p","br"],ALLOWED_ATTR:["href","target","class","id","style"],ALLOW_DATA_ATTR:!1,...e})}class a0{constructor(){this.enableSimulation=qe.enableSimulation,this.backgroundColor=zp,this.spaceSize=qe.spaceSize,this.pointColor=Ap,this.pointGreyoutOpacity=Ep,this.pointGreyoutColor=Cp,this.pointSize=kp,this.pointOpacity=Pp,this.pointSizeScale=qe.pointSizeScale,this.hoveredPointCursor=qe.hoveredPointCursor,this.renderHoveredPointRing=qe.renderHoveredPointRing,this.hoveredPointRingColor=qe.hoveredPointRingColor,this.focusedPointRingColor=qe.focusedPointRingColor,this.focusedPointIndex=qe.focusedPointIndex,this.linkColor=Ip,this.linkOpacity=Dp,this.linkGreyoutOpacity=Lp,this.linkWidth=Fp,this.linkWidthScale=qe.linkWidthScale,this.renderLinks=qe.renderLinks,this.curvedLinks=qe.curvedLinks,this.curvedLinkSegments=qe.curvedLinkSegments,this.curvedLinkWeight=qe.curvedLinkWeight,this.curvedLinkControlPointDistance=qe.curvedLinkControlPointDistance,this.linkArrows=qe.arrowLinks,this.linkArrowsSizeScale=qe.arrowSizeScale,this.scaleLinksOnZoom=qe.scaleLinksOnZoom,this.linkVisibilityDistanceRange=qe.linkVisibilityDistanceRange,this.linkVisibilityMinTransparency=qe.linkVisibilityMinTransparency,this.useClassicQuadtree=qe.useClassicQuadtree,this.simulationDecay=qe.simulation.decay,this.simulationGravity=qe.simulation.gravity,this.simulationCenter=qe.simulation.center,this.simulationRepulsion=qe.simulation.repulsion,this.simulationRepulsionTheta=qe.simulation.repulsionTheta,this.simulationRepulsionQuadtreeLevels=qe.simulation.repulsionQuadtreeLevels,this.simulationLinkSpring=qe.simulation.linkSpring,this.simulationLinkDistance=qe.simulation.linkDistance,this.simulationLinkDistRandomVariationRange=qe.simulation.linkDistRandomVariationRange,this.simulationRepulsionFromMouse=qe.simulation.repulsionFromMouse,this.enableRightClickRepulsion=qe.enableRightClickRepulsion,this.simulationFriction=qe.simulation.friction,this.simulationCluster=qe.simulation.cluster,this.onSimulationStart=void 0,this.onSimulationTick=void 0,this.onSimulationEnd=void 0,this.onSimulationPause=void 0,this.onSimulationRestart=void 0,this.onClick=void 0,this.onMouseMove=void 0,this.onPointMouseOver=void 0,this.onPointMouseOut=void 0,this.onZoomStart=void 0,this.onZoom=void 0,this.onZoomEnd=void 0,this.onDragStart=void 0,this.onDrag=void 0,this.onDragEnd=void 0,this.showFPSMonitor=qe.showFPSMonitor,this.pixelRatio=qe.pixelRatio,this.scalePointsOnZoom=qe.scalePointsOnZoom,this.initialZoomLevel=void 0,this.enableZoom=qe.enableZoom,this.enableSimulationDuringZoom=qe.enableSimulationDuringZoom,this.enableDrag=qe.enableDrag,this.fitViewOnInit=qe.fitViewOnInit,this.fitViewDelay=qe.fitViewDelay,this.fitViewPadding=qe.fitViewPadding,this.fitViewDuration=qe.fitViewDuration,this.fitViewByPointsInRect=void 0,this.fitViewByPointIndices=void 0,this.randomSeed=void 0,this.pointSamplingDistance=qe.pointSamplingDistance,this.attribution=qe.attribution,this.rescalePositions=qe.rescalePositions}init(e){Object.keys(e).forEach(n=>{this.deepMergeConfig(this.getConfig(),e,n)})}deepMergeConfig(e,n,r){$a(e[r])&&$a(n[r])?Object.keys(n[r]).forEach(i=>{this.deepMergeConfig(e[r],n[r],i)}):e[r]=n[r]}getConfig(){return this}}class Fn{constructor(e,n,r,i,o){this.reglInstance=e,this.config=n,this.store=r,this.data=i,o&&(this.points=o)}}var s0=`#ifdef GL_ES
|
|
10
10
|
precision highp float;
|
|
11
11
|
#endif
|
|
12
12
|
|
|
@@ -73,7 +73,7 @@ void main() {
|
|
|
73
73
|
|
|
74
74
|
textureCoords = (vertexCoord + 1.0) / 2.0;
|
|
75
75
|
gl_Position = vec4(vertexCoord, 0, 1);
|
|
76
|
-
}`;class l0 extends
|
|
76
|
+
}`;class l0 extends Fn{create(){const{reglInstance:e,store:n}=this;this.centermassTexture||(this.centermassTexture=e.texture()),this.centermassTexture({data:new Float32Array(4).fill(0),shape:[1,1,4],type:"float"}),this.centermassFbo||(this.centermassFbo=e.framebuffer()),this.centermassFbo({color:this.centermassTexture,depth:!1,stencil:!1}),this.pointIndices||(this.pointIndices=e.buffer(0)),this.pointIndices(or(n.pointsTextureSize))}initPrograms(){const{reglInstance:e,config:n,store:r,data:i,points:o}=this;this.clearCentermassCommand||(this.clearCentermassCommand=e({frag:ar,vert:kt,framebuffer:()=>this.centermassFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.calculateCentermassCommand||(this.calculateCentermassCommand=e({frag:s0,vert:f0,framebuffer:()=>this.centermassFbo,primitive:"points",count:()=>i.pointsNumber??0,attributes:{pointIndices:{buffer:this.pointIndices,size:2}},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,pointsTextureSize:()=>r.pointsTextureSize},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.runCommand||(this.runCommand=e({frag:u0,vert:kt,framebuffer:()=>o==null?void 0:o.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,centermassTexture:()=>this.centermassFbo,centerForce:()=>n.simulationCenter,alpha:()=>r.alpha}}))}run(){var e,n,r;(e=this.clearCentermassCommand)==null||e.call(this),(n=this.calculateCentermassCommand)==null||n.call(this),(r=this.runCommand)==null||r.call(this)}}var c0=`#ifdef GL_ES
|
|
77
77
|
precision highp float;
|
|
78
78
|
#endif
|
|
79
79
|
|
|
@@ -99,7 +99,7 @@ void main() {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
gl_FragColor = velocity;
|
|
102
|
-
}`;class h0 extends
|
|
102
|
+
}`;class h0 extends Fn{initPrograms(){const{reglInstance:e,config:n,store:r,points:i}=this;this.runCommand||(this.runCommand=e({frag:c0,vert:kt,framebuffer:()=>i==null?void 0:i.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>i==null?void 0:i.previousPositionFbo,gravity:()=>n.simulationGravity,spaceSize:()=>r.adjustedSpaceSize,alpha:()=>r.alpha}}))}run(){var e;(e=this.runCommand)==null||e.call(this)}}function d0(t){return`
|
|
103
103
|
#ifdef GL_ES
|
|
104
104
|
precision highp float;
|
|
105
105
|
#endif
|
|
@@ -169,7 +169,7 @@ void main() {
|
|
|
169
169
|
|
|
170
170
|
gl_FragColor = vec4(velocity.rg, 0.0, 0.0);
|
|
171
171
|
}
|
|
172
|
-
`}var Ha=(t=>(t.OUTGOING="outgoing",t.INCOMING="incoming",t))(Ha||{});class vu extends
|
|
172
|
+
`}var Ha=(t=>(t.OUTGOING="outgoing",t.INCOMING="incoming",t))(Ha||{});class vu extends Fn{constructor(){super(...arguments),this.linkFirstIndicesAndAmount=new Float32Array,this.indices=new Float32Array,this.maxPointDegree=0}create(e){const{reglInstance:n,store:{pointsTextureSize:r,linksTextureSize:i},data:o}=this;if(!r||!i)return;this.linkFirstIndicesAndAmount=new Float32Array(r*r*4),this.indices=new Float32Array(i*i*4);const s=new Float32Array(i*i*4),f=new Float32Array(i*i*4),u=e==="incoming"?o.sourceIndexToTargetIndices:o.targetIndexToSourceIndices;this.maxPointDegree=0;let l=0;u==null||u.forEach((p,x)=>{p&&(this.linkFirstIndicesAndAmount[x*4+0]=l%i,this.linkFirstIndicesAndAmount[x*4+1]=Math.floor(l/i),this.linkFirstIndicesAndAmount[x*4+2]=p.length??0,p.forEach(([S,z])=>{var V,se,Le;this.indices[l*4+0]=S%r,this.indices[l*4+1]=Math.floor(S/r);const q=((V=o.degree)==null?void 0:V[S])??0,Te=((se=o.degree)==null?void 0:se[x])??0,we=q+Te,fe=we!==0?q/we:.5,Me=Math.min(q,Te);let Ue=((Le=o.linkStrength)==null?void 0:Le[z])??1/Math.max(Me,1);Ue=Math.sqrt(Ue),s[l*4+0]=fe,s[l*4+1]=Ue,f[l*4]=this.store.getRandomFloat(0,1),l+=1}),this.maxPointDegree=Math.max(this.maxPointDegree,p.length??0))}),this.linkFirstIndicesAndAmountTexture||(this.linkFirstIndicesAndAmountTexture=n.texture()),this.linkFirstIndicesAndAmountTexture({data:this.linkFirstIndicesAndAmount,shape:[r,r,4],type:"float"}),this.linkFirstIndicesAndAmountFbo||(this.linkFirstIndicesAndAmountFbo=n.framebuffer()),this.linkFirstIndicesAndAmountFbo({color:this.linkFirstIndicesAndAmountTexture,depth:!1,stencil:!1}),this.indicesTexture||(this.indicesTexture=n.texture()),this.indicesTexture({data:this.indices,shape:[i,i,4],type:"float"}),this.indicesFbo||(this.indicesFbo=n.framebuffer()),this.indicesFbo({color:this.indicesTexture,depth:!1,stencil:!1}),this.biasAndStrengthTexture||(this.biasAndStrengthTexture=n.texture()),this.biasAndStrengthTexture({data:s,shape:[i,i,4],type:"float"}),this.biasAndStrengthFbo||(this.biasAndStrengthFbo=n.framebuffer()),this.biasAndStrengthFbo({color:this.biasAndStrengthTexture,depth:!1,stencil:!1}),this.randomDistanceTexture||(this.randomDistanceTexture=n.texture()),this.randomDistanceTexture({data:f,shape:[i,i,4],type:"float"}),this.randomDistanceFbo||(this.randomDistanceFbo=n.framebuffer()),this.randomDistanceFbo({color:this.randomDistanceTexture,depth:!1,stencil:!1})}initPrograms(){const{reglInstance:e,config:n,store:r,points:i}=this;this.runCommand||(this.runCommand=e({frag:()=>d0(this.maxPointDegree),vert:kt,framebuffer:()=>i==null?void 0:i.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>i==null?void 0:i.previousPositionFbo,linkSpring:()=>n.simulationLinkSpring,linkDistance:()=>n.simulationLinkDistance,linkDistRandomVariationRange:()=>n.simulationLinkDistRandomVariationRange,linkInfoTexture:()=>this.linkFirstIndicesAndAmountFbo,linkIndicesTexture:()=>this.indicesFbo,linkPropertiesTexture:()=>this.biasAndStrengthFbo,linkRandomDistanceTexture:()=>this.randomDistanceFbo,pointsTextureSize:()=>r.pointsTextureSize,linksTextureSize:()=>r.linksTextureSize,alpha:()=>r.alpha}}))}run(){var e;(e=this.runCommand)==null||e.call(this)}}var gu=`#ifdef GL_ES
|
|
173
173
|
precision highp float;
|
|
174
174
|
#endif
|
|
175
175
|
|
|
@@ -365,7 +365,7 @@ void main() {
|
|
|
365
365
|
velocity.xy += velocity.xy * random.rg;
|
|
366
366
|
|
|
367
367
|
gl_FragColor = velocity;
|
|
368
|
-
}`;class v0 extends
|
|
368
|
+
}`;class v0 extends Fn{constructor(){super(...arguments),this.levelsFbos=new Map,this.quadtreeLevels=0}create(){const{reglInstance:e,store:n}=this;if(!n.pointsTextureSize)return;this.quadtreeLevels=Math.log2(n.adjustedSpaceSize);for(let i=0;i<this.quadtreeLevels;i+=1){const o=Math.pow(2,i+1);this.levelsFbos.has(`level[${i}]`)||this.levelsFbos.set(`level[${i}]`,e.framebuffer());const s=this.levelsFbos.get(`level[${i}]`);s&&s({shape:[o,o],colorType:"float",depth:!1,stencil:!1})}const r=new Float32Array(n.pointsTextureSize*n.pointsTextureSize*4);for(let i=0;i<n.pointsTextureSize*n.pointsTextureSize;++i)r[i*4]=n.getRandomFloat(-1,1)*1e-5,r[i*4+1]=n.getRandomFloat(-1,1)*1e-5;this.randomValuesTexture||(this.randomValuesTexture=e.texture()),this.randomValuesTexture({data:r,shape:[n.pointsTextureSize,n.pointsTextureSize,4],type:"float"}),this.randomValuesFbo||(this.randomValuesFbo=e.framebuffer()),this.randomValuesFbo({color:this.randomValuesTexture,depth:!1,stencil:!1}),this.pointIndices||(this.pointIndices=e.buffer(0)),this.pointIndices(or(n.pointsTextureSize))}initPrograms(){const{reglInstance:e,config:n,store:r,data:i,points:o}=this;this.clearLevelsCommand||(this.clearLevelsCommand=e({frag:ar,vert:kt,framebuffer:(s,f)=>f.levelFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.calculateLevelsCommand||(this.calculateLevelsCommand=e({frag:gu,vert:yu,framebuffer:(s,f)=>f.levelFbo,primitive:"points",count:()=>i.pointsNumber??0,attributes:{pointIndices:{buffer:this.pointIndices,size:2}},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,pointsTextureSize:()=>r.pointsTextureSize,levelTextureSize:(s,f)=>f.levelTextureSize,cellSize:(s,f)=>f.cellSize},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.forceCommand||(this.forceCommand=e({frag:m0,vert:kt,framebuffer:()=>o==null?void 0:o.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,level:(s,f)=>f.level,levels:this.quadtreeLevels,levelFbo:(s,f)=>f.levelFbo,levelTextureSize:(s,f)=>f.levelTextureSize,alpha:()=>r.alpha,repulsion:()=>n.simulationRepulsion,spaceSize:()=>r.adjustedSpaceSize,theta:()=>n.simulationRepulsionTheta},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.forceFromItsOwnCentermassCommand||(this.forceFromItsOwnCentermassCommand=e({frag:p0,vert:kt,framebuffer:()=>o==null?void 0:o.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,randomValues:()=>this.randomValuesFbo,levelFbo:(s,f)=>f.levelFbo,levelTextureSize:(s,f)=>f.levelTextureSize,alpha:()=>r.alpha,repulsion:()=>n.simulationRepulsion,spaceSize:()=>r.adjustedSpaceSize},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.clearVelocityCommand||(this.clearVelocityCommand=e({frag:ar,vert:kt,framebuffer:()=>o==null?void 0:o.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}}))}run(){var n,r,i,o,s;const{store:e}=this;for(let f=0;f<this.quadtreeLevels;f+=1){(n=this.clearLevelsCommand)==null||n.call(this,{levelFbo:this.levelsFbos.get(`level[${f}]`)});const u=Math.pow(2,f+1),l=e.adjustedSpaceSize/u;(r=this.calculateLevelsCommand)==null||r.call(this,{levelFbo:this.levelsFbos.get(`level[${f}]`),levelTextureSize:u,cellSize:l})}(i=this.clearVelocityCommand)==null||i.call(this);for(let f=0;f<this.quadtreeLevels;f+=1){const u=Math.pow(2,f+1);(o=this.forceCommand)==null||o.call(this,{levelFbo:this.levelsFbos.get(`level[${f}]`),levelTextureSize:u,level:f}),f===this.quadtreeLevels-1&&((s=this.forceFromItsOwnCentermassCommand)==null||s.call(this,{levelFbo:this.levelsFbos.get(`level[${f}]`),levelTextureSize:u,level:f}))}}}function g0(t,e){t=Math.min(t,e);const n=e-t,r=`
|
|
369
369
|
float dist = sqrt(l);
|
|
370
370
|
if (dist > 0.0) {
|
|
371
371
|
float c = alpha * repulsion * centermass.b;
|
|
@@ -438,7 +438,7 @@ void main() {
|
|
|
438
438
|
|
|
439
439
|
gl_FragColor = vec4(velocity, 0.0, 0.0);
|
|
440
440
|
}
|
|
441
|
-
`}class y0 extends
|
|
441
|
+
`}class y0 extends Fn{constructor(){super(...arguments),this.levelsTextures=new Map,this.levelsFbos=new Map,this.quadtreeLevels=0}create(){const{reglInstance:e,store:n}=this;if(!n.pointsTextureSize)return;this.quadtreeLevels=Math.log2(n.adjustedSpaceSize);for(let i=0;i<this.quadtreeLevels;i+=1){const o=Math.pow(2,i+1),s=`level[${i}]`;this.levelsTextures.has(s)||this.levelsTextures.set(s,e.texture());const f=this.levelsTextures.get(s);f&&f({data:new Float32Array(o*o*4),shape:[o,o,4],type:"float"}),this.levelsFbos.has(s)||this.levelsFbos.set(s,e.framebuffer());const u=this.levelsFbos.get(s);u&&u({color:this.levelsTextures.get(s),depth:!1,stencil:!1})}const r=new Float32Array(n.pointsTextureSize*n.pointsTextureSize*4);for(let i=0;i<n.pointsTextureSize*n.pointsTextureSize;++i)r[i*4]=n.getRandomFloat(-1,1)*1e-5,r[i*4+1]=n.getRandomFloat(-1,1)*1e-5;this.randomValuesTexture||(this.randomValuesTexture=e.texture()),this.randomValuesTexture({data:r,shape:[n.pointsTextureSize,n.pointsTextureSize,4],type:"float"}),this.randomValuesFbo||(this.randomValuesFbo=e.framebuffer()),this.randomValuesFbo({color:this.randomValuesTexture,depth:!1,stencil:!1}),this.pointIndices||(this.pointIndices=e.buffer(0)),this.pointIndices(or(n.pointsTextureSize))}initPrograms(){const{reglInstance:e,config:n,store:r,data:i,points:o}=this;this.clearLevelsCommand||(this.clearLevelsCommand=e({frag:ar,vert:kt,framebuffer:(s,f)=>f.levelFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.calculateLevelsCommand||(this.calculateLevelsCommand=e({frag:gu,vert:yu,framebuffer:(s,f)=>f.levelFbo,primitive:"points",count:()=>i.pointsNumber??0,attributes:{pointIndices:{buffer:this.pointIndices,size:2}},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,pointsTextureSize:()=>r.pointsTextureSize,levelTextureSize:(s,f)=>f.levelTextureSize,cellSize:(s,f)=>f.cellSize},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.quadtreeCommand=e({frag:g0(n.simulationRepulsionQuadtreeLevels??this.quadtreeLevels,this.quadtreeLevels),vert:kt,framebuffer:()=>o==null?void 0:o.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>o==null?void 0:o.previousPositionFbo,randomValues:()=>this.randomValuesFbo,spaceSize:()=>r.adjustedSpaceSize,repulsion:()=>n.simulationRepulsion,theta:()=>n.simulationRepulsionTheta,alpha:()=>r.alpha,...Object.fromEntries(this.levelsFbos)}})}run(){var n,r,i;const{store:e}=this;for(let o=0;o<this.quadtreeLevels;o+=1){(n=this.clearLevelsCommand)==null||n.call(this,{levelFbo:this.levelsFbos.get(`level[${o}]`)});const s=Math.pow(2,o+1),f=e.adjustedSpaceSize/s;(r=this.calculateLevelsCommand)==null||r.call(this,{levelFbo:this.levelsFbos.get(`level[${o}]`),levelTextureSize:s,cellSize:f})}(i=this.quadtreeCommand)==null||i.call(this)}}var x0=`#ifdef GL_ES
|
|
442
442
|
precision highp float;
|
|
443
443
|
#endif
|
|
444
444
|
|
|
@@ -461,7 +461,7 @@ void main() {
|
|
|
461
461
|
velocity.rg -= addV * vec2(cos(angle), sin(angle));
|
|
462
462
|
|
|
463
463
|
gl_FragColor = velocity;
|
|
464
|
-
}`;class b0 extends
|
|
464
|
+
}`;class b0 extends Fn{initPrograms(){const{reglInstance:e,config:n,store:r,points:i}=this;this.runCommand||(this.runCommand=e({frag:x0,vert:kt,framebuffer:()=>i==null?void 0:i.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>i==null?void 0:i.previousPositionFbo,mousePos:()=>r.mousePosition,repulsion:()=>n.simulationRepulsionFromMouse}}))}run(){var e;(e=this.runCommand)==null||e.call(this)}}var _0=`#ifdef GL_ES
|
|
465
465
|
precision highp float;
|
|
466
466
|
#endif
|
|
467
467
|
|
|
@@ -531,7 +531,7 @@ void main() {
|
|
|
531
531
|
}
|
|
532
532
|
|
|
533
533
|
gl_FragColor = velocity;
|
|
534
|
-
}`;class w0 extends
|
|
534
|
+
}`;class w0 extends Fn{create(){var u;const{reglInstance:e,store:n,data:r}=this,{pointsTextureSize:i}=n;if(r.pointsNumber===void 0||!r.pointClusters&&!r.clusterPositions)return;this.clusterCount=(r.pointClusters??[]).reduce((l,p)=>p===void 0||p<0?l:Math.max(l,p),0)+1,this.clustersTextureSize=Math.ceil(Math.sqrt(this.clusterCount));const o=new Float32Array(i*i*4),s=new Float32Array(this.clustersTextureSize*this.clustersTextureSize*4).fill(-1),f=new Float32Array(i*i*4).fill(1);if(r.clusterPositions)for(let l=0;l<this.clusterCount;++l)s[l*4+0]=r.clusterPositions[l*2+0]??-1,s[l*4+1]=r.clusterPositions[l*2+1]??-1;for(let l=0;l<r.pointsNumber;++l){const p=(u=r.pointClusters)==null?void 0:u[l];p===void 0?(o[l*4+0]=-1,o[l*4+1]=-1):(o[l*4+0]=p%this.clustersTextureSize,o[l*4+1]=Math.floor(p/this.clustersTextureSize)),r.clusterStrength&&(f[l*4+0]=r.clusterStrength[l]??1)}this.clusterTexture||(this.clusterTexture=e.texture()),this.clusterTexture({data:o,shape:[i,i,4],type:"float"}),this.clusterFbo||(this.clusterFbo=e.framebuffer()),this.clusterFbo({color:this.clusterTexture,depth:!1,stencil:!1}),this.clusterPositionsTexture||(this.clusterPositionsTexture=e.texture()),this.clusterPositionsTexture({data:s,shape:[this.clustersTextureSize,this.clustersTextureSize,4],type:"float"}),this.clusterPositionsFbo||(this.clusterPositionsFbo=e.framebuffer()),this.clusterPositionsFbo({color:this.clusterPositionsTexture,depth:!1,stencil:!1}),this.clusterForceCoefficientTexture||(this.clusterForceCoefficientTexture=e.texture()),this.clusterForceCoefficientTexture({data:f,shape:[i,i,4],type:"float"}),this.clusterForceCoefficientFbo||(this.clusterForceCoefficientFbo=e.framebuffer()),this.clusterForceCoefficientFbo({color:this.clusterForceCoefficientTexture,depth:!1,stencil:!1}),this.centermassTexture||(this.centermassTexture=e.texture()),this.centermassTexture({data:new Float32Array(this.clustersTextureSize*this.clustersTextureSize*4).fill(0),shape:[this.clustersTextureSize,this.clustersTextureSize,4],type:"float"}),this.centermassFbo||(this.centermassFbo=e.framebuffer()),this.centermassFbo({color:this.centermassTexture,depth:!1,stencil:!1}),this.pointIndices||(this.pointIndices=e.buffer(0)),this.pointIndices(or(n.pointsTextureSize))}initPrograms(){const{reglInstance:e,store:n,data:r,points:i}=this;r.pointClusters!==void 0&&(this.clearCentermassCommand||(this.clearCentermassCommand=e({frag:ar,vert:kt,framebuffer:()=>this.centermassFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.calculateCentermassCommand||(this.calculateCentermassCommand=e({frag:_0,vert:S0,framebuffer:()=>this.centermassFbo,primitive:"points",count:()=>r.pointsNumber??0,attributes:{pointIndices:{buffer:this.pointIndices,size:2}},uniforms:{positionsTexture:()=>i==null?void 0:i.previousPositionFbo,pointsTextureSize:()=>n.pointsTextureSize,clusterTexture:()=>this.clusterFbo,clustersTextureSize:()=>this.clustersTextureSize},blend:{enable:!0,func:{src:"one",dst:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},stencil:{enable:!1}})),this.applyForcesCommand||(this.applyForcesCommand=e({frag:T0,vert:kt,framebuffer:()=>i==null?void 0:i.velocityFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>i==null?void 0:i.previousPositionFbo,clusterTexture:()=>this.clusterFbo,centermassTexture:()=>this.centermassFbo,clusterPositionsTexture:()=>this.clusterPositionsFbo,clusterForceCoefficient:()=>this.clusterForceCoefficientFbo,alpha:()=>n.alpha,clustersTextureSize:()=>this.clustersTextureSize,clusterCoefficient:()=>this.config.simulationCluster}})))}calculateCentermass(){var e,n;(e=this.clearCentermassCommand)==null||e.call(this),(n=this.calculateCentermassCommand)==null||n.call(this)}run(){var e;!this.data.pointClusters&&!this.data.clusterPositions||(this.calculateCentermass(),(e=this.applyForcesCommand)==null||e.call(this))}}var fo={exports:{}},A0=fo.exports,xu;function E0(){return xu||(xu=1,function(t,e){(function(n,r){t.exports=r()})(A0,function(){var n=`<div class="gl-box">
|
|
535
535
|
<svg viewBox="0 0 55 60">
|
|
536
536
|
<text x="27" y="56" class="gl-fps">00 FPS</text>
|
|
537
537
|
<text x="28" y="8" class="gl-mem"></text>
|
|
@@ -607,7 +607,7 @@ void main() {
|
|
|
607
607
|
#gl-bench .opacity {
|
|
608
608
|
stroke: #448844;
|
|
609
609
|
}
|
|
610
|
-
`;class i{constructor(s,f={}){this.css=r,this.svg=n,this.paramLogger=()=>{},this.chartLogger=()=>{},this.chartLen=20,this.chartHz=20,this.names=[],this.cpuAccums=[],this.gpuAccums=[],this.activeAccums=[],this.chart=new Array(this.chartLen),this.now=()=>performance&&performance.now?performance.now():Date.now(),this.updateUI=()=>{[].forEach.call(this.nodes["gl-gpu-svg"],S=>{S.style.display=this.trackGPU?"inline":"none"})},Object.assign(this,f),this.detected=0,this.finished=[],this.isFramebuffer=0,this.frameId=0;let u,l=0,p,x=S=>{++l<20?u=requestAnimationFrame(x):(this.detected=Math.ceil(1e3*l/(S-p)/70),cancelAnimationFrame(u)),p||(p=S)};if(requestAnimationFrame(x),s){const S=async(
|
|
610
|
+
`;class i{constructor(s,f={}){this.css=r,this.svg=n,this.paramLogger=()=>{},this.chartLogger=()=>{},this.chartLen=20,this.chartHz=20,this.names=[],this.cpuAccums=[],this.gpuAccums=[],this.activeAccums=[],this.chart=new Array(this.chartLen),this.now=()=>performance&&performance.now?performance.now():Date.now(),this.updateUI=()=>{[].forEach.call(this.nodes["gl-gpu-svg"],S=>{S.style.display=this.trackGPU?"inline":"none"})},Object.assign(this,f),this.detected=0,this.finished=[],this.isFramebuffer=0,this.frameId=0;let u,l=0,p,x=S=>{++l<20?u=requestAnimationFrame(x):(this.detected=Math.ceil(1e3*l/(S-p)/70),cancelAnimationFrame(u)),p||(p=S)};if(requestAnimationFrame(x),s){const S=async(q,Te)=>Promise.resolve(setTimeout(()=>{s.getError();const we=this.now()-q;Te.forEach((fe,Me)=>{fe&&(this.gpuAccums[Me]+=we)})},0)),z=(q,Te,we)=>function(){const fe=Te.now();q.apply(we,arguments),Te.trackGPU&&Te.finished.push(S(fe,Te.activeAccums.slice(0)))};["drawArrays","drawElements","drawArraysInstanced","drawBuffers","drawElementsInstanced","drawRangeElements"].forEach(q=>{s[q]&&(s[q]=z(s[q],this,s))}),s.getExtension=((q,Te)=>function(){let we=q.apply(s,arguments);return we&&["drawElementsInstancedANGLE","drawBuffersWEBGL"].forEach(fe=>{we[fe]&&(we[fe]=z(we[fe],Te,we))}),we})(s.getExtension,this)}if(!this.withoutUI){this.dom||(this.dom=document.body);let S=document.createElement("div");S.id="gl-bench",this.dom.appendChild(S),this.dom.insertAdjacentHTML("afterbegin",'<style id="gl-bench-style">'+this.css+"</style>"),this.dom=S,this.dom.addEventListener("click",()=>{this.trackGPU=!this.trackGPU,this.updateUI()}),this.paramLogger=((z,q,Te)=>{const we=["gl-cpu","gl-gpu","gl-mem","gl-fps","gl-gpu-svg","gl-chart"],fe=Object.assign({},we);return we.forEach(Me=>fe[Me]=q.getElementsByClassName(Me)),this.nodes=fe,(Me,Ue,V,se,Le,Ge,Xe)=>{fe["gl-cpu"][Me].style.strokeDasharray=(Ue*.27).toFixed(0)+" 100",fe["gl-gpu"][Me].style.strokeDasharray=(V*.27).toFixed(0)+" 100",fe["gl-mem"][Me].innerHTML=Te[Me]?Te[Me]:se?"mem: "+se.toFixed(0)+"mb":"",fe["gl-fps"][Me].innerHTML=Le.toFixed(0)+" FPS",z(Te[Me],Ue,V,se,Le,Ge,Xe)}})(this.paramLogger,this.dom,this.names),this.chartLogger=((z,q)=>{let Te={"gl-chart":q.getElementsByClassName("gl-chart")};return(we,fe,Me)=>{let Ue="",V=fe.length;for(let se=0;se<V;se++){let Le=(Me+se+1)%V;fe[Le]!=null&&(Ue=Ue+" "+(55*se/(V-1)).toFixed(1)+","+(45-fe[Le]*22/60/this.detected).toFixed(1))}Te["gl-chart"][we].setAttribute("points",Ue),z(this.names[we],fe,Me)}})(this.chartLogger,this.dom)}}addUI(s){this.names.indexOf(s)==-1&&(this.names.push(s),this.dom&&(this.dom.insertAdjacentHTML("beforeend",this.svg),this.updateUI()),this.cpuAccums.push(0),this.gpuAccums.push(0),this.activeAccums.push(!1))}nextFrame(s){this.frameId++;const f=s||this.now();if(this.frameId<=1)this.paramFrame=this.frameId,this.paramTime=f;else{let u=f-this.paramTime;if(u>=1e3){const l=this.frameId-this.paramFrame,p=l/u*1e3;for(let x=0;x<this.names.length;x++){const S=this.cpuAccums[x]/u*100,z=this.gpuAccums[x]/u*100,q=performance&&performance.memory?performance.memory.usedJSHeapSize/(1<<20):0;this.paramLogger(x,S,z,q,p,u,l),this.cpuAccums[x]=0,Promise.all(this.finished).then(()=>{this.gpuAccums[x]=0,this.finished=[]})}this.paramFrame=this.frameId,this.paramTime=f}}if(!this.detected||!this.chartFrame)this.chartFrame=this.frameId,this.chartTime=f,this.circularId=0;else{let u=f-this.chartTime,l=this.chartHz*u/1e3;for(;--l>0&&this.detected;){const x=(this.frameId-this.chartFrame)/u*1e3;this.chart[this.circularId%this.chartLen]=x;for(let S=0;S<this.names.length;S++)this.chartLogger(S,this.chart,this.circularId);this.circularId++,this.chartFrame=this.frameId,this.chartTime=f}}}begin(s){this.updateAccums(s)}end(s){this.updateAccums(s)}updateAccums(s){let f=this.names.indexOf(s);f==-1&&(f=this.names.length,this.addUI(s));const u=this.now(),l=u-this.t0;for(let p=0;p<f+1;p++)this.activeAccums[p]&&(this.cpuAccums[p]+=l);this.activeAccums[f]=!this.activeAccums[f],this.t0=u}}return i})}(fo)),fo.exports}var C0=E0();const P0=za(C0),k0=`
|
|
611
611
|
#gl-bench {
|
|
612
612
|
position:absolute;
|
|
613
613
|
right:0;
|
|
@@ -659,7 +659,7 @@ void main() {
|
|
|
659
659
|
#gl-bench .opacity {
|
|
660
660
|
stroke: #8288e4;
|
|
661
661
|
}
|
|
662
|
-
`;class bu{constructor(e){this.destroy();const n=e.getContext("webgl")||e.getContext("experimental-webgl");this.bench=new
|
|
662
|
+
`;class bu{constructor(e){this.destroy();const n=e.getContext("webgl")||e.getContext("experimental-webgl");this.bench=new P0(n,{css:k0})}begin(){var e;(e=this.bench)==null||e.begin("frame")}end(e){var n,r;(n=this.bench)==null||n.end("frame"),(r=this.bench)==null||r.nextFrame(e)}destroy(){this.bench=void 0,Rt("#gl-bench").remove()}}var _u=(t=>(t[t.Circle=0]="Circle",t[t.Square=1]="Square",t[t.Triangle=2]="Triangle",t[t.Diamond=3]="Diamond",t[t.Pentagon=4]="Pentagon",t[t.Hexagon=5]="Hexagon",t[t.Star=6]="Star",t[t.Cross=7]="Cross",t[t.None=8]="None",t))(_u||{});class I0{constructor(e){this._config=e}get pointsNumber(){return this.pointPositions&&this.pointPositions.length/2}get linksNumber(){return this.links&&this.links.length/2}updatePoints(){this.pointPositions=this.inputPointPositions}updatePointColor(){if(this.pointsNumber===void 0){this.pointColors=void 0;return}const e=Vn(this._config.pointColor);if(this.inputPointColors===void 0||this.inputPointColors.length/4!==this.pointsNumber){this.pointColors=new Float32Array(this.pointsNumber*4);for(let n=0;n<this.pointColors.length/4;n++)this.pointColors[n*4]=e[0],this.pointColors[n*4+1]=e[1],this.pointColors[n*4+2]=e[2],this.pointColors[n*4+3]=e[3]}else{this.pointColors=this.inputPointColors;for(let n=0;n<this.pointColors.length/4;n++)nn(this.pointColors[n*4])||(this.pointColors[n*4]=e[0]),nn(this.pointColors[n*4+1])||(this.pointColors[n*4+1]=e[1]),nn(this.pointColors[n*4+2])||(this.pointColors[n*4+2]=e[2]),nn(this.pointColors[n*4+3])||(this.pointColors[n*4+3]=e[3])}}updatePointSize(){if(this.pointsNumber===void 0){this.pointSizes=void 0;return}if(this.inputPointSizes===void 0||this.inputPointSizes.length!==this.pointsNumber)this.pointSizes=new Float32Array(this.pointsNumber).fill(this._config.pointSize);else{this.pointSizes=this.inputPointSizes;for(let e=0;e<this.pointSizes.length;e++)nn(this.pointSizes[e])||(this.pointSizes[e]=this._config.pointSize)}}updatePointShape(){if(this.pointsNumber===void 0){this.pointShapes=void 0;return}const e=0;if(this.inputPointShapes===void 0||this.inputPointShapes.length!==this.pointsNumber)this.pointShapes=new Float32Array(this.pointsNumber).fill(e);else{this.pointShapes=new Float32Array(this.inputPointShapes);const n=this.pointShapes;for(let r=0;r<n.length;r++){const i=n[r];(i==null||!nn(i)||i<0||i>8)&&(n[r]=e)}}}updatePointImageIndices(){if(this.pointsNumber===void 0){this.pointImageIndices=void 0;return}if(this.inputPointImageIndices===void 0||this.inputPointImageIndices.length!==this.pointsNumber)this.pointImageIndices=new Float32Array(this.pointsNumber).fill(-1);else{const e=new Float32Array(this.inputPointImageIndices);for(let n=0;n<e.length;n++){const r=e[n],i=r===void 0?NaN:r;!Number.isFinite(i)||i<0?e[n]=-1:e[n]=Math.trunc(i)}this.pointImageIndices=e}}updatePointImageSizes(){var e;if(this.pointsNumber===void 0){this.pointImageSizes=void 0;return}if(this.inputPointImageSizes===void 0||this.inputPointImageSizes.length!==this.pointsNumber)this.pointImageSizes=this.pointSizes?new Float32Array(this.pointSizes):new Float32Array(this.pointsNumber).fill(this._config.pointSize);else{this.pointImageSizes=new Float32Array(this.inputPointImageSizes);for(let n=0;n<this.pointImageSizes.length;n++)nn(this.pointImageSizes[n])||(this.pointImageSizes[n]=((e=this.pointSizes)==null?void 0:e[n])??this._config.pointSize)}}updateLinks(){this.links=this.inputLinks}updateLinkColor(){if(this.linksNumber===void 0){this.linkColors=void 0;return}const e=Vn(this._config.linkColor);if(this.inputLinkColors===void 0||this.inputLinkColors.length/4!==this.linksNumber){this.linkColors=new Float32Array(this.linksNumber*4);for(let n=0;n<this.linkColors.length/4;n++)this.linkColors[n*4]=e[0],this.linkColors[n*4+1]=e[1],this.linkColors[n*4+2]=e[2],this.linkColors[n*4+3]=e[3]}else{this.linkColors=this.inputLinkColors;for(let n=0;n<this.linkColors.length/4;n++)nn(this.linkColors[n*4])||(this.linkColors[n*4]=e[0]),nn(this.linkColors[n*4+1])||(this.linkColors[n*4+1]=e[1]),nn(this.linkColors[n*4+2])||(this.linkColors[n*4+2]=e[2]),nn(this.linkColors[n*4+3])||(this.linkColors[n*4+3]=e[3])}}updateLinkWidth(){if(this.linksNumber===void 0){this.linkWidths=void 0;return}if(this.inputLinkWidths===void 0||this.inputLinkWidths.length!==this.linksNumber)this.linkWidths=new Float32Array(this.linksNumber).fill(this._config.linkWidth);else{this.linkWidths=this.inputLinkWidths;for(let e=0;e<this.linkWidths.length;e++)nn(this.linkWidths[e])||(this.linkWidths[e]=this._config.linkWidth)}}updateArrows(){if(this.linksNumber===void 0){this.linkArrows=void 0;return}this.linkArrowsBoolean===void 0||this.linkArrowsBoolean.length!==this.linksNumber?this.linkArrows=new Array(this.linksNumber).fill(+this._config.linkArrows):this.linkArrows=this.linkArrowsBoolean.map(e=>+e)}updateLinkStrength(){this.linksNumber===void 0&&(this.linkStrength=void 0),this.inputLinkStrength===void 0||this.inputLinkStrength.length!==this.linksNumber?this.linkStrength=void 0:this.linkStrength=this.inputLinkStrength}updateClusters(){if(this.pointsNumber===void 0){this.pointClusters=void 0,this.clusterPositions=void 0;return}this.inputPointClusters===void 0||this.inputPointClusters.length!==this.pointsNumber?this.pointClusters=void 0:this.pointClusters=this.inputPointClusters,this.inputClusterPositions===void 0?this.clusterPositions=void 0:this.clusterPositions=this.inputClusterPositions,this.inputClusterStrength===void 0||this.inputClusterStrength.length!==this.pointsNumber?this.clusterStrength=void 0:this.clusterStrength=this.inputClusterStrength}update(){this.updatePoints(),this.updatePointColor(),this.updatePointSize(),this.updatePointShape(),this.updatePointImageIndices(),this.updatePointImageSizes(),this.updateLinks(),this.updateLinkColor(),this.updateLinkWidth(),this.updateArrows(),this.updateLinkStrength(),this.updateClusters(),this._createAdjacencyLists(),this._calculateDegrees()}getAdjacentIndices(e){var n,r,i,o;return[...((r=(n=this.sourceIndexToTargetIndices)==null?void 0:n[e])==null?void 0:r.map(s=>s[0]))||[],...((o=(i=this.targetIndexToSourceIndices)==null?void 0:i[e])==null?void 0:o.map(s=>s[0]))||[]]}_createAdjacencyLists(){var e,n;if(this.linksNumber===void 0||this.links===void 0){this.sourceIndexToTargetIndices=void 0,this.targetIndexToSourceIndices=void 0;return}this.sourceIndexToTargetIndices=new Array(this.pointsNumber).fill(void 0),this.targetIndexToSourceIndices=new Array(this.pointsNumber).fill(void 0);for(let r=0;r<this.linksNumber;r++){const i=this.links[r*2],o=this.links[r*2+1];i!==void 0&&o!==void 0&&(this.sourceIndexToTargetIndices[i]===void 0&&(this.sourceIndexToTargetIndices[i]=[]),(e=this.sourceIndexToTargetIndices[i])==null||e.push([o,r]),this.targetIndexToSourceIndices[o]===void 0&&(this.targetIndexToSourceIndices[o]=[]),(n=this.targetIndexToSourceIndices[o])==null||n.push([i,r]))}}_calculateDegrees(){var e,n,r,i;if(this.pointsNumber===void 0){this.degree=void 0,this.inDegree=void 0,this.outDegree=void 0;return}this.degree=new Array(this.pointsNumber).fill(0),this.inDegree=new Array(this.pointsNumber).fill(0),this.outDegree=new Array(this.pointsNumber).fill(0);for(let o=0;o<this.pointsNumber;o++)this.inDegree[o]=((n=(e=this.targetIndexToSourceIndices)==null?void 0:e[o])==null?void 0:n.length)??0,this.outDegree[o]=((i=(r=this.sourceIndexToTargetIndices)==null?void 0:r[o])==null?void 0:i.length)??0,this.degree[o]=(this.inDegree[o]??0)+(this.outDegree[o]??0)}}var L0=`precision highp float;
|
|
663
663
|
|
|
664
664
|
varying vec4 rgbaColor;
|
|
665
665
|
varying vec2 pos;
|
|
@@ -693,7 +693,7 @@ void main() {
|
|
|
693
693
|
} else opacity = rgbaColor.a * smoothstep(0.5, 0.5 - smoothing, abs(pos.y));
|
|
694
694
|
|
|
695
695
|
gl_FragColor = vec4(color, opacity);
|
|
696
|
-
}`,
|
|
696
|
+
}`,D0=`precision highp float;
|
|
697
697
|
|
|
698
698
|
attribute vec2 position, pointA, pointB;
|
|
699
699
|
attribute vec4 color;
|
|
@@ -859,13 +859,23 @@ void main() {
|
|
|
859
859
|
vec3 final = transformationMatrix * vec3(p, 1);
|
|
860
860
|
|
|
861
861
|
gl_Position = vec4(final.rg, 0, 1);
|
|
862
|
-
}`;function uo(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function I0(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Su(t){let e,n,r;t.length!==2?(e=uo,n=(f,u)=>uo(t(f),u),r=(f,u)=>t(f)-u):(e=t===uo||t===I0?t:D0,n=t,r=t);function i(f,u,l=0,p=f.length){if(l<p){if(e(u,u)!==0)return p;do{const x=l+p>>>1;n(f[x],u)<0?l=x+1:p=x}while(l<p)}return l}function o(f,u,l=0,p=f.length){if(l<p){if(e(u,u)!==0)return p;do{const x=l+p>>>1;n(f[x],u)<=0?l=x+1:p=x}while(l<p)}return l}function s(f,u,l=0,p=f.length){const x=i(f,u,l,p-1);return x>l&&r(f[x-1],u)>-r(f[x],u)?x-1:x}return{left:i,center:s,right:o}}function D0(){return 0}function z0(t){return t===null?NaN:+t}const O0=Su(uo).right;Su(z0).center;function Tu(t,e){let n,r;for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));return[n,r]}var ja=Math.sqrt(50),Xa=Math.sqrt(10),Wa=Math.sqrt(2);function M0(t,e,n){var r,i=-1,o,s,f;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(f=wu(t,e,n))===0||!isFinite(f))return[];if(f>0){let u=Math.round(t/f),l=Math.round(e/f);for(u*f<t&&++u,l*f>e&&--l,s=new Array(o=l-u+1);++i<o;)s[i]=(u+i)*f}else{f=-f;let u=Math.round(t*f),l=Math.round(e*f);for(u/f<t&&++u,l/f>e&&--l,s=new Array(o=l-u+1);++i<o;)s[i]=(u+i)/f}return r&&s.reverse(),s}function wu(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=ja?10:o>=Xa?5:o>=Wa?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ja?10:o>=Xa?5:o>=Wa?2:1)}function N0(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=ja?i*=10:o>=Xa?i*=5:o>=Wa&&(i*=2),e<t?-i:i}function G0(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function Au(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function B0(t){return function(){return t}}function U0(t){return+t}var Eu=[0,1];function Sn(t){return t}function qa(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:B0(isNaN(e)?NaN:.5)}function V0(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function $0(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=qa(i,r),o=n(s,o)):(r=qa(r,i),o=n(o,s)),function(f){return o(r(f))}}function H0(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=qa(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(f){var u=O0(t,f,1,r)-1;return o[u](i[u](f))}}function Pu(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Cu(){var t=Eu,e=Eu,n=Fa,r,i,o,s=Sn,f,u,l;function p(){var S=Math.min(t.length,e.length);return s!==Sn&&(s=V0(t[0],t[S-1])),f=S>2?H0:$0,u=l=null,x}function x(S){return S==null||isNaN(S=+S)?o:(u||(u=f(t.map(r),e,n)))(r(s(S)))}return x.invert=function(S){return s(i((l||(l=f(e,t.map(r),dn)))(S)))},x.domain=function(S){return arguments.length?(t=Array.from(S,U0),p()):t.slice()},x.range=function(S){return arguments.length?(e=Array.from(S),p()):e.slice()},x.rangeRound=function(S){return e=Array.from(S),n=om,p()},x.clamp=function(S){return arguments.length?(s=S?!0:Sn,p()):s!==Sn},x.interpolate=function(S){return arguments.length?(n=S,p()):n},x.unknown=function(S){return arguments.length?(o=S,x):o},function(S,D){return r=S,i=D,p()}}function j0(){return Cu()(Sn,Sn)}function X0(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function lo(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Fr(t){return t=lo(Math.abs(t)),t?t[1]:NaN}function W0(t,e){return function(n,r){for(var i=n.length,o=[],s=0,f=t[0],u=0;i>0&&f>0&&(u+f+1>r&&(f=Math.max(1,r-u)),o.push(n.substring(i-=f,i+f)),!((u+=f+1)>r));)f=t[s=(s+1)%t.length];return o.reverse().join(e)}}function q0(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Y0=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function co(t){if(!(e=Y0.exec(t)))throw new Error("invalid format: "+t);var e;return new Ya({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]})}co.prototype=Ya.prototype;function Ya(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+""}Ya.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 Z0(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var ku;function Q0(t,e){var n=lo(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(ku=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+lo(t,Math.max(0,e+o-1))[0]}function Lu(t,e){var n=lo(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const Fu={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:X0,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)=>Lu(t*100,e),r:Lu,s:Q0,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Ru(t){return t}var Iu=Array.prototype.map,Du=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function K0(t){var e=t.grouping===void 0||t.thousands===void 0?Ru:W0(Iu.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?Ru:q0(Iu.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",f=t.minus===void 0?"−":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function l(x){x=co(x);var S=x.fill,D=x.align,Y=x.sign,Ee=x.symbol,Te=x.zero,se=x.width,Ue=x.comma,He=x.precision,H=x.trim,fe=x.type;fe==="n"?(Ue=!0,fe="g"):Fu[fe]||(He===void 0&&(He=12),H=!0,fe="g"),(Te||S==="0"&&D==="=")&&(Te=!0,S="0",D="=");var Re=Ee==="$"?n:Ee==="#"&&/[boxX]/.test(fe)?"0"+fe.toLowerCase():"",Ge=Ee==="$"?r:/[%p]/.test(fe)?s:"",Ye=Fu[fe],at=/[defgprs%]/.test(fe);He=He===void 0?6:/[gprs]/.test(fe)?Math.max(1,Math.min(21,He)):Math.max(0,Math.min(20,He));function ut(Ae){var lt=Re,it=Ge,N,Ce,re;if(fe==="c")it=Ye(Ae)+it,Ae="";else{Ae=+Ae;var ke=Ae<0||1/Ae<0;if(Ae=isNaN(Ae)?u:Ye(Math.abs(Ae),He),H&&(Ae=Z0(Ae)),ke&&+Ae==0&&Y!=="+"&&(ke=!1),lt=(ke?Y==="("?Y:f:Y==="-"||Y==="("?"":Y)+lt,it=(fe==="s"?Du[8+ku/3]:"")+it+(ke&&Y==="("?")":""),at){for(N=-1,Ce=Ae.length;++N<Ce;)if(re=Ae.charCodeAt(N),48>re||re>57){it=(re===46?i+Ae.slice(N+1):Ae.slice(N))+it,Ae=Ae.slice(0,N);break}}}Ue&&!Te&&(Ae=e(Ae,1/0));var Xe=lt.length+Ae.length+it.length,je=Xe<se?new Array(se-Xe+1).join(S):"";switch(Ue&&Te&&(Ae=e(je+Ae,je.length?se-it.length:1/0),je=""),D){case"<":Ae=lt+Ae+it+je;break;case"=":Ae=lt+je+Ae+it;break;case"^":Ae=je.slice(0,Xe=je.length>>1)+lt+Ae+it+je.slice(Xe);break;default:Ae=je+lt+Ae+it;break}return o(Ae)}return ut.toString=function(){return x+""},ut}function p(x,S){var D=l((x=co(x),x.type="f",x)),Y=Math.max(-8,Math.min(8,Math.floor(Fr(S)/3)))*3,Ee=Math.pow(10,-Y),Te=Du[8+Y/3];return function(se){return D(Ee*se)+Te}}return{format:l,formatPrefix:p}}var ho,zu,Ou;J0({thousands:",",grouping:[3],currency:["$",""]});function J0(t){return ho=K0(t),zu=ho.format,Ou=ho.formatPrefix,ho}function ev(t){return Math.max(0,-Fr(Math.abs(t)))}function tv(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Fr(e)/3)))*3-Fr(Math.abs(t)))}function nv(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Fr(e)-Fr(t))+1}function rv(t,e,n,r){var i=N0(t,e,n),o;switch(r=co(r??",f"),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=tv(i,s))&&(r.precision=o),Ou(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=nv(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=ev(i))&&(r.precision=o-(r.type==="%")*2);break}}return zu(r)}function Mu(t){var e=t.domain;return t.ticks=function(n){var r=e();return M0(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return rv(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],f=r[o],u,l,p=10;for(f<s&&(l=s,s=f,f=l,l=i,i=o,o=l);p-- >0;){if(l=wu(s,f,n),l===u)return r[i]=s,r[o]=f,e(r);if(l>0)s=Math.floor(s/l)*l,f=Math.ceil(f/l)*l;else if(l<0)s=Math.ceil(s*l)/l,f=Math.floor(f*l)/l;else break;u=l}return t},t}function Za(){var t=j0();return t.copy=function(){return Pu(t,Za())},Au.apply(t,arguments),Mu(t)}function Nu(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function iv(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function ov(t){return t<0?-t*t:t*t}function av(t){var e=t(Sn,Sn),n=1;function r(){return n===1?t(Sn,Sn):n===.5?t(iv,ov):t(Nu(n),Nu(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Mu(e)}function Gu(){var t=av(Cu());return t.copy=function(){return Pu(t,Gu()).exponent(t.exponent())},Au.apply(t,arguments),t}const sv=t=>{const e=Gu().exponent(2).range([0,1]).domain([-1,1]),n=G0(0,t).map(i=>-.5+i/t);n.push(.5);const r=new Array(n.length*2);return n.forEach((i,o)=>{r[o*2]=[e(i*2),.5],r[o*2+1]=[e(i*2),-.5]}),r};class fv extends In{initPrograms(){const{reglInstance:e,config:n,store:r}=this;this.drawCurveCommand||(this.drawCurveCommand=e({vert:R0,frag:F0,attributes:{position:{buffer:()=>this.curveLineBuffer,divisor:0},pointA:{buffer:()=>this.pointsBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*4},pointB:{buffer:()=>this.pointsBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*2,stride:Float32Array.BYTES_PER_ELEMENT*4},color:{buffer:()=>this.colorBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*4},width:{buffer:()=>this.widthBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*1},arrow:{buffer:()=>this.arrowBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*1}},uniforms:{positionsTexture:()=>{var i;return(i=this.points)==null?void 0:i.currentPositionFbo},pointGreyoutStatus:()=>{var i;return(i=this.points)==null?void 0:i.greyoutStatusFbo},transformationMatrix:()=>r.transform,pointsTextureSize:()=>r.pointsTextureSize,widthScale:()=>n.linkWidthScale,arrowSizeScale:()=>n.linkArrowsSizeScale,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,linkVisibilityDistanceRange:()=>n.linkVisibilityDistanceRange,linkVisibilityMinTransparency:()=>n.linkVisibilityMinTransparency,linkOpacity:()=>n.linkOpacity,greyoutOpacity:()=>n.linkGreyoutOpacity,scaleLinksOnZoom:()=>n.scaleLinksOnZoom,maxPointSize:()=>r.maxPointSize,curvedWeight:()=>n.curvedLinkWeight,curvedLinkControlPointDistance:()=>n.curvedLinkControlPointDistance,curvedLinkSegments:()=>n.curvedLinks?n.curvedLinkSegments??We.curvedLinkSegments:1},cull:{enable:!0,face:"back"},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},count:()=>{var i;return((i=this.curveLineGeometry)==null?void 0:i.length)??0},instances:()=>this.data.linksNumber??0,primitive:"triangle strip"}))}draw(){var e;this.pointsBuffer&&(this.colorBuffer||this.updateColor(),this.widthBuffer||this.updateWidth(),this.arrowBuffer||this.updateArrow(),this.curveLineGeometry||this.updateCurveLineGeometry(),(e=this.drawCurveCommand)==null||e.call(this))}updatePointsBuffer(){const{reglInstance:e,data:n,store:r}=this;if(n.linksNumber===void 0||n.links===void 0)return;const i=new Float32Array(n.linksNumber*4);for(let o=0;o<n.linksNumber;o++){const s=n.links[o*2],f=n.links[o*2+1],u=s%r.pointsTextureSize,l=Math.floor(s/r.pointsTextureSize),p=f%r.pointsTextureSize,x=Math.floor(f/r.pointsTextureSize),S=o*4;i[S]=u,i[S+1]=l,i[S+2]=p,i[S+3]=x}this.pointsBuffer||(this.pointsBuffer=e.buffer(0)),this.pointsBuffer(i)}updateColor(){const{reglInstance:e,data:n}=this;this.colorBuffer||(this.colorBuffer=e.buffer(0)),this.colorBuffer(n.linkColors??new Float32Array)}updateWidth(){const{reglInstance:e,data:n}=this;this.widthBuffer||(this.widthBuffer=e.buffer(0)),this.widthBuffer(n.linkWidths??new Float32Array)}updateArrow(){const{reglInstance:e,data:n}=this;this.arrowBuffer||(this.arrowBuffer=e.buffer(0)),this.arrowBuffer(n.linkArrows??new Float32Array)}updateCurveLineGeometry(){const{reglInstance:e,config:{curvedLinks:n,curvedLinkSegments:r}}=this;this.curveLineGeometry=sv(n?r??We.curvedLinkSegments:1),this.curveLineBuffer||(this.curveLineBuffer=e.buffer(0)),this.curveLineBuffer(this.curveLineGeometry)}}var uv=`#ifdef GL_ES
|
|
862
|
+
}`;function uo(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function F0(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Su(t){let e,n,r;t.length!==2?(e=uo,n=(f,u)=>uo(t(f),u),r=(f,u)=>t(f)-u):(e=t===uo||t===F0?t:z0,n=t,r=t);function i(f,u,l=0,p=f.length){if(l<p){if(e(u,u)!==0)return p;do{const x=l+p>>>1;n(f[x],u)<0?l=x+1:p=x}while(l<p)}return l}function o(f,u,l=0,p=f.length){if(l<p){if(e(u,u)!==0)return p;do{const x=l+p>>>1;n(f[x],u)<=0?l=x+1:p=x}while(l<p)}return l}function s(f,u,l=0,p=f.length){const x=i(f,u,l,p-1);return x>l&&r(f[x-1],u)>-r(f[x],u)?x-1:x}return{left:i,center:s,right:o}}function z0(){return 0}function R0(t){return t===null?NaN:+t}const O0=Su(uo).right;Su(R0).center;function Tu(t,e){let n,r;for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));return[n,r]}var Xa=Math.sqrt(50),Wa=Math.sqrt(10),ja=Math.sqrt(2);function M0(t,e,n){var r,i=-1,o,s,f;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(f=wu(t,e,n))===0||!isFinite(f))return[];if(f>0){let u=Math.round(t/f),l=Math.round(e/f);for(u*f<t&&++u,l*f>e&&--l,s=new Array(o=l-u+1);++i<o;)s[i]=(u+i)*f}else{f=-f;let u=Math.round(t*f),l=Math.round(e*f);for(u/f<t&&++u,l/f>e&&--l,s=new Array(o=l-u+1);++i<o;)s[i]=(u+i)/f}return r&&s.reverse(),s}function wu(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Xa?10:o>=Wa?5:o>=ja?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Xa?10:o>=Wa?5:o>=ja?2:1)}function N0(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Xa?i*=10:o>=Wa?i*=5:o>=ja&&(i*=2),e<t?-i:i}function G0(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function Au(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function B0(t){return function(){return t}}function U0(t){return+t}var Eu=[0,1];function Sn(t){return t}function qa(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:B0(isNaN(e)?NaN:.5)}function V0(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function $0(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=qa(i,r),o=n(s,o)):(r=qa(r,i),o=n(o,s)),function(f){return o(r(f))}}function H0(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=qa(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(f){var u=O0(t,f,1,r)-1;return o[u](i[u](f))}}function Cu(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Pu(){var t=Eu,e=Eu,n=La,r,i,o,s=Sn,f,u,l;function p(){var S=Math.min(t.length,e.length);return s!==Sn&&(s=V0(t[0],t[S-1])),f=S>2?H0:$0,u=l=null,x}function x(S){return S==null||isNaN(S=+S)?o:(u||(u=f(t.map(r),e,n)))(r(s(S)))}return x.invert=function(S){return s(i((l||(l=f(e,t.map(r),dn)))(S)))},x.domain=function(S){return arguments.length?(t=Array.from(S,U0),p()):t.slice()},x.range=function(S){return arguments.length?(e=Array.from(S),p()):e.slice()},x.rangeRound=function(S){return e=Array.from(S),n=om,p()},x.clamp=function(S){return arguments.length?(s=S?!0:Sn,p()):s!==Sn},x.interpolate=function(S){return arguments.length?(n=S,p()):n},x.unknown=function(S){return arguments.length?(o=S,x):o},function(S,z){return r=S,i=z,p()}}function X0(){return Pu()(Sn,Sn)}function W0(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function lo(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Lr(t){return t=lo(Math.abs(t)),t?t[1]:NaN}function j0(t,e){return function(n,r){for(var i=n.length,o=[],s=0,f=t[0],u=0;i>0&&f>0&&(u+f+1>r&&(f=Math.max(1,r-u)),o.push(n.substring(i-=f,i+f)),!((u+=f+1)>r));)f=t[s=(s+1)%t.length];return o.reverse().join(e)}}function q0(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Y0=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function co(t){if(!(e=Y0.exec(t)))throw new Error("invalid format: "+t);var e;return new Ya({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]})}co.prototype=Ya.prototype;function Ya(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+""}Ya.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 Z0(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var ku;function Q0(t,e){var n=lo(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(ku=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+lo(t,Math.max(0,e+o-1))[0]}function Iu(t,e){var n=lo(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const Lu={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:W0,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)=>Iu(t*100,e),r:Iu,s:Q0,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Du(t){return t}var Fu=Array.prototype.map,zu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function K0(t){var e=t.grouping===void 0||t.thousands===void 0?Du:j0(Fu.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?Du:q0(Fu.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",f=t.minus===void 0?"−":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function l(x){x=co(x);var S=x.fill,z=x.align,q=x.sign,Te=x.symbol,we=x.zero,fe=x.width,Me=x.comma,Ue=x.precision,V=x.trim,se=x.type;se==="n"?(Me=!0,se="g"):Lu[se]||(Ue===void 0&&(Ue=12),V=!0,se="g"),(we||S==="0"&&z==="=")&&(we=!0,S="0",z="=");var Le=Te==="$"?n:Te==="#"&&/[boxX]/.test(se)?"0"+se.toLowerCase():"",Ge=Te==="$"?r:/[%p]/.test(se)?s:"",Xe=Lu[se],nt=/[defgprs%]/.test(se);Ue=Ue===void 0?6:/[gprs]/.test(se)?Math.max(1,Math.min(21,Ue)):Math.max(0,Math.min(20,Ue));function ut(Ee){var lt=Le,ot=Ge,N,Pe,re;if(se==="c")ot=Xe(Ee)+ot,Ee="";else{Ee=+Ee;var ke=Ee<0||1/Ee<0;if(Ee=isNaN(Ee)?u:Xe(Math.abs(Ee),Ue),V&&(Ee=Z0(Ee)),ke&&+Ee==0&&q!=="+"&&(ke=!1),lt=(ke?q==="("?q:f:q==="-"||q==="("?"":q)+lt,ot=(se==="s"?zu[8+ku/3]:"")+ot+(ke&&q==="("?")":""),nt){for(N=-1,Pe=Ee.length;++N<Pe;)if(re=Ee.charCodeAt(N),48>re||re>57){ot=(re===46?i+Ee.slice(N+1):Ee.slice(N))+ot,Ee=Ee.slice(0,N);break}}}Me&&!we&&(Ee=e(Ee,1/0));var je=lt.length+Ee.length+ot.length,We=je<fe?new Array(fe-je+1).join(S):"";switch(Me&&we&&(Ee=e(We+Ee,We.length?fe-ot.length:1/0),We=""),z){case"<":Ee=lt+Ee+ot+We;break;case"=":Ee=lt+We+Ee+ot;break;case"^":Ee=We.slice(0,je=We.length>>1)+lt+Ee+ot+We.slice(je);break;default:Ee=We+lt+Ee+ot;break}return o(Ee)}return ut.toString=function(){return x+""},ut}function p(x,S){var z=l((x=co(x),x.type="f",x)),q=Math.max(-8,Math.min(8,Math.floor(Lr(S)/3)))*3,Te=Math.pow(10,-q),we=zu[8+q/3];return function(fe){return z(Te*fe)+we}}return{format:l,formatPrefix:p}}var ho,Ru,Ou;J0({thousands:",",grouping:[3],currency:["$",""]});function J0(t){return ho=K0(t),Ru=ho.format,Ou=ho.formatPrefix,ho}function ev(t){return Math.max(0,-Lr(Math.abs(t)))}function tv(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Lr(e)/3)))*3-Lr(Math.abs(t)))}function nv(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Lr(e)-Lr(t))+1}function rv(t,e,n,r){var i=N0(t,e,n),o;switch(r=co(r??",f"),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=tv(i,s))&&(r.precision=o),Ou(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=nv(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=ev(i))&&(r.precision=o-(r.type==="%")*2);break}}return Ru(r)}function Mu(t){var e=t.domain;return t.ticks=function(n){var r=e();return M0(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return rv(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],f=r[o],u,l,p=10;for(f<s&&(l=s,s=f,f=l,l=i,i=o,o=l);p-- >0;){if(l=wu(s,f,n),l===u)return r[i]=s,r[o]=f,e(r);if(l>0)s=Math.floor(s/l)*l,f=Math.ceil(f/l)*l;else if(l<0)s=Math.ceil(s*l)/l,f=Math.floor(f*l)/l;else break;u=l}return t},t}function Za(){var t=X0();return t.copy=function(){return Cu(t,Za())},Au.apply(t,arguments),Mu(t)}function Nu(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function iv(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function ov(t){return t<0?-t*t:t*t}function av(t){var e=t(Sn,Sn),n=1;function r(){return n===1?t(Sn,Sn):n===.5?t(iv,ov):t(Nu(n),Nu(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Mu(e)}function Gu(){var t=av(Pu());return t.copy=function(){return Cu(t,Gu()).exponent(t.exponent())},Au.apply(t,arguments),t}const sv=t=>{const e=Gu().exponent(2).range([0,1]).domain([-1,1]),n=G0(0,t).map(i=>-.5+i/t);n.push(.5);const r=new Array(n.length*2);return n.forEach((i,o)=>{r[o*2]=[e(i*2),.5],r[o*2+1]=[e(i*2),-.5]}),r};class fv extends Fn{initPrograms(){const{reglInstance:e,config:n,store:r}=this;this.drawCurveCommand||(this.drawCurveCommand=e({vert:D0,frag:L0,attributes:{position:{buffer:()=>this.curveLineBuffer,divisor:0},pointA:{buffer:()=>this.pointsBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*4},pointB:{buffer:()=>this.pointsBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*2,stride:Float32Array.BYTES_PER_ELEMENT*4},color:{buffer:()=>this.colorBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*4},width:{buffer:()=>this.widthBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*1},arrow:{buffer:()=>this.arrowBuffer,divisor:1,offset:Float32Array.BYTES_PER_ELEMENT*0,stride:Float32Array.BYTES_PER_ELEMENT*1}},uniforms:{positionsTexture:()=>{var i;return(i=this.points)==null?void 0:i.currentPositionFbo},pointGreyoutStatus:()=>{var i;return(i=this.points)==null?void 0:i.greyoutStatusFbo},transformationMatrix:()=>r.transform,pointsTextureSize:()=>r.pointsTextureSize,widthScale:()=>n.linkWidthScale,arrowSizeScale:()=>n.linkArrowsSizeScale,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,linkVisibilityDistanceRange:()=>n.linkVisibilityDistanceRange,linkVisibilityMinTransparency:()=>n.linkVisibilityMinTransparency,linkOpacity:()=>n.linkOpacity,greyoutOpacity:()=>n.linkGreyoutOpacity,scaleLinksOnZoom:()=>n.scaleLinksOnZoom,maxPointSize:()=>r.maxPointSize,curvedWeight:()=>n.curvedLinkWeight,curvedLinkControlPointDistance:()=>n.curvedLinkControlPointDistance,curvedLinkSegments:()=>n.curvedLinks?n.curvedLinkSegments??qe.curvedLinkSegments:1},cull:{enable:!0,face:"back"},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1},count:()=>{var i;return((i=this.curveLineGeometry)==null?void 0:i.length)??0},instances:()=>this.data.linksNumber??0,primitive:"triangle strip"}))}draw(){var e;this.pointsBuffer&&(this.colorBuffer||this.updateColor(),this.widthBuffer||this.updateWidth(),this.arrowBuffer||this.updateArrow(),this.curveLineGeometry||this.updateCurveLineGeometry(),(e=this.drawCurveCommand)==null||e.call(this))}updatePointsBuffer(){const{reglInstance:e,data:n,store:r}=this;if(n.linksNumber===void 0||n.links===void 0)return;const i=new Float32Array(n.linksNumber*4);for(let o=0;o<n.linksNumber;o++){const s=n.links[o*2],f=n.links[o*2+1],u=s%r.pointsTextureSize,l=Math.floor(s/r.pointsTextureSize),p=f%r.pointsTextureSize,x=Math.floor(f/r.pointsTextureSize),S=o*4;i[S]=u,i[S+1]=l,i[S+2]=p,i[S+3]=x}this.pointsBuffer||(this.pointsBuffer=e.buffer(0)),this.pointsBuffer(i)}updateColor(){const{reglInstance:e,data:n}=this;this.colorBuffer||(this.colorBuffer=e.buffer(0)),this.colorBuffer(n.linkColors??new Float32Array)}updateWidth(){const{reglInstance:e,data:n}=this;this.widthBuffer||(this.widthBuffer=e.buffer(0)),this.widthBuffer(n.linkWidths??new Float32Array)}updateArrow(){const{reglInstance:e,data:n}=this;this.arrowBuffer||(this.arrowBuffer=e.buffer(0)),this.arrowBuffer(n.linkArrows??new Float32Array)}updateCurveLineGeometry(){const{reglInstance:e,config:{curvedLinks:n,curvedLinkSegments:r}}=this;this.curveLineGeometry=sv(n?r??qe.curvedLinkSegments:1),this.curveLineBuffer||(this.curveLineBuffer=e.buffer(0)),this.curveLineBuffer(this.curveLineGeometry)}}var uv=`#ifdef GL_ES
|
|
863
863
|
precision highp float;
|
|
864
864
|
#endif
|
|
865
865
|
|
|
866
|
-
|
|
867
|
-
|
|
866
|
+
uniform float greyoutOpacity;
|
|
867
|
+
uniform float pointOpacity;
|
|
868
|
+
uniform sampler2D imageAtlasTexture;
|
|
869
|
+
uniform bool isDarkenGreyout;
|
|
870
|
+
uniform vec4 backgroundColor;
|
|
871
|
+
|
|
868
872
|
varying float pointShape;
|
|
873
|
+
varying float isGreyedOut;
|
|
874
|
+
varying vec4 shapeColor;
|
|
875
|
+
varying vec4 imageAtlasUV;
|
|
876
|
+
varying float shapeSize;
|
|
877
|
+
varying float imageSizeVarying;
|
|
878
|
+
varying float overallSize;
|
|
869
879
|
|
|
870
880
|
const float smoothing = 0.9;
|
|
871
881
|
|
|
@@ -877,11 +887,29 @@ const float PENTAGON = 4.0;
|
|
|
877
887
|
const float HEXAGON = 5.0;
|
|
878
888
|
const float STAR = 6.0;
|
|
879
889
|
const float CROSS = 7.0;
|
|
890
|
+
const float NONE = 8.0;
|
|
880
891
|
|
|
881
892
|
float circleDistance(vec2 p) {
|
|
882
893
|
return dot(p, p);
|
|
883
894
|
}
|
|
884
895
|
|
|
896
|
+
vec4 applyGreyoutToImage(vec4 imageColor) {
|
|
897
|
+
vec3 finalColor = imageColor.rgb;
|
|
898
|
+
float finalAlpha = imageColor.a;
|
|
899
|
+
|
|
900
|
+
if (isGreyedOut > 0.0) {
|
|
901
|
+
float blendFactor = 0.65;
|
|
902
|
+
|
|
903
|
+
if (isDarkenGreyout) {
|
|
904
|
+
finalColor = mix(finalColor, vec3(0.2), blendFactor);
|
|
905
|
+
} else {
|
|
906
|
+
finalColor = mix(finalColor, max(backgroundColor.rgb, vec3(0.8)), blendFactor);
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
return vec4(finalColor, finalAlpha);
|
|
911
|
+
}
|
|
912
|
+
|
|
885
913
|
float squareDistance(vec2 p) {
|
|
886
914
|
vec2 d = abs(p) - vec2(0.8);
|
|
887
915
|
return length(max(d, 0.0)) + min(max(d.x, d.y), 0.0);
|
|
@@ -986,23 +1014,86 @@ float getShapeDistance(vec2 p, float shape) {
|
|
|
986
1014
|
|
|
987
1015
|
void main() {
|
|
988
1016
|
|
|
989
|
-
if (
|
|
1017
|
+
if (shapeColor.a == 0.0 && imageAtlasUV.x == -1.0) {
|
|
1018
|
+
discard;
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
if (pointShape == NONE && imageAtlasUV.x == -1.0) {
|
|
1023
|
+
discard;
|
|
1024
|
+
}
|
|
990
1025
|
|
|
991
1026
|
|
|
992
1027
|
vec2 pointCoord = 2.0 * gl_PointCoord - 1.0;
|
|
1028
|
+
|
|
1029
|
+
vec4 finalShapeColor = vec4(0.0);
|
|
1030
|
+
vec4 finalImageColor = vec4(0.0);
|
|
1031
|
+
|
|
993
1032
|
|
|
994
|
-
|
|
995
|
-
if (pointShape == CIRCLE) {
|
|
1033
|
+
if (pointShape != NONE) {
|
|
996
1034
|
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1035
|
+
vec2 shapeCoord = pointCoord;
|
|
1036
|
+
if (overallSize > shapeSize && shapeSize > 0.0) {
|
|
1037
|
+
|
|
1038
|
+
float scale = shapeSize / overallSize;
|
|
1039
|
+
shapeCoord = pointCoord / scale;
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
float opacity;
|
|
1043
|
+
if (pointShape == CIRCLE) {
|
|
1044
|
+
|
|
1045
|
+
float pointCenterDistance = dot(shapeCoord, shapeCoord);
|
|
1046
|
+
opacity = 1.0 - smoothstep(smoothing, 1.0, pointCenterDistance);
|
|
1047
|
+
} else {
|
|
1048
|
+
|
|
1049
|
+
float shapeDistance = getShapeDistance(shapeCoord, pointShape);
|
|
1050
|
+
opacity = 1.0 - smoothstep(-0.01, 0.01, shapeDistance);
|
|
1051
|
+
}
|
|
1052
|
+
opacity *= shapeColor.a;
|
|
1053
|
+
|
|
1054
|
+
finalShapeColor = vec4(shapeColor.rgb, opacity);
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
|
|
1058
|
+
if (imageAtlasUV.x != -1.0) {
|
|
1000
1059
|
|
|
1001
|
-
|
|
1002
|
-
|
|
1060
|
+
vec2 imageCoord = pointCoord;
|
|
1061
|
+
if (overallSize > imageSizeVarying && imageSizeVarying > 0.0) {
|
|
1062
|
+
|
|
1063
|
+
float scale = imageSizeVarying / overallSize;
|
|
1064
|
+
imageCoord = pointCoord / scale;
|
|
1065
|
+
|
|
1066
|
+
|
|
1067
|
+
if (abs(imageCoord.x) > 1.0 || abs(imageCoord.y) > 1.0) {
|
|
1068
|
+
|
|
1069
|
+
finalImageColor = vec4(0.0);
|
|
1070
|
+
} else {
|
|
1071
|
+
|
|
1072
|
+
vec2 atlasUV = mix(imageAtlasUV.xy, imageAtlasUV.zw, (imageCoord + 1.0) * 0.5);
|
|
1073
|
+
vec4 imageColor = texture2D(imageAtlasTexture, atlasUV);
|
|
1074
|
+
finalImageColor = applyGreyoutToImage(imageColor);
|
|
1075
|
+
}
|
|
1076
|
+
} else {
|
|
1077
|
+
|
|
1078
|
+
|
|
1079
|
+
vec2 atlasUV = mix(imageAtlasUV.xy, imageAtlasUV.zw, (imageCoord + 1.0) * 0.5);
|
|
1080
|
+
vec4 imageColor = texture2D(imageAtlasTexture, atlasUV);
|
|
1081
|
+
finalImageColor = applyGreyoutToImage(imageColor);
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
float finalPointAlpha = max(finalShapeColor.a, finalImageColor.a);
|
|
1086
|
+
if (isGreyedOut > 0.0 && greyoutOpacity != -1.0) {
|
|
1087
|
+
finalPointAlpha *= greyoutOpacity;
|
|
1088
|
+
} else {
|
|
1089
|
+
finalPointAlpha *= pointOpacity;
|
|
1003
1090
|
}
|
|
1004
1091
|
|
|
1005
|
-
|
|
1092
|
+
|
|
1093
|
+
gl_FragColor = vec4(
|
|
1094
|
+
mix(finalShapeColor.rgb, finalImageColor.rgb, finalImageColor.a),
|
|
1095
|
+
finalPointAlpha
|
|
1096
|
+
);
|
|
1006
1097
|
}`,lv=`#ifdef GL_ES
|
|
1007
1098
|
precision highp float;
|
|
1008
1099
|
#endif
|
|
@@ -1011,29 +1102,37 @@ attribute vec2 pointIndices;
|
|
|
1011
1102
|
attribute float size;
|
|
1012
1103
|
attribute vec4 color;
|
|
1013
1104
|
attribute float shape;
|
|
1105
|
+
attribute float imageIndex;
|
|
1106
|
+
attribute float imageSize;
|
|
1014
1107
|
|
|
1015
1108
|
uniform sampler2D positionsTexture;
|
|
1016
1109
|
uniform sampler2D pointGreyoutStatus;
|
|
1110
|
+
uniform sampler2D imageAtlasCoords;
|
|
1017
1111
|
uniform float ratio;
|
|
1018
1112
|
uniform mat3 transformationMatrix;
|
|
1019
1113
|
uniform float pointsTextureSize;
|
|
1020
1114
|
uniform float sizeScale;
|
|
1021
1115
|
uniform float spaceSize;
|
|
1022
1116
|
uniform vec2 screenSize;
|
|
1023
|
-
|
|
1024
|
-
uniform float pointOpacity;
|
|
1117
|
+
|
|
1025
1118
|
uniform vec4 greyoutColor;
|
|
1026
1119
|
uniform vec4 backgroundColor;
|
|
1027
1120
|
uniform bool scalePointsOnZoom;
|
|
1028
1121
|
uniform float maxPointSize;
|
|
1029
|
-
uniform bool
|
|
1122
|
+
uniform bool isDarkenGreyout;
|
|
1030
1123
|
uniform bool skipSelected;
|
|
1031
1124
|
uniform bool skipUnselected;
|
|
1125
|
+
uniform bool hasImages;
|
|
1126
|
+
uniform float imageCount;
|
|
1127
|
+
uniform float imageAtlasCoordsTextureSize;
|
|
1032
1128
|
|
|
1033
|
-
varying vec2 textureCoords;
|
|
1034
|
-
varying vec3 rgbColor;
|
|
1035
|
-
varying float alpha;
|
|
1036
1129
|
varying float pointShape;
|
|
1130
|
+
varying float isGreyedOut;
|
|
1131
|
+
varying vec4 shapeColor;
|
|
1132
|
+
varying vec4 imageAtlasUV;
|
|
1133
|
+
varying float shapeSize;
|
|
1134
|
+
varying float imageSizeVarying;
|
|
1135
|
+
varying float overallSize;
|
|
1037
1136
|
|
|
1038
1137
|
float calculatePointSize(float size) {
|
|
1039
1138
|
float pSize;
|
|
@@ -1046,11 +1145,10 @@ float calculatePointSize(float size) {
|
|
|
1046
1145
|
return min(pSize, maxPointSize * ratio);
|
|
1047
1146
|
}
|
|
1048
1147
|
|
|
1049
|
-
void main() {
|
|
1050
|
-
textureCoords = pointIndices;
|
|
1148
|
+
void main() {
|
|
1051
1149
|
|
|
1052
|
-
|
|
1053
|
-
|
|
1150
|
+
vec4 greyoutStatus = texture2D(pointGreyoutStatus, (pointIndices + 0.5) / pointsTextureSize);
|
|
1151
|
+
isGreyedOut = greyoutStatus.r;
|
|
1054
1152
|
bool isSelected = greyoutStatus.r == 0.0;
|
|
1055
1153
|
|
|
1056
1154
|
|
|
@@ -1066,7 +1164,7 @@ void main() {
|
|
|
1066
1164
|
}
|
|
1067
1165
|
|
|
1068
1166
|
|
|
1069
|
-
vec4 pointPosition = texture2D(positionsTexture, (
|
|
1167
|
+
vec4 pointPosition = texture2D(positionsTexture, (pointIndices + 0.5) / pointsTextureSize);
|
|
1070
1168
|
vec2 point = pointPosition.rg;
|
|
1071
1169
|
|
|
1072
1170
|
|
|
@@ -1075,34 +1173,53 @@ void main() {
|
|
|
1075
1173
|
vec3 finalPosition = transformationMatrix * vec3(normalizedPosition, 1);
|
|
1076
1174
|
gl_Position = vec4(finalPosition.rg, 0, 1);
|
|
1077
1175
|
|
|
1078
|
-
|
|
1176
|
+
|
|
1177
|
+
float shapeSizeValue = calculatePointSize(size * sizeScale);
|
|
1178
|
+
float imageSizeValue = calculatePointSize(imageSize * sizeScale);
|
|
1179
|
+
|
|
1180
|
+
|
|
1181
|
+
float overallSizeValue = max(shapeSizeValue, imageSizeValue);
|
|
1182
|
+
gl_PointSize = overallSizeValue;
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
shapeSize = shapeSizeValue;
|
|
1186
|
+
imageSizeVarying = imageSizeValue;
|
|
1187
|
+
overallSize = overallSizeValue;
|
|
1079
1188
|
|
|
1080
|
-
|
|
1081
|
-
alpha = color.a * pointOpacity;
|
|
1189
|
+
shapeColor = color;
|
|
1082
1190
|
pointShape = shape;
|
|
1083
1191
|
|
|
1084
1192
|
|
|
1085
|
-
if (
|
|
1193
|
+
if (isGreyedOut > 0.0) {
|
|
1086
1194
|
if (greyoutColor[0] != -1.0) {
|
|
1087
|
-
|
|
1088
|
-
alpha = greyoutColor.a;
|
|
1195
|
+
shapeColor = greyoutColor;
|
|
1089
1196
|
} else {
|
|
1090
1197
|
|
|
1091
1198
|
float blendFactor = 0.65;
|
|
1092
1199
|
|
|
1093
|
-
if (
|
|
1200
|
+
if (isDarkenGreyout) {
|
|
1094
1201
|
|
|
1095
|
-
|
|
1202
|
+
shapeColor.rgb = mix(shapeColor.rgb, vec3(0.2), blendFactor);
|
|
1096
1203
|
} else {
|
|
1097
1204
|
|
|
1098
|
-
|
|
1205
|
+
shapeColor.rgb = mix(shapeColor.rgb, max(backgroundColor.rgb, vec3(0.8)), blendFactor);
|
|
1099
1206
|
}
|
|
1100
1207
|
}
|
|
1208
|
+
}
|
|
1101
1209
|
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1210
|
+
if (!hasImages || imageIndex < 0.0 || imageIndex >= imageCount) {
|
|
1211
|
+
imageAtlasUV = vec4(-1.0);
|
|
1212
|
+
return;
|
|
1105
1213
|
}
|
|
1214
|
+
|
|
1215
|
+
float atlasCoordIndex = imageIndex;
|
|
1216
|
+
|
|
1217
|
+
float texX = mod(atlasCoordIndex, imageAtlasCoordsTextureSize);
|
|
1218
|
+
float texY = floor(atlasCoordIndex / imageAtlasCoordsTextureSize);
|
|
1219
|
+
|
|
1220
|
+
vec2 atlasCoordTexCoord = (vec2(texX, texY) + 0.5) / imageAtlasCoordsTextureSize;
|
|
1221
|
+
vec4 atlasCoords = texture2D(imageAtlasCoords, atlasCoordTexCoord);
|
|
1222
|
+
imageAtlasUV = atlasCoords;
|
|
1106
1223
|
}`,cv=`#ifdef GL_ES
|
|
1107
1224
|
precision highp float;
|
|
1108
1225
|
#endif
|
|
@@ -1114,7 +1231,8 @@ uniform float spaceSize;
|
|
|
1114
1231
|
uniform vec2 screenSize;
|
|
1115
1232
|
uniform float ratio;
|
|
1116
1233
|
uniform mat3 transformationMatrix;
|
|
1117
|
-
uniform vec2
|
|
1234
|
+
uniform vec2 selection0;
|
|
1235
|
+
uniform vec2 selection1;
|
|
1118
1236
|
uniform bool scalePointsOnZoom;
|
|
1119
1237
|
uniform float maxPointSize;
|
|
1120
1238
|
|
|
@@ -1139,10 +1257,10 @@ void main() {
|
|
|
1139
1257
|
vec4 pSize = texture2D(pointSize, textureCoords);
|
|
1140
1258
|
float size = pSize.r * sizeScale;
|
|
1141
1259
|
|
|
1142
|
-
float left = 2.0 * (
|
|
1143
|
-
float right = 2.0 * (
|
|
1144
|
-
float top = 2.0 * (
|
|
1145
|
-
float bottom = 2.0 * (
|
|
1260
|
+
float left = 2.0 * (selection0.x - 0.5 * pointSizeF(size)) / screenSize.x - 1.0;
|
|
1261
|
+
float right = 2.0 * (selection1.x + 0.5 * pointSizeF(size)) / screenSize.x - 1.0;
|
|
1262
|
+
float top = 2.0 * (selection0.y - 0.5 * pointSizeF(size)) / screenSize.y - 1.0;
|
|
1263
|
+
float bottom = 2.0 * (selection1.y + 0.5 * pointSizeF(size)) / screenSize.y - 1.0;
|
|
1146
1264
|
|
|
1147
1265
|
gl_FragColor = vec4(0.0, 0.0, pointPosition.rg);
|
|
1148
1266
|
if (final.x >= left && final.x <= right && final.y >= top && final.y <= bottom) {
|
|
@@ -1243,7 +1361,7 @@ uniform float maxPointSize;
|
|
|
1243
1361
|
uniform vec4 color;
|
|
1244
1362
|
uniform float universalPointOpacity;
|
|
1245
1363
|
uniform float greyoutOpacity;
|
|
1246
|
-
uniform bool
|
|
1364
|
+
uniform bool isDarkenGreyout;
|
|
1247
1365
|
uniform vec4 backgroundColor;
|
|
1248
1366
|
uniform vec4 greyoutColor;
|
|
1249
1367
|
varying vec2 vertexPosition;
|
|
@@ -1279,7 +1397,7 @@ void main () {
|
|
|
1279
1397
|
|
|
1280
1398
|
float blendFactor = 0.65;
|
|
1281
1399
|
|
|
1282
|
-
if (
|
|
1400
|
+
if (isDarkenGreyout) {
|
|
1283
1401
|
|
|
1284
1402
|
rgbColor = mix(rgbColor, vec3(0.2), blendFactor);
|
|
1285
1403
|
} else {
|
|
@@ -1469,7 +1587,7 @@ void main() {
|
|
|
1469
1587
|
}
|
|
1470
1588
|
|
|
1471
1589
|
gl_FragColor = pointPosition;
|
|
1472
|
-
}`;class Sv extends In{constructor(){super(...arguments),this.polygonPathLength=0}updatePositions(){const{reglInstance:e,store:n,data:r,config:{rescalePositions:i,enableSimulation:o}}=this,{pointsTextureSize:s}=n;if(!s||!r.pointPositions||r.pointsNumber===void 0)return;const f=new Float32Array(s*s*4);let u=i;i===void 0&&!o&&(u=!0),this.dontRescale&&(u=!1),u?this.rescaleInitialNodePositions():this.dontRescale||(this.scaleX=void 0,this.scaleY=void 0),this.dontRescale=void 0;for(let l=0;l<r.pointsNumber;++l)f[l*4+0]=r.pointPositions[l*2+0],f[l*4+1]=r.pointPositions[l*2+1],f[l*4+2]=l;this.currentPositionFbo||(this.currentPositionFbo=e.framebuffer()),this.currentPositionFbo({color:e.texture({data:f,shape:[s,s,4],type:"float"}),depth:!1,stencil:!1}),this.previousPositionFbo||(this.previousPositionFbo=e.framebuffer()),this.previousPositionFbo({color:e.texture({data:f,shape:[s,s,4],type:"float"}),depth:!1,stencil:!1}),this.config.enableSimulation&&(this.velocityFbo||(this.velocityFbo=e.framebuffer()),this.velocityFbo({color:e.texture({data:new Float32Array(s*s*4).fill(0),shape:[s,s,4],type:"float"}),depth:!1,stencil:!1})),this.selectedTexture||(this.selectedTexture=e.texture()),this.selectedTexture({data:f,shape:[s,s,4],type:"float"}),this.selectedFbo||(this.selectedFbo=e.framebuffer()),this.selectedFbo({color:this.selectedTexture,depth:!1,stencil:!1}),this.hoveredFbo||(this.hoveredFbo=e.framebuffer()),this.hoveredFbo({shape:[2,2],colorType:"float",depth:!1,stencil:!1}),this.drawPointIndices||(this.drawPointIndices=e.buffer(0)),this.drawPointIndices(or(n.pointsTextureSize)),this.hoveredPointIndices||(this.hoveredPointIndices=e.buffer(0)),this.hoveredPointIndices(or(n.pointsTextureSize)),this.sampledPointIndices||(this.sampledPointIndices=e.buffer(0)),this.sampledPointIndices(or(n.pointsTextureSize)),this.updateGreyoutStatus(),this.updateSampledPointsGrid(),this.trackPointsByIndices()}initPrograms(){const{reglInstance:e,config:n,store:r,data:i}=this;n.enableSimulation&&(this.updatePositionCommand||(this.updatePositionCommand=e({frag:xv,vert:kt,framebuffer:()=>this.currentPositionFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.previousPositionFbo,velocity:()=>this.velocityFbo,friction:()=>n.simulationFriction,spaceSize:()=>r.adjustedSpaceSize}}))),this.dragPointCommand||(this.dragPointCommand=e({frag:_v,vert:kt,framebuffer:()=>this.currentPositionFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.previousPositionFbo,mousePos:()=>r.mousePosition,index:()=>{var o;return((o=r.hoveredPoint)==null?void 0:o.index)??-1}}})),this.drawCommand||(this.drawCommand=e({frag:uv,vert:lv,primitive:"points",count:()=>i.pointsNumber??0,attributes:{pointIndices:{buffer:this.drawPointIndices,size:2},size:{buffer:()=>this.sizeBuffer,size:1},color:{buffer:()=>this.colorBuffer,size:4},shape:{buffer:()=>this.shapeBuffer,size:1}},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointGreyoutStatus:()=>this.greyoutStatusFbo,ratio:()=>n.pixelRatio,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,pointOpacity:()=>n.pointOpacity,greyoutOpacity:()=>n.pointGreyoutOpacity??-1,greyoutColor:()=>r.greyoutPointColor,backgroundColor:()=>r.backgroundColor,darkenGreyout:()=>r.darkenGreyout,scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize,skipSelected:e.prop("skipSelected"),skipUnselected:e.prop("skipUnselected")},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1}})),this.findPointsOnAreaSelectionCommand||(this.findPointsOnAreaSelectionCommand=e({frag:cv,vert:kt,framebuffer:()=>this.selectedFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointSize:()=>this.sizeFbo,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,sizeScale:()=>n.pointSizeScale,transformationMatrix:()=>r.transform,ratio:()=>n.pixelRatio,"selection[0]":()=>r.selectedArea[0],"selection[1]":()=>r.selectedArea[1],scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize}})),this.findPointsOnPolygonSelectionCommand||(this.findPointsOnPolygonSelectionCommand=e({frag:hv,vert:kt,framebuffer:()=>this.selectedFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,transformationMatrix:()=>r.transform,polygonPathTexture:()=>this.polygonPathTexture,polygonPathLength:()=>this.polygonPathLength}})),this.clearHoveredFboCommand||(this.clearHoveredFboCommand=e({frag:ar,vert:kt,framebuffer:this.hoveredFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.findHoveredPointCommand||(this.findHoveredPointCommand=e({frag:pv,vert:vv,primitive:"points",count:()=>i.pointsNumber??0,framebuffer:()=>this.hoveredFbo,attributes:{pointIndices:{buffer:this.hoveredPointIndices,size:2},size:{buffer:()=>this.sizeBuffer,size:1}},uniforms:{positionsTexture:()=>this.currentPositionFbo,ratio:()=>n.pixelRatio,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,scalePointsOnZoom:()=>n.scalePointsOnZoom,mousePosition:()=>r.screenMousePosition,maxPointSize:()=>r.maxPointSize},depth:{enable:!1,mask:!1}})),this.clearSampledPointsFboCommand||(this.clearSampledPointsFboCommand=e({frag:ar,vert:kt,framebuffer:()=>this.sampledPointsFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.fillSampledPointsFboCommand||(this.fillSampledPointsFboCommand=e({frag:gv,vert:yv,primitive:"points",count:()=>i.pointsNumber??0,framebuffer:()=>this.sampledPointsFbo,attributes:{pointIndices:{buffer:this.sampledPointIndices,size:2}},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize},depth:{enable:!1,mask:!1}})),this.drawHighlightedCommand||(this.drawHighlightedCommand=e({frag:dv,vert:mv,attributes:{vertexCoord:wt(e)},primitive:"triangle strip",count:4,uniforms:{color:e.prop("color"),width:e.prop("width"),pointIndex:e.prop("pointIndex"),size:e.prop("size"),positionsTexture:()=>this.currentPositionFbo,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize,pointGreyoutStatusTexture:()=>this.greyoutStatusFbo,universalPointOpacity:()=>n.pointOpacity,greyoutOpacity:()=>n.pointGreyoutOpacity??-1,darkenGreyout:()=>r.darkenGreyout,backgroundColor:()=>r.backgroundColor,greyoutColor:()=>r.greyoutPointColor},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1}})),this.trackPointsCommand||(this.trackPointsCommand=e({frag:bv,vert:kt,framebuffer:()=>this.trackedPositionsFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,trackedIndices:()=>this.trackedIndicesFbo,pointsTextureSize:()=>r.pointsTextureSize}}))}updateColor(){const{reglInstance:e,store:{pointsTextureSize:n},data:r}=this;n&&(this.colorBuffer||(this.colorBuffer=e.buffer(0)),this.colorBuffer(r.pointColors))}updateGreyoutStatus(){const{reglInstance:e,store:{selectedIndices:n,pointsTextureSize:r}}=this;if(!r)return;const i=new Float32Array(r*r*4).fill(n?1:0);if(n)for(const o of n)i[o*4]=0;this.greyoutStatusTexture||(this.greyoutStatusTexture=e.texture()),this.greyoutStatusTexture({data:i,width:r,height:r,type:"float"}),this.greyoutStatusFbo||(this.greyoutStatusFbo=e.framebuffer()),this.greyoutStatusFbo({color:this.greyoutStatusTexture,depth:!1,stencil:!1})}updateSize(){const{reglInstance:e,store:{pointsTextureSize:n},data:r}=this;if(!n||r.pointsNumber===void 0||r.pointSizes===void 0)return;this.sizeBuffer||(this.sizeBuffer=e.buffer(0)),this.sizeBuffer(r.pointSizes);const i=new Float32Array(n*n*4);for(let o=0;o<r.pointsNumber;o++)i[o*4]=r.pointSizes[o];this.sizeTexture||(this.sizeTexture=e.texture()),this.sizeTexture({data:i,width:n,height:n,type:"float"}),this.sizeFbo||(this.sizeFbo=e.framebuffer()),this.sizeFbo({color:this.sizeTexture,depth:!1,stencil:!1})}updateShape(){const{reglInstance:e,data:n}=this;n.pointsNumber===void 0||n.pointShapes===void 0||(this.shapeBuffer||(this.shapeBuffer=e.buffer(0)),this.shapeBuffer(n.pointShapes))}updateSampledPointsGrid(){const{store:{screenSize:e},config:{pointSamplingDistance:n},reglInstance:r}=this;let i=n??Math.min(...e)/2;i===0&&(i=We.pointSamplingDistance);const o=Math.ceil(e[0]/i),s=Math.ceil(e[1]/i);this.sampledPointsFbo||(this.sampledPointsFbo=r.framebuffer()),this.sampledPointsFbo({shape:[o,s],depth:!1,stencil:!1,colorType:"float"})}trackPoints(){var e,n;(e=this.trackedIndices)!=null&&e.length&&((n=this.trackPointsCommand)==null||n.call(this))}draw(){var o,s,f,u,l,p,x;const{config:{renderHoveredPointRing:e,pointSize:n},store:r,data:i}=this;this.colorBuffer||this.updateColor(),this.sizeBuffer||this.updateSize(),this.shapeBuffer||this.updateShape(),r.selectedIndices&&r.selectedIndices.length>0?((o=this.drawCommand)==null||o.call(this,{skipSelected:!0,skipUnselected:!1}),(s=this.drawCommand)==null||s.call(this,{skipSelected:!1,skipUnselected:!0})):(f=this.drawCommand)==null||f.call(this,{skipSelected:!1,skipUnselected:!1}),e&&r.hoveredPoint&&((l=this.drawHighlightedCommand)==null||l.call(this,{width:.85,color:r.hoveredPointRingColor,pointIndex:r.hoveredPoint.index,size:((u=i.pointSizes)==null?void 0:u[r.hoveredPoint.index])??n})),r.focusedPoint&&((x=this.drawHighlightedCommand)==null||x.call(this,{width:.75,color:r.focusedPointRingColor,pointIndex:r.focusedPoint.index,size:((p=i.pointSizes)==null?void 0:p[r.focusedPoint.index])??n}))}updatePosition(){var e;(e=this.updatePositionCommand)==null||e.call(this),this.swapFbo()}drag(){var e;(e=this.dragPointCommand)==null||e.call(this),this.swapFbo()}findPointsOnAreaSelection(){var e;(e=this.findPointsOnAreaSelectionCommand)==null||e.call(this)}findPointsOnPolygonSelection(){var e;(e=this.findPointsOnPolygonSelectionCommand)==null||e.call(this)}updatePolygonPath(e){const{reglInstance:n}=this;if(this.polygonPathLength=e.length,e.length===0){this.polygonPathTexture=void 0,this.polygonPathFbo=void 0;return}const r=Math.ceil(Math.sqrt(e.length)),i=new Float32Array(r*r*4);for(const[o,s]of e.entries()){const[f,u]=s;i[o*4]=f,i[o*4+1]=u,i[o*4+2]=0,i[o*4+3]=0}this.polygonPathTexture||(this.polygonPathTexture=n.texture()),this.polygonPathTexture({data:i,width:r,height:r,type:"float"}),this.polygonPathFbo||(this.polygonPathFbo=n.framebuffer()),this.polygonPathFbo({color:this.polygonPathTexture,depth:!1,stencil:!1})}findHoveredPoint(){var e,n;(e=this.clearHoveredFboCommand)==null||e.call(this),(n=this.findHoveredPointCommand)==null||n.call(this)}trackPointsByIndices(e){const{store:{pointsTextureSize:n},reglInstance:r}=this;if(this.trackedIndices=e,!(e!=null&&e.length))return;const i=Math.ceil(Math.sqrt(e.length)),o=new Float32Array(i*i*4).fill(-1);for(const[s,f]of e.entries())f!==void 0&&(o[s*4]=f%n,o[s*4+1]=Math.floor(f/n),o[s*4+2]=0,o[s*4+3]=0);this.trackedIndicesTexture||(this.trackedIndicesTexture=r.texture()),this.trackedIndicesTexture({data:o,width:i,height:i,type:"float"}),this.trackedIndicesFbo||(this.trackedIndicesFbo=r.framebuffer()),this.trackedIndicesFbo({color:this.trackedIndicesTexture,depth:!1,stencil:!1}),this.trackedPositionsFbo||(this.trackedPositionsFbo=r.framebuffer()),this.trackedPositionsFbo({shape:[i,i],depth:!1,stencil:!1,colorType:"float"}),this.trackPoints()}getTrackedPositionsMap(){const e=new Map;if(!this.trackedIndices)return e;const n=tn(this.reglInstance,this.trackedPositionsFbo);for(let r=0;r<n.length/4;r+=1){const i=n[r*4],o=n[r*4+1],s=this.trackedIndices[r];i!==void 0&&o!==void 0&&s!==void 0&&e.set(s,[i,o])}return e}getSampledPointPositionsMap(){var r,i;const e=new Map;if(!this.sampledPointsFbo)return e;(r=this.clearSampledPointsFboCommand)==null||r.call(this),(i=this.fillSampledPointsFboCommand)==null||i.call(this);const n=tn(this.reglInstance,this.sampledPointsFbo);for(let o=0;o<n.length/4;o++){const s=n[o*4],f=!!n[o*4+1],u=n[o*4+2],l=n[o*4+3];f&&s!==void 0&&u!==void 0&&l!==void 0&&e.set(s,[u,l])}return e}getSampledPoints(){var i,o;const e=[],n=[];if(!this.sampledPointsFbo)return{indices:e,positions:n};(i=this.clearSampledPointsFboCommand)==null||i.call(this),(o=this.fillSampledPointsFboCommand)==null||o.call(this);const r=tn(this.reglInstance,this.sampledPointsFbo);for(let s=0;s<r.length/4;s++){const f=r[s*4],u=!!r[s*4+1],l=r[s*4+2],p=r[s*4+3];u&&f!==void 0&&l!==void 0&&p!==void 0&&(e.push(f),n.push(l,p))}return{indices:e,positions:n}}getTrackedPositionsArray(){const e=[];if(!this.trackedIndices)return e;e.length=this.trackedIndices.length*2;const n=tn(this.reglInstance,this.trackedPositionsFbo);for(let r=0;r<n.length/4;r+=1){const i=n[r*4],o=n[r*4+1],s=this.trackedIndices[r];i!==void 0&&o!==void 0&&s!==void 0&&(e[r*2]=i,e[r*2+1]=o)}return e}swapFbo(){const e=this.previousPositionFbo;this.previousPositionFbo=this.currentPositionFbo,this.currentPositionFbo=e}rescaleInitialNodePositions(){const{config:{spaceSize:e}}=this;if(!this.data.pointPositions||!e)return;const n=this.data.pointPositions,r=n.length/2;let i=1/0,o=-1/0,s=1/0,f=-1/0;for(let Te=0;Te<n.length;Te+=2){const se=n[Te],Ue=n[Te+1];i=Math.min(i,se),o=Math.max(o,se),s=Math.min(s,Ue),f=Math.max(f,Ue)}const u=o-i,l=f-s,p=Math.max(u,l);if(p>e){this.scaleX=void 0,this.scaleY=void 0;return}const x=e*e*.001,D=(r>x?e*Math.max(1.2,Math.sqrt(r)/e):e*.1)/p,Y=(p-u)/2*D,Ee=(p-l)/2*D;this.scaleX=Te=>(Te-i)*D+Y,this.scaleY=Te=>(Te-s)*D+Ee;for(let Te=0;Te<r;Te++)this.data.pointPositions[Te*2]=this.scaleX(n[Te*2]),this.data.pointPositions[Te*2+1]=this.scaleY(n[Te*2+1])}}var Bu=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});function Tv(){var t=new Bu(9);return Bu!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function Uu(t,e,n){var r=e[0],i=e[1],o=e[2],s=e[3],f=e[4],u=e[5],l=e[6],p=e[7],x=e[8],S=n[0],D=n[1];return t[0]=r,t[1]=i,t[2]=o,t[3]=s,t[4]=f,t[5]=u,t[6]=S*r+D*s+l,t[7]=S*i+D*f+p,t[8]=S*o+D*u+x,t}function Qa(t,e,n){var r=n[0],i=n[1];return t[0]=r*e[0],t[1]=r*e[1],t[2]=r*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function wv(t,e,n){return t[0]=2/e,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/n,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t}var mo={exports:{}},Av=mo.exports,Vu;function Ev(){return Vu||(Vu=1,function(t){(function(e,n,r){function i(u){var l=this,p=f();l.next=function(){var x=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=x-(l.c=x|0)},l.c=1,l.s0=p(" "),l.s1=p(" "),l.s2=p(" "),l.s0-=p(u),l.s0<0&&(l.s0+=1),l.s1-=p(u),l.s1<0&&(l.s1+=1),l.s2-=p(u),l.s2<0&&(l.s2+=1),p=null}function o(u,l){return l.c=u.c,l.s0=u.s0,l.s1=u.s1,l.s2=u.s2,l}function s(u,l){var p=new i(u),x=l&&l.state,S=p.next;return S.int32=function(){return p.next()*4294967296|0},S.double=function(){return S()+(S()*2097152|0)*11102230246251565e-32},S.quick=S,x&&(typeof x=="object"&&o(x,p),S.state=function(){return o(p,{})}),S}function f(){var u=4022871197,l=function(p){p=String(p);for(var x=0;x<p.length;x++){u+=p.charCodeAt(x);var S=.02519603282416938*u;u=S>>>0,S-=u,S*=u,u=S>>>0,S-=u,u+=S*4294967296}return(u>>>0)*23283064365386963e-26};return l}n&&n.exports?n.exports=s:this.alea=s})(Av,t)}(mo)),mo.exports}var po={exports:{}},Pv=po.exports,$u;function Cv(){return $u||($u=1,function(t){(function(e,n,r){function i(f){var u=this,l="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var x=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^x^x>>>8},f===(f|0)?u.x=f:l+=f;for(var p=0;p<l.length+64;p++)u.x^=l.charCodeAt(p)|0,u.next()}function o(f,u){return u.x=f.x,u.y=f.y,u.z=f.z,u.w=f.w,u}function s(f,u){var l=new i(f),p=u&&u.state,x=function(){return(l.next()>>>0)/4294967296};return x.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Y=(S+D)/(1<<21);while(Y===0);return Y},x.int32=l.next,x.quick=x,p&&(typeof p=="object"&&o(p,l),x.state=function(){return o(l,{})}),x}n&&n.exports?n.exports=s:this.xor128=s})(Pv,t)}(po)),po.exports}var vo={exports:{}},kv=vo.exports,Hu;function Lv(){return Hu||(Hu=1,function(t){(function(e,n,r){function i(f){var u=this,l="";u.next=function(){var x=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(x^x<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,f===(f|0)?u.x=f:l+=f;for(var p=0;p<l.length+64;p++)u.x^=l.charCodeAt(p)|0,p==l.length&&(u.d=u.x<<10^u.x>>>4),u.next()}function o(f,u){return u.x=f.x,u.y=f.y,u.z=f.z,u.w=f.w,u.v=f.v,u.d=f.d,u}function s(f,u){var l=new i(f),p=u&&u.state,x=function(){return(l.next()>>>0)/4294967296};return x.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Y=(S+D)/(1<<21);while(Y===0);return Y},x.int32=l.next,x.quick=x,p&&(typeof p=="object"&&o(p,l),x.state=function(){return o(l,{})}),x}n&&n.exports?n.exports=s:this.xorwow=s})(kv,t)}(vo)),vo.exports}var go={exports:{}},Fv=go.exports,ju;function Rv(){return ju||(ju=1,function(t){(function(e,n,r){function i(f){var u=this;u.next=function(){var p=u.x,x=u.i,S,D;return S=p[x],S^=S>>>7,D=S^S<<24,S=p[x+1&7],D^=S^S>>>10,S=p[x+3&7],D^=S^S>>>3,S=p[x+4&7],D^=S^S<<7,S=p[x+7&7],S=S^S<<13,D^=S^S<<9,p[x]=D,u.i=x+1&7,D};function l(p,x){var S,D=[];if(x===(x|0))D[0]=x;else for(x=""+x,S=0;S<x.length;++S)D[S&7]=D[S&7]<<15^x.charCodeAt(S)+D[S+1&7]<<13;for(;D.length<8;)D.push(0);for(S=0;S<8&&D[S]===0;++S);for(S==8?D[7]=-1:D[S],p.x=D,p.i=0,S=256;S>0;--S)p.next()}l(u,f)}function o(f,u){return u.x=f.x.slice(),u.i=f.i,u}function s(f,u){f==null&&(f=+new Date);var l=new i(f),p=u&&u.state,x=function(){return(l.next()>>>0)/4294967296};return x.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Y=(S+D)/(1<<21);while(Y===0);return Y},x.int32=l.next,x.quick=x,p&&(p.x&&o(p,l),x.state=function(){return o(l,{})}),x}n&&n.exports?n.exports=s:this.xorshift7=s})(Fv,t)}(go)),go.exports}var yo={exports:{}},Iv=yo.exports,Xu;function Dv(){return Xu||(Xu=1,function(t){(function(e,n,r){function i(f){var u=this;u.next=function(){var p=u.w,x=u.X,S=u.i,D,Y;return u.w=p=p+1640531527|0,Y=x[S+34&127],D=x[S=S+1&127],Y^=Y<<13,D^=D<<17,Y^=Y>>>15,D^=D>>>12,Y=x[S]=Y^D,u.i=S,Y+(p^p>>>16)|0};function l(p,x){var S,D,Y,Ee,Te,se=[],Ue=128;for(x===(x|0)?(D=x,x=null):(x=x+"\0",D=0,Ue=Math.max(Ue,x.length)),Y=0,Ee=-32;Ee<Ue;++Ee)x&&(D^=x.charCodeAt((Ee+32)%x.length)),Ee===0&&(Te=D),D^=D<<10,D^=D>>>15,D^=D<<4,D^=D>>>13,Ee>=0&&(Te=Te+1640531527|0,S=se[Ee&127]^=D+Te,Y=S==0?Y+1:0);for(Y>=128&&(se[(x&&x.length||0)&127]=-1),Y=127,Ee=4*128;Ee>0;--Ee)D=se[Y+34&127],S=se[Y=Y+1&127],D^=D<<13,S^=S<<17,D^=D>>>15,S^=S>>>12,se[Y]=D^S;p.w=Te,p.X=se,p.i=Y}l(u,f)}function o(f,u){return u.i=f.i,u.w=f.w,u.X=f.X.slice(),u}function s(f,u){f==null&&(f=+new Date);var l=new i(f),p=u&&u.state,x=function(){return(l.next()>>>0)/4294967296};return x.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Y=(S+D)/(1<<21);while(Y===0);return Y},x.int32=l.next,x.quick=x,p&&(p.X&&o(p,l),x.state=function(){return o(l,{})}),x}n&&n.exports?n.exports=s:this.xor4096=s})(Iv,t)}(yo)),yo.exports}var xo={exports:{}},zv=xo.exports,Wu;function Ov(){return Wu||(Wu=1,function(t){(function(e,n,r){function i(f){var u=this,l="";u.next=function(){var x=u.b,S=u.c,D=u.d,Y=u.a;return x=x<<25^x>>>7^S,S=S-D|0,D=D<<24^D>>>8^Y,Y=Y-x|0,u.b=x=x<<20^x>>>12^S,u.c=S=S-D|0,u.d=D<<16^S>>>16^Y,u.a=Y-x|0},u.a=0,u.b=0,u.c=-1640531527,u.d=1367130551,f===Math.floor(f)?(u.a=f/4294967296|0,u.b=f|0):l+=f;for(var p=0;p<l.length+20;p++)u.b^=l.charCodeAt(p)|0,u.next()}function o(f,u){return u.a=f.a,u.b=f.b,u.c=f.c,u.d=f.d,u}function s(f,u){var l=new i(f),p=u&&u.state,x=function(){return(l.next()>>>0)/4294967296};return x.double=function(){do var S=l.next()>>>11,D=(l.next()>>>0)/4294967296,Y=(S+D)/(1<<21);while(Y===0);return Y},x.int32=l.next,x.quick=x,p&&(typeof p=="object"&&o(p,l),x.state=function(){return o(l,{})}),x}n&&n.exports?n.exports=s:this.tychei=s})(zv,t)}(xo)),xo.exports}var bo={exports:{}};const Mv=bp(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));var Nv=bo.exports,qu;function Gv(){return qu||(qu=1,function(t){(function(e,n,r){var i=256,o=6,s=52,f="random",u=r.pow(i,o),l=r.pow(2,s),p=l*2,x=i-1,S;function D(H,fe,Re){var Ge=[];fe=fe==!0?{entropy:!0}:fe||{};var Ye=se(Te(fe.entropy?[H,He(n)]:H??Ue(),3),Ge),at=new Y(Ge),ut=function(){for(var Ae=at.g(o),lt=u,it=0;Ae<l;)Ae=(Ae+it)*i,lt*=i,it=at.g(1);for(;Ae>=p;)Ae/=2,lt/=2,it>>>=1;return(Ae+it)/lt};return ut.int32=function(){return at.g(4)|0},ut.quick=function(){return at.g(4)/4294967296},ut.double=ut,se(He(at.S),n),(fe.pass||Re||function(Ae,lt,it,N){return N&&(N.S&&Ee(N,at),Ae.state=function(){return Ee(at,{})}),it?(r[f]=Ae,lt):Ae})(ut,Ye,"global"in fe?fe.global:this==r,fe.state)}function Y(H){var fe,Re=H.length,Ge=this,Ye=0,at=Ge.i=Ge.j=0,ut=Ge.S=[];for(Re||(H=[Re++]);Ye<i;)ut[Ye]=Ye++;for(Ye=0;Ye<i;Ye++)ut[Ye]=ut[at=x&at+H[Ye%Re]+(fe=ut[Ye])],ut[at]=fe;(Ge.g=function(Ae){for(var lt,it=0,N=Ge.i,Ce=Ge.j,re=Ge.S;Ae--;)lt=re[N=x&N+1],it=it*i+re[x&(re[N]=re[Ce=x&Ce+lt])+(re[Ce]=lt)];return Ge.i=N,Ge.j=Ce,it})(i)}function Ee(H,fe){return fe.i=H.i,fe.j=H.j,fe.S=H.S.slice(),fe}function Te(H,fe){var Re=[],Ge=typeof H,Ye;if(fe&&Ge=="object")for(Ye in H)try{Re.push(Te(H[Ye],fe-1))}catch{}return Re.length?Re:Ge=="string"?H:H+"\0"}function se(H,fe){for(var Re=H+"",Ge,Ye=0;Ye<Re.length;)fe[x&Ye]=x&(Ge^=fe[x&Ye]*19)+Re.charCodeAt(Ye++);return He(fe)}function Ue(){try{var H;return S&&(H=S.randomBytes)?H=H(i):(H=new Uint8Array(i),(e.crypto||e.msCrypto).getRandomValues(H)),He(H)}catch{var fe=e.navigator,Re=fe&&fe.plugins;return[+new Date,e,Re,e.screen,He(n)]}}function He(H){return String.fromCharCode.apply(0,H)}if(se(r.random(),n),t.exports){t.exports=D;try{S=Mv}catch{}}else r["seed"+f]=D})(typeof self<"u"?self:Nv,[],Math)}(bo)),bo.exports}var Ka,Yu;function Bv(){if(Yu)return Ka;Yu=1;var t=Ev(),e=Cv(),n=Lv(),r=Rv(),i=Dv(),o=Ov(),s=Gv();return s.alea=t,s.xor128=e,s.xorwow=n,s.xorshift7=r,s.xor4096=i,s.tychei=o,Ka=s,Ka}var Uv=Bv();const Vv=Da(Uv);function $v(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,jv(r.key),r)}}function Ja(t,e,n){return e&&$v(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function Zu(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,es(t,e)}function es(t,e){return es=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},es(t,e)}function Hv(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}function jv(t){var e=Hv(t,"string");return typeof e=="symbol"?e:String(e)}var _o=function(){function t(){}var e=t.prototype;return e._seed=function(r,i){if(r===(r||0))return r;for(var o=""+r,s=0,f=0;f<o.length;++f)s^=o.charCodeAt(f)|0;return s},t}(),Qu=function(t){Zu(e,t);function e(r,i){var o;return o=t.call(this)||this,o._rng=void 0,o.seed(r,i),o}var n=e.prototype;return n.next=function(){return this._rng()},n.seed=function(i,o){this._rng=i},n.clone=function(i,o){return new e(this._rng,o)},Ja(e,[{key:"name",get:function(){return"function"}}]),e}(_o),Ku=function(){var t=[].slice.call(arguments),e=t,n=e[0],r=n===void 0?"default":n;switch(typeof r){case"object":if(r instanceof _o)return r;break;case"function":return new Qu(r);case"number":case"string":default:return new Qu(Vv.apply(void 0,t))}throw new Error('invalid RNG "'+r+'"')},Xv=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),function(){return t.next()*(n-e)+e}};function pn(t){return new Wv(t)}var Wv=function(e){var n=this;this.n=void 0,this.isInt=function(){if(Number.isInteger(n.n))return n;throw new Error("Expected number to be an integer, got "+n.n)},this.isPositive=function(){if(n.n>0)return n;throw new Error("Expected number to be positive, got "+n.n)},this.lessThan=function(r){if(n.n<r)return n;throw new Error("Expected number to be less than "+r+", got "+n.n)},this.greaterThanOrEqual=function(r){if(n.n>=r)return n;throw new Error("Expected number to be greater than or equal to "+r+", got "+n.n)},this.greaterThan=function(r){if(n.n>r)return n;throw new Error("Expected number to be greater than "+r+", got "+n.n)},this.n=e},qv=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),n===void 0&&(n=e===void 0?1:e,e=0),pn(e).isInt(),pn(n).isInt(),function(){return Math.floor(t.next()*(n-e+1)+e)}},Yv=function(t){return function(){return t.next()>=.5}},Zv=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),function(){var r,i,o;do r=t.next()*2-1,i=t.next()*2-1,o=r*r+i*i;while(!o||o>1);return e+n*i*Math.sqrt(-2*Math.log(o)/o)}},Qv=function(t,e,n){e===void 0&&(e=0),n===void 0&&(n=1);var r=t.normal(e,n);return function(){return Math.exp(r())}},Kv=function(t,e){return e===void 0&&(e=.5),pn(e).greaterThanOrEqual(0).lessThan(1),function(){return Math.floor(t.next()+e)}},Jv=function(t,e,n){return e===void 0&&(e=1),n===void 0&&(n=.5),pn(e).isInt().isPositive(),pn(n).greaterThanOrEqual(0).lessThan(1),function(){for(var r=0,i=0;r++<e;)t.next()<n&&i++;return i}},eg=function(t,e){e===void 0&&(e=.5),pn(e).greaterThan(0).lessThan(1);var n=1/Math.log(1-e);return function(){return Math.floor(1+Math.log(t.next())*n)}},tg=[0,0,.6931471805599453,1.791759469228055,3.1780538303479458,4.787491742782046,6.579251212010101,8.525161361065415,10.60460290274525,12.801827480081469],ng=function(e){return tg[e]},rg=.9189385332046727,ig=function(t,e){if(e===void 0&&(e=1),pn(e).isPositive(),e<10){var n=Math.exp(-e);return function(){for(var u=n,l=0,p=t.next();p>u;)p=p-u,u=e*u/++l;return l}}else{var r=Math.sqrt(e),i=.931+2.53*r,o=-.059+.02483*i,s=1.1239+1.1328/(i-3.4),f=.9277-3.6224/(i-2);return function(){for(;;){var u=void 0,l=t.next();if(l<=.86*f)return u=l/f-.43,Math.floor((2*o/(.5-Math.abs(u))+i)*u+e+.445);l>=f?u=t.next()-.5:(u=l/f-.93,u=(u<0?-.5:.5)-u,l=t.next()*f);var p=.5-Math.abs(u);if(!(p<.013&&l>p)){var x=Math.floor((2*o/p+i)*u+e+.445);if(l=l*s/(o/(p*p)+i),x>=10){var S=(x+.5)*Math.log(e/x)-e-rg+x-(.08333333333333333-(.002777777777777778-1/(1260*x*x))/(x*x))/x;if(Math.log(l*r)<=S)return x}else if(x>=0){var D,Y=(D=ng(x))!=null?D:0;if(Math.log(l)<=x*Math.log(e)-e-Y)return x}}}}}},og=function(t,e){return e===void 0&&(e=1),pn(e).isPositive(),function(){return-Math.log(1-t.next())/e}},ag=function(t,e){return e===void 0&&(e=1),pn(e).isInt().greaterThanOrEqual(0),function(){for(var n=0,r=0;r<e;++r)n+=t.next();return n}},sg=function(t,e){e===void 0&&(e=1),pn(e).isInt().isPositive();var n=t.irwinHall(e);return function(){return n()/e}},fg=function(t,e){e===void 0&&(e=1),pn(e).greaterThanOrEqual(0);var n=1/e;return function(){return 1/Math.pow(1-t.next(),n)}},ug=function(t){Zu(e,t);function e(){return t.apply(this,arguments)||this}var n=e.prototype;return n.next=function(){return Math.random()},n.seed=function(i,o){},n.clone=function(){return new e},Ja(e,[{key:"name",get:function(){return"default"}}]),e}(_o),Ju=function(){function t(n){var r=this;this._rng=void 0,this._patch=void 0,this._cache={},this.next=function(){return r._rng.next()},this.float=function(i,o){return r.uniform(i,o)()},this.int=function(i,o){return r.uniformInt(i,o)()},this.integer=function(i,o){return r.uniformInt(i,o)()},this.bool=function(){return r.uniformBoolean()()},this.boolean=function(){return r.uniformBoolean()()},this.uniform=function(i,o){return r._memoize("uniform",Xv,i,o)},this.uniformInt=function(i,o){return r._memoize("uniformInt",qv,i,o)},this.uniformBoolean=function(){return r._memoize("uniformBoolean",Yv)},this.normal=function(i,o){return Zv(r,i,o)},this.logNormal=function(i,o){return Qv(r,i,o)},this.bernoulli=function(i){return Kv(r,i)},this.binomial=function(i,o){return Jv(r,i,o)},this.geometric=function(i){return eg(r,i)},this.poisson=function(i){return ig(r,i)},this.exponential=function(i){return og(r,i)},this.irwinHall=function(i){return ag(r,i)},this.bates=function(i){return sg(r,i)},this.pareto=function(i){return fg(r,i)},n&&n instanceof _o?this.use(n):this.use(new ug),this._cache={}}var e=t.prototype;return e.clone=function(){var r=[].slice.call(arguments);return r.length?new t(Ku.apply(void 0,r)):new t(this.rng.clone())},e.use=function(){this._rng=Ku.apply(void 0,[].slice.call(arguments))},e.patch=function(){if(this._patch)throw new Error("Math.random already patched");this._patch=Math.random,Math.random=this.uniform()},e.unpatch=function(){this._patch&&(Math.random=this._patch,delete this._patch)},e.choice=function(r){if(!Array.isArray(r))throw new Error("Random.choice expected input to be an array, got "+typeof r);var i=r==null?void 0:r.length;if(i>0){var o=this.uniformInt(0,i-1)();return r[o]}else return},e._memoize=function(r,i){var o=[].slice.call(arguments,2),s=""+o.join(";"),f=this._cache[r];return(f===void 0||f.key!==s)&&(f={key:s,distribution:i.apply(void 0,[this].concat(o))},this._cache[r]=f),f.distribution},Ja(t,[{key:"rng",get:function(){return this._rng}}]),t}();new Ju;const ts=.001,ns=64;class lg{constructor(){this.pointsTextureSize=0,this.linksTextureSize=0,this.alpha=1,this.transform=Tv(),this.screenSize=[0,0],this.mousePosition=[0,0],this.screenMousePosition=[0,0],this.selectedArea=[[0,0],[0,0]],this.isSimulationRunning=!1,this.simulationProgress=0,this.selectedIndices=null,this.maxPointSize=ns,this.hoveredPoint=void 0,this.focusedPoint=void 0,this.draggingPointIndex=void 0,this.adjustedSpaceSize=We.spaceSize,this.isSpaceKeyPressed=!1,this.hoveredPointRingColor=[1,1,1,zp],this.focusedPointRingColor=[1,1,1,Op],this.greyoutPointColor=[-1,-1,-1,-1],this.darkenGreyout=!1,this.alphaTarget=0,this.scalePointX=Za(),this.scalePointY=Za(),this.random=new Ju,this._backgroundColor=[0,0,0,0],this.alphaDecay=e=>1-Math.pow(ts,1/e)}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){this._backgroundColor=e;const n=du(e[0],e[1],e[2]);document.documentElement.style.setProperty("--cosmosgl-attribution-color",n>.65?"black":"white"),document.documentElement.style.setProperty("--cosmosgl-error-message-color",n>.65?"black":"white"),this.div&&(this.div.style.backgroundColor=`rgba(${e[0]*255}, ${e[1]*255}, ${e[2]*255}, ${e[3]})`),this.darkenGreyout=n<.65}addRandomSeed(e){this.random=this.random.clone(e)}getRandomFloat(e,n){return this.random.float(e,n)}adjustSpaceSize(e,n){e>=n?(this.adjustedSpaceSize=n/2,console.warn(`The \`spaceSize\` has been reduced to ${this.adjustedSpaceSize} due to WebGL limits`)):this.adjustedSpaceSize=e}updateScreenSize(e,n){const{adjustedSpaceSize:r}=this;this.screenSize=[e,n],this.scalePointX.domain([0,r]).range([(e-r)/2,(e+r)/2]),this.scalePointY.domain([r,0]).range([(n-r)/2,(n+r)/2])}scaleX(e){return this.scalePointX(e)}scaleY(e){return this.scalePointY(e)}setHoveredPointRingColor(e){const n=Vn(e);this.hoveredPointRingColor[0]=n[0],this.hoveredPointRingColor[1]=n[1],this.hoveredPointRingColor[2]=n[2]}setFocusedPointRingColor(e){const n=Vn(e);this.focusedPointRingColor[0]=n[0],this.focusedPointRingColor[1]=n[1],this.focusedPointRingColor[2]=n[2]}setGreyoutPointColor(e){if(e===void 0){this.greyoutPointColor=[-1,-1,-1,-1];return}const n=Vn(e);this.greyoutPointColor[0]=n[0],this.greyoutPointColor[1]=n[1],this.greyoutPointColor[2]=n[2],this.greyoutPointColor[3]=n[3]}setFocusedPoint(e){e!==void 0?this.focusedPoint={index:e}:this.focusedPoint=void 0}addAlpha(e){return(this.alphaTarget-this.alpha)*this.alphaDecay(e)}}const cg={passive:!1},pi={capture:!0,passive:!1};function rs(t){t.stopImmediatePropagation()}function Rr(t){t.preventDefault(),t.stopImmediatePropagation()}function el(t){var e=t.document.documentElement,n=zt(t).on("dragstart.drag",Rr,pi);"onselectstart"in e?n.on("selectstart.drag",Rr,pi):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function tl(t,e){var n=t.document.documentElement,r=zt(t).on("dragstart.drag",null);e&&(r.on("click.drag",Rr,pi),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const So=t=>()=>t;function is(t,{sourceEvent:e,subject:n,target:r,identifier:i,active:o,x:s,y:f,dx:u,dy:l,dispatch:p}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:f,enumerable:!0,configurable:!0},dx:{value:u,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:p}})}is.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function hg(t){return!t.ctrlKey&&!t.button}function dg(){return this.parentNode}function mg(t,e){return e??{x:t.x,y:t.y}}function pg(){return navigator.maxTouchPoints||"ontouchstart"in this}function vg(){var t=hg,e=dg,n=mg,r=pg,i={},o=Vi("start","drag","end"),s=0,f,u,l,p,x=0;function S(H){H.on("mousedown.drag",D).filter(r).on("touchstart.drag",Te).on("touchmove.drag",se,cg).on("touchend.drag touchcancel.drag",Ue).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function D(H,fe){if(!(p||!t.call(this,H,fe))){var Re=He(this,e.call(this,H,fe),H,fe,"mouse");Re&&(zt(H.view).on("mousemove.drag",Y,pi).on("mouseup.drag",Ee,pi),el(H.view),rs(H),l=!1,f=H.clientX,u=H.clientY,Re("start",H))}}function Y(H){if(Rr(H),!l){var fe=H.clientX-f,Re=H.clientY-u;l=fe*fe+Re*Re>x}i.mouse("drag",H)}function Ee(H){zt(H.view).on("mousemove.drag mouseup.drag",null),tl(H.view,l),Rr(H),i.mouse("end",H)}function Te(H,fe){if(t.call(this,H,fe)){var Re=H.changedTouches,Ge=e.call(this,H,fe),Ye=Re.length,at,ut;for(at=0;at<Ye;++at)(ut=He(this,Ge,H,fe,Re[at].identifier,Re[at]))&&(rs(H),ut("start",H,Re[at]))}}function se(H){var fe=H.changedTouches,Re=fe.length,Ge,Ye;for(Ge=0;Ge<Re;++Ge)(Ye=i[fe[Ge].identifier])&&(Rr(H),Ye("drag",H,fe[Ge]))}function Ue(H){var fe=H.changedTouches,Re=fe.length,Ge,Ye;for(p&&clearTimeout(p),p=setTimeout(function(){p=null},500),Ge=0;Ge<Re;++Ge)(Ye=i[fe[Ge].identifier])&&(rs(H),Ye("end",H,fe[Ge]))}function He(H,fe,Re,Ge,Ye,at){var ut=o.copy(),Ae=kn(at||Re,fe),lt,it,N;if((N=n.call(H,new is("beforestart",{sourceEvent:Re,target:S,identifier:Ye,active:s,x:Ae[0],y:Ae[1],dx:0,dy:0,dispatch:ut}),Ge))!=null)return lt=N.x-Ae[0]||0,it=N.y-Ae[1]||0,function Ce(re,ke,Xe){var je=Ae,Qe;switch(re){case"start":i[Ye]=Ce,Qe=s++;break;case"end":delete i[Ye],--s;case"drag":Ae=kn(Xe||ke,fe),Qe=s;break}ut.call(re,H,new is(re,{sourceEvent:ke,subject:N,target:S,identifier:Ye,active:Qe,x:Ae[0]+lt,y:Ae[1]+it,dx:Ae[0]-je[0],dy:Ae[1]-je[1],dispatch:ut}),Ge)}}return S.filter=function(H){return arguments.length?(t=typeof H=="function"?H:So(!!H),S):t},S.container=function(H){return arguments.length?(e=typeof H=="function"?H:So(H),S):e},S.subject=function(H){return arguments.length?(n=typeof H=="function"?H:So(H),S):n},S.touchable=function(H){return arguments.length?(r=typeof H=="function"?H:So(!!H),S):r},S.on=function(){var H=o.on.apply(o,arguments);return H===o?S:H},S.clickDistance=function(H){return arguments.length?(x=(H=+H)*H,S):Math.sqrt(x)},S}const To=t=>()=>t;function gg(t,{sourceEvent:e,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Dn(t,e,n){this.k=t,this.x=e,this.y=n}Dn.prototype={constructor:Dn,scale:function(t){return t===1?this:new Dn(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new Dn(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 vi=new Dn(1,0,0);Dn.prototype;function os(t){t.stopImmediatePropagation()}function gi(t){t.preventDefault(),t.stopImmediatePropagation()}function yg(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function xg(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function nl(){return this.__zoom||vi}function bg(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function _g(){return navigator.maxTouchPoints||"ontouchstart"in this}function Sg(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],o=t.invertY(e[0][1])-n[0][1],s=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function Tg(){var t=yg,e=xg,n=Sg,r=bg,i=_g,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],f=250,u=dm,l=Vi("start","zoom","end"),p,x,S,D=500,Y=150,Ee=0,Te=10;function se(N){N.property("__zoom",nl).on("wheel.zoom",Ye,{passive:!1}).on("mousedown.zoom",at).on("dblclick.zoom",ut).filter(i).on("touchstart.zoom",Ae).on("touchmove.zoom",lt).on("touchend.zoom touchcancel.zoom",it).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}se.transform=function(N,Ce,re,ke){var Xe=N.selection?N.selection():N;Xe.property("__zoom",nl),N!==Xe?fe(N,Ce,re,ke):Xe.interrupt().each(function(){Re(this,arguments).event(ke).start().zoom(null,typeof Ce=="function"?Ce.apply(this,arguments):Ce).end()})},se.scaleBy=function(N,Ce,re,ke){se.scaleTo(N,function(){var Xe=this.__zoom.k,je=typeof Ce=="function"?Ce.apply(this,arguments):Ce;return Xe*je},re,ke)},se.scaleTo=function(N,Ce,re,ke){se.transform(N,function(){var Xe=e.apply(this,arguments),je=this.__zoom,Qe=re==null?H(Xe):typeof re=="function"?re.apply(this,arguments):re,Ze=je.invert(Qe),dt=typeof Ce=="function"?Ce.apply(this,arguments):Ce;return n(He(Ue(je,dt),Qe,Ze),Xe,s)},re,ke)},se.translateBy=function(N,Ce,re,ke){se.transform(N,function(){return n(this.__zoom.translate(typeof Ce=="function"?Ce.apply(this,arguments):Ce,typeof re=="function"?re.apply(this,arguments):re),e.apply(this,arguments),s)},null,ke)},se.translateTo=function(N,Ce,re,ke,Xe){se.transform(N,function(){var je=e.apply(this,arguments),Qe=this.__zoom,Ze=ke==null?H(je):typeof ke=="function"?ke.apply(this,arguments):ke;return n(vi.translate(Ze[0],Ze[1]).scale(Qe.k).translate(typeof Ce=="function"?-Ce.apply(this,arguments):-Ce,typeof re=="function"?-re.apply(this,arguments):-re),je,s)},ke,Xe)};function Ue(N,Ce){return Ce=Math.max(o[0],Math.min(o[1],Ce)),Ce===N.k?N:new Dn(Ce,N.x,N.y)}function He(N,Ce,re){var ke=Ce[0]-re[0]*N.k,Xe=Ce[1]-re[1]*N.k;return ke===N.x&&Xe===N.y?N:new Dn(N.k,ke,Xe)}function H(N){return[(+N[0][0]+ +N[1][0])/2,(+N[0][1]+ +N[1][1])/2]}function fe(N,Ce,re,ke){N.on("start.zoom",function(){Re(this,arguments).event(ke).start()}).on("interrupt.zoom end.zoom",function(){Re(this,arguments).event(ke).end()}).tween("zoom",function(){var Xe=this,je=arguments,Qe=Re(Xe,je).event(ke),Ze=e.apply(Xe,je),dt=re==null?H(Ze):typeof re=="function"?re.apply(Xe,je):re,ct=Math.max(Ze[1][0]-Ze[0][0],Ze[1][1]-Ze[0][1]),_t=Xe.__zoom,st=typeof Ce=="function"?Ce.apply(Xe,je):Ce,$t=u(_t.invert(dt).concat(ct/_t.k),st.invert(dt).concat(ct/st.k));return function(Ht){if(Ht===1)Ht=st;else{var Qt=$t(Ht),zn=ct/Qt[2];Ht=new Dn(zn,dt[0]-Qt[0]*zn,dt[1]-Qt[1]*zn)}Qe.zoom(null,Ht)}})}function Re(N,Ce,re){return!re&&N.__zooming||new Ge(N,Ce)}function Ge(N,Ce){this.that=N,this.args=Ce,this.active=0,this.sourceEvent=null,this.extent=e.apply(N,Ce),this.taps=0}Ge.prototype={event:function(N){return N&&(this.sourceEvent=N),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(N,Ce){return this.mouse&&N!=="mouse"&&(this.mouse[1]=Ce.invert(this.mouse[0])),this.touch0&&N!=="touch"&&(this.touch0[1]=Ce.invert(this.touch0[0])),this.touch1&&N!=="touch"&&(this.touch1[1]=Ce.invert(this.touch1[0])),this.that.__zoom=Ce,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(N){var Ce=zt(this.that).datum();l.call(N,this.that,new gg(N,{sourceEvent:this.sourceEvent,target:se,transform:this.that.__zoom,dispatch:l}),Ce)}};function Ye(N,...Ce){if(!t.apply(this,arguments))return;var re=Re(this,Ce).event(N),ke=this.__zoom,Xe=Math.max(o[0],Math.min(o[1],ke.k*Math.pow(2,r.apply(this,arguments)))),je=kn(N);if(re.wheel)(re.mouse[0][0]!==je[0]||re.mouse[0][1]!==je[1])&&(re.mouse[1]=ke.invert(re.mouse[0]=je)),clearTimeout(re.wheel);else{if(ke.k===Xe)return;re.mouse=[je,ke.invert(je)],Qi(this),re.start()}gi(N),re.wheel=setTimeout(Qe,Y),re.zoom("mouse",n(He(Ue(ke,Xe),re.mouse[0],re.mouse[1]),re.extent,s));function Qe(){re.wheel=null,re.end()}}function at(N,...Ce){if(S||!t.apply(this,arguments))return;var re=N.currentTarget,ke=Re(this,Ce,!0).event(N),Xe=zt(N.view).on("mousemove.zoom",dt,!0).on("mouseup.zoom",ct,!0),je=kn(N,re),Qe=N.clientX,Ze=N.clientY;el(N.view),os(N),ke.mouse=[je,this.__zoom.invert(je)],Qi(this),ke.start();function dt(_t){if(gi(_t),!ke.moved){var st=_t.clientX-Qe,$t=_t.clientY-Ze;ke.moved=st*st+$t*$t>Ee}ke.event(_t).zoom("mouse",n(He(ke.that.__zoom,ke.mouse[0]=kn(_t,re),ke.mouse[1]),ke.extent,s))}function ct(_t){Xe.on("mousemove.zoom mouseup.zoom",null),tl(_t.view,ke.moved),gi(_t),ke.event(_t).end()}}function ut(N,...Ce){if(t.apply(this,arguments)){var re=this.__zoom,ke=kn(N.changedTouches?N.changedTouches[0]:N,this),Xe=re.invert(ke),je=re.k*(N.shiftKey?.5:2),Qe=n(He(Ue(re,je),ke,Xe),e.apply(this,Ce),s);gi(N),f>0?zt(this).transition().duration(f).call(fe,Qe,ke,N):zt(this).call(se.transform,Qe,ke,N)}}function Ae(N,...Ce){if(t.apply(this,arguments)){var re=N.touches,ke=re.length,Xe=Re(this,Ce,N.changedTouches.length===ke).event(N),je,Qe,Ze,dt;for(os(N),Qe=0;Qe<ke;++Qe)Ze=re[Qe],dt=kn(Ze,this),dt=[dt,this.__zoom.invert(dt),Ze.identifier],Xe.touch0?!Xe.touch1&&Xe.touch0[2]!==dt[2]&&(Xe.touch1=dt,Xe.taps=0):(Xe.touch0=dt,je=!0,Xe.taps=1+!!p);p&&(p=clearTimeout(p)),je&&(Xe.taps<2&&(x=dt[0],p=setTimeout(function(){p=null},D)),Qi(this),Xe.start())}}function lt(N,...Ce){if(this.__zooming){var re=Re(this,Ce).event(N),ke=N.changedTouches,Xe=ke.length,je,Qe,Ze,dt;for(gi(N),je=0;je<Xe;++je)Qe=ke[je],Ze=kn(Qe,this),re.touch0&&re.touch0[2]===Qe.identifier?re.touch0[0]=Ze:re.touch1&&re.touch1[2]===Qe.identifier&&(re.touch1[0]=Ze);if(Qe=re.that.__zoom,re.touch1){var ct=re.touch0[0],_t=re.touch0[1],st=re.touch1[0],$t=re.touch1[1],Ht=(Ht=st[0]-ct[0])*Ht+(Ht=st[1]-ct[1])*Ht,Qt=(Qt=$t[0]-_t[0])*Qt+(Qt=$t[1]-_t[1])*Qt;Qe=Ue(Qe,Math.sqrt(Ht/Qt)),Ze=[(ct[0]+st[0])/2,(ct[1]+st[1])/2],dt=[(_t[0]+$t[0])/2,(_t[1]+$t[1])/2]}else if(re.touch0)Ze=re.touch0[0],dt=re.touch0[1];else return;re.zoom("touch",n(He(Qe,Ze,dt),re.extent,s))}}function it(N,...Ce){if(this.__zooming){var re=Re(this,Ce).event(N),ke=N.changedTouches,Xe=ke.length,je,Qe;for(os(N),S&&clearTimeout(S),S=setTimeout(function(){S=null},D),je=0;je<Xe;++je)Qe=ke[je],re.touch0&&re.touch0[2]===Qe.identifier?delete re.touch0:re.touch1&&re.touch1[2]===Qe.identifier&&delete re.touch1;if(re.touch1&&!re.touch0&&(re.touch0=re.touch1,delete re.touch1),re.touch0)re.touch0[1]=this.__zoom.invert(re.touch0[0]);else if(re.end(),re.taps===2&&(Qe=kn(Qe,this),Math.hypot(x[0]-Qe[0],x[1]-Qe[1])<Te)){var Ze=zt(this).on("dblclick.zoom");Ze&&Ze.apply(this,arguments)}}}return se.wheelDelta=function(N){return arguments.length?(r=typeof N=="function"?N:To(+N),se):r},se.filter=function(N){return arguments.length?(t=typeof N=="function"?N:To(!!N),se):t},se.touchable=function(N){return arguments.length?(i=typeof N=="function"?N:To(!!N),se):i},se.extent=function(N){return arguments.length?(e=typeof N=="function"?N:To([[+N[0][0],+N[0][1]],[+N[1][0],+N[1][1]]]),se):e},se.scaleExtent=function(N){return arguments.length?(o[0]=+N[0],o[1]=+N[1],se):[o[0],o[1]]},se.translateExtent=function(N){return arguments.length?(s[0][0]=+N[0][0],s[1][0]=+N[1][0],s[0][1]=+N[0][1],s[1][1]=+N[1][1],se):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},se.constrain=function(N){return arguments.length?(n=N,se):n},se.duration=function(N){return arguments.length?(f=+N,se):f},se.interpolate=function(N){return arguments.length?(u=N,se):u},se.on=function(){var N=l.on.apply(l,arguments);return N===l?se:N},se.clickDistance=function(N){return arguments.length?(Ee=(N=+N)*N,se):Math.sqrt(Ee)},se.tapDistance=function(N){return arguments.length?(Te=+N,se):Te},se}class wg{constructor(e,n){this.eventTransform=vi,this.behavior=Tg().scaleExtent([.001,1/0]).on("start",r=>{var o,s;this.isRunning=!0;const i=!!r.sourceEvent;(s=(o=this.config)==null?void 0:o.onZoomStart)==null||s.call(o,r,i)}).on("zoom",r=>{var S,D;this.eventTransform=r.transform;const{eventTransform:{x:i,y:o,k:s},store:{transform:f,screenSize:u}}=this,l=u[0],p=u[1];if(!l||!p)return;wv(f,l,p),Uu(f,f,[i,o]),Qa(f,f,[s,s]),Uu(f,f,[l/2,p/2]),Qa(f,f,[l/2,p/2]),Qa(f,f,[1,-1]);const x=!!r.sourceEvent;(D=(S=this.config)==null?void 0:S.onZoom)==null||D.call(S,r,x)}).on("end",r=>{var o,s;this.isRunning=!1;const i=!!r.sourceEvent;(s=(o=this.config)==null?void 0:o.onZoomEnd)==null||s.call(o,r,i)}),this.isRunning=!1,this.store=e,this.config=n}getTransform(e,n,r=.1){if(e.length===0)return this.eventTransform;const{store:{screenSize:i}}=this,o=i[0],s=i[1],f=Tu(e.map(se=>se[0])),u=Tu(e.map(se=>se[1]));f[0]=this.store.scaleX(f[0]),f[1]=this.store.scaleX(f[1]),u[0]=this.store.scaleY(u[0]),u[1]=this.store.scaleY(u[1]),f[0]===f[1]&&(f[0]-=.5,f[1]+=.5),u[0]===u[1]&&(u[0]+=.5,u[1]-=.5);const l=o*(1-r*2)/(f[1]-f[0]),p=s*(1-r*2)/(u[0]-u[1]),x=mu(n??Math.min(l,p),...this.behavior.scaleExtent()),S=(f[1]+f[0])/2,D=(u[1]+u[0])/2,Y=o/2-S*x,Ee=s/2-D*x;return vi.translate(Y,Ee).scale(x)}getDistanceToPoint(e){const{x:n,y:r,k:i}=this.eventTransform,o=this.getTransform([e],i),s=n-o.x,f=r-o.y;return Math.sqrt(s*s+f*f)}getMiddlePointTransform(e){const{store:{screenSize:n},eventTransform:{x:r,y:i,k:o}}=this,s=n[0],f=n[1],u=(s/2-r)/o,l=(f/2-i)/o,p=this.store.scaleX(e[0]),x=this.store.scaleY(e[1]),S=(u+p)/2,D=(l+x)/2,Y=1,Ee=s/2-S*Y,Te=f/2-D*Y;return vi.translate(Ee,Te).scale(Y)}convertScreenToSpacePosition(e){const{eventTransform:{x:n,y:r,k:i},store:{screenSize:o}}=this,s=o[0],f=o[1],u=(e[0]-n)/i,l=(e[1]-r)/i,p=[u,f-l];return p[0]-=(s-this.store.adjustedSpaceSize)/2,p[1]-=(f-this.store.adjustedSpaceSize)/2,p}convertSpaceToScreenPosition(e){const n=this.eventTransform.applyX(this.store.scaleX(e[0])),r=this.eventTransform.applyY(this.store.scaleY(e[1]));return[n,r]}convertSpaceToScreenRadius(e){const{config:{scalePointsOnZoom:n},store:{maxPointSize:r},eventTransform:{k:i}}=this;let o=e*2;return n?o*=i:o*=Math.min(5,Math.max(1,i*.01)),Math.min(o,r)/2}}class Ag{constructor(e,n){this.isActive=!1,this.behavior=vg().subject(r=>this.store.hoveredPoint&&!this.store.isSpaceKeyPressed?{x:r.x,y:r.y}:void 0).on("start",r=>{var i,o;this.store.hoveredPoint&&(this.store.draggingPointIndex=this.store.hoveredPoint.index,this.isActive=!0,(o=(i=this.config)==null?void 0:i.onDragStart)==null||o.call(i,r))}).on("drag",r=>{var i,o;(o=(i=this.config)==null?void 0:i.onDrag)==null||o.call(i,r)}).on("end",r=>{var i,o;this.isActive=!1,this.store.draggingPointIndex=void 0,(o=(i=this.config)==null?void 0:i.onDragEnd)==null||o.call(i,r)}),this.store=e,this.config=n}}function Eg(t){const e=document.createElement("div");return e.style.cssText=`
|
|
1590
|
+
}`;function Sv(t,e=16384){if(!(t!=null&&t.length))return null;let n=0;for(const l of t){const p=Math.max(l.width,l.height);p>n&&(n=p)}if(n===0)return console.warn("Invalid image dimensions: all images have zero width or height"),null;const r=n,i=Math.ceil(Math.sqrt(t.length));let o=i*n,s=1;o>e&&(s=e/o,n=Math.max(1,Math.floor(n*s)),o=Math.max(1,Math.floor(o*s)),console.warn(`🖼️ Atlas scaling required: Original size ${(r*i).toLocaleString()}px exceeds WebGL limit ${e.toLocaleString()}px. Scaling down to ${o.toLocaleString()}px (${Math.round(s*100)}% of original quality)`));const f=new Uint8Array(o*o*4).fill(0),u=new Float32Array(i*i*4).fill(-1);for(const[l,p]of t.entries()){const x=p.width,S=p.height;if(x===0||S===0)continue;const z=Math.min(1,n/Math.max(x,S)),q=Math.floor(x*z),Te=Math.floor(S*z),we=Math.floor(l/i),Me=l%i*n,Ue=we*n;u[l*4]=Me/o,u[l*4+1]=Ue/o,u[l*4+2]=(Me+q)/o,u[l*4+3]=(Ue+Te)/o;for(let V=0;V<Te;V++)for(let se=0;se<q;se++){const Le=Math.floor(se*(x/q)),Xe=(Math.floor(V*(S/Te))*x+Le)*4,nt=((Ue+V)*o+(Me+se))*4;f[nt]=p.data[Xe]??0,f[nt+1]=p.data[Xe+1]??0,f[nt+2]=p.data[Xe+2]??0,f[nt+3]=p.data[Xe+3]??255}}return{atlasData:f,atlasSize:o,atlasCoords:u,atlasCoordsSize:i}}class Tv extends Fn{constructor(){super(...arguments),this.imageCount=0,this.isPositionsUpToDate=!1,this.polygonPathLength=0}updatePositions(){const{reglInstance:e,store:n,data:r,config:{rescalePositions:i,enableSimulation:o}}=this,{pointsTextureSize:s}=n;if(!s||!r.pointPositions||r.pointsNumber===void 0)return;const f=new Float32Array(s*s*4);let u=i;i===void 0&&!o&&(u=!0),this.shouldSkipRescale&&(u=!1),u?this.rescaleInitialNodePositions():this.shouldSkipRescale||(this.scaleX=void 0,this.scaleY=void 0),this.shouldSkipRescale=void 0;for(let l=0;l<r.pointsNumber;++l)f[l*4+0]=r.pointPositions[l*2+0],f[l*4+1]=r.pointPositions[l*2+1],f[l*4+2]=l;this.currentPositionFbo||(this.currentPositionFbo=e.framebuffer()),this.currentPositionFbo({color:e.texture({data:f,shape:[s,s,4],type:"float"}),depth:!1,stencil:!1}),this.previousPositionFbo||(this.previousPositionFbo=e.framebuffer()),this.previousPositionFbo({color:e.texture({data:f,shape:[s,s,4],type:"float"}),depth:!1,stencil:!1}),this.config.enableSimulation&&(this.velocityFbo||(this.velocityFbo=e.framebuffer()),this.velocityFbo({color:e.texture({data:new Float32Array(s*s*4).fill(0),shape:[s,s,4],type:"float"}),depth:!1,stencil:!1})),this.selectedTexture||(this.selectedTexture=e.texture()),this.selectedTexture({data:f,shape:[s,s,4],type:"float"}),this.selectedFbo||(this.selectedFbo=e.framebuffer()),this.selectedFbo({color:this.selectedTexture,depth:!1,stencil:!1}),this.hoveredFbo||(this.hoveredFbo=e.framebuffer()),this.hoveredFbo({shape:[2,2],colorType:"float",depth:!1,stencil:!1}),this.drawPointIndices||(this.drawPointIndices=e.buffer(0)),this.drawPointIndices(or(n.pointsTextureSize)),this.hoveredPointIndices||(this.hoveredPointIndices=e.buffer(0)),this.hoveredPointIndices(or(n.pointsTextureSize)),this.sampledPointIndices||(this.sampledPointIndices=e.buffer(0)),this.sampledPointIndices(or(n.pointsTextureSize)),this.updateGreyoutStatus(),this.updateSampledPointsGrid(),this.trackPointsByIndices()}initPrograms(){const{reglInstance:e,config:n,store:r,data:i}=this;n.enableSimulation&&(this.updatePositionCommand||(this.updatePositionCommand=e({frag:xv,vert:kt,framebuffer:()=>this.currentPositionFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.previousPositionFbo,velocity:()=>this.velocityFbo,friction:()=>n.simulationFriction,spaceSize:()=>r.adjustedSpaceSize}}))),this.dragPointCommand||(this.dragPointCommand=e({frag:_v,vert:kt,framebuffer:()=>this.currentPositionFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.previousPositionFbo,mousePos:()=>r.mousePosition,index:()=>{var o;return((o=r.hoveredPoint)==null?void 0:o.index)??-1}}})),this.drawCommand||(this.drawCommand=e({frag:uv,vert:lv,primitive:"points",count:()=>i.pointsNumber??0,attributes:{pointIndices:{buffer:this.drawPointIndices,size:2},size:{buffer:()=>this.sizeBuffer,size:1},color:{buffer:()=>this.colorBuffer,size:4},shape:{buffer:()=>this.shapeBuffer,size:1},imageIndex:{buffer:()=>this.imageIndicesBuffer,size:1},imageSize:{buffer:()=>this.imageSizesBuffer,size:1}},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointGreyoutStatus:()=>this.greyoutStatusFbo,ratio:()=>n.pixelRatio,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,pointOpacity:()=>n.pointOpacity,greyoutOpacity:()=>n.pointGreyoutOpacity??-1,greyoutColor:()=>r.greyoutPointColor,backgroundColor:()=>r.backgroundColor,isDarkenGreyout:()=>r.isDarkenGreyout,scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize,skipSelected:e.prop("skipSelected"),skipUnselected:e.prop("skipUnselected"),imageAtlasTexture:()=>this.imageAtlasTexture,imageAtlasCoords:()=>this.imageAtlasCoordsTexture,hasImages:()=>this.imageCount>0,imageCount:()=>this.imageCount,imageAtlasCoordsTextureSize:()=>this.imageAtlasCoordsTextureSize},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1}})),this.findPointsOnAreaSelectionCommand||(this.findPointsOnAreaSelectionCommand=e({frag:cv,vert:kt,framebuffer:()=>this.selectedFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointSize:()=>this.sizeFbo,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,sizeScale:()=>n.pointSizeScale,transformationMatrix:()=>r.transform,ratio:()=>n.pixelRatio,selection0:()=>r.selectedArea[0],selection1:()=>r.selectedArea[1],scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize}})),this.findPointsOnPolygonSelectionCommand||(this.findPointsOnPolygonSelectionCommand=e({frag:hv,vert:kt,framebuffer:()=>this.selectedFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,transformationMatrix:()=>r.transform,polygonPathTexture:()=>this.polygonPathTexture,polygonPathLength:()=>this.polygonPathLength}})),this.clearHoveredFboCommand||(this.clearHoveredFboCommand=e({frag:ar,vert:kt,framebuffer:this.hoveredFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.findHoveredPointCommand||(this.findHoveredPointCommand=e({frag:pv,vert:vv,primitive:"points",count:()=>i.pointsNumber??0,framebuffer:()=>this.hoveredFbo,attributes:{pointIndices:{buffer:this.hoveredPointIndices,size:2},size:{buffer:()=>this.sizeBuffer,size:1}},uniforms:{positionsTexture:()=>this.currentPositionFbo,ratio:()=>n.pixelRatio,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,scalePointsOnZoom:()=>n.scalePointsOnZoom,mousePosition:()=>r.screenMousePosition,maxPointSize:()=>r.maxPointSize},depth:{enable:!1,mask:!1}})),this.clearSampledPointsFboCommand||(this.clearSampledPointsFboCommand=e({frag:ar,vert:kt,framebuffer:()=>this.sampledPointsFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)}})),this.fillSampledPointsFboCommand||(this.fillSampledPointsFboCommand=e({frag:gv,vert:yv,primitive:"points",count:()=>i.pointsNumber??0,framebuffer:()=>this.sampledPointsFbo,attributes:{pointIndices:{buffer:this.sampledPointIndices,size:2}},uniforms:{positionsTexture:()=>this.currentPositionFbo,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize},depth:{enable:!1,mask:!1}})),this.drawHighlightedCommand||(this.drawHighlightedCommand=e({frag:dv,vert:mv,attributes:{vertexCoord:wt(e)},primitive:"triangle strip",count:4,uniforms:{color:e.prop("color"),width:e.prop("width"),pointIndex:e.prop("pointIndex"),size:e.prop("size"),positionsTexture:()=>this.currentPositionFbo,sizeScale:()=>n.pointSizeScale,pointsTextureSize:()=>r.pointsTextureSize,transformationMatrix:()=>r.transform,spaceSize:()=>r.adjustedSpaceSize,screenSize:()=>r.screenSize,scalePointsOnZoom:()=>n.scalePointsOnZoom,maxPointSize:()=>r.maxPointSize,pointGreyoutStatusTexture:()=>this.greyoutStatusFbo,universalPointOpacity:()=>n.pointOpacity,greyoutOpacity:()=>n.pointGreyoutOpacity??-1,isDarkenGreyout:()=>r.isDarkenGreyout,backgroundColor:()=>r.backgroundColor,greyoutColor:()=>r.greyoutPointColor},blend:{enable:!0,func:{dstRGB:"one minus src alpha",srcRGB:"src alpha",dstAlpha:"one minus src alpha",srcAlpha:"one"},equation:{rgb:"add",alpha:"add"}},depth:{enable:!1,mask:!1}})),this.trackPointsCommand||(this.trackPointsCommand=e({frag:bv,vert:kt,framebuffer:()=>this.trackedPositionsFbo,primitive:"triangle strip",count:4,attributes:{vertexCoord:wt(e)},uniforms:{positionsTexture:()=>this.currentPositionFbo,trackedIndices:()=>this.trackedIndicesFbo,pointsTextureSize:()=>r.pointsTextureSize}}))}updateColor(){const{reglInstance:e,store:{pointsTextureSize:n},data:r}=this;n&&(this.colorBuffer||(this.colorBuffer=e.buffer(0)),this.colorBuffer(r.pointColors))}updateGreyoutStatus(){const{reglInstance:e,store:{selectedIndices:n,pointsTextureSize:r}}=this;if(!r)return;const i=new Float32Array(r*r*4).fill(n?1:0);if(n)for(const o of n)i[o*4]=0;this.greyoutStatusTexture||(this.greyoutStatusTexture=e.texture()),this.greyoutStatusTexture({data:i,width:r,height:r,type:"float"}),this.greyoutStatusFbo||(this.greyoutStatusFbo=e.framebuffer()),this.greyoutStatusFbo({color:this.greyoutStatusTexture,depth:!1,stencil:!1})}updateSize(){const{reglInstance:e,store:{pointsTextureSize:n},data:r}=this;if(!n||r.pointsNumber===void 0||r.pointSizes===void 0)return;this.sizeBuffer||(this.sizeBuffer=e.buffer(0)),this.sizeBuffer(r.pointSizes);const i=new Float32Array(n*n*4);for(let o=0;o<r.pointsNumber;o++)i[o*4]=r.pointSizes[o];this.sizeTexture||(this.sizeTexture=e.texture()),this.sizeTexture({data:i,width:n,height:n,type:"float"}),this.sizeFbo||(this.sizeFbo=e.framebuffer()),this.sizeFbo({color:this.sizeTexture,depth:!1,stencil:!1})}updateShape(){const{reglInstance:e,data:n}=this;n.pointsNumber===void 0||n.pointShapes===void 0||(this.shapeBuffer||(this.shapeBuffer=e.buffer(0)),this.shapeBuffer(n.pointShapes))}updateImageIndices(){const{reglInstance:e,data:n}=this;n.pointsNumber===void 0||n.pointImageIndices===void 0||(this.imageIndicesBuffer||(this.imageIndicesBuffer=e.buffer(0)),this.imageIndicesBuffer(n.pointImageIndices))}updateImageSizes(){const{reglInstance:e,data:n}=this;n.pointsNumber===void 0||n.pointImageSizes===void 0||(this.imageSizesBuffer||(this.imageSizesBuffer=e.buffer(0)),this.imageSizesBuffer(n.pointImageSizes))}createAtlas(){var l;const{reglInstance:e,data:n,store:r}=this;if(this.imageAtlasTexture||(this.imageAtlasTexture=e.texture()),this.imageAtlasCoordsTexture||(this.imageAtlasCoordsTexture=e.texture()),!((l=n.inputImageData)!=null&&l.length)){this.imageCount=0,this.imageAtlasCoordsTextureSize=0;return}const i=Sv(n.inputImageData,r.webglMaxTextureSize);if(!i){console.warn("Failed to create atlas from image data");return}this.imageCount=n.inputImageData.length;const{atlasData:o,atlasSize:s,atlasCoords:f,atlasCoordsSize:u}=i;this.imageAtlasCoordsTextureSize=u,this.imageAtlasTexture({data:o,shape:[s,s,4],type:"uint8"}),this.imageAtlasCoordsTexture({data:f,shape:[u,u,4],type:"float"})}updateSampledPointsGrid(){const{store:{screenSize:e},config:{pointSamplingDistance:n},reglInstance:r}=this;let i=n??Math.min(...e)/2;i===0&&(i=qe.pointSamplingDistance);const o=Math.ceil(e[0]/i),s=Math.ceil(e[1]/i);this.sampledPointsFbo||(this.sampledPointsFbo=r.framebuffer()),this.sampledPointsFbo({shape:[o,s],depth:!1,stencil:!1,colorType:"float"})}trackPoints(){var e,n;(e=this.trackedIndices)!=null&&e.length&&((n=this.trackPointsCommand)==null||n.call(this))}draw(){var o,s,f,u,l,p,x;const{config:{renderHoveredPointRing:e,pointSize:n},store:r,data:i}=this;this.colorBuffer||this.updateColor(),this.sizeBuffer||this.updateSize(),this.shapeBuffer||this.updateShape(),this.imageIndicesBuffer||this.updateImageIndices(),this.imageSizesBuffer||this.updateImageSizes(),(!this.imageAtlasCoordsTexture||!this.imageAtlasTexture)&&this.createAtlas(),r.selectedIndices&&r.selectedIndices.length>0?((o=this.drawCommand)==null||o.call(this,{skipSelected:!0,skipUnselected:!1}),(s=this.drawCommand)==null||s.call(this,{skipSelected:!1,skipUnselected:!0})):(f=this.drawCommand)==null||f.call(this,{skipSelected:!1,skipUnselected:!1}),e&&r.hoveredPoint&&((l=this.drawHighlightedCommand)==null||l.call(this,{width:.85,color:r.hoveredPointRingColor,pointIndex:r.hoveredPoint.index,size:((u=i.pointSizes)==null?void 0:u[r.hoveredPoint.index])??n})),r.focusedPoint&&((x=this.drawHighlightedCommand)==null||x.call(this,{width:.75,color:r.focusedPointRingColor,pointIndex:r.focusedPoint.index,size:((p=i.pointSizes)==null?void 0:p[r.focusedPoint.index])??n}))}updatePosition(){var e;(e=this.updatePositionCommand)==null||e.call(this),this.swapFbo(),this.isPositionsUpToDate=!1}drag(){var e;(e=this.dragPointCommand)==null||e.call(this),this.swapFbo(),this.isPositionsUpToDate=!1}findPointsOnAreaSelection(){var e;(e=this.findPointsOnAreaSelectionCommand)==null||e.call(this)}findPointsOnPolygonSelection(){var e;(e=this.findPointsOnPolygonSelectionCommand)==null||e.call(this)}updatePolygonPath(e){const{reglInstance:n}=this;if(this.polygonPathLength=e.length,e.length===0){this.polygonPathTexture=void 0,this.polygonPathFbo=void 0;return}const r=Math.ceil(Math.sqrt(e.length)),i=new Float32Array(r*r*4);for(const[o,s]of e.entries()){const[f,u]=s;i[o*4]=f,i[o*4+1]=u,i[o*4+2]=0,i[o*4+3]=0}this.polygonPathTexture||(this.polygonPathTexture=n.texture()),this.polygonPathTexture({data:i,width:r,height:r,type:"float"}),this.polygonPathFbo||(this.polygonPathFbo=n.framebuffer()),this.polygonPathFbo({color:this.polygonPathTexture,depth:!1,stencil:!1})}findHoveredPoint(){var e,n;(e=this.clearHoveredFboCommand)==null||e.call(this),(n=this.findHoveredPointCommand)==null||n.call(this)}trackPointsByIndices(e){const{store:{pointsTextureSize:n},reglInstance:r}=this;if(this.trackedIndices=e,this.trackedPositions=void 0,this.isPositionsUpToDate=!1,!(e!=null&&e.length)||!n)return;const i=Math.ceil(Math.sqrt(e.length)),o=new Float32Array(i*i*4).fill(-1);for(const[s,f]of e.entries())f!==void 0&&(o[s*4]=f%n,o[s*4+1]=Math.floor(f/n),o[s*4+2]=0,o[s*4+3]=0);this.trackedIndicesTexture||(this.trackedIndicesTexture=r.texture()),this.trackedIndicesTexture({data:o,width:i,height:i,type:"float"}),this.trackedIndicesFbo||(this.trackedIndicesFbo=r.framebuffer()),this.trackedIndicesFbo({color:this.trackedIndicesTexture,depth:!1,stencil:!1}),this.trackedPositionsFbo||(this.trackedPositionsFbo=r.framebuffer()),this.trackedPositionsFbo({shape:[i,i],depth:!1,stencil:!1,colorType:"float"}),this.trackPoints()}getTrackedPositionsMap(){if(!this.trackedIndices)return new Map;const{config:{enableSimulation:e},store:{isSimulationRunning:n}}=this;if((!e||!n)&&this.isPositionsUpToDate&&this.trackedPositions)return this.trackedPositions;const r=tn(this.reglInstance,this.trackedPositionsFbo),i=new Map;for(let o=0;o<r.length/4;o+=1){const s=r[o*4],f=r[o*4+1],u=this.trackedIndices[o];s!==void 0&&f!==void 0&&u!==void 0&&i.set(u,[s,f])}return(!e||!n)&&(this.trackedPositions=i,this.isPositionsUpToDate=!0),i}getSampledPointPositionsMap(){var r,i;const e=new Map;if(!this.sampledPointsFbo)return e;(r=this.clearSampledPointsFboCommand)==null||r.call(this),(i=this.fillSampledPointsFboCommand)==null||i.call(this);const n=tn(this.reglInstance,this.sampledPointsFbo);for(let o=0;o<n.length/4;o++){const s=n[o*4],f=!!n[o*4+1],u=n[o*4+2],l=n[o*4+3];f&&s!==void 0&&u!==void 0&&l!==void 0&&e.set(s,[u,l])}return e}getSampledPoints(){var i,o;const e=[],n=[];if(!this.sampledPointsFbo)return{indices:e,positions:n};(i=this.clearSampledPointsFboCommand)==null||i.call(this),(o=this.fillSampledPointsFboCommand)==null||o.call(this);const r=tn(this.reglInstance,this.sampledPointsFbo);for(let s=0;s<r.length/4;s++){const f=r[s*4],u=!!r[s*4+1],l=r[s*4+2],p=r[s*4+3];u&&f!==void 0&&l!==void 0&&p!==void 0&&(e.push(f),n.push(l,p))}return{indices:e,positions:n}}getTrackedPositionsArray(){const e=[];if(!this.trackedIndices)return e;e.length=this.trackedIndices.length*2;const n=tn(this.reglInstance,this.trackedPositionsFbo);for(let r=0;r<n.length/4;r+=1){const i=n[r*4],o=n[r*4+1],s=this.trackedIndices[r];i!==void 0&&o!==void 0&&s!==void 0&&(e[r*2]=i,e[r*2+1]=o)}return e}swapFbo(){const e=this.previousPositionFbo;this.previousPositionFbo=this.currentPositionFbo,this.currentPositionFbo=e}rescaleInitialNodePositions(){const{config:{spaceSize:e}}=this;if(!this.data.pointPositions||!e)return;const n=this.data.pointPositions,r=n.length/2;let i=1/0,o=-1/0,s=1/0,f=-1/0;for(let we=0;we<n.length;we+=2){const fe=n[we],Me=n[we+1];i=Math.min(i,fe),o=Math.max(o,fe),s=Math.min(s,Me),f=Math.max(f,Me)}const u=o-i,l=f-s,p=Math.max(u,l);if(p>e){this.scaleX=void 0,this.scaleY=void 0;return}const x=e*e*.001,z=(r>x?e*Math.max(1.2,Math.sqrt(r)/e):e*.1)/p,q=(p-u)/2*z,Te=(p-l)/2*z;this.scaleX=we=>(we-i)*z+q,this.scaleY=we=>(we-s)*z+Te;for(let we=0;we<r;we++)this.data.pointPositions[we*2]=this.scaleX(n[we*2]),this.data.pointPositions[we*2+1]=this.scaleY(n[we*2+1])}}var Bu=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});function wv(){var t=new Bu(9);return Bu!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function Uu(t,e,n){var r=e[0],i=e[1],o=e[2],s=e[3],f=e[4],u=e[5],l=e[6],p=e[7],x=e[8],S=n[0],z=n[1];return t[0]=r,t[1]=i,t[2]=o,t[3]=s,t[4]=f,t[5]=u,t[6]=S*r+z*s+l,t[7]=S*i+z*f+p,t[8]=S*o+z*u+x,t}function Qa(t,e,n){var r=n[0],i=n[1];return t[0]=r*e[0],t[1]=r*e[1],t[2]=r*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function Av(t,e,n){return t[0]=2/e,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/n,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t}var mo={exports:{}},Ev=mo.exports,Vu;function Cv(){return Vu||(Vu=1,function(t){(function(e,n,r){function i(u){var l=this,p=f();l.next=function(){var x=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=x-(l.c=x|0)},l.c=1,l.s0=p(" "),l.s1=p(" "),l.s2=p(" "),l.s0-=p(u),l.s0<0&&(l.s0+=1),l.s1-=p(u),l.s1<0&&(l.s1+=1),l.s2-=p(u),l.s2<0&&(l.s2+=1),p=null}function o(u,l){return l.c=u.c,l.s0=u.s0,l.s1=u.s1,l.s2=u.s2,l}function s(u,l){var p=new i(u),x=l&&l.state,S=p.next;return S.int32=function(){return p.next()*4294967296|0},S.double=function(){return S()+(S()*2097152|0)*11102230246251565e-32},S.quick=S,x&&(typeof x=="object"&&o(x,p),S.state=function(){return o(p,{})}),S}function f(){var u=4022871197,l=function(p){p=String(p);for(var x=0;x<p.length;x++){u+=p.charCodeAt(x);var S=.02519603282416938*u;u=S>>>0,S-=u,S*=u,u=S>>>0,S-=u,u+=S*4294967296}return(u>>>0)*23283064365386963e-26};return l}n&&n.exports?n.exports=s:this.alea=s})(Ev,t)}(mo)),mo.exports}var po={exports:{}},Pv=po.exports,$u;function kv(){return $u||($u=1,function(t){(function(e,n,r){function i(f){var u=this,l="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var x=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^x^x>>>8},f===(f|0)?u.x=f:l+=f;for(var p=0;p<l.length+64;p++)u.x^=l.charCodeAt(p)|0,u.next()}function o(f,u){return u.x=f.x,u.y=f.y,u.z=f.z,u.w=f.w,u}function s(f,u){var l=new i(f),p=u&&u.state,x=function(){return(l.next()>>>0)/4294967296};return x.double=function(){do var S=l.next()>>>11,z=(l.next()>>>0)/4294967296,q=(S+z)/(1<<21);while(q===0);return q},x.int32=l.next,x.quick=x,p&&(typeof p=="object"&&o(p,l),x.state=function(){return o(l,{})}),x}n&&n.exports?n.exports=s:this.xor128=s})(Pv,t)}(po)),po.exports}var vo={exports:{}},Iv=vo.exports,Hu;function Lv(){return Hu||(Hu=1,function(t){(function(e,n,r){function i(f){var u=this,l="";u.next=function(){var x=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(x^x<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,f===(f|0)?u.x=f:l+=f;for(var p=0;p<l.length+64;p++)u.x^=l.charCodeAt(p)|0,p==l.length&&(u.d=u.x<<10^u.x>>>4),u.next()}function o(f,u){return u.x=f.x,u.y=f.y,u.z=f.z,u.w=f.w,u.v=f.v,u.d=f.d,u}function s(f,u){var l=new i(f),p=u&&u.state,x=function(){return(l.next()>>>0)/4294967296};return x.double=function(){do var S=l.next()>>>11,z=(l.next()>>>0)/4294967296,q=(S+z)/(1<<21);while(q===0);return q},x.int32=l.next,x.quick=x,p&&(typeof p=="object"&&o(p,l),x.state=function(){return o(l,{})}),x}n&&n.exports?n.exports=s:this.xorwow=s})(Iv,t)}(vo)),vo.exports}var go={exports:{}},Dv=go.exports,Xu;function Fv(){return Xu||(Xu=1,function(t){(function(e,n,r){function i(f){var u=this;u.next=function(){var p=u.x,x=u.i,S,z;return S=p[x],S^=S>>>7,z=S^S<<24,S=p[x+1&7],z^=S^S>>>10,S=p[x+3&7],z^=S^S>>>3,S=p[x+4&7],z^=S^S<<7,S=p[x+7&7],S=S^S<<13,z^=S^S<<9,p[x]=z,u.i=x+1&7,z};function l(p,x){var S,z=[];if(x===(x|0))z[0]=x;else for(x=""+x,S=0;S<x.length;++S)z[S&7]=z[S&7]<<15^x.charCodeAt(S)+z[S+1&7]<<13;for(;z.length<8;)z.push(0);for(S=0;S<8&&z[S]===0;++S);for(S==8?z[7]=-1:z[S],p.x=z,p.i=0,S=256;S>0;--S)p.next()}l(u,f)}function o(f,u){return u.x=f.x.slice(),u.i=f.i,u}function s(f,u){f==null&&(f=+new Date);var l=new i(f),p=u&&u.state,x=function(){return(l.next()>>>0)/4294967296};return x.double=function(){do var S=l.next()>>>11,z=(l.next()>>>0)/4294967296,q=(S+z)/(1<<21);while(q===0);return q},x.int32=l.next,x.quick=x,p&&(p.x&&o(p,l),x.state=function(){return o(l,{})}),x}n&&n.exports?n.exports=s:this.xorshift7=s})(Dv,t)}(go)),go.exports}var yo={exports:{}},zv=yo.exports,Wu;function Rv(){return Wu||(Wu=1,function(t){(function(e,n,r){function i(f){var u=this;u.next=function(){var p=u.w,x=u.X,S=u.i,z,q;return u.w=p=p+1640531527|0,q=x[S+34&127],z=x[S=S+1&127],q^=q<<13,z^=z<<17,q^=q>>>15,z^=z>>>12,q=x[S]=q^z,u.i=S,q+(p^p>>>16)|0};function l(p,x){var S,z,q,Te,we,fe=[],Me=128;for(x===(x|0)?(z=x,x=null):(x=x+"\0",z=0,Me=Math.max(Me,x.length)),q=0,Te=-32;Te<Me;++Te)x&&(z^=x.charCodeAt((Te+32)%x.length)),Te===0&&(we=z),z^=z<<10,z^=z>>>15,z^=z<<4,z^=z>>>13,Te>=0&&(we=we+1640531527|0,S=fe[Te&127]^=z+we,q=S==0?q+1:0);for(q>=128&&(fe[(x&&x.length||0)&127]=-1),q=127,Te=4*128;Te>0;--Te)z=fe[q+34&127],S=fe[q=q+1&127],z^=z<<13,S^=S<<17,z^=z>>>15,S^=S>>>12,fe[q]=z^S;p.w=we,p.X=fe,p.i=q}l(u,f)}function o(f,u){return u.i=f.i,u.w=f.w,u.X=f.X.slice(),u}function s(f,u){f==null&&(f=+new Date);var l=new i(f),p=u&&u.state,x=function(){return(l.next()>>>0)/4294967296};return x.double=function(){do var S=l.next()>>>11,z=(l.next()>>>0)/4294967296,q=(S+z)/(1<<21);while(q===0);return q},x.int32=l.next,x.quick=x,p&&(p.X&&o(p,l),x.state=function(){return o(l,{})}),x}n&&n.exports?n.exports=s:this.xor4096=s})(zv,t)}(yo)),yo.exports}var xo={exports:{}},Ov=xo.exports,ju;function Mv(){return ju||(ju=1,function(t){(function(e,n,r){function i(f){var u=this,l="";u.next=function(){var x=u.b,S=u.c,z=u.d,q=u.a;return x=x<<25^x>>>7^S,S=S-z|0,z=z<<24^z>>>8^q,q=q-x|0,u.b=x=x<<20^x>>>12^S,u.c=S=S-z|0,u.d=z<<16^S>>>16^q,u.a=q-x|0},u.a=0,u.b=0,u.c=-1640531527,u.d=1367130551,f===Math.floor(f)?(u.a=f/4294967296|0,u.b=f|0):l+=f;for(var p=0;p<l.length+20;p++)u.b^=l.charCodeAt(p)|0,u.next()}function o(f,u){return u.a=f.a,u.b=f.b,u.c=f.c,u.d=f.d,u}function s(f,u){var l=new i(f),p=u&&u.state,x=function(){return(l.next()>>>0)/4294967296};return x.double=function(){do var S=l.next()>>>11,z=(l.next()>>>0)/4294967296,q=(S+z)/(1<<21);while(q===0);return q},x.int32=l.next,x.quick=x,p&&(typeof p=="object"&&o(p,l),x.state=function(){return o(l,{})}),x}n&&n.exports?n.exports=s:this.tychei=s})(Ov,t)}(xo)),xo.exports}var bo={exports:{}};const Nv=bp(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));var Gv=bo.exports,qu;function Bv(){return qu||(qu=1,function(t){(function(e,n,r){var i=256,o=6,s=52,f="random",u=r.pow(i,o),l=r.pow(2,s),p=l*2,x=i-1,S;function z(V,se,Le){var Ge=[];se=se==!0?{entropy:!0}:se||{};var Xe=fe(we(se.entropy?[V,Ue(n)]:V??Me(),3),Ge),nt=new q(Ge),ut=function(){for(var Ee=nt.g(o),lt=u,ot=0;Ee<l;)Ee=(Ee+ot)*i,lt*=i,ot=nt.g(1);for(;Ee>=p;)Ee/=2,lt/=2,ot>>>=1;return(Ee+ot)/lt};return ut.int32=function(){return nt.g(4)|0},ut.quick=function(){return nt.g(4)/4294967296},ut.double=ut,fe(Ue(nt.S),n),(se.pass||Le||function(Ee,lt,ot,N){return N&&(N.S&&Te(N,nt),Ee.state=function(){return Te(nt,{})}),ot?(r[f]=Ee,lt):Ee})(ut,Xe,"global"in se?se.global:this==r,se.state)}function q(V){var se,Le=V.length,Ge=this,Xe=0,nt=Ge.i=Ge.j=0,ut=Ge.S=[];for(Le||(V=[Le++]);Xe<i;)ut[Xe]=Xe++;for(Xe=0;Xe<i;Xe++)ut[Xe]=ut[nt=x&nt+V[Xe%Le]+(se=ut[Xe])],ut[nt]=se;(Ge.g=function(Ee){for(var lt,ot=0,N=Ge.i,Pe=Ge.j,re=Ge.S;Ee--;)lt=re[N=x&N+1],ot=ot*i+re[x&(re[N]=re[Pe=x&Pe+lt])+(re[Pe]=lt)];return Ge.i=N,Ge.j=Pe,ot})(i)}function Te(V,se){return se.i=V.i,se.j=V.j,se.S=V.S.slice(),se}function we(V,se){var Le=[],Ge=typeof V,Xe;if(se&&Ge=="object")for(Xe in V)try{Le.push(we(V[Xe],se-1))}catch{}return Le.length?Le:Ge=="string"?V:V+"\0"}function fe(V,se){for(var Le=V+"",Ge,Xe=0;Xe<Le.length;)se[x&Xe]=x&(Ge^=se[x&Xe]*19)+Le.charCodeAt(Xe++);return Ue(se)}function Me(){try{var V;return S&&(V=S.randomBytes)?V=V(i):(V=new Uint8Array(i),(e.crypto||e.msCrypto).getRandomValues(V)),Ue(V)}catch{var se=e.navigator,Le=se&&se.plugins;return[+new Date,e,Le,e.screen,Ue(n)]}}function Ue(V){return String.fromCharCode.apply(0,V)}if(fe(r.random(),n),t.exports){t.exports=z;try{S=Nv}catch{}}else r["seed"+f]=z})(typeof self<"u"?self:Gv,[],Math)}(bo)),bo.exports}var Ka,Yu;function Uv(){if(Yu)return Ka;Yu=1;var t=Cv(),e=kv(),n=Lv(),r=Fv(),i=Rv(),o=Mv(),s=Bv();return s.alea=t,s.xor128=e,s.xorwow=n,s.xorshift7=r,s.xor4096=i,s.tychei=o,Ka=s,Ka}var Vv=Uv();const $v=za(Vv);function Hv(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,Wv(r.key),r)}}function Ja(t,e,n){return e&&Hv(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function Zu(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,es(t,e)}function es(t,e){return es=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},es(t,e)}function Xv(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}function Wv(t){var e=Xv(t,"string");return typeof e=="symbol"?e:String(e)}var _o=function(){function t(){}var e=t.prototype;return e._seed=function(r,i){if(r===(r||0))return r;for(var o=""+r,s=0,f=0;f<o.length;++f)s^=o.charCodeAt(f)|0;return s},t}(),Qu=function(t){Zu(e,t);function e(r,i){var o;return o=t.call(this)||this,o._rng=void 0,o.seed(r,i),o}var n=e.prototype;return n.next=function(){return this._rng()},n.seed=function(i,o){this._rng=i},n.clone=function(i,o){return new e(this._rng,o)},Ja(e,[{key:"name",get:function(){return"function"}}]),e}(_o),Ku=function(){var t=[].slice.call(arguments),e=t,n=e[0],r=n===void 0?"default":n;switch(typeof r){case"object":if(r instanceof _o)return r;break;case"function":return new Qu(r);case"number":case"string":default:return new Qu($v.apply(void 0,t))}throw new Error('invalid RNG "'+r+'"')},jv=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),function(){return t.next()*(n-e)+e}};function pn(t){return new qv(t)}var qv=function(e){var n=this;this.n=void 0,this.isInt=function(){if(Number.isInteger(n.n))return n;throw new Error("Expected number to be an integer, got "+n.n)},this.isPositive=function(){if(n.n>0)return n;throw new Error("Expected number to be positive, got "+n.n)},this.lessThan=function(r){if(n.n<r)return n;throw new Error("Expected number to be less than "+r+", got "+n.n)},this.greaterThanOrEqual=function(r){if(n.n>=r)return n;throw new Error("Expected number to be greater than or equal to "+r+", got "+n.n)},this.greaterThan=function(r){if(n.n>r)return n;throw new Error("Expected number to be greater than "+r+", got "+n.n)},this.n=e},Yv=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),n===void 0&&(n=e===void 0?1:e,e=0),pn(e).isInt(),pn(n).isInt(),function(){return Math.floor(t.next()*(n-e+1)+e)}},Zv=function(t){return function(){return t.next()>=.5}},Qv=function(t,e,n){return e===void 0&&(e=0),n===void 0&&(n=1),function(){var r,i,o;do r=t.next()*2-1,i=t.next()*2-1,o=r*r+i*i;while(!o||o>1);return e+n*i*Math.sqrt(-2*Math.log(o)/o)}},Kv=function(t,e,n){e===void 0&&(e=0),n===void 0&&(n=1);var r=t.normal(e,n);return function(){return Math.exp(r())}},Jv=function(t,e){return e===void 0&&(e=.5),pn(e).greaterThanOrEqual(0).lessThan(1),function(){return Math.floor(t.next()+e)}},eg=function(t,e,n){return e===void 0&&(e=1),n===void 0&&(n=.5),pn(e).isInt().isPositive(),pn(n).greaterThanOrEqual(0).lessThan(1),function(){for(var r=0,i=0;r++<e;)t.next()<n&&i++;return i}},tg=function(t,e){e===void 0&&(e=.5),pn(e).greaterThan(0).lessThan(1);var n=1/Math.log(1-e);return function(){return Math.floor(1+Math.log(t.next())*n)}},ng=[0,0,.6931471805599453,1.791759469228055,3.1780538303479458,4.787491742782046,6.579251212010101,8.525161361065415,10.60460290274525,12.801827480081469],rg=function(e){return ng[e]},ig=.9189385332046727,og=function(t,e){if(e===void 0&&(e=1),pn(e).isPositive(),e<10){var n=Math.exp(-e);return function(){for(var u=n,l=0,p=t.next();p>u;)p=p-u,u=e*u/++l;return l}}else{var r=Math.sqrt(e),i=.931+2.53*r,o=-.059+.02483*i,s=1.1239+1.1328/(i-3.4),f=.9277-3.6224/(i-2);return function(){for(;;){var u=void 0,l=t.next();if(l<=.86*f)return u=l/f-.43,Math.floor((2*o/(.5-Math.abs(u))+i)*u+e+.445);l>=f?u=t.next()-.5:(u=l/f-.93,u=(u<0?-.5:.5)-u,l=t.next()*f);var p=.5-Math.abs(u);if(!(p<.013&&l>p)){var x=Math.floor((2*o/p+i)*u+e+.445);if(l=l*s/(o/(p*p)+i),x>=10){var S=(x+.5)*Math.log(e/x)-e-ig+x-(.08333333333333333-(.002777777777777778-1/(1260*x*x))/(x*x))/x;if(Math.log(l*r)<=S)return x}else if(x>=0){var z,q=(z=rg(x))!=null?z:0;if(Math.log(l)<=x*Math.log(e)-e-q)return x}}}}}},ag=function(t,e){return e===void 0&&(e=1),pn(e).isPositive(),function(){return-Math.log(1-t.next())/e}},sg=function(t,e){return e===void 0&&(e=1),pn(e).isInt().greaterThanOrEqual(0),function(){for(var n=0,r=0;r<e;++r)n+=t.next();return n}},fg=function(t,e){e===void 0&&(e=1),pn(e).isInt().isPositive();var n=t.irwinHall(e);return function(){return n()/e}},ug=function(t,e){e===void 0&&(e=1),pn(e).greaterThanOrEqual(0);var n=1/e;return function(){return 1/Math.pow(1-t.next(),n)}},lg=function(t){Zu(e,t);function e(){return t.apply(this,arguments)||this}var n=e.prototype;return n.next=function(){return Math.random()},n.seed=function(i,o){},n.clone=function(){return new e},Ja(e,[{key:"name",get:function(){return"default"}}]),e}(_o),Ju=function(){function t(n){var r=this;this._rng=void 0,this._patch=void 0,this._cache={},this.next=function(){return r._rng.next()},this.float=function(i,o){return r.uniform(i,o)()},this.int=function(i,o){return r.uniformInt(i,o)()},this.integer=function(i,o){return r.uniformInt(i,o)()},this.bool=function(){return r.uniformBoolean()()},this.boolean=function(){return r.uniformBoolean()()},this.uniform=function(i,o){return r._memoize("uniform",jv,i,o)},this.uniformInt=function(i,o){return r._memoize("uniformInt",Yv,i,o)},this.uniformBoolean=function(){return r._memoize("uniformBoolean",Zv)},this.normal=function(i,o){return Qv(r,i,o)},this.logNormal=function(i,o){return Kv(r,i,o)},this.bernoulli=function(i){return Jv(r,i)},this.binomial=function(i,o){return eg(r,i,o)},this.geometric=function(i){return tg(r,i)},this.poisson=function(i){return og(r,i)},this.exponential=function(i){return ag(r,i)},this.irwinHall=function(i){return sg(r,i)},this.bates=function(i){return fg(r,i)},this.pareto=function(i){return ug(r,i)},n&&n instanceof _o?this.use(n):this.use(new lg),this._cache={}}var e=t.prototype;return e.clone=function(){var r=[].slice.call(arguments);return r.length?new t(Ku.apply(void 0,r)):new t(this.rng.clone())},e.use=function(){this._rng=Ku.apply(void 0,[].slice.call(arguments))},e.patch=function(){if(this._patch)throw new Error("Math.random already patched");this._patch=Math.random,Math.random=this.uniform()},e.unpatch=function(){this._patch&&(Math.random=this._patch,delete this._patch)},e.choice=function(r){if(!Array.isArray(r))throw new Error("Random.choice expected input to be an array, got "+typeof r);var i=r==null?void 0:r.length;if(i>0){var o=this.uniformInt(0,i-1)();return r[o]}else return},e._memoize=function(r,i){var o=[].slice.call(arguments,2),s=""+o.join(";"),f=this._cache[r];return(f===void 0||f.key!==s)&&(f={key:s,distribution:i.apply(void 0,[this].concat(o))},this._cache[r]=f),f.distribution},Ja(t,[{key:"rng",get:function(){return this._rng}}]),t}();new Ju;const ts=.001,ns=64;class cg{constructor(){this.pointsTextureSize=0,this.linksTextureSize=0,this.alpha=1,this.transform=wv(),this.screenSize=[0,0],this.mousePosition=[0,0],this.screenMousePosition=[0,0],this.selectedArea=[[0,0],[0,0]],this.isSimulationRunning=!1,this.simulationProgress=0,this.selectedIndices=null,this.maxPointSize=ns,this.hoveredPoint=void 0,this.focusedPoint=void 0,this.draggingPointIndex=void 0,this.adjustedSpaceSize=qe.spaceSize,this.isSpaceKeyPressed=!1,this.webglMaxTextureSize=16384,this.hoveredPointRingColor=[1,1,1,Rp],this.focusedPointRingColor=[1,1,1,Op],this.greyoutPointColor=[-1,-1,-1,-1],this.isDarkenGreyout=!1,this.alphaTarget=0,this.scalePointX=Za(),this.scalePointY=Za(),this.random=new Ju,this._backgroundColor=[0,0,0,0],this.alphaDecay=e=>1-Math.pow(ts,1/e)}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){this._backgroundColor=e;const n=du(e[0],e[1],e[2]);document.documentElement.style.setProperty("--cosmosgl-attribution-color",n>.65?"black":"white"),document.documentElement.style.setProperty("--cosmosgl-error-message-color",n>.65?"black":"white"),this.div&&(this.div.style.backgroundColor=`rgba(${e[0]*255}, ${e[1]*255}, ${e[2]*255}, ${e[3]})`),this.isDarkenGreyout=n<.65}addRandomSeed(e){this.random=this.random.clone(e)}getRandomFloat(e,n){return this.random.float(e,n)}adjustSpaceSize(e,n){e>=n?(this.adjustedSpaceSize=n/2,console.warn(`The \`spaceSize\` has been reduced to ${this.adjustedSpaceSize} due to WebGL limits`)):this.adjustedSpaceSize=e}setWebGLMaxTextureSize(e){this.webglMaxTextureSize=e}updateScreenSize(e,n){const{adjustedSpaceSize:r}=this;this.screenSize=[e,n],this.scalePointX.domain([0,r]).range([(e-r)/2,(e+r)/2]),this.scalePointY.domain([r,0]).range([(n-r)/2,(n+r)/2])}scaleX(e){return this.scalePointX(e)}scaleY(e){return this.scalePointY(e)}setHoveredPointRingColor(e){const n=Vn(e);this.hoveredPointRingColor[0]=n[0],this.hoveredPointRingColor[1]=n[1],this.hoveredPointRingColor[2]=n[2]}setFocusedPointRingColor(e){const n=Vn(e);this.focusedPointRingColor[0]=n[0],this.focusedPointRingColor[1]=n[1],this.focusedPointRingColor[2]=n[2]}setGreyoutPointColor(e){if(e===void 0){this.greyoutPointColor=[-1,-1,-1,-1];return}const n=Vn(e);this.greyoutPointColor[0]=n[0],this.greyoutPointColor[1]=n[1],this.greyoutPointColor[2]=n[2],this.greyoutPointColor[3]=n[3]}setFocusedPoint(e){e!==void 0?this.focusedPoint={index:e}:this.focusedPoint=void 0}addAlpha(e){return(this.alphaTarget-this.alpha)*this.alphaDecay(e)}}const hg={passive:!1},pi={capture:!0,passive:!1};function rs(t){t.stopImmediatePropagation()}function Dr(t){t.preventDefault(),t.stopImmediatePropagation()}function el(t){var e=t.document.documentElement,n=Rt(t).on("dragstart.drag",Dr,pi);"onselectstart"in e?n.on("selectstart.drag",Dr,pi):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function tl(t,e){var n=t.document.documentElement,r=Rt(t).on("dragstart.drag",null);e&&(r.on("click.drag",Dr,pi),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const So=t=>()=>t;function is(t,{sourceEvent:e,subject:n,target:r,identifier:i,active:o,x:s,y:f,dx:u,dy:l,dispatch:p}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:f,enumerable:!0,configurable:!0},dx:{value:u,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:p}})}is.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function dg(t){return!t.ctrlKey&&!t.button}function mg(){return this.parentNode}function pg(t,e){return e??{x:t.x,y:t.y}}function vg(){return navigator.maxTouchPoints||"ontouchstart"in this}function gg(){var t=dg,e=mg,n=pg,r=vg,i={},o=Vi("start","drag","end"),s=0,f,u,l,p,x=0;function S(V){V.on("mousedown.drag",z).filter(r).on("touchstart.drag",we).on("touchmove.drag",fe,hg).on("touchend.drag touchcancel.drag",Me).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function z(V,se){if(!(p||!t.call(this,V,se))){var Le=Ue(this,e.call(this,V,se),V,se,"mouse");Le&&(Rt(V.view).on("mousemove.drag",q,pi).on("mouseup.drag",Te,pi),el(V.view),rs(V),l=!1,f=V.clientX,u=V.clientY,Le("start",V))}}function q(V){if(Dr(V),!l){var se=V.clientX-f,Le=V.clientY-u;l=se*se+Le*Le>x}i.mouse("drag",V)}function Te(V){Rt(V.view).on("mousemove.drag mouseup.drag",null),tl(V.view,l),Dr(V),i.mouse("end",V)}function we(V,se){if(t.call(this,V,se)){var Le=V.changedTouches,Ge=e.call(this,V,se),Xe=Le.length,nt,ut;for(nt=0;nt<Xe;++nt)(ut=Ue(this,Ge,V,se,Le[nt].identifier,Le[nt]))&&(rs(V),ut("start",V,Le[nt]))}}function fe(V){var se=V.changedTouches,Le=se.length,Ge,Xe;for(Ge=0;Ge<Le;++Ge)(Xe=i[se[Ge].identifier])&&(Dr(V),Xe("drag",V,se[Ge]))}function Me(V){var se=V.changedTouches,Le=se.length,Ge,Xe;for(p&&clearTimeout(p),p=setTimeout(function(){p=null},500),Ge=0;Ge<Le;++Ge)(Xe=i[se[Ge].identifier])&&(rs(V),Xe("end",V,se[Ge]))}function Ue(V,se,Le,Ge,Xe,nt){var ut=o.copy(),Ee=kn(nt||Le,se),lt,ot,N;if((N=n.call(V,new is("beforestart",{sourceEvent:Le,target:S,identifier:Xe,active:s,x:Ee[0],y:Ee[1],dx:0,dy:0,dispatch:ut}),Ge))!=null)return lt=N.x-Ee[0]||0,ot=N.y-Ee[1]||0,function Pe(re,ke,je){var We=Ee,Qe;switch(re){case"start":i[Xe]=Pe,Qe=s++;break;case"end":delete i[Xe],--s;case"drag":Ee=kn(je||ke,se),Qe=s;break}ut.call(re,V,new is(re,{sourceEvent:ke,subject:N,target:S,identifier:Xe,active:Qe,x:Ee[0]+lt,y:Ee[1]+ot,dx:Ee[0]-We[0],dy:Ee[1]-We[1],dispatch:ut}),Ge)}}return S.filter=function(V){return arguments.length?(t=typeof V=="function"?V:So(!!V),S):t},S.container=function(V){return arguments.length?(e=typeof V=="function"?V:So(V),S):e},S.subject=function(V){return arguments.length?(n=typeof V=="function"?V:So(V),S):n},S.touchable=function(V){return arguments.length?(r=typeof V=="function"?V:So(!!V),S):r},S.on=function(){var V=o.on.apply(o,arguments);return V===o?S:V},S.clickDistance=function(V){return arguments.length?(x=(V=+V)*V,S):Math.sqrt(x)},S}const To=t=>()=>t;function yg(t,{sourceEvent:e,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function zn(t,e,n){this.k=t,this.x=e,this.y=n}zn.prototype={constructor:zn,scale:function(t){return t===1?this:new zn(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new zn(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 vi=new zn(1,0,0);zn.prototype;function os(t){t.stopImmediatePropagation()}function gi(t){t.preventDefault(),t.stopImmediatePropagation()}function xg(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function bg(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function nl(){return this.__zoom||vi}function _g(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Sg(){return navigator.maxTouchPoints||"ontouchstart"in this}function Tg(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],o=t.invertY(e[0][1])-n[0][1],s=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function wg(){var t=xg,e=bg,n=Tg,r=_g,i=Sg,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],f=250,u=dm,l=Vi("start","zoom","end"),p,x,S,z=500,q=150,Te=0,we=10;function fe(N){N.property("__zoom",nl).on("wheel.zoom",Xe,{passive:!1}).on("mousedown.zoom",nt).on("dblclick.zoom",ut).filter(i).on("touchstart.zoom",Ee).on("touchmove.zoom",lt).on("touchend.zoom touchcancel.zoom",ot).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}fe.transform=function(N,Pe,re,ke){var je=N.selection?N.selection():N;je.property("__zoom",nl),N!==je?se(N,Pe,re,ke):je.interrupt().each(function(){Le(this,arguments).event(ke).start().zoom(null,typeof Pe=="function"?Pe.apply(this,arguments):Pe).end()})},fe.scaleBy=function(N,Pe,re,ke){fe.scaleTo(N,function(){var je=this.__zoom.k,We=typeof Pe=="function"?Pe.apply(this,arguments):Pe;return je*We},re,ke)},fe.scaleTo=function(N,Pe,re,ke){fe.transform(N,function(){var je=e.apply(this,arguments),We=this.__zoom,Qe=re==null?V(je):typeof re=="function"?re.apply(this,arguments):re,Ze=We.invert(Qe),dt=typeof Pe=="function"?Pe.apply(this,arguments):Pe;return n(Ue(Me(We,dt),Qe,Ze),je,s)},re,ke)},fe.translateBy=function(N,Pe,re,ke){fe.transform(N,function(){return n(this.__zoom.translate(typeof Pe=="function"?Pe.apply(this,arguments):Pe,typeof re=="function"?re.apply(this,arguments):re),e.apply(this,arguments),s)},null,ke)},fe.translateTo=function(N,Pe,re,ke,je){fe.transform(N,function(){var We=e.apply(this,arguments),Qe=this.__zoom,Ze=ke==null?V(We):typeof ke=="function"?ke.apply(this,arguments):ke;return n(vi.translate(Ze[0],Ze[1]).scale(Qe.k).translate(typeof Pe=="function"?-Pe.apply(this,arguments):-Pe,typeof re=="function"?-re.apply(this,arguments):-re),We,s)},ke,je)};function Me(N,Pe){return Pe=Math.max(o[0],Math.min(o[1],Pe)),Pe===N.k?N:new zn(Pe,N.x,N.y)}function Ue(N,Pe,re){var ke=Pe[0]-re[0]*N.k,je=Pe[1]-re[1]*N.k;return ke===N.x&&je===N.y?N:new zn(N.k,ke,je)}function V(N){return[(+N[0][0]+ +N[1][0])/2,(+N[0][1]+ +N[1][1])/2]}function se(N,Pe,re,ke){N.on("start.zoom",function(){Le(this,arguments).event(ke).start()}).on("interrupt.zoom end.zoom",function(){Le(this,arguments).event(ke).end()}).tween("zoom",function(){var je=this,We=arguments,Qe=Le(je,We).event(ke),Ze=e.apply(je,We),dt=re==null?V(Ze):typeof re=="function"?re.apply(je,We):re,ct=Math.max(Ze[1][0]-Ze[0][0],Ze[1][1]-Ze[0][1]),_t=je.__zoom,st=typeof Pe=="function"?Pe.apply(je,We):Pe,$t=u(_t.invert(dt).concat(ct/_t.k),st.invert(dt).concat(ct/st.k));return function(Ht){if(Ht===1)Ht=st;else{var Qt=$t(Ht),Rn=ct/Qt[2];Ht=new zn(Rn,dt[0]-Qt[0]*Rn,dt[1]-Qt[1]*Rn)}Qe.zoom(null,Ht)}})}function Le(N,Pe,re){return!re&&N.__zooming||new Ge(N,Pe)}function Ge(N,Pe){this.that=N,this.args=Pe,this.active=0,this.sourceEvent=null,this.extent=e.apply(N,Pe),this.taps=0}Ge.prototype={event:function(N){return N&&(this.sourceEvent=N),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(N,Pe){return this.mouse&&N!=="mouse"&&(this.mouse[1]=Pe.invert(this.mouse[0])),this.touch0&&N!=="touch"&&(this.touch0[1]=Pe.invert(this.touch0[0])),this.touch1&&N!=="touch"&&(this.touch1[1]=Pe.invert(this.touch1[0])),this.that.__zoom=Pe,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(N){var Pe=Rt(this.that).datum();l.call(N,this.that,new yg(N,{sourceEvent:this.sourceEvent,target:fe,transform:this.that.__zoom,dispatch:l}),Pe)}};function Xe(N,...Pe){if(!t.apply(this,arguments))return;var re=Le(this,Pe).event(N),ke=this.__zoom,je=Math.max(o[0],Math.min(o[1],ke.k*Math.pow(2,r.apply(this,arguments)))),We=kn(N);if(re.wheel)(re.mouse[0][0]!==We[0]||re.mouse[0][1]!==We[1])&&(re.mouse[1]=ke.invert(re.mouse[0]=We)),clearTimeout(re.wheel);else{if(ke.k===je)return;re.mouse=[We,ke.invert(We)],Qi(this),re.start()}gi(N),re.wheel=setTimeout(Qe,q),re.zoom("mouse",n(Ue(Me(ke,je),re.mouse[0],re.mouse[1]),re.extent,s));function Qe(){re.wheel=null,re.end()}}function nt(N,...Pe){if(S||!t.apply(this,arguments))return;var re=N.currentTarget,ke=Le(this,Pe,!0).event(N),je=Rt(N.view).on("mousemove.zoom",dt,!0).on("mouseup.zoom",ct,!0),We=kn(N,re),Qe=N.clientX,Ze=N.clientY;el(N.view),os(N),ke.mouse=[We,this.__zoom.invert(We)],Qi(this),ke.start();function dt(_t){if(gi(_t),!ke.moved){var st=_t.clientX-Qe,$t=_t.clientY-Ze;ke.moved=st*st+$t*$t>Te}ke.event(_t).zoom("mouse",n(Ue(ke.that.__zoom,ke.mouse[0]=kn(_t,re),ke.mouse[1]),ke.extent,s))}function ct(_t){je.on("mousemove.zoom mouseup.zoom",null),tl(_t.view,ke.moved),gi(_t),ke.event(_t).end()}}function ut(N,...Pe){if(t.apply(this,arguments)){var re=this.__zoom,ke=kn(N.changedTouches?N.changedTouches[0]:N,this),je=re.invert(ke),We=re.k*(N.shiftKey?.5:2),Qe=n(Ue(Me(re,We),ke,je),e.apply(this,Pe),s);gi(N),f>0?Rt(this).transition().duration(f).call(se,Qe,ke,N):Rt(this).call(fe.transform,Qe,ke,N)}}function Ee(N,...Pe){if(t.apply(this,arguments)){var re=N.touches,ke=re.length,je=Le(this,Pe,N.changedTouches.length===ke).event(N),We,Qe,Ze,dt;for(os(N),Qe=0;Qe<ke;++Qe)Ze=re[Qe],dt=kn(Ze,this),dt=[dt,this.__zoom.invert(dt),Ze.identifier],je.touch0?!je.touch1&&je.touch0[2]!==dt[2]&&(je.touch1=dt,je.taps=0):(je.touch0=dt,We=!0,je.taps=1+!!p);p&&(p=clearTimeout(p)),We&&(je.taps<2&&(x=dt[0],p=setTimeout(function(){p=null},z)),Qi(this),je.start())}}function lt(N,...Pe){if(this.__zooming){var re=Le(this,Pe).event(N),ke=N.changedTouches,je=ke.length,We,Qe,Ze,dt;for(gi(N),We=0;We<je;++We)Qe=ke[We],Ze=kn(Qe,this),re.touch0&&re.touch0[2]===Qe.identifier?re.touch0[0]=Ze:re.touch1&&re.touch1[2]===Qe.identifier&&(re.touch1[0]=Ze);if(Qe=re.that.__zoom,re.touch1){var ct=re.touch0[0],_t=re.touch0[1],st=re.touch1[0],$t=re.touch1[1],Ht=(Ht=st[0]-ct[0])*Ht+(Ht=st[1]-ct[1])*Ht,Qt=(Qt=$t[0]-_t[0])*Qt+(Qt=$t[1]-_t[1])*Qt;Qe=Me(Qe,Math.sqrt(Ht/Qt)),Ze=[(ct[0]+st[0])/2,(ct[1]+st[1])/2],dt=[(_t[0]+$t[0])/2,(_t[1]+$t[1])/2]}else if(re.touch0)Ze=re.touch0[0],dt=re.touch0[1];else return;re.zoom("touch",n(Ue(Qe,Ze,dt),re.extent,s))}}function ot(N,...Pe){if(this.__zooming){var re=Le(this,Pe).event(N),ke=N.changedTouches,je=ke.length,We,Qe;for(os(N),S&&clearTimeout(S),S=setTimeout(function(){S=null},z),We=0;We<je;++We)Qe=ke[We],re.touch0&&re.touch0[2]===Qe.identifier?delete re.touch0:re.touch1&&re.touch1[2]===Qe.identifier&&delete re.touch1;if(re.touch1&&!re.touch0&&(re.touch0=re.touch1,delete re.touch1),re.touch0)re.touch0[1]=this.__zoom.invert(re.touch0[0]);else if(re.end(),re.taps===2&&(Qe=kn(Qe,this),Math.hypot(x[0]-Qe[0],x[1]-Qe[1])<we)){var Ze=Rt(this).on("dblclick.zoom");Ze&&Ze.apply(this,arguments)}}}return fe.wheelDelta=function(N){return arguments.length?(r=typeof N=="function"?N:To(+N),fe):r},fe.filter=function(N){return arguments.length?(t=typeof N=="function"?N:To(!!N),fe):t},fe.touchable=function(N){return arguments.length?(i=typeof N=="function"?N:To(!!N),fe):i},fe.extent=function(N){return arguments.length?(e=typeof N=="function"?N:To([[+N[0][0],+N[0][1]],[+N[1][0],+N[1][1]]]),fe):e},fe.scaleExtent=function(N){return arguments.length?(o[0]=+N[0],o[1]=+N[1],fe):[o[0],o[1]]},fe.translateExtent=function(N){return arguments.length?(s[0][0]=+N[0][0],s[1][0]=+N[1][0],s[0][1]=+N[0][1],s[1][1]=+N[1][1],fe):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},fe.constrain=function(N){return arguments.length?(n=N,fe):n},fe.duration=function(N){return arguments.length?(f=+N,fe):f},fe.interpolate=function(N){return arguments.length?(u=N,fe):u},fe.on=function(){var N=l.on.apply(l,arguments);return N===l?fe:N},fe.clickDistance=function(N){return arguments.length?(Te=(N=+N)*N,fe):Math.sqrt(Te)},fe.tapDistance=function(N){return arguments.length?(we=+N,fe):we},fe}class Ag{constructor(e,n){this.eventTransform=vi,this.behavior=wg().scaleExtent([.001,1/0]).on("start",r=>{var o,s;this.isRunning=!0;const i=!!r.sourceEvent;(s=(o=this.config)==null?void 0:o.onZoomStart)==null||s.call(o,r,i)}).on("zoom",r=>{var S,z;this.eventTransform=r.transform;const{eventTransform:{x:i,y:o,k:s},store:{transform:f,screenSize:u}}=this,l=u[0],p=u[1];if(!l||!p)return;Av(f,l,p),Uu(f,f,[i,o]),Qa(f,f,[s,s]),Uu(f,f,[l/2,p/2]),Qa(f,f,[l/2,p/2]),Qa(f,f,[1,-1]);const x=!!r.sourceEvent;(z=(S=this.config)==null?void 0:S.onZoom)==null||z.call(S,r,x)}).on("end",r=>{var o,s;this.isRunning=!1;const i=!!r.sourceEvent;(s=(o=this.config)==null?void 0:o.onZoomEnd)==null||s.call(o,r,i)}),this.isRunning=!1,this.store=e,this.config=n}getTransform(e,n,r=.1){if(e.length===0)return this.eventTransform;const{store:{screenSize:i}}=this,o=i[0],s=i[1],f=Tu(e.map(fe=>fe[0])),u=Tu(e.map(fe=>fe[1]));f[0]=this.store.scaleX(f[0]),f[1]=this.store.scaleX(f[1]),u[0]=this.store.scaleY(u[0]),u[1]=this.store.scaleY(u[1]),f[0]===f[1]&&(f[0]-=.5,f[1]+=.5),u[0]===u[1]&&(u[0]+=.5,u[1]-=.5);const l=o*(1-r*2)/(f[1]-f[0]),p=s*(1-r*2)/(u[0]-u[1]),x=mu(n??Math.min(l,p),...this.behavior.scaleExtent()),S=(f[1]+f[0])/2,z=(u[1]+u[0])/2,q=o/2-S*x,Te=s/2-z*x;return vi.translate(q,Te).scale(x)}getDistanceToPoint(e){const{x:n,y:r,k:i}=this.eventTransform,o=this.getTransform([e],i),s=n-o.x,f=r-o.y;return Math.sqrt(s*s+f*f)}getMiddlePointTransform(e){const{store:{screenSize:n},eventTransform:{x:r,y:i,k:o}}=this,s=n[0],f=n[1],u=(s/2-r)/o,l=(f/2-i)/o,p=this.store.scaleX(e[0]),x=this.store.scaleY(e[1]),S=(u+p)/2,z=(l+x)/2,q=1,Te=s/2-S*q,we=f/2-z*q;return vi.translate(Te,we).scale(q)}convertScreenToSpacePosition(e){const{eventTransform:{x:n,y:r,k:i},store:{screenSize:o}}=this,s=o[0],f=o[1],u=(e[0]-n)/i,l=(e[1]-r)/i,p=[u,f-l];return p[0]-=(s-this.store.adjustedSpaceSize)/2,p[1]-=(f-this.store.adjustedSpaceSize)/2,p}convertSpaceToScreenPosition(e){const n=this.eventTransform.applyX(this.store.scaleX(e[0])),r=this.eventTransform.applyY(this.store.scaleY(e[1]));return[n,r]}convertSpaceToScreenRadius(e){const{config:{scalePointsOnZoom:n},store:{maxPointSize:r},eventTransform:{k:i}}=this;let o=e*2;return n?o*=i:o*=Math.min(5,Math.max(1,i*.01)),Math.min(o,r)/2}}class Eg{constructor(e,n){this.isActive=!1,this.behavior=gg().subject(r=>this.store.hoveredPoint&&!this.store.isSpaceKeyPressed?{x:r.x,y:r.y}:void 0).on("start",r=>{var i,o;this.store.hoveredPoint&&(this.store.draggingPointIndex=this.store.hoveredPoint.index,this.isActive=!0,(o=(i=this.config)==null?void 0:i.onDragStart)==null||o.call(i,r))}).on("drag",r=>{var i,o;(o=(i=this.config)==null?void 0:i.onDrag)==null||o.call(i,r)}).on("end",r=>{var i,o;this.isActive=!1,this.store.draggingPointIndex=void 0,(o=(i=this.config)==null?void 0:i.onDragEnd)==null||o.call(i,r)}),this.store=e,this.config=n}}function Cg(t){const e=document.createElement("div");return e.style.cssText=`
|
|
1473
1591
|
color: var(--cosmosgl-error-message-color);
|
|
1474
1592
|
padding: 0em 2em;
|
|
1475
1593
|
position: absolute;
|
|
@@ -1480,7 +1598,7 @@ void main() {
|
|
|
1480
1598
|
font-size: 1rem;
|
|
1481
1599
|
text-align: center;
|
|
1482
1600
|
user-select: none;
|
|
1483
|
-
`,e.textContent="Sorry, your device or browser does not support the required WebGL features for this visualization",t.appendChild(e),e}class Pg{constructor(e,n){this.config=new a0,this.graph=new L0(this.config),this.requestAnimationFrameId=0,this.isRightClickMouse=!1,this.store=new lg,this.zoomInstance=new wg(this.store,this.config),this.dragInstance=new Ag(this.store,this.config),this._findHoveredPointExecutionCount=0,this._isMouseOnCanvas=!1,this._isFirstRenderAfterInit=!0,this._needsPointPositionsUpdate=!1,this._needsPointColorUpdate=!1,this._needsPointSizeUpdate=!1,this._needsPointShapeUpdate=!1,this._needsLinksUpdate=!1,this._needsLinkColorUpdate=!1,this._needsLinkWidthUpdate=!1,this._needsLinkArrowUpdate=!1,this._needsPointClusterUpdate=!1,this._needsForceManyBodyUpdate=!1,this._needsForceLinkUpdate=!1,this._needsForceCenterUpdate=!1,this._isDestroyed=!1,n&&this.config.init(n),this.store.div=e;const r=document.createElement("canvas");r.style.width="100%",r.style.height="100%",this.store.div.appendChild(r),this.addAttribution();const i=r.clientWidth,o=r.clientHeight;r.width=i*this.config.pixelRatio,r.height=o*this.config.pixelRatio,this.canvas=r;let s;try{s=wp({canvas:this.canvas,attributes:{antialias:!1,preserveDrawingBuffer:!0},extensions:["OES_texture_float","ANGLE_instanced_arrays"]})}catch{Eg(this.store.div),this._isDestroyed=!0;return}this.reglInstance=s,this.store.adjustSpaceSize(this.config.spaceSize,this.reglInstance.limits.maxTextureSize),this.store.updateScreenSize(i,o),this.canvasD3Selection=zt(this.canvas),this.canvasD3Selection.on("mouseenter.cosmos",()=>{this._isMouseOnCanvas=!0}).on("mousemove.cosmos",()=>{this._isMouseOnCanvas=!0}).on("mouseleave.cosmos",()=>{this._isMouseOnCanvas=!1}),zt(document).on("keydown.cosmos",f=>{f.code==="Space"&&(this.store.isSpaceKeyPressed=!0)}).on("keyup.cosmos",f=>{f.code==="Space"&&(this.store.isSpaceKeyPressed=!1)}),this.zoomInstance.behavior.on("start.detect",f=>{this.currentEvent=f}).on("zoom.detect",f=>{!!f.sourceEvent&&this.updateMousePosition(f.sourceEvent),this.currentEvent=f}).on("end.detect",f=>{this.currentEvent=f}),this.dragInstance.behavior.on("start.detect",f=>{this.currentEvent=f,this.updateCanvasCursor()}).on("drag.detect",f=>{this.dragInstance.isActive&&this.updateMousePosition(f),this.currentEvent=f}).on("end.detect",f=>{this.currentEvent=f,this.updateCanvasCursor()}),this.canvasD3Selection.call(this.dragInstance.behavior).call(this.zoomInstance.behavior).on("click",this.onClick.bind(this)).on("mousemove",this.onMouseMove.bind(this)).on("contextmenu",this.onRightClickMouse.bind(this)),(!this.config.enableZoom||!this.config.enableDrag)&&this.updateZoomDragBehaviors(),this.setZoomLevel(this.config.initialZoomLevel??1),this.store.maxPointSize=(this.reglInstance.limits.pointSizeDims[1]??ns)/this.config.pixelRatio,this.points=new Sv(this.reglInstance,this.config,this.store,this.graph),this.lines=new fv(this.reglInstance,this.config,this.store,this.graph,this.points),this.config.enableSimulation&&(this.forceGravity=new h0(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceCenter=new l0(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceManyBody=this.config.useClassicQuadtree?new y0(this.reglInstance,this.config,this.store,this.graph,this.points):new v0(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceLinkIncoming=new vu(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceLinkOutgoing=new vu(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceMouse=new b0(this.reglInstance,this.config,this.store,this.graph,this.points)),this.clusters=new w0(this.reglInstance,this.config,this.store,this.graph,this.points),this.store.backgroundColor=Vn(this.config.backgroundColor),this.config.hoveredPointRingColor&&this.store.setHoveredPointRingColor(this.config.hoveredPointRingColor),this.config.focusedPointRingColor&&this.store.setFocusedPointRingColor(this.config.focusedPointRingColor),this.config.focusedPointIndex!==void 0&&this.store.setFocusedPoint(this.config.focusedPointIndex),this.config.pointGreyoutColor&&this.store.setGreyoutPointColor(this.config.pointGreyoutColor),this.config.showFPSMonitor&&(this.fpsMonitor=new bu(this.canvas)),this.config.randomSeed!==void 0&&this.store.addRandomSeed(this.config.randomSeed)}get progress(){return this._isDestroyed?0:this.store.simulationProgress}get isSimulationRunning(){return this._isDestroyed?!1:this.store.isSimulationRunning}get maxPointSize(){return this._isDestroyed?0:this.store.maxPointSize}setConfig(e){var r;if(this._isDestroyed||!this.reglInstance||!this.points||!this.lines||!this.clusters)return;const n={...this.config};this.config.init(e),n.pointColor!==this.config.pointColor&&(this.graph.updatePointColor(),this.points.updateColor()),n.pointSize!==this.config.pointSize&&(this.graph.updatePointSize(),this.points.updateSize()),n.linkColor!==this.config.linkColor&&(this.graph.updateLinkColor(),this.lines.updateColor()),n.linkWidth!==this.config.linkWidth&&(this.graph.updateLinkWidth(),this.lines.updateWidth()),n.linkArrows!==this.config.linkArrows&&(this.graph.updateArrows(),this.lines.updateArrow()),(n.curvedLinkSegments!==this.config.curvedLinkSegments||n.curvedLinks!==this.config.curvedLinks)&&this.lines.updateCurveLineGeometry(),n.backgroundColor!==this.config.backgroundColor&&(this.store.backgroundColor=Vn(this.config.backgroundColor)),n.hoveredPointRingColor!==this.config.hoveredPointRingColor&&this.store.setHoveredPointRingColor(this.config.hoveredPointRingColor),n.focusedPointRingColor!==this.config.focusedPointRingColor&&this.store.setFocusedPointRingColor(this.config.focusedPointRingColor),n.pointGreyoutColor!==this.config.pointGreyoutColor&&this.store.setGreyoutPointColor(this.config.pointGreyoutColor),n.focusedPointIndex!==this.config.focusedPointIndex&&this.store.setFocusedPoint(this.config.focusedPointIndex),(n.spaceSize!==this.config.spaceSize||n.simulationRepulsionQuadtreeLevels!==this.config.simulationRepulsionQuadtreeLevels)&&(this.store.adjustSpaceSize(this.config.spaceSize,this.reglInstance.limits.maxTextureSize),this.resizeCanvas(!0),this.update(this.store.isSimulationRunning?this.store.alpha:0)),n.showFPSMonitor!==this.config.showFPSMonitor&&(this.config.showFPSMonitor?this.fpsMonitor=new bu(this.canvas):((r=this.fpsMonitor)==null||r.destroy(),this.fpsMonitor=void 0)),n.pixelRatio!==this.config.pixelRatio&&(this.store.maxPointSize=(this.reglInstance.limits.pointSizeDims[1]??ns)/this.config.pixelRatio),(n.enableZoom!==this.config.enableZoom||n.enableDrag!==this.config.enableDrag)&&this.updateZoomDragBehaviors()}setPointPositions(e,n){this._isDestroyed||!this.points||(this.graph.inputPointPositions=e,this.points.dontRescale=n,this._needsPointPositionsUpdate=!0,this._needsLinksUpdate=!0,this._needsPointColorUpdate=!0,this._needsPointSizeUpdate=!0,this._needsPointShapeUpdate=!0,this._needsPointClusterUpdate=!0,this._needsForceManyBodyUpdate=!0,this._needsForceLinkUpdate=!0,this._needsForceCenterUpdate=!0)}setPointColors(e){this._isDestroyed||(this.graph.inputPointColors=e,this._needsPointColorUpdate=!0)}getPointColors(){return this._isDestroyed?new Float32Array:this.graph.pointColors??new Float32Array}setPointSizes(e){this._isDestroyed||(this.graph.inputPointSizes=e,this._needsPointSizeUpdate=!0)}setPointShapes(e){this._isDestroyed||(this.graph.inputPointShapes=e,this._needsPointShapeUpdate=!0)}getPointSizes(){return this._isDestroyed?new Float32Array:this.graph.pointSizes??new Float32Array}setLinks(e){this._isDestroyed||(this.graph.inputLinks=e,this._needsLinksUpdate=!0,this._needsLinkColorUpdate=!0,this._needsLinkWidthUpdate=!0,this._needsLinkArrowUpdate=!0,this._needsForceLinkUpdate=!0)}setLinkColors(e){this._isDestroyed||(this.graph.inputLinkColors=e,this._needsLinkColorUpdate=!0)}getLinkColors(){return this._isDestroyed?new Float32Array:this.graph.linkColors??new Float32Array}setLinkWidths(e){this._isDestroyed||(this.graph.inputLinkWidths=e,this._needsLinkWidthUpdate=!0)}getLinkWidths(){return this._isDestroyed?new Float32Array:this.graph.linkWidths??new Float32Array}setLinkArrows(e){this._isDestroyed||(this.graph.linkArrowsBoolean=e,this._needsLinkArrowUpdate=!0)}setLinkStrength(e){this._isDestroyed||(this.graph.inputLinkStrength=e,this._needsForceLinkUpdate=!0)}setPointClusters(e){this._isDestroyed||(this.graph.inputPointClusters=e,this._needsPointClusterUpdate=!0)}setClusterPositions(e){this._isDestroyed||(this.graph.inputClusterPositions=e,this._needsPointClusterUpdate=!0)}setPointClusterStrength(e){this._isDestroyed||(this.graph.inputClusterStrength=e,this._needsPointClusterUpdate=!0)}render(e){if(this._isDestroyed||!this.reglInstance)return;this.graph.update();const{fitViewOnInit:n,fitViewDelay:r,fitViewPadding:i,fitViewDuration:o,fitViewByPointsInRect:s,fitViewByPointIndices:f,initialZoomLevel:u}=this.config;if(!this.graph.pointsNumber&&!this.graph.linksNumber){this.stopFrames(),zt(this.canvas).style("cursor",null),this.reglInstance.clear({color:this.store.backgroundColor,depth:1,stencil:0});return}this._isFirstRenderAfterInit&&n&&u===void 0&&(this._fitViewOnInitTimeoutID=window.setTimeout(()=>{f?this.fitViewByPointIndices(f,o,i):s?this.setZoomTransformByPointPositions(s,o,void 0,i):this.fitView(o,i)},r)),this._isFirstRenderAfterInit=!1,this.update(e)}zoomToPointByIndex(e,n=700,r=Mp,i=!0){if(this._isDestroyed||!this.reglInstance||!this.points||!this.canvasD3Selection)return;const{store:{screenSize:o}}=this,s=tn(this.reglInstance,this.points.currentPositionFbo);if(e===void 0)return;const f=s[e*4+0],u=s[e*4+1];if(f===void 0||u===void 0)return;const l=this.zoomInstance.getDistanceToPoint([f,u]),p=i?r:Math.max(this.getZoomLevel(),r);if(l<Math.min(o[0],o[1]))this.setZoomTransformByPointPositions([f,u],n,p);else{const x=this.zoomInstance.getTransform([[f,u]],p),S=this.zoomInstance.getMiddlePointTransform([f,u]);this.canvasD3Selection.transition().ease(dp).duration(n/2).call(this.zoomInstance.behavior.transform,S).transition().ease(mp).duration(n/2).call(this.zoomInstance.behavior.transform,x)}}zoom(e,n=0){this._isDestroyed||this.setZoomLevel(e,n)}setZoomLevel(e,n=0){this._isDestroyed||!this.canvasD3Selection||(n===0?this.canvasD3Selection.call(this.zoomInstance.behavior.scaleTo,e):this.canvasD3Selection.transition().duration(n).call(this.zoomInstance.behavior.scaleTo,e))}getZoomLevel(){return this._isDestroyed?0:this.zoomInstance.eventTransform.k}getPointPositions(){if(this._isDestroyed||!this.reglInstance||!this.points)return[];if(this.graph.pointsNumber===void 0)return[];const e=[],n=tn(this.reglInstance,this.points.currentPositionFbo);e.length=this.graph.pointsNumber*2;for(let r=0;r<this.graph.pointsNumber;r+=1){const i=n[r*4+0],o=n[r*4+1];i!==void 0&&o!==void 0&&(e[r*2]=i,e[r*2+1]=o)}return e}getClusterPositions(){if(this._isDestroyed||!this.reglInstance||!this.clusters)return[];if(this.graph.pointClusters===void 0||this.clusters.clusterCount===void 0)return[];this.clusters.calculateCentermass();const e=[],n=tn(this.reglInstance,this.clusters.centermassFbo);e.length=this.clusters.clusterCount*2;for(let r=0;r<e.length/2;r+=1){const i=n[r*4+0],o=n[r*4+1],s=n[r*4+2];i!==void 0&&o!==void 0&&s!==void 0&&(e[r*2]=i/s,e[r*2+1]=o/s)}return e}fitView(e=250,n=.1){this._isDestroyed||this.setZoomTransformByPointPositions(this.getPointPositions(),e,void 0,n)}fitViewByPointIndices(e,n=250,r=.1){if(this._isDestroyed)return;const i=this.getPointPositions(),o=new Array(e.length*2);for(const[s,f]of e.entries())o[s*2]=i[f*2],o[s*2+1]=i[f*2+1];this.setZoomTransformByPointPositions(o,n,void 0,r)}fitViewByPointPositions(e,n=250,r=.1){this._isDestroyed||this.setZoomTransformByPointPositions(e,n,void 0,r)}getPointsInRect(e){if(this._isDestroyed||!this.reglInstance||!this.points)return new Float32Array;const n=this.store.screenSize[1];return this.store.selectedArea=[[e[0][0],n-e[1][1]],[e[1][0],n-e[0][1]]],this.points.findPointsOnAreaSelection(),tn(this.reglInstance,this.points.selectedFbo).map((i,o)=>o%4===0&&i!==0?o/4:-1).filter(i=>i!==-1)}getPointsInRange(e){return this.getPointsInRect(e)}getPointsInPolygon(e){if(this._isDestroyed||!this.reglInstance||!this.points)return new Float32Array;if(e.length<3)return new Float32Array;const n=this.store.screenSize[1],r=e.map(([o,s])=>[o,n-s]);return this.points.updatePolygonPath(r),this.points.findPointsOnPolygonSelection(),tn(this.reglInstance,this.points.selectedFbo).map((o,s)=>s%4===0&&o!==0?s/4:-1).filter(o=>o!==-1)}selectPointsInRect(e){if(!(this._isDestroyed||!this.reglInstance||!this.points)){if(e){const n=this.store.screenSize[1];this.store.selectedArea=[[e[0][0],n-e[1][1]],[e[1][0],n-e[0][1]]],this.points.findPointsOnAreaSelection();const r=tn(this.reglInstance,this.points.selectedFbo);this.store.selectedIndices=r.map((i,o)=>o%4===0&&i!==0?o/4:-1).filter(i=>i!==-1)}else this.store.selectedIndices=null;this.points.updateGreyoutStatus()}}selectPointsInRange(e){return this.selectPointsInRect(e)}selectPointsInPolygon(e){if(!(this._isDestroyed||!this.reglInstance||!this.points)){if(e){if(e.length<3){console.warn("Polygon path requires at least 3 points to form a polygon.");return}const n=this.store.screenSize[1],r=e.map(([o,s])=>[o,n-s]);this.points.updatePolygonPath(r),this.points.findPointsOnPolygonSelection();const i=tn(this.reglInstance,this.points.selectedFbo);this.store.selectedIndices=i.map((o,s)=>s%4===0&&o!==0?s/4:-1).filter(o=>o!==-1)}else this.store.selectedIndices=null;this.points.updateGreyoutStatus()}}selectPointByIndex(e,n=!1){if(!this._isDestroyed)if(n){const r=this.graph.getAdjacentIndices(e)??[];this.selectPointsByIndices([e,...r])}else this.selectPointsByIndices([e])}selectPointsByIndices(e){this._isDestroyed||!this.points||(e?e.length===0?this.store.selectedIndices=new Float32Array:this.store.selectedIndices=new Float32Array(e.filter(n=>n!==void 0)):this.store.selectedIndices=null,this.points.updateGreyoutStatus())}unselectPoints(){this._isDestroyed||!this.points||(this.store.selectedIndices=null,this.points.updateGreyoutStatus())}getSelectedIndices(){if(this._isDestroyed)return null;const{selectedIndices:e}=this.store;return e?Array.from(e):null}getAdjacentIndices(e){if(!this._isDestroyed)return this.graph.getAdjacentIndices(e)}spaceToScreenPosition(e){return this._isDestroyed?[0,0]:this.zoomInstance.convertSpaceToScreenPosition(e)}screenToSpacePosition(e){return this._isDestroyed?[0,0]:this.zoomInstance.convertScreenToSpacePosition(e)}spaceToScreenRadius(e){return this._isDestroyed?0:this.zoomInstance.convertSpaceToScreenRadius(e)}getPointRadiusByIndex(e){var n;if(!this._isDestroyed)return(n=this.graph.pointSizes)==null?void 0:n[e]}trackPointPositionsByIndices(e){this._isDestroyed||!this.points||this.points.trackPointsByIndices(e)}getTrackedPointPositionsMap(){return this._isDestroyed||!this.points?new Map:this.points.getTrackedPositionsMap()}getTrackedPointPositionsArray(){return this._isDestroyed||!this.points?[]:this.points.getTrackedPositionsArray()}getSampledPointPositionsMap(){return this._isDestroyed||!this.points?new Map:this.points.getSampledPointPositionsMap()}getSampledPoints(){return this._isDestroyed||!this.points?{indices:[],positions:[]}:this.points.getSampledPoints()}getScaleX(){if(!(this._isDestroyed||!this.points))return this.points.scaleX}getScaleY(){if(!(this._isDestroyed||!this.points))return this.points.scaleY}start(e=1){var n,r;this._isDestroyed||this.graph.pointsNumber&&(e>0&&(this.store.isSimulationRunning=!0,this.store.simulationProgress=0,(r=(n=this.config).onSimulationStart)==null||r.call(n)),this.store.alpha=e,this.stopFrames(),this.frame())}pause(){var e,n;this._isDestroyed||(this.store.isSimulationRunning=!1,(n=(e=this.config).onSimulationPause)==null||n.call(e))}restart(){var e,n;this._isDestroyed||(this.store.isSimulationRunning=!0,(n=(e=this.config).onSimulationRestart)==null||n.call(e))}step(){this._isDestroyed||(this.store.isSimulationRunning=!1,this.stopFrames(),this.frame())}destroy(){var e,n,r,i;this._isDestroyed||!this.reglInstance||(window.clearTimeout(this._fitViewOnInitTimeoutID),this.stopFrames(),this.canvasD3Selection&&this.canvasD3Selection.on("mouseenter.cosmos",null).on("mousemove.cosmos",null).on("mouseleave.cosmos",null).on("click",null).on("mousemove",null).on("contextmenu",null).on(".drag",null).on(".zoom",null),zt(document).on("keydown.cosmos",null).on("keyup.cosmos",null),(e=this.zoomInstance)!=null&&e.behavior&&this.zoomInstance.behavior.on("start.detect",null).on("zoom.detect",null).on("end.detect",null),(n=this.dragInstance)!=null&&n.behavior&&this.dragInstance.behavior.on("start.detect",null).on("drag.detect",null).on("end.detect",null),(r=this.fpsMonitor)==null||r.destroy(),this.reglInstance.destroy(),this.reglInstance.clear({color:this.store.backgroundColor,depth:1,stencil:0}),this.canvas&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas),this.attributionDivElement&&this.attributionDivElement.parentNode&&this.attributionDivElement.parentNode.removeChild(this.attributionDivElement),(i=document.getElementById("gl-bench-style"))==null||i.remove(),this.canvasD3Selection=void 0,this.reglInstance=void 0,this.attributionDivElement=void 0,this._isDestroyed=!0)}create(){var e,n,r,i,o;this._isDestroyed||!this.points||!this.lines||(this._needsPointPositionsUpdate&&this.points.updatePositions(),this._needsPointColorUpdate&&this.points.updateColor(),this._needsPointSizeUpdate&&this.points.updateSize(),this._needsPointShapeUpdate&&this.points.updateShape(),this._needsLinksUpdate&&this.lines.updatePointsBuffer(),this._needsLinkColorUpdate&&this.lines.updateColor(),this._needsLinkWidthUpdate&&this.lines.updateWidth(),this._needsLinkArrowUpdate&&this.lines.updateArrow(),this._needsForceManyBodyUpdate&&((e=this.forceManyBody)==null||e.create()),this._needsForceLinkUpdate&&((n=this.forceLinkIncoming)==null||n.create(Ha.INCOMING),(r=this.forceLinkOutgoing)==null||r.create(Ha.OUTGOING)),this._needsForceCenterUpdate&&((i=this.forceCenter)==null||i.create()),this._needsPointClusterUpdate&&((o=this.clusters)==null||o.create()),this._needsPointPositionsUpdate=!1,this._needsPointColorUpdate=!1,this._needsPointSizeUpdate=!1,this._needsPointShapeUpdate=!1,this._needsLinksUpdate=!1,this._needsLinkColorUpdate=!1,this._needsLinkWidthUpdate=!1,this._needsLinkArrowUpdate=!1,this._needsPointClusterUpdate=!1,this._needsForceManyBodyUpdate=!1,this._needsForceLinkUpdate=!1,this._needsForceCenterUpdate=!1)}flatten(e){return e.flat()}pair(e){const n=new Array(e.length/2);for(let r=0;r<e.length/2;r++)n[r]=[e[r*2],e[r*2+1]];return n}update(e=this.store.alpha){const{graph:n}=this;this.store.pointsTextureSize=Math.ceil(Math.sqrt(n.pointsNumber??0)),this.store.linksTextureSize=Math.ceil(Math.sqrt((n.linksNumber??0)*2)),this.create(),this.initPrograms(),this.store.hoveredPoint=void 0,this.start(e)}initPrograms(){var e,n,r,i,o,s;this._isDestroyed||!this.points||!this.lines||!this.clusters||(this.points.initPrograms(),this.lines.initPrograms(),(e=this.forceGravity)==null||e.initPrograms(),(n=this.forceLinkIncoming)==null||n.initPrograms(),(r=this.forceLinkOutgoing)==null||r.initPrograms(),(i=this.forceMouse)==null||i.initPrograms(),(o=this.forceManyBody)==null||o.initPrograms(),(s=this.forceCenter)==null||s.initPrograms(),this.clusters.initPrograms())}frame(){const{config:{simulationGravity:e,simulationCenter:n,renderLinks:r,enableSimulation:i},store:{alpha:o,isSimulationRunning:s}}=this;o<ts&&s&&this.end(),this.store.pointsTextureSize&&(this.requestAnimationFrameId=window.requestAnimationFrame(f=>{var u,l,p,x,S,D,Y,Ee,Te,se,Ue,He,H,fe,Re,Ge,Ye,at,ut,Ae,lt,it,N,Ce,re,ke;(u=this.fpsMonitor)==null||u.begin(),this.resizeCanvas(),this.dragInstance.isActive||this.findHoveredPoint(),i&&(this.isRightClickMouse&&this.config.enableRightClickRepulsion&&((l=this.forceMouse)==null||l.run(),(p=this.points)==null||p.updatePosition()),s&&!(this.zoomInstance.isRunning&&!this.config.enableSimulationDuringZoom)&&(e&&((x=this.forceGravity)==null||x.run(),(S=this.points)==null||S.updatePosition()),n&&((D=this.forceCenter)==null||D.run(),(Y=this.points)==null||Y.updatePosition()),(Ee=this.forceManyBody)==null||Ee.run(),(Te=this.points)==null||Te.updatePosition(),this.store.linksTextureSize&&((se=this.forceLinkIncoming)==null||se.run(),(Ue=this.points)==null||Ue.updatePosition(),(He=this.forceLinkOutgoing)==null||He.run(),(H=this.points)==null||H.updatePosition()),(this.graph.pointClusters||this.graph.clusterPositions)&&((fe=this.clusters)==null||fe.run(),(Re=this.points)==null||Re.updatePosition()),this.store.alpha+=this.store.addAlpha(this.config.simulationDecay??We.simulation.decay),this.isRightClickMouse&&this.config.enableRightClickRepulsion&&(this.store.alpha=Math.max(this.store.alpha,.1)),this.store.simulationProgress=Math.sqrt(Math.min(1,ts/this.store.alpha)),(ut=(at=this.config).onSimulationTick)==null||ut.call(at,this.store.alpha,(Ge=this.store.hoveredPoint)==null?void 0:Ge.index,(Ye=this.store.hoveredPoint)==null?void 0:Ye.position)),(Ae=this.points)==null||Ae.trackPoints()),(lt=this.reglInstance)==null||lt.clear({color:this.store.backgroundColor,depth:1,stencil:0}),r&&this.store.linksTextureSize&&((it=this.lines)==null||it.draw()),(N=this.points)==null||N.draw(),this.dragInstance.isActive&&((Ce=this.points)==null||Ce.drag(),(re=this.points)==null||re.drag()),(ke=this.fpsMonitor)==null||ke.end(f),this.currentEvent=void 0,this.frame()}))}stopFrames(){this.requestAnimationFrameId&&window.cancelAnimationFrame(this.requestAnimationFrameId)}end(){var e,n;this.store.isSimulationRunning=!1,this.store.simulationProgress=1,(n=(e=this.config).onSimulationEnd)==null||n.call(e)}onClick(e){var n,r,i,o;(o=(i=this.config).onClick)==null||o.call(i,(n=this.store.hoveredPoint)==null?void 0:n.index,(r=this.store.hoveredPoint)==null?void 0:r.position,e)}updateMousePosition(e){if(!e)return;const n=e.offsetX??e.x,r=e.offsetY??e.y;n===void 0||r===void 0||(this.store.mousePosition=this.zoomInstance.convertScreenToSpacePosition([n,r]),this.store.screenMousePosition=[n,this.store.screenSize[1]-r])}onMouseMove(e){var n,r,i,o;this.currentEvent=e,this.updateMousePosition(e),this.isRightClickMouse=e.which===3,(o=(i=this.config).onMouseMove)==null||o.call(i,(n=this.store.hoveredPoint)==null?void 0:n.index,(r=this.store.hoveredPoint)==null?void 0:r.position,this.currentEvent)}onRightClickMouse(e){e.preventDefault()}resizeCanvas(e=!1){var s,f,u;const n=this.canvas.width,r=this.canvas.height,i=this.canvas.clientWidth,o=this.canvas.clientHeight;if(e||n!==i*this.config.pixelRatio||r!==o*this.config.pixelRatio){const[l,p]=this.store.screenSize,{k:x}=this.zoomInstance.eventTransform,S=this.zoomInstance.convertScreenToSpacePosition([l/2,p/2]);this.store.updateScreenSize(i,o),this.canvas.width=i*this.config.pixelRatio,this.canvas.height=o*this.config.pixelRatio,(s=this.reglInstance)==null||s.poll(),(f=this.canvasD3Selection)==null||f.call(this.zoomInstance.behavior.transform,this.zoomInstance.getTransform([S],x)),(u=this.points)==null||u.updateSampledPointsGrid()}}setZoomTransformByPointPositions(e,n=250,r,i){var s;this.resizeCanvas();const o=this.zoomInstance.getTransform(this.pair(e),r,i);(s=this.canvasD3Selection)==null||s.transition().ease(pp).duration(n).call(this.zoomInstance.behavior.transform,o)}updateZoomDragBehaviors(){var e,n,r,i;this.config.enableDrag?(e=this.canvasD3Selection)==null||e.call(this.dragInstance.behavior):(n=this.canvasD3Selection)==null||n.call(this.dragInstance.behavior).on(".drag",null),this.config.enableZoom?(r=this.canvasD3Selection)==null||r.call(this.zoomInstance.behavior):(i=this.canvasD3Selection)==null||i.call(this.zoomInstance.behavior).on("wheel.zoom",null)}findHoveredPoint(){var o,s,f,u,l;if(!this._isMouseOnCanvas||!this.reglInstance||!this.points)return;if(this._findHoveredPointExecutionCount<2){this._findHoveredPointExecutionCount+=1;return}this._findHoveredPointExecutionCount=0,this.points.findHoveredPoint();let e=!1,n=!1;const r=tn(this.reglInstance,this.points.hoveredFbo);if(r[1]){const p=r[0];((o=this.store.hoveredPoint)==null?void 0:o.index)!==p&&(e=!0);const x=r[2],S=r[3];this.store.hoveredPoint={index:p,position:[x,S]}}else this.store.hoveredPoint&&(n=!0),this.store.hoveredPoint=void 0;e&&this.store.hoveredPoint&&((f=(s=this.config).onPointMouseOver)==null||f.call(s,this.store.hoveredPoint.index,this.store.hoveredPoint.position,this.currentEvent)),n&&((l=(u=this.config).onPointMouseOut)==null||l.call(u,this.currentEvent)),this.updateCanvasCursor()}updateCanvasCursor(){const{hoveredPointCursor:e}=this.config;this.dragInstance.isActive?zt(this.canvas).style("cursor","grabbing"):this.store.hoveredPoint?!this.config.enableDrag||this.store.isSpaceKeyPressed?zt(this.canvas).style("cursor",e):zt(this.canvas).style("cursor","grab"):zt(this.canvas).style("cursor",null)}addAttribution(){var e;this.config.attribution&&(this.attributionDivElement=document.createElement("div"),this.attributionDivElement.style.cssText=`
|
|
1601
|
+
`,e.textContent="Sorry, your device or browser does not support the required WebGL features for this visualization",t.appendChild(e),e}class Pg{constructor(e,n){this.config=new a0,this.graph=new I0(this.config),this.requestAnimationFrameId=0,this.isRightClickMouse=!1,this.store=new cg,this.zoomInstance=new Ag(this.store,this.config),this.dragInstance=new Eg(this.store,this.config),this._findHoveredPointExecutionCount=0,this._isMouseOnCanvas=!1,this._isFirstRenderAfterInit=!0,this.isPointPositionsUpdateNeeded=!1,this.isPointColorUpdateNeeded=!1,this.isPointSizeUpdateNeeded=!1,this.isPointShapeUpdateNeeded=!1,this.isPointImageIndicesUpdateNeeded=!1,this.isLinksUpdateNeeded=!1,this.isLinkColorUpdateNeeded=!1,this.isLinkWidthUpdateNeeded=!1,this.isLinkArrowUpdateNeeded=!1,this.isPointClusterUpdateNeeded=!1,this.isForceManyBodyUpdateNeeded=!1,this.isForceLinkUpdateNeeded=!1,this.isForceCenterUpdateNeeded=!1,this.isPointImageSizesUpdateNeeded=!1,this._isDestroyed=!1,n&&this.config.init(n),this.store.div=e;const r=document.createElement("canvas");r.style.width="100%",r.style.height="100%",this.store.div.appendChild(r),this.addAttribution();const i=r.clientWidth,o=r.clientHeight;r.width=i*this.config.pixelRatio,r.height=o*this.config.pixelRatio,this.canvas=r;let s;try{s=wp({canvas:this.canvas,attributes:{antialias:!1,preserveDrawingBuffer:!0},extensions:["OES_texture_float","ANGLE_instanced_arrays"]})}catch{Cg(this.store.div),this._isDestroyed=!0;return}this.reglInstance=s,this.store.adjustSpaceSize(this.config.spaceSize,this.reglInstance.limits.maxTextureSize),this.store.setWebGLMaxTextureSize(this.reglInstance.limits.maxTextureSize),this.store.updateScreenSize(i,o),this.canvasD3Selection=Rt(this.canvas),this.canvasD3Selection.on("mouseenter.cosmos",()=>{this._isMouseOnCanvas=!0}).on("mousemove.cosmos",()=>{this._isMouseOnCanvas=!0}).on("mouseleave.cosmos",()=>{this._isMouseOnCanvas=!1}),Rt(document).on("keydown.cosmos",f=>{f.code==="Space"&&(this.store.isSpaceKeyPressed=!0)}).on("keyup.cosmos",f=>{f.code==="Space"&&(this.store.isSpaceKeyPressed=!1)}),this.zoomInstance.behavior.on("start.detect",f=>{this.currentEvent=f}).on("zoom.detect",f=>{!!f.sourceEvent&&this.updateMousePosition(f.sourceEvent),this.currentEvent=f}).on("end.detect",f=>{this.currentEvent=f}),this.dragInstance.behavior.on("start.detect",f=>{this.currentEvent=f,this.updateCanvasCursor()}).on("drag.detect",f=>{this.dragInstance.isActive&&this.updateMousePosition(f),this.currentEvent=f}).on("end.detect",f=>{this.currentEvent=f,this.updateCanvasCursor()}),this.canvasD3Selection.call(this.dragInstance.behavior).call(this.zoomInstance.behavior).on("click",this.onClick.bind(this)).on("mousemove",this.onMouseMove.bind(this)).on("contextmenu",this.onRightClickMouse.bind(this)),(!this.config.enableZoom||!this.config.enableDrag)&&this.updateZoomDragBehaviors(),this.setZoomLevel(this.config.initialZoomLevel??1),this.store.maxPointSize=(this.reglInstance.limits.pointSizeDims[1]??ns)/this.config.pixelRatio,this.points=new Tv(this.reglInstance,this.config,this.store,this.graph),this.lines=new fv(this.reglInstance,this.config,this.store,this.graph,this.points),this.config.enableSimulation&&(this.forceGravity=new h0(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceCenter=new l0(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceManyBody=this.config.useClassicQuadtree?new y0(this.reglInstance,this.config,this.store,this.graph,this.points):new v0(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceLinkIncoming=new vu(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceLinkOutgoing=new vu(this.reglInstance,this.config,this.store,this.graph,this.points),this.forceMouse=new b0(this.reglInstance,this.config,this.store,this.graph,this.points)),this.clusters=new w0(this.reglInstance,this.config,this.store,this.graph,this.points),this.store.backgroundColor=Vn(this.config.backgroundColor),this.config.hoveredPointRingColor&&this.store.setHoveredPointRingColor(this.config.hoveredPointRingColor),this.config.focusedPointRingColor&&this.store.setFocusedPointRingColor(this.config.focusedPointRingColor),this.config.focusedPointIndex!==void 0&&this.store.setFocusedPoint(this.config.focusedPointIndex),this.config.pointGreyoutColor&&this.store.setGreyoutPointColor(this.config.pointGreyoutColor),this.config.showFPSMonitor&&(this.fpsMonitor=new bu(this.canvas)),this.config.randomSeed!==void 0&&this.store.addRandomSeed(this.config.randomSeed)}get progress(){return this._isDestroyed?0:this.store.simulationProgress}get isSimulationRunning(){return this._isDestroyed?!1:this.store.isSimulationRunning}get maxPointSize(){return this._isDestroyed?0:this.store.maxPointSize}setConfig(e){var r;if(this._isDestroyed||!this.reglInstance||!this.points||!this.lines||!this.clusters)return;const n={...this.config};this.config.init(e),n.pointColor!==this.config.pointColor&&(this.graph.updatePointColor(),this.points.updateColor()),n.pointSize!==this.config.pointSize&&(this.graph.updatePointSize(),this.points.updateSize()),n.linkColor!==this.config.linkColor&&(this.graph.updateLinkColor(),this.lines.updateColor()),n.linkWidth!==this.config.linkWidth&&(this.graph.updateLinkWidth(),this.lines.updateWidth()),n.linkArrows!==this.config.linkArrows&&(this.graph.updateArrows(),this.lines.updateArrow()),(n.curvedLinkSegments!==this.config.curvedLinkSegments||n.curvedLinks!==this.config.curvedLinks)&&this.lines.updateCurveLineGeometry(),n.backgroundColor!==this.config.backgroundColor&&(this.store.backgroundColor=Vn(this.config.backgroundColor)),n.hoveredPointRingColor!==this.config.hoveredPointRingColor&&this.store.setHoveredPointRingColor(this.config.hoveredPointRingColor),n.focusedPointRingColor!==this.config.focusedPointRingColor&&this.store.setFocusedPointRingColor(this.config.focusedPointRingColor),n.pointGreyoutColor!==this.config.pointGreyoutColor&&this.store.setGreyoutPointColor(this.config.pointGreyoutColor),n.focusedPointIndex!==this.config.focusedPointIndex&&this.store.setFocusedPoint(this.config.focusedPointIndex),(n.spaceSize!==this.config.spaceSize||n.simulationRepulsionQuadtreeLevels!==this.config.simulationRepulsionQuadtreeLevels)&&(this.store.adjustSpaceSize(this.config.spaceSize,this.reglInstance.limits.maxTextureSize),this.resizeCanvas(!0),this.update(this.store.isSimulationRunning?this.store.alpha:0)),n.showFPSMonitor!==this.config.showFPSMonitor&&(this.config.showFPSMonitor?this.fpsMonitor=new bu(this.canvas):((r=this.fpsMonitor)==null||r.destroy(),this.fpsMonitor=void 0)),n.pixelRatio!==this.config.pixelRatio&&(this.store.maxPointSize=(this.reglInstance.limits.pointSizeDims[1]??ns)/this.config.pixelRatio),(n.enableZoom!==this.config.enableZoom||n.enableDrag!==this.config.enableDrag)&&this.updateZoomDragBehaviors()}setPointPositions(e,n){this._isDestroyed||!this.points||(this.graph.inputPointPositions=e,this.points.shouldSkipRescale=n,this.isPointPositionsUpdateNeeded=!0,this.isLinksUpdateNeeded=!0,this.isPointColorUpdateNeeded=!0,this.isPointSizeUpdateNeeded=!0,this.isPointShapeUpdateNeeded=!0,this.isPointImageIndicesUpdateNeeded=!0,this.isPointClusterUpdateNeeded=!0,this.isForceManyBodyUpdateNeeded=!0,this.isForceLinkUpdateNeeded=!0,this.isForceCenterUpdateNeeded=!0)}setPointColors(e){this._isDestroyed||(this.graph.inputPointColors=e,this.isPointColorUpdateNeeded=!0)}getPointColors(){return this._isDestroyed?new Float32Array:this.graph.pointColors??new Float32Array}setPointSizes(e){this._isDestroyed||(this.graph.inputPointSizes=e,this.isPointSizeUpdateNeeded=!0)}setPointShapes(e){this._isDestroyed||(this.graph.inputPointShapes=e,this.isPointShapeUpdateNeeded=!0)}setImageData(e){this._isDestroyed||!this.points||(this.graph.inputImageData=e,this.points.createAtlas())}setPointImageIndices(e){this._isDestroyed||(this.graph.inputPointImageIndices=e,this.isPointImageIndicesUpdateNeeded=!0)}setPointImageSizes(e){this._isDestroyed||(this.graph.inputPointImageSizes=e,this.isPointImageSizesUpdateNeeded=!0)}getPointSizes(){return this._isDestroyed?new Float32Array:this.graph.pointSizes??new Float32Array}setLinks(e){this._isDestroyed||(this.graph.inputLinks=e,this.isLinksUpdateNeeded=!0,this.isLinkColorUpdateNeeded=!0,this.isLinkWidthUpdateNeeded=!0,this.isLinkArrowUpdateNeeded=!0,this.isForceLinkUpdateNeeded=!0)}setLinkColors(e){this._isDestroyed||(this.graph.inputLinkColors=e,this.isLinkColorUpdateNeeded=!0)}getLinkColors(){return this._isDestroyed?new Float32Array:this.graph.linkColors??new Float32Array}setLinkWidths(e){this._isDestroyed||(this.graph.inputLinkWidths=e,this.isLinkWidthUpdateNeeded=!0)}getLinkWidths(){return this._isDestroyed?new Float32Array:this.graph.linkWidths??new Float32Array}setLinkArrows(e){this._isDestroyed||(this.graph.linkArrowsBoolean=e,this.isLinkArrowUpdateNeeded=!0)}setLinkStrength(e){this._isDestroyed||(this.graph.inputLinkStrength=e,this.isForceLinkUpdateNeeded=!0)}setPointClusters(e){this._isDestroyed||(this.graph.inputPointClusters=e,this.isPointClusterUpdateNeeded=!0)}setClusterPositions(e){this._isDestroyed||(this.graph.inputClusterPositions=e,this.isPointClusterUpdateNeeded=!0)}setPointClusterStrength(e){this._isDestroyed||(this.graph.inputClusterStrength=e,this.isPointClusterUpdateNeeded=!0)}render(e){if(this._isDestroyed||!this.reglInstance)return;this.graph.update();const{fitViewOnInit:n,fitViewDelay:r,fitViewPadding:i,fitViewDuration:o,fitViewByPointsInRect:s,fitViewByPointIndices:f,initialZoomLevel:u}=this.config;if(!this.graph.pointsNumber&&!this.graph.linksNumber){this.stopFrames(),Rt(this.canvas).style("cursor",null),this.reglInstance.clear({color:this.store.backgroundColor,depth:1,stencil:0});return}this._isFirstRenderAfterInit&&n&&u===void 0&&(this._fitViewOnInitTimeoutID=window.setTimeout(()=>{f?this.fitViewByPointIndices(f,o,i):s?this.setZoomTransformByPointPositions(s,o,void 0,i):this.fitView(o,i)},r)),this._isFirstRenderAfterInit=!1,this.update(e)}zoomToPointByIndex(e,n=700,r=Mp,i=!0){if(this._isDestroyed||!this.reglInstance||!this.points||!this.canvasD3Selection)return;const{store:{screenSize:o}}=this,s=tn(this.reglInstance,this.points.currentPositionFbo);if(e===void 0)return;const f=s[e*4+0],u=s[e*4+1];if(f===void 0||u===void 0)return;const l=this.zoomInstance.getDistanceToPoint([f,u]),p=i?r:Math.max(this.getZoomLevel(),r);if(l<Math.min(o[0],o[1]))this.setZoomTransformByPointPositions([f,u],n,p);else{const x=this.zoomInstance.getTransform([[f,u]],p),S=this.zoomInstance.getMiddlePointTransform([f,u]);this.canvasD3Selection.transition().ease(dp).duration(n/2).call(this.zoomInstance.behavior.transform,S).transition().ease(mp).duration(n/2).call(this.zoomInstance.behavior.transform,x)}}zoom(e,n=0){this._isDestroyed||this.setZoomLevel(e,n)}setZoomLevel(e,n=0){this._isDestroyed||!this.canvasD3Selection||(n===0?this.canvasD3Selection.call(this.zoomInstance.behavior.scaleTo,e):this.canvasD3Selection.transition().duration(n).call(this.zoomInstance.behavior.scaleTo,e))}getZoomLevel(){return this._isDestroyed?0:this.zoomInstance.eventTransform.k}getPointPositions(){if(this._isDestroyed||!this.reglInstance||!this.points)return[];if(this.graph.pointsNumber===void 0)return[];const e=[],n=tn(this.reglInstance,this.points.currentPositionFbo);e.length=this.graph.pointsNumber*2;for(let r=0;r<this.graph.pointsNumber;r+=1){const i=n[r*4+0],o=n[r*4+1];i!==void 0&&o!==void 0&&(e[r*2]=i,e[r*2+1]=o)}return e}getClusterPositions(){if(this._isDestroyed||!this.reglInstance||!this.clusters)return[];if(this.graph.pointClusters===void 0||this.clusters.clusterCount===void 0)return[];this.clusters.calculateCentermass();const e=[],n=tn(this.reglInstance,this.clusters.centermassFbo);e.length=this.clusters.clusterCount*2;for(let r=0;r<e.length/2;r+=1){const i=n[r*4+0],o=n[r*4+1],s=n[r*4+2];i!==void 0&&o!==void 0&&s!==void 0&&(e[r*2]=i/s,e[r*2+1]=o/s)}return e}fitView(e=250,n=.1){this._isDestroyed||this.setZoomTransformByPointPositions(this.getPointPositions(),e,void 0,n)}fitViewByPointIndices(e,n=250,r=.1){if(this._isDestroyed)return;const i=this.getPointPositions(),o=new Array(e.length*2);for(const[s,f]of e.entries())o[s*2]=i[f*2],o[s*2+1]=i[f*2+1];this.setZoomTransformByPointPositions(o,n,void 0,r)}fitViewByPointPositions(e,n=250,r=.1){this._isDestroyed||this.setZoomTransformByPointPositions(e,n,void 0,r)}getPointsInRect(e){if(this._isDestroyed||!this.reglInstance||!this.points)return new Float32Array;const n=this.store.screenSize[1];return this.store.selectedArea=[[e[0][0],n-e[1][1]],[e[1][0],n-e[0][1]]],this.points.findPointsOnAreaSelection(),tn(this.reglInstance,this.points.selectedFbo).map((i,o)=>o%4===0&&i!==0?o/4:-1).filter(i=>i!==-1)}getPointsInRange(e){return this.getPointsInRect(e)}getPointsInPolygon(e){if(this._isDestroyed||!this.reglInstance||!this.points)return new Float32Array;if(e.length<3)return new Float32Array;const n=this.store.screenSize[1],r=e.map(([o,s])=>[o,n-s]);return this.points.updatePolygonPath(r),this.points.findPointsOnPolygonSelection(),tn(this.reglInstance,this.points.selectedFbo).map((o,s)=>s%4===0&&o!==0?s/4:-1).filter(o=>o!==-1)}selectPointsInRect(e){if(!(this._isDestroyed||!this.reglInstance||!this.points)){if(e){const n=this.store.screenSize[1];this.store.selectedArea=[[e[0][0],n-e[1][1]],[e[1][0],n-e[0][1]]],this.points.findPointsOnAreaSelection();const r=tn(this.reglInstance,this.points.selectedFbo);this.store.selectedIndices=r.map((i,o)=>o%4===0&&i!==0?o/4:-1).filter(i=>i!==-1)}else this.store.selectedIndices=null;this.points.updateGreyoutStatus()}}selectPointsInRange(e){return this.selectPointsInRect(e)}selectPointsInPolygon(e){if(!(this._isDestroyed||!this.reglInstance||!this.points)){if(e){if(e.length<3){console.warn("Polygon path requires at least 3 points to form a polygon.");return}const n=this.store.screenSize[1],r=e.map(([o,s])=>[o,n-s]);this.points.updatePolygonPath(r),this.points.findPointsOnPolygonSelection();const i=tn(this.reglInstance,this.points.selectedFbo);this.store.selectedIndices=i.map((o,s)=>s%4===0&&o!==0?s/4:-1).filter(o=>o!==-1)}else this.store.selectedIndices=null;this.points.updateGreyoutStatus()}}selectPointByIndex(e,n=!1){if(!this._isDestroyed)if(n){const r=this.graph.getAdjacentIndices(e)??[];this.selectPointsByIndices([e,...r])}else this.selectPointsByIndices([e])}selectPointsByIndices(e){this._isDestroyed||!this.points||(e?e.length===0?this.store.selectedIndices=new Float32Array:this.store.selectedIndices=new Float32Array(e.filter(n=>n!==void 0)):this.store.selectedIndices=null,this.points.updateGreyoutStatus())}unselectPoints(){this._isDestroyed||!this.points||(this.store.selectedIndices=null,this.points.updateGreyoutStatus())}getSelectedIndices(){if(this._isDestroyed)return null;const{selectedIndices:e}=this.store;return e?Array.from(e):null}getAdjacentIndices(e){if(!this._isDestroyed)return this.graph.getAdjacentIndices(e)}spaceToScreenPosition(e){return this._isDestroyed?[0,0]:this.zoomInstance.convertSpaceToScreenPosition(e)}screenToSpacePosition(e){return this._isDestroyed?[0,0]:this.zoomInstance.convertScreenToSpacePosition(e)}spaceToScreenRadius(e){return this._isDestroyed?0:this.zoomInstance.convertSpaceToScreenRadius(e)}getPointRadiusByIndex(e){var n;if(!this._isDestroyed)return(n=this.graph.pointSizes)==null?void 0:n[e]}trackPointPositionsByIndices(e){this._isDestroyed||!this.points||this.points.trackPointsByIndices(e)}getTrackedPointPositionsMap(){return this._isDestroyed||!this.points?new Map:this.points.getTrackedPositionsMap()}getTrackedPointPositionsArray(){return this._isDestroyed||!this.points?[]:this.points.getTrackedPositionsArray()}getSampledPointPositionsMap(){return this._isDestroyed||!this.points?new Map:this.points.getSampledPointPositionsMap()}getSampledPoints(){return this._isDestroyed||!this.points?{indices:[],positions:[]}:this.points.getSampledPoints()}getScaleX(){if(!(this._isDestroyed||!this.points))return this.points.scaleX}getScaleY(){if(!(this._isDestroyed||!this.points))return this.points.scaleY}start(e=1){var n,r;this._isDestroyed||this.graph.pointsNumber&&(e>0&&(this.store.isSimulationRunning=!0,this.store.simulationProgress=0,(r=(n=this.config).onSimulationStart)==null||r.call(n)),this.store.alpha=e,this.stopFrames(),this.frame())}pause(){var e,n;this._isDestroyed||(this.store.isSimulationRunning=!1,(n=(e=this.config).onSimulationPause)==null||n.call(e))}restart(){var e,n;this._isDestroyed||(this.store.isSimulationRunning=!0,(n=(e=this.config).onSimulationRestart)==null||n.call(e))}step(){this._isDestroyed||(this.store.isSimulationRunning=!1,this.stopFrames(),this.frame())}destroy(){var e,n,r,i;this._isDestroyed||!this.reglInstance||(window.clearTimeout(this._fitViewOnInitTimeoutID),this.stopFrames(),this.canvasD3Selection&&this.canvasD3Selection.on("mouseenter.cosmos",null).on("mousemove.cosmos",null).on("mouseleave.cosmos",null).on("click",null).on("mousemove",null).on("contextmenu",null).on(".drag",null).on(".zoom",null),Rt(document).on("keydown.cosmos",null).on("keyup.cosmos",null),(e=this.zoomInstance)!=null&&e.behavior&&this.zoomInstance.behavior.on("start.detect",null).on("zoom.detect",null).on("end.detect",null),(n=this.dragInstance)!=null&&n.behavior&&this.dragInstance.behavior.on("start.detect",null).on("drag.detect",null).on("end.detect",null),(r=this.fpsMonitor)==null||r.destroy(),this.reglInstance.destroy(),this.reglInstance.clear({color:this.store.backgroundColor,depth:1,stencil:0}),this.canvas&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas),this.attributionDivElement&&this.attributionDivElement.parentNode&&this.attributionDivElement.parentNode.removeChild(this.attributionDivElement),(i=document.getElementById("gl-bench-style"))==null||i.remove(),this.canvasD3Selection=void 0,this.reglInstance=void 0,this.attributionDivElement=void 0,this._isDestroyed=!0)}create(){var e,n,r,i,o;this._isDestroyed||!this.points||!this.lines||(this.isPointPositionsUpdateNeeded&&this.points.updatePositions(),this.isPointColorUpdateNeeded&&this.points.updateColor(),this.isPointSizeUpdateNeeded&&this.points.updateSize(),this.isPointShapeUpdateNeeded&&this.points.updateShape(),this.isPointImageIndicesUpdateNeeded&&this.points.updateImageIndices(),this.isPointImageSizesUpdateNeeded&&this.points.updateImageSizes(),this.isLinksUpdateNeeded&&this.lines.updatePointsBuffer(),this.isLinkColorUpdateNeeded&&this.lines.updateColor(),this.isLinkWidthUpdateNeeded&&this.lines.updateWidth(),this.isLinkArrowUpdateNeeded&&this.lines.updateArrow(),this.isForceManyBodyUpdateNeeded&&((e=this.forceManyBody)==null||e.create()),this.isForceLinkUpdateNeeded&&((n=this.forceLinkIncoming)==null||n.create(Ha.INCOMING),(r=this.forceLinkOutgoing)==null||r.create(Ha.OUTGOING)),this.isForceCenterUpdateNeeded&&((i=this.forceCenter)==null||i.create()),this.isPointClusterUpdateNeeded&&((o=this.clusters)==null||o.create()),this.isPointPositionsUpdateNeeded=!1,this.isPointColorUpdateNeeded=!1,this.isPointSizeUpdateNeeded=!1,this.isPointShapeUpdateNeeded=!1,this.isPointImageIndicesUpdateNeeded=!1,this.isPointImageSizesUpdateNeeded=!1,this.isLinksUpdateNeeded=!1,this.isLinkColorUpdateNeeded=!1,this.isLinkWidthUpdateNeeded=!1,this.isLinkArrowUpdateNeeded=!1,this.isPointClusterUpdateNeeded=!1,this.isForceManyBodyUpdateNeeded=!1,this.isForceLinkUpdateNeeded=!1,this.isForceCenterUpdateNeeded=!1)}flatten(e){return e.flat()}pair(e){const n=new Array(e.length/2);for(let r=0;r<e.length/2;r++)n[r]=[e[r*2],e[r*2+1]];return n}update(e=this.store.alpha){const{graph:n}=this;this.store.pointsTextureSize=Math.ceil(Math.sqrt(n.pointsNumber??0)),this.store.linksTextureSize=Math.ceil(Math.sqrt((n.linksNumber??0)*2)),this.create(),this.initPrograms(),this.store.hoveredPoint=void 0,this.start(e)}initPrograms(){var e,n,r,i,o,s;this._isDestroyed||!this.points||!this.lines||!this.clusters||(this.points.initPrograms(),this.lines.initPrograms(),(e=this.forceGravity)==null||e.initPrograms(),(n=this.forceLinkIncoming)==null||n.initPrograms(),(r=this.forceLinkOutgoing)==null||r.initPrograms(),(i=this.forceMouse)==null||i.initPrograms(),(o=this.forceManyBody)==null||o.initPrograms(),(s=this.forceCenter)==null||s.initPrograms(),this.clusters.initPrograms())}frame(){const{config:{simulationGravity:e,simulationCenter:n,renderLinks:r,enableSimulation:i},store:{alpha:o,isSimulationRunning:s}}=this;o<ts&&s&&this.end(),this.store.pointsTextureSize&&(this.requestAnimationFrameId=window.requestAnimationFrame(f=>{var u,l,p,x,S,z,q,Te,we,fe,Me,Ue,V,se,Le,Ge,Xe,nt,ut,Ee,lt,ot,N,Pe,re,ke;(u=this.fpsMonitor)==null||u.begin(),this.resizeCanvas(),this.dragInstance.isActive||this.findHoveredPoint(),i&&(this.isRightClickMouse&&this.config.enableRightClickRepulsion&&((l=this.forceMouse)==null||l.run(),(p=this.points)==null||p.updatePosition()),s&&!(this.zoomInstance.isRunning&&!this.config.enableSimulationDuringZoom)&&(e&&((x=this.forceGravity)==null||x.run(),(S=this.points)==null||S.updatePosition()),n&&((z=this.forceCenter)==null||z.run(),(q=this.points)==null||q.updatePosition()),(Te=this.forceManyBody)==null||Te.run(),(we=this.points)==null||we.updatePosition(),this.store.linksTextureSize&&((fe=this.forceLinkIncoming)==null||fe.run(),(Me=this.points)==null||Me.updatePosition(),(Ue=this.forceLinkOutgoing)==null||Ue.run(),(V=this.points)==null||V.updatePosition()),(this.graph.pointClusters||this.graph.clusterPositions)&&((se=this.clusters)==null||se.run(),(Le=this.points)==null||Le.updatePosition()),this.store.alpha+=this.store.addAlpha(this.config.simulationDecay??qe.simulation.decay),this.isRightClickMouse&&this.config.enableRightClickRepulsion&&(this.store.alpha=Math.max(this.store.alpha,.1)),this.store.simulationProgress=Math.sqrt(Math.min(1,ts/this.store.alpha)),(ut=(nt=this.config).onSimulationTick)==null||ut.call(nt,this.store.alpha,(Ge=this.store.hoveredPoint)==null?void 0:Ge.index,(Xe=this.store.hoveredPoint)==null?void 0:Xe.position)),(Ee=this.points)==null||Ee.trackPoints()),(lt=this.reglInstance)==null||lt.clear({color:this.store.backgroundColor,depth:1,stencil:0}),r&&this.store.linksTextureSize&&((ot=this.lines)==null||ot.draw()),(N=this.points)==null||N.draw(),this.dragInstance.isActive&&((Pe=this.points)==null||Pe.drag(),(re=this.points)==null||re.drag()),(ke=this.fpsMonitor)==null||ke.end(f),this.currentEvent=void 0,this.frame()}))}stopFrames(){this.requestAnimationFrameId&&window.cancelAnimationFrame(this.requestAnimationFrameId)}end(){var e,n;this.store.isSimulationRunning=!1,this.store.simulationProgress=1,(n=(e=this.config).onSimulationEnd)==null||n.call(e)}onClick(e){var n,r,i,o;(o=(i=this.config).onClick)==null||o.call(i,(n=this.store.hoveredPoint)==null?void 0:n.index,(r=this.store.hoveredPoint)==null?void 0:r.position,e)}updateMousePosition(e){if(!e)return;const n=e.offsetX??e.x,r=e.offsetY??e.y;n===void 0||r===void 0||(this.store.mousePosition=this.zoomInstance.convertScreenToSpacePosition([n,r]),this.store.screenMousePosition=[n,this.store.screenSize[1]-r])}onMouseMove(e){var n,r,i,o;this.currentEvent=e,this.updateMousePosition(e),this.isRightClickMouse=e.which===3,(o=(i=this.config).onMouseMove)==null||o.call(i,(n=this.store.hoveredPoint)==null?void 0:n.index,(r=this.store.hoveredPoint)==null?void 0:r.position,this.currentEvent)}onRightClickMouse(e){e.preventDefault()}resizeCanvas(e=!1){var s,f,u;const n=this.canvas.width,r=this.canvas.height,i=this.canvas.clientWidth,o=this.canvas.clientHeight;if(e||n!==i*this.config.pixelRatio||r!==o*this.config.pixelRatio){const[l,p]=this.store.screenSize,{k:x}=this.zoomInstance.eventTransform,S=this.zoomInstance.convertScreenToSpacePosition([l/2,p/2]);this.store.updateScreenSize(i,o),this.canvas.width=i*this.config.pixelRatio,this.canvas.height=o*this.config.pixelRatio,(s=this.reglInstance)==null||s.poll(),(f=this.canvasD3Selection)==null||f.call(this.zoomInstance.behavior.transform,this.zoomInstance.getTransform([S],x)),(u=this.points)==null||u.updateSampledPointsGrid()}}setZoomTransformByPointPositions(e,n=250,r,i){var s;this.resizeCanvas();const o=this.zoomInstance.getTransform(this.pair(e),r,i);(s=this.canvasD3Selection)==null||s.transition().ease(pp).duration(n).call(this.zoomInstance.behavior.transform,o)}updateZoomDragBehaviors(){var e,n,r,i;this.config.enableDrag?(e=this.canvasD3Selection)==null||e.call(this.dragInstance.behavior):(n=this.canvasD3Selection)==null||n.call(this.dragInstance.behavior).on(".drag",null),this.config.enableZoom?(r=this.canvasD3Selection)==null||r.call(this.zoomInstance.behavior):(i=this.canvasD3Selection)==null||i.call(this.zoomInstance.behavior).on("wheel.zoom",null)}findHoveredPoint(){var o,s,f,u,l;if(!this._isMouseOnCanvas||!this.reglInstance||!this.points)return;if(this._findHoveredPointExecutionCount<2){this._findHoveredPointExecutionCount+=1;return}this._findHoveredPointExecutionCount=0,this.points.findHoveredPoint();let e=!1,n=!1;const r=tn(this.reglInstance,this.points.hoveredFbo);if(r[1]){const p=r[0];((o=this.store.hoveredPoint)==null?void 0:o.index)!==p&&(e=!0);const x=r[2],S=r[3];this.store.hoveredPoint={index:p,position:[x,S]}}else this.store.hoveredPoint&&(n=!0),this.store.hoveredPoint=void 0;e&&this.store.hoveredPoint&&((f=(s=this.config).onPointMouseOver)==null||f.call(s,this.store.hoveredPoint.index,this.store.hoveredPoint.position,this.currentEvent)),n&&((l=(u=this.config).onPointMouseOut)==null||l.call(u,this.currentEvent)),this.updateCanvasCursor()}updateCanvasCursor(){const{hoveredPointCursor:e}=this.config;this.dragInstance.isActive?Rt(this.canvas).style("cursor","grabbing"):this.store.hoveredPoint?!this.config.enableDrag||this.store.isSpaceKeyPressed?Rt(this.canvas).style("cursor",e):Rt(this.canvas).style("cursor","grab"):Rt(this.canvas).style("cursor",null)}addAttribution(){var e;this.config.attribution&&(this.attributionDivElement=document.createElement("div"),this.attributionDivElement.style.cssText=`
|
|
1484
1602
|
user-select: none;
|
|
1485
1603
|
position: absolute;
|
|
1486
1604
|
bottom: 0;
|
|
@@ -1489,5 +1607,5 @@ void main() {
|
|
|
1489
1607
|
margin: 0 0.6rem 0.6rem 0;
|
|
1490
1608
|
font-size: 0.7rem;
|
|
1491
1609
|
font-family: inherit;
|
|
1492
|
-
`,this.attributionDivElement.innerHTML=pu(this.config.attribution,{ALLOWED_TAGS:["a","b","i","em","strong","span","div","p","br","img"],ALLOWED_ATTR:["href","target","class","id","style","src","alt","title"]}),(e=this.store.div)==null||e.appendChild(this.attributionDivElement))}}
|
|
1610
|
+
`,this.attributionDivElement.innerHTML=pu(this.config.attribution,{ALLOWED_TAGS:["a","b","i","em","strong","span","div","p","br","img"],ALLOWED_ATTR:["href","target","class","id","style","src","alt","title"]}),(e=this.store.div)==null||e.appendChild(this.attributionDivElement))}}zt.Graph=Pg,zt.PointShape=_u,zt.clamp=mu,zt.getRgbaColor=Vn,zt.isAClassInstance=hu,zt.isArray=Va,zt.isFunction=lu,zt.isNumber=nn,zt.isObject=cu,zt.isPlainObject=$a,zt.readPixels=tn,zt.rgbToBrightness=du,zt.sanitizeHtml=pu,Object.defineProperty(zt,Symbol.toStringTag,{value:"Module"})});
|
|
1493
1611
|
//# sourceMappingURL=index.min.js.map
|