CARVIEW |
Select Language
HTTP/2 301
location: https://raw.githubusercontent.com/jonobr1/two.js/dev/build/two.min.js
accept-ranges: bytes
age: 0
date: Sun, 27 Jul 2025 00:31:38 GMT
via: 1.1 varnish
x-served-by: cache-bom-vanm7210083-BOM
x-cache: MISS
x-cache-hits: 0
x-timer: S1753576298.717509,VS0,VE1194
vary: Accept-Encoding
x-fastly-request-id: 10e15a94263808ed94f17439c200e9b33784817d
content-length: 0
HTTP/2 200
cache-control: max-age=300
content-security-policy: default-src 'none'; style-src 'unsafe-inline'; sandbox
content-type: text/plain; charset=utf-8
etag: W/"0c7ffc2a26ebf0d9fe164c709594c7262ac6516f53f1c35cb2db5ebbb734d10f"
strict-transport-security: max-age=31536000
x-content-type-options: nosniff
x-frame-options: deny
x-xss-protection: 1; mode=block
x-github-request-id: 4EFD:2CB7B7:148934:372BB1:68857368
content-encoding: gzip
accept-ranges: bytes
date: Sun, 27 Jul 2025 00:31:39 GMT
via: 1.1 varnish
x-served-by: cache-bom-vanm7210031-BOM
x-cache: MISS
x-cache-hits: 0
x-timer: S1753576299.964700,VS0,VE298
vary: Authorization,Accept-Encoding
access-control-allow-origin: *
cross-origin-resource-policy: cross-origin
x-fastly-request-id: 5cb8179876dbff05070e11cba8b1f9b6d180e499
expires: Sun, 27 Jul 2025 00:36:39 GMT
source-age: 0
content-length: 45517
/*
MIT License
Copyright (c) 2012 - 2025 @jonobr1 / https://jono.fyi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
var Two=(()=>{var Rt=Object.defineProperty;var $i=Object.getOwnPropertyDescriptor;var Ji=Object.getOwnPropertyNames;var Zi=Object.prototype.hasOwnProperty;var Qi=(i,e,t)=>e in i?Rt(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var Nt=(i,e)=>{for(var t in e)Rt(i,t,{get:e[t],enumerable:!0})},es=(i,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ji(e))!Zi.call(i,r)&&r!==t&&Rt(i,r,{get:()=>e[r],enumerable:!(s=$i(e,r))||s.enumerable});return i};var ts=i=>es(Rt({},"__esModule",{value:!0}),i);var w=(i,e,t)=>(Qi(i,typeof e!="symbol"?e+"":e,t),t);var Zs={};Nt(Zs,{default:()=>B});var ae={Image:null,isHeadless:!1,shim:function(i,e){return i.tagName=i.nodeName=e||"canvas",i.nodeType=1,i.getAttribute=function(t){return this[t]},i.setAttribute=function(t,s){return this[t]=s,this},i},polyfill:function(i,e){return ae.shim(i),typeof e<"u"&&(ae.Image=e),ae.isHeadless=!0,i}};var Yt={};Nt(Yt,{Curve:()=>Qe,getAnchorsFromArcData:()=>rs,getComponentOnCubicBezier:()=>st,getControlPoints:()=>pi,getCurveBoundingBox:()=>Xt,getCurveFromPoints:()=>Ht,getCurveLength:()=>Wt,getReflection:()=>At,integrate:()=>_i,subdivide:()=>yt});var Dt={};Nt(Dt,{HALF_PI:()=>Z,NumArray:()=>ve,TWO_PI:()=>J,decomposeMatrix:()=>Ee,getComputedMatrix:()=>jt,getPoT:()=>Ut,lerp:()=>fe,mod:()=>ne,setMatrix:()=>zt,toFixed:()=>U});var Y;typeof window<"u"?Y=window:typeof global<"u"?Y=global:typeof self<"u"&&(Y=self);var ci,J=Math.PI*2,Z=Math.PI*.5;function Ee(i,e,t,s,r,n){let o;return arguments.length<=1?(o=i.a,e=i.b,t=i.c,s=i.d,r=i.e,n=i.f):o=i,{translateX:r,translateY:n,scaleX:Math.sqrt(o*o+e*e),scaleY:Math.sqrt(t*t+s*s),rotation:180*Math.atan2(e,o)/Math.PI}}function zt(i){ci=i}function jt(i,e){e=e&&e.identity()||new ci;let t=i,s=[];for(;t&&t._matrix;)s.push(t._matrix),t=t.parent;s.reverse();for(let r=0;r=4){let n=arguments[0]-arguments[2],o=arguments[1]-arguments[3];return Math.atan2(o,n)}let s=e.x-t.x,r=e.y-t.y;return Math.atan2(r,s)}static distanceBetween(e,t){return Math.sqrt(ke.distanceBetweenSquared(e,t))}static distanceBetweenSquared(e,t){let s=e.x-t.x,r=e.y-t.y;return s*s+r*r}set(e,t){return this.x=e,this.y=t,this}copy(e){return this.x=e.x,this.y=e.y,this}clear(){return this.x=0,this.y=0,this}clone(){return new ke(this.x,this.y)}add(e,t){return arguments.length<=0?this:(arguments.length<=1?typeof e=="number"?(this.x+=e,this.y+=e):e&&typeof e.x=="number"&&typeof e.y=="number"&&(this.x+=e.x,this.y+=e.y):(this.x+=e,this.y+=t),this)}addSelf(e){return this.add.apply(this,arguments)}sub(e,t){return arguments.length<=0?this:(arguments.length<=1?typeof e=="number"?(this.x-=e,this.y-=e):e&&typeof e.x=="number"&&typeof e.y=="number"&&(this.x-=e.x,this.y-=e.y):(this.x-=e,this.y-=t),this)}subtract(){return this.sub.apply(this,arguments)}subSelf(e){return this.sub.apply(this,arguments)}subtractSelf(e){return this.sub.apply(this,arguments)}multiply(e,t){return arguments.length<=0?this:(arguments.length<=1?typeof e=="number"?(this.x*=e,this.y*=e):e&&typeof e.x=="number"&&typeof e.y=="number"&&(this.x*=e.x,this.y*=e.y):(this.x*=e,this.y*=t),this)}multiplySelf(e){return this.multiply.apply(this,arguments)}multiplyScalar(e){return this.multiply(e)}divide(e,t){return arguments.length<=0?this:(arguments.length<=1?typeof e=="number"?(this.x/=e,this.y/=e):e&&typeof e.x=="number"&&typeof e.y=="number"&&(this.x/=e.x,this.y/=e.y):(this.x/=e,this.y/=t),isNaN(this.x)&&(this.x=0),isNaN(this.y)&&(this.y=0),this)}divideSelf(e){return this.divide.apply(this,arguments)}divideScalar(e){return this.divide(e)}negate(){return this.multiply(-1)}dot(e){return this.x*e.x+this.y*e.y}length(){return Math.sqrt(this.lengthSquared())}lengthSquared(){return this.x*this.x+this.y*this.y}normalize(){return this.divideScalar(this.length())}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,s=this.y-e.y;return t*t+s*s}setLength(e){return this.normalize().multiplyScalar(e)}equals(e,t){return t=typeof t>"u"?1e-4:t,this.distanceTo(e)"u"?1e-4:e,this.length()>1,f=s&1?n[h++]*i(a):0;for(;h=0&&e<4294967296}var x={isNaN:function(i){return typeof i=="number"&&i!==+i},isElement:function(i){return!!(i&&i.nodeType===1)},isObject:function(i){let e=typeof i;return e==="function"||e==="object"&&!!i},isFunction:function(i){return typeof i=="function"},extend:function(i){let e=gi.call(arguments,1);for(let t=0;t0&&this.push.apply(this,arguments[0]):arguments.length>0&&this.push.apply(this,arguments)}pop(){let e=super.pop.apply(this,arguments);return this.trigger(g.Types.remove,[e]),e}shift(){let e=super.shift.apply(this,arguments);return this.trigger(g.Types.remove,[e]),e}push(){let e=super.push.apply(this,arguments);return this.trigger(g.Types.insert,arguments),e}unshift(){let e=super.unshift.apply(this,arguments);return this.trigger(g.Types.insert,arguments),e}splice(){let e=super.splice.apply(this,arguments);if(this.trigger(g.Types.remove,e),arguments.length>2){let t=this.slice(arguments[0],arguments[0]+arguments.length-2);this.trigger(g.Types.insert,t),this.trigger(g.Types.order)}return e}sort(){return super.sort.apply(this,arguments),this.trigger(g.Types.order),this}reverse(){return super.reverse.apply(this,arguments),this.trigger(g.Types.order),this}indexOf(){return super.indexOf.apply(this,arguments)}map(e,t){let s=[];for(let r=0;r=4&&(this._flagVideo=!0),this}flagReset(){return this._flagSrc=this._flagImage=this._flagLoaded=this._flagRepeat=this._flagVideo=this._flagScale=this._flagOffset=!1,super.flagReset.call(this),this}dispose(){if(super.dispose(),"elem"in this._renderer){let e=this._renderer.elem;e.parentNode.removeChild(e)}return"effect"in this._renderer&&(this._renderer.effect=null),this}},V=se;w(V,"Properties",["src","loaded","repeat","scale","offset","image"]),w(V,"RegularExpressions",yi),w(V,"ImageRegistry",new Te),w(V,"Register",{canvas:function(e,t){e._src="#"+e.id,se.ImageRegistry.add(e.src,e.image),typeof t=="function"&&t()},img:function(e,t){let s=e.image,r=function(o){!ae.isHeadless&&s.removeEventListener&&typeof s.removeEventListener=="function"&&(s.removeEventListener("load",r,!1),s.removeEventListener("error",n,!1)),typeof t=="function"&&t()},n=function(o){throw!ae.isHeadless&&typeof s.removeEventListener=="function"&&(s.removeEventListener("load",r,!1),s.removeEventListener("error",n,!1)),new ee("unable to load "+e.src)};typeof s.width=="number"&&s.width>0&&typeof s.height=="number"&&s.height>0?r():!ae.isHeadless&&typeof s.addEventListener=="function"&&(s.addEventListener("load",r,!1),s.addEventListener("error",n,!1)),e._src=se.getAbsoluteURL(e._src),!(!ae.isHeadless&&s&&s.getAttribute("two-src"))&&(ae.isHeadless||s.setAttribute("two-src",e.src),se.ImageRegistry.add(e.src,s),ae.isHeadless?se.loadHeadlessBuffer(e,r):e.image.src=e.src)},video:function(e,t){if(ae.isHeadless)throw new ee("video textures are not implemented in headless environments.");let s=function(n){e.image.removeEventListener("canplaythrough",s,!1),e.image.removeEventListener("error",r,!1),e.image.width=e.image.videoWidth,e.image.height=e.image.videoHeight,typeof t=="function"&&t()},r=function(n){throw e.image.removeEventListener("canplaythrough",s,!1),e.image.removeEventListener("error",r,!1),new ee("unable to load "+e.src)};e._src=se.getAbsoluteURL(e._src),e.image.getAttribute("two-src")||(e.image.setAttribute("two-src",e.src),se.ImageRegistry.add(e.src,e.image)),e.image.readyState>=4?s():(e.image.addEventListener("canplaythrough",s,!1),e.image.addEventListener("error",r,!1),e.image.src=e.src,e.image.load())}});var bi={src:{enumerable:!0,get:function(){return this._src},set:function(i){this._src=i,this._flagSrc=!0}},loaded:{enumerable:!0,get:function(){return this._loaded},set:function(i){this._loaded=i,this._flagLoaded=!0}},repeat:{enumerable:!0,get:function(){return this._repeat},set:function(i){this._repeat=i,this._flagRepeat=!0}},image:{enumerable:!0,get:function(){return this._image},set:function(i){let e=V.getTag(i),t;switch(e){case"canvas":t="#"+i.id;break;default:t=i.src}V.ImageRegistry.contains(t)?this._image=V.ImageRegistry.get(i.src):this._image=i,this._flagImage=!0}},offset:{enumerable:!0,get:function(){return this._offset},set:function(i){this._offset&&this._offset.unbind(g.Types.change,this._renderer.flagOffset),this._offset=i,this._offset.bind(g.Types.change,this._renderer.flagOffset),this._flagOffset=!0}},scale:{enumerable:!0,get:function(){return this._scale},set:function(i){this._scale instanceof v&&this._scale.unbind(g.Types.change,this._renderer.flagScale),this._scale=i,this._scale instanceof v&&this._scale.bind(g.Types.change,this._renderer.flagScale),this._flagScale=!0}}};function ls(){this._flagOffset=!0}function hs(){this._flagScale=!0}var Re=class extends pe{_flagOffset=!0;_flagOpacity=!0;_flagColor=!0;_offset=0;_opacity=1;_color="#fff";constructor(e,t,s){super();for(let r in xi)Object.defineProperty(this,r,xi[r]);this._renderer.type="stop",this.offset=typeof e=="number"?e:Re.Index<=0?0:1,this.opacity=typeof s=="number"?s:1,this.color=typeof t=="string"?t:Re.Index<=0?"#fff":"#000",Re.Index=(Re.Index+1)%2}static fromObject(e){let t=new Re().copy(e);return"id"in e&&(t.id=e.id),t}copy(e){super.copy.call(this,e);for(let t=0;t{e[t]=this[t]},this),e}flagReset(){return this._flagOffset=this._flagColor=this._flagOpacity=!1,super.flagReset.call(this),this}},le=Re;w(le,"Index",0),w(le,"Properties",["offset","opacity","color"]);var xi={offset:{enumerable:!0,get:function(){return this._offset},set:function(i){this._offset=i,this._flagOffset=!0,this.parent&&(this.parent._flagStops=!0)}},opacity:{enumerable:!0,get:function(){return this._opacity},set:function(i){this._opacity=i,this._flagOpacity=!0,this.parent&&(this.parent._flagStops=!0)}},color:{enumerable:!0,get:function(){return this._color},set:function(i){this._color=i,this._flagColor=!0,this.parent&&(this.parent._flagStops=!0)}}};var Ve=class extends pe{_flagStops=!1;_flagSpread=!1;_flagUnits=!1;_spread="";_units="";constructor(e){super();for(let t in wi)Object.defineProperty(this,t,wi[t]);this._renderer.type="gradient",this._renderer.flagStops=fs.bind(this),this._renderer.bindStops=cs.bind(this),this._renderer.unbindStops=ds.bind(this),this.spread="pad",this.units="objectBoundingBox",e&&(this.stops=e)}static fromObject(e){let t=e.stops;t&&t.length>0&&(t=t.map(r=>r instanceof le?r:new le().copy(r)));let s=new Ve().copy(e);return"id"in e&&(s.id=e.id),s}clone(e){let t=this.stops.map(r=>r.clone()),s=new Ve(t);return x.each(Ve.Properties,r=>{s[r]=this[r]},this),e&&e.add(s),s}copy(e){super.copy.call(this,e);for(let t=0;tt.toObject())};return x.each(Ve.Properties,t=>{e[t]=this[t]},this),e}_update(){return(this._flagSpread||this._flagStops)&&this.trigger(g.Types.change),this}flagReset(){return this._flagSpread=this._flagUnits=this._flagStops=!1,super.flagReset.call(this),this}dispose(){if("elem"in this._renderer){let e=this._renderer.elem;e.parentNode.removeChild(e)}return"effect"in this._renderer&&(this._renderer.effect=null),this}},G=Ve;w(G,"Stop",le),w(G,"Properties",["spread","stops","units"]);var wi={spread:{enumerable:!0,get:function(){return this._spread},set:function(i){this._spread=i,this._flagSpread=!0}},units:{enumerable:!0,get:function(){return this._units},set:function(i){this._units=i,this._flagUnits=!0}},stops:{enumerable:!0,get:function(){return this._stops},set:function(i){let e=this._renderer.bindStops,t=this._renderer.unbindStops;this._stops&&this._stops.unbind(g.Types.insert,e).unbind(g.Types.remove,t),this._stops=new ce((i||[]).slice(0)),this._stops.bind(g.Types.insert,e).bind(g.Types.remove,t),e(this._stops)}}};function fs(){this._flagStops=!0}function cs(i){let e=i.length;for(;e--;)i[e].bind(g.Types.change,this._renderer.flagStops),i[e].parent=this;this._renderer.flagStops()}function ds(i){let e=i.length;for(;e--;)i[e].unbind(g.Types.change,this._renderer.flagStops),delete i[e].parent;this._renderer.flagStops()}var ot=class extends G{_flagEndPoints=!1;_left=null;_right=null;constructor(e,t,s,r,n){super(n);for(let o in vi)Object.defineProperty(this,o,vi[o]);this._renderer.type="linear-gradient",this._renderer.flagEndPoints=us.bind(this),this.left=new v,this.right=new v,typeof e=="number"&&(this.left.x=e),typeof t=="number"&&(this.left.y=t),typeof s=="number"&&(this.right.x=s),typeof r=="number"&&(this.right.y=r)}static fromObject(e){let t=new ot().copy(e);return"id"in e&&(t.id=e.id),t}copy(e){super.copy.call(this,e);for(let t=0;t=s)return s-r>=0;r+=o}return!1}function at(i,e){let t=i._length;if(e<=0)return 0;if(e>=t)return i._lengths.length-1;for(let s=0,r=0;s=e)return e-=r,Math.max(s-1,0)+e/i._lengths[s];r+=i._lengths[s]}return-1}function St(i,e,t){let s,r,n,o,a,h,l,f,c=e.controls&&e.controls.right,u=i.controls&&i.controls.left;return s=e.x,a=e.y,r=(c||e).x,h=(c||e).y,n=(u||i).x,l=(u||i).y,o=i.x,f=i.y,c&&e._relative&&(r+=e.x,h+=e.y),u&&i._relative&&(n+=i.x,l+=i.y),Wt(s,a,r,h,n,l,o,f,t)}function Kt(i,e,t){let s,r,n,o,a,h,l,f,c=e.controls&&e.controls.right,u=i.controls&&i.controls.left;return s=e.x,a=e.y,r=(c||e).x,h=(c||e).y,n=(u||i).x,l=(u||i).y,o=i.x,f=i.y,c&&e._relative&&(r+=e.x,h+=e.y),u&&i._relative&&(n+=i.x,l+=i.y),yt(s,a,r,h,n,l,o,f,t)}function Se(i){switch(i.renderer.type){case"texture":return V.fromObject(i);case"gradient":return G.fromObject(i);case"linear-gradient":return W.fromObject(i);case"radial-gradient":return X.fromObject(i)}return i}var gs=Math.cos,ms=Math.sin,Ri=Math.tan,$t=[],ye=class extends g{elements=new ve(9);manual=!1;constructor(e,t,s,r,n,o){super();let a=e;Array.isArray(a)||(a=Array.prototype.slice.call(arguments)),this.identity(),a.length>0&&this.set(a)}static Multiply(e,t,s){if(t.length<=3){let S=e,M,I,P,O=t[0]||0,j=t[1]||0,N=t[2]||0;return M=S[0]*O+S[1]*j+S[2]*N,I=S[3]*O+S[4]*j+S[5]*N,P=S[6]*O+S[7]*j+S[8]*N,[M,I,P]}let r=e[0],n=e[1],o=e[2],a=e[3],h=e[4],l=e[5],f=e[6],c=e[7],u=e[8],_=t[0],d=t[1],y=t[2],b=t[3],m=t[4],p=t[5],A=t[6],F=t[7],R=t[8];return s=s||new ve(9),s[0]=r*_+n*b+o*A,s[1]=r*d+n*m+o*F,s[2]=r*y+n*p+o*R,s[3]=a*_+h*b+l*A,s[4]=a*d+h*m+l*F,s[5]=a*y+h*p+l*R,s[6]=f*_+c*b+u*A,s[7]=f*d+c*m+u*F,s[8]=f*y+c*p+u*R,s}static fromObject(e){return new ye().copy(e)}set(e,t,s,r,n,o,a,h,l){if(typeof t>"u"){let f=e;e=f[0],t=f[1],s=f[2],r=f[3],n=f[4],o=f[5],a=f[6],h=f[7],l=f[8]}return this.elements[0]=e,this.elements[1]=t,this.elements[2]=s,this.elements[3]=r,this.elements[4]=n,this.elements[5]=o,this.elements[6]=a,this.elements[7]=h,this.elements[8]=l,this.trigger(g.Types.change)}copy(e){return this.elements[0]=e.elements[0],this.elements[1]=e.elements[1],this.elements[2]=e.elements[2],this.elements[3]=e.elements[3],this.elements[4]=e.elements[4],this.elements[5]=e.elements[5],this.elements[6]=e.elements[6],this.elements[7]=e.elements[7],this.elements[8]=e.elements[8],this.manual=e.manual,this.trigger(g.Types.change)}identity(){return this.elements[0]=ye.Identity[0],this.elements[1]=ye.Identity[1],this.elements[2]=ye.Identity[2],this.elements[3]=ye.Identity[3],this.elements[4]=ye.Identity[4],this.elements[5]=ye.Identity[5],this.elements[6]=ye.Identity[6],this.elements[7]=ye.Identity[7],this.elements[8]=ye.Identity[8],this.trigger(g.Types.change)}multiply(e,t,s,r,n,o,a,h,l){if(typeof t>"u")return this.elements[0]*=e,this.elements[1]*=e,this.elements[2]*=e,this.elements[3]*=e,this.elements[4]*=e,this.elements[5]*=e,this.elements[6]*=e,this.elements[7]*=e,this.elements[8]*=e,this.trigger(g.Types.change);if(typeof s>"u"&&(s=1),typeof r>"u"){e=e||0,t=t||0,s=s||0,n=this.elements;let z=n[0]*e+n[1]*t+n[2]*s,ie=n[3]*e+n[4]*t+n[5]*s,ue=n[6]*e+n[7]*t+n[8]*s;return[z,ie,ue]}let f=this.elements,c=[e,t,s,r,n,o,a,h,l],u=f[0],_=f[1],d=f[2],y=f[3],b=f[4],m=f[5],p=f[6],A=f[7],F=f[8],R=c[0],S=c[1],M=c[2],I=c[3],P=c[4],O=c[5],j=c[6],N=c[7],q=c[8];return this.elements[0]=u*R+_*I+d*j,this.elements[1]=u*S+_*P+d*N,this.elements[2]=u*M+_*O+d*q,this.elements[3]=y*R+b*I+m*j,this.elements[4]=y*S+b*P+m*N,this.elements[5]=y*M+b*O+m*q,this.elements[6]=p*R+A*I+F*j,this.elements[7]=p*S+A*P+F*N,this.elements[8]=p*M+A*O+F*q,this.trigger(g.Types.change)}inverse(e){let t=this.elements;e=e||new ye;let s=t[0],r=t[1],n=t[2],o=t[3],a=t[4],h=t[5],l=t[6],f=t[7],c=t[8],u=c*a-h*f,_=-c*o+h*l,d=f*o-a*l,y=s*u+r*_+n*d;return y?(y=1/y,e.elements[0]=u*y,e.elements[1]=(-c*r+n*f)*y,e.elements[2]=(h*r-n*a)*y,e.elements[3]=_*y,e.elements[4]=(c*s-n*l)*y,e.elements[5]=(-h*s+n*o)*y,e.elements[6]=d*y,e.elements[7]=(-f*s+r*l)*y,e.elements[8]=(a*s-r*o)*y,e):null}scale(e,t){return arguments.length<=1&&(t=e),this.multiply(e,0,0,0,t,0,0,0,1)}rotate(e){let t=gs(e),s=ms(e);return this.multiply(t,-s,0,s,t,0,0,0,1)}translate(e,t){return this.multiply(1,0,e,0,1,t,0,0,1)}skewX(e){let t=Ri(e);return this.multiply(1,t,0,0,1,0,0,0,1)}skewY(e){let t=Ri(e);return this.multiply(1,0,0,t,1,0,0,0,1)}toString(e){return $t.length=0,this.toTransformArray(e,$t),$t.map(U).join(" ")}toTransformArray(e,t){let s=this.elements,r=!!t,n=s[0],o=s[1],a=s[2],h=s[3],l=s[4],f=s[5];if(e){let c=s[6],u=s[7],_=s[8];if(r){t[0]=n,t[1]=h,t[2]=c,t[3]=o,t[4]=l,t[5]=u,t[6]=a,t[7]=f,t[8]=_;return}return[n,h,c,o,l,u,a,f,_]}if(r){t[0]=n,t[1]=h,t[2]=o,t[3]=l,t[4]=a,t[5]=f;return}return[n,h,o,l,a,f]}toArray(e,t){let s=this.elements,r=!!t,n=s[0],o=s[1],a=s[2],h=s[3],l=s[4],f=s[5];if(e){let c=s[6],u=s[7],_=s[8];if(r){t[0]=n,t[1]=o,t[2]=a,t[3]=h,t[4]=l,t[5]=f,t[6]=c,t[7]=u,t[8]=_;return}return[n,o,a,h,l,f,c,u,_]}if(r){t[0]=n,t[1]=o,t[2]=a,t[3]=h,t[4]=l,t[5]=f;return}return[n,o,a,h,l,f]}toObject(){return{renderer:{type:"matrix"},elements:this.toArray(!0),manual:!!this.manual}}clone(){return new ye().copy(this)}},Ae=ye;w(Ae,"Identity",[1,0,0,0,1,0,0,0,1]);zt(Ae);var Tt=class extends pe{_flagMatrix=!0;_flagScale=!1;_matrix=null;_worldMatrix=null;_position=null;_rotation=0;_scale=1;_skewX=0;_skewY=0;constructor(){super();for(let e in Et)Object.defineProperty(this,e,Et[e]);this._renderer.flagMatrix=Ai.bind(this),this.isShape=!0,this.matrix=new Ae,this.worldMatrix=new Ae,this.position=new v,this.rotation=0,this.scale=1,this.skewX=0,this.skewY=0}static fromObject(e){let t=new Tt().copy(e);return"id"in e&&(t.id=e.id),t}get renderer(){return this._renderer}set renderer(e){this._renderer=e}get translation(){return Et.position.get.apply(this,arguments)}set translation(e){Et.position.set.apply(this,arguments)}addTo(e){return e.add(this),this}remove(){return this.parent?(this.parent.remove(this),this):this}copy(e){return super.copy.call(this,e),"position"in e&&(e.position instanceof v?this.position=e.position:this.position.copy(e.position)),"rotation"in e&&(this.rotation=e.rotation),"scale"in e&&(this.scale=typeof e.scale=="number"||e.scale instanceof v?e.scale:new v(e.scale.x,e.scale.y)),"skewX"in e&&(this.skewX=e.skewX),"skewY"in e&&(this.skewY=e.skewY),"matrix"in e&&e.matrix.manual&&(this.matrix.copy(e.matrix),this.matrix.manual=!0),this}clone(e){let t=new Tt;return t.position.copy(this.position),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),e&&e.add(t),t._update()}toObject(){let e=super.toObject.call(this);return e.renderer={type:"shape"},e.isShape=!0,e.translation=this.translation.toObject(),e.rotation=this.translation.rotation,e.scale=this.scale instanceof v?this.scale.toObject():this.scale,e.skewX=this.skewX,e.skewY=this.skewY,e.matrix=this.matrix.toObject(),e}_update(e){return!this._matrix.manual&&this._flagMatrix&&(this._matrix.identity().translate(this.position.x,this.position.y),this._matrix.rotate(this.rotation),this._scale instanceof v?this._matrix.scale(this._scale.x,this._scale.y):this._matrix.scale(this._scale),this._matrix.skewX(this.skewX),this._matrix.skewY(this.skewY)),e&&this.parent&&this.parent._update&&this.parent._update(),this}flagReset(){return this._flagMatrix=this._flagScale=!1,super.flagReset.call(this),this}},de=Tt;w(de,"Properties",["position","rotation","scale","skewX","skewY","matrix","worldMatrix"]);var Et={position:{enumerable:!0,get:function(){return this._position},set:function(i){this._position&&this._position.unbind(g.Types.change,this._renderer.flagMatrix),this._position=i,this._position.bind(g.Types.change,this._renderer.flagMatrix),Ai.call(this)}},rotation:{enumerable:!0,get:function(){return this._rotation},set:function(i){this._rotation=i,this._flagMatrix=!0}},scale:{enumerable:!0,get:function(){return this._scale},set:function(i){this._scale instanceof v&&this._scale.unbind(g.Types.change,this._renderer.flagMatrix),this._scale=i,this._scale instanceof v&&this._scale.bind(g.Types.change,this._renderer.flagMatrix),this._flagMatrix=!0,this._flagScale=!0}},skewX:{enumerable:!0,get:function(){return this._skewX},set:function(i){this._skewX=i,this._flagMatrix=!0}},skewY:{enumerable:!0,get:function(){return this._skewY},set:function(i){this._skewY=i,this._flagMatrix=!0}},matrix:{enumerable:!0,get:function(){return this._matrix},set:function(i){this._matrix=i,this._flagMatrix=!0}},worldMatrix:{enumerable:!0,get:function(){return jt(this,this._worldMatrix),this._worldMatrix},set:function(i){this._worldMatrix=i}}};function Ai(){this._flagMatrix=!0}var lt=Math.min,ht=Math.max,ys=Math.ceil,bs=Math.floor,xs=new v,Be=class extends de{_flagVertices=!0;_flagLength=!0;_flagFill=!0;_flagStroke=!0;_flagLinewidth=!0;_flagOpacity=!0;_flagVisible=!0;_flagCap=!0;_flagJoin=!0;_flagMiter=!0;_flagMask=!1;_flagClip=!1;_length=0;_fill="#fff";_stroke="#000";_linewidth=1;_opacity=1;_visible=!0;_cap="round";_join="round";_miter=4;_closed=!0;_curved=!1;_automatic=!0;_beginning=0;_ending=1;_mask=null;_clip=!1;_dashes=null;constructor(e,t,s,r){super();for(let n in Fi)Object.defineProperty(this,n,Fi[n]);this._renderer.type="path",this._renderer.flagVertices=Jt.bind(this),this._renderer.bindVertices=Zt.bind(this),this._renderer.unbindVertices=Qt.bind(this),this._renderer.flagFill=ei.bind(this),this._renderer.flagStroke=ti.bind(this),this._renderer.vertices=[],this._renderer.collection=[],this.closed=!!t,this.curved=!!s,this.beginning=0,this.ending=1,this.fill="#fff",this.stroke="#000",this.linewidth=1,this.opacity=1,this.className="",this.visible=!0,this.cap="butt",this.join="miter",this.miter=4,this.vertices=e,this.automatic=!r,this.dashes=[],this.dashes.offset=0}static fromObject(e){let t=typeof e.fill=="string"?e.fill:Se(e.fill),s=typeof e.stroke=="string"?e.stroke:Se(e.stroke),r=new Be().copy({...e,fill:t,stroke:s});return"id"in e&&(r.id=e.id),r}copy(e){super.copy.call(this,e),this.vertices=[];for(let t=0;tt.toObject()),x.each(Be.Properties,t=>{typeof this[t]<"u"&&(this[t].toObject?e[t]=this[t].toObject():e[t]=this[t])},this),e}dispose(){if(super.dispose(),this.vertices&&typeof this.vertices.unbind=="function")try{this.vertices.unbind()}catch{}if(this.vertices)for(let e=0;e0||this.stroke&&!/(transparent|none)/i.test(this.stroke))if(this.matrix.manual){let{scaleX:u,scaleY:_}=Ee(t.elements[0],t.elements[3],t.elements[1],t.elements[4],t.elements[2],t.elements[5]);typeof u=="number"&&typeof _=="number"&&(s=Math.max(u,_)*(this.linewidth||0)/2)}else s*=typeof this.scale=="number"?this.scale:Math.max(this.scale.x,this.scale.y);if(r<=0)return{width:0,height:0};for(n=0;n=p){this._closed?(s=ne(te,A),r=ne(te-1,A),te===0&&(s=r,r=te)):(s=te,r=Math.min(Math.max(te-1,0),F)),R=this.vertices[s],S=this.vertices[r],p-=oe,this._lengths[te]!==0?e=p/this._lengths[te]:e=0;break}oe+=this._lengths[te]}if(R===null||S===null)return null;if(R){if(!S)return R}else return S;m=S.controls&&S.controls.right,b=R.controls&&R.controls.left,a=S.x,u=S.y,h=(m||S).x,_=(m||S).y,l=(b||R).x,d=(b||R).y,f=R.x,y=R.y,m&&S.relative&&(h+=S.x,_+=S.y),b&&R.relative&&(l+=R.x,d+=R.y),o=st(e,a,h,l,f),c=st(e,u,_,d,y);let M=fe(a,h,e),I=fe(u,_,e),P=fe(h,l,e),O=fe(_,d,e),j=fe(l,f,e),N=fe(d,y,e),q=fe(M,P,e),z=fe(I,O,e),ie=fe(P,j,e),ue=fe(O,N,e);return x.isObject(t)?(t.x=o,t.y=c,t instanceof T&&(t.controls.left.x=q,t.controls.left.y=z,t.controls.right.x=ie,t.controls.right.y=ue,(typeof t.relative!="boolean"||t.relative)&&(t.controls.left.x-=o,t.controls.left.y-=c,t.controls.right.x-=o,t.controls.right.y-=c)),t.t=e,t):(n=new T(o,c,q-o,z-c,ie-o,ue-c,this._curved?k.curve:k.line),n.t=e,n)}plot(){if(this.curved)return Ht(this._collection,this.closed),this;for(let e=0;e0&&(n[n.length-1].command=k.line),r=a;return}o=Kt(a,r,e),n=n.concat(o),x.each(o,function(l,f){f<=0&&r.command===k.move?l.command=k.move:l.command=k.line}),h>=t&&(this._closed&&this._automatic&&(r=a,o=Kt(a,r,e),n=n.concat(o),x.each(o,function(l,f){f<=0&&r.command===k.move?l.command=k.move:l.command=k.line})),n.push(new T(a.x,a.y)),n[n.length-1].command=s?k.close:k.line),r=a},this),this._automatic=!1,this._curved=!1,this.vertices=n,this}_updateLength(e,t){t||this._update();let s=this.vertices.length,r=s-1,n=!1,o=this.vertices[r],a=0;return typeof this._lengths>"u"&&(this._lengths=[]),x.each(this.vertices,function(h,l){if(l<=0&&!n||h.command===k.move){o=h,this._lengths[l]=0;return}this._lengths[l]=St(h,o,e),a+=this._lengths[l],l>=r&&n&&(o=this.vertices[(l+1)%s],this._lengths[l+1]=St(h,o,e),a+=this._lengths[l+1]),o=h},this),this._length=a,this._flagLength=!1,this}_update(){if(this._flagVertices){this._automatic&&this.plot(),this._flagLength&&this._updateLength(void 0,!0);let e=this._collection.length,t=this._closed,s=Math.min(this._beginning,this._ending),r=Math.max(this._beginning,this._ending),n=at(this,s*this._length),o=at(this,r*this._length),a=ys(n),h=bs(o),l,f,c,u,_,d;for(this._renderer.vertices.length=0,d=0;dh&&!f?(_=this._renderer.collection[d].copy(this._collection[d]),this.getPointAt(r,_),_.command=this._renderer.collection[d].command,this._renderer.vertices.push(_),f=_,c=this._collection[d-1],c&&c.controls&&(_.relative?_.controls.right.clear():_.controls.right.copy(_),c.relative?this._renderer.collection[d-1].controls.right.copy(c.controls.right).lerp(v.zero,1-_.t):this._renderer.collection[d-1].controls.right.copy(c.controls.right).lerp(c,1-_.t))):d>=a&&d<=h&&(_=this._renderer.collection[d].copy(this._collection[d]),this._renderer.vertices.push(_),d===h&&qt(this,r)?(f=_,!t&&f.controls&&(f.relative?f.controls.right.clear():f.controls.right.copy(f))):d===a&&qt(this,s)&&(l=_,l.command=k.move,!t&&l.controls&&(l.relative?l.controls.left.clear():l.controls.left.copy(l))));a>0&&!l&&(d=a-1,_=this._renderer.collection[d].copy(this._collection[d]),this.getPointAt(s,_),_.command=k.move,this._renderer.vertices.unshift(_),u=this._collection[d+1],u&&u.controls&&(_.controls.left.clear(),u.relative?this._renderer.collection[d+1].controls.left.copy(u.controls.left).lerp(v.zero,_.t):(xs.copy(u),this._renderer.collection[d+1].controls.left.copy(u.controls.left).lerp(u,_.t))))}return de.prototype._update.apply(this,arguments),this}flagReset(){return this._flagVertices=this._flagLength=this._flagFill=this._flagStroke=this._flagLinewidth=this._flagOpacity=this._flagVisible=this._flagCap=this._flagJoin=this._flagMiter=this._flagClip=!1,de.prototype.flagReset.call(this),this}},C=Be;w(C,"Properties",["fill","stroke","linewidth","opacity","visible","cap","join","miter","closed","curved","automatic","beginning","ending","dashes"]),w(C,"Utils",{getCurveLength:St});var Fi={linewidth:{enumerable:!0,get:function(){return this._linewidth},set:function(i){this._linewidth=i,this._flagLinewidth=!0}},opacity:{enumerable:!0,get:function(){return this._opacity},set:function(i){this._opacity=i,this._flagOpacity=!0}},visible:{enumerable:!0,get:function(){return this._visible},set:function(i){this._visible=i,this._flagVisible=!0}},cap:{enumerable:!0,get:function(){return this._cap},set:function(i){this._cap=i,this._flagCap=!0}},join:{enumerable:!0,get:function(){return this._join},set:function(i){this._join=i,this._flagJoin=!0}},miter:{enumerable:!0,get:function(){return this._miter},set:function(i){this._miter=i,this._flagMiter=!0}},fill:{enumerable:!0,get:function(){return this._fill},set:function(i){(this._fill instanceof G||this._fill instanceof W||this._fill instanceof X||this._fill instanceof V)&&this._fill.unbind(g.Types.change,this._renderer.flagFill),this._fill=i,this._flagFill=!0,(this._fill instanceof G||this._fill instanceof W||this._fill instanceof X||this._fill instanceof V)&&this._fill.bind(g.Types.change,this._renderer.flagFill)}},stroke:{enumerable:!0,get:function(){return this._stroke},set:function(i){(this._stroke instanceof G||this._stroke instanceof W||this._stroke instanceof X||this._stroke instanceof V)&&this._stroke.unbind(g.Types.change,this._renderer.flagStroke),this._stroke=i,this._flagStroke=!0,(this._stroke instanceof G||this._stroke instanceof W||this._stroke instanceof X||this._stroke instanceof V)&&this._stroke.bind(g.Types.change,this._renderer.flagStroke)}},length:{get:function(){return this._flagLength&&this._updateLength(),this._length}},closed:{enumerable:!0,get:function(){return this._closed},set:function(i){this._closed=!!i,this._flagVertices=!0}},curved:{enumerable:!0,get:function(){return this._curved},set:function(i){this._curved=!!i,this._flagVertices=!0}},automatic:{enumerable:!0,get:function(){return this._automatic},set:function(i){if(i===this._automatic)return;this._automatic=!!i;let e=this._automatic?"ignore":"listen";x.each(this.vertices,function(t){t[e]()})}},beginning:{enumerable:!0,get:function(){return this._beginning},set:function(i){this._beginning=i,this._flagVertices=!0}},ending:{enumerable:!0,get:function(){return this._ending},set:function(i){this._ending=i,this._flagVertices=!0}},vertices:{enumerable:!0,get:function(){return this._collection},set:function(i){let e=this._renderer.bindVertices,t=this._renderer.unbindVertices;this._collection&&this._collection.unbind(g.Types.insert,e).unbind(g.Types.remove,t),i instanceof ce?this._collection=i:this._collection=new ce(i||[]),this._collection.bind(g.Types.insert,e).bind(g.Types.remove,t),e(this._collection)}},mask:{enumerable:!0,get:function(){return this._mask},set:function(i){this._mask=i,this._flagMask=!0,x.isObject(i)&&!i.clip&&(i.clip=!0)}},clip:{enumerable:!0,get:function(){return this._clip},set:function(i){this._clip=i,this._flagClip=!0}},dashes:{enumerable:!0,get:function(){return this._dashes},set:function(i){typeof i.offset!="number"&&(i.offset=this.dashes&&this._dashes.offset||0),this._dashes=i}}};function Jt(){this._flagVertices=!0,this._flagLength=!0,this.parent&&(this.parent._flagLength=!0)}function Zt(i){let e=i.length;for(;e--;)i[e].bind(g.Types.change,this._renderer.flagVertices);this._renderer.flagVertices()}function Qt(i){let e=i.length;for(;e--;)i[e].unbind(g.Types.change,this._renderer.flagVertices);this._renderer.flagVertices()}function ei(){this._flagFill=!0}function ti(){this._flagStroke=!0}var ft=class extends C{constructor(e,t,s,r){let n=[new T,new T,new T,new T];super(n,!0,!1,!0),this._renderer.type="rectangle";for(let o in Si)Object.defineProperty(this,o,Si[o]);this.width=typeof s=="number"?s:1,this.height=typeof r=="number"?r:1,this.origin=new v,typeof e=="number"&&(this.translation.x=e),typeof t=="number"&&(this.translation.y=t),this._update()}static fromObject(e){let t=new ft().copy(e);return"id"in e&&(t.id=e.id),t}copy(e){super.copy.call(this,e);for(let t=0;t0&&(x.isNaN(this._lastFrame)&&(this._lastFrame=a-1),o=x.performance.now()-this._startTime,u=this._lastFrame+1,h=1e3*(u-this._firstFrame)/this._frameRate,this._loop?o=o%h:o=Math.min(o,h),l=fe(this._firstFrame,u,o/h),l=Math.floor(l),l!==this._index&&(this._index=l,l>=this._lastFrame-1&&this._onLastFrame&&this._onLastFrame()));let _=this._index%t,d=Math.floor(this._index/t),y=-r*_+(f-r)/2,b=-n*d+(c-n)/2;y!==e.offset.x&&(e.offset.x=y),b!==e.offset.y&&(e.offset.y=b)}return super._update.call(this),this}flagReset(){return this._flagTexture=this._flagColumns=this._flagRows=this._flagFrameRate=!1,super.flagReset.call(this),this}},je=ct;w(je,"Properties",["texture","columns","rows","frameRate","index","firstFrame","lastFrame","loop"]);var Ei={texture:{enumerable:!0,get:function(){return this._texture},set:function(i){this._texture=i,this._flagTexture=!0}},columns:{enumerable:!0,get:function(){return this._columns},set:function(i){this._columns=i,this._flagColumns=!0}},rows:{enumerable:!0,get:function(){return this._rows},set:function(i){this._rows=i,this._flagRows=!0}},frameRate:{enumerable:!0,get:function(){return this._frameRate},set:function(i){this._frameRate=i,this._flagFrameRate=!0}},index:{enumerable:!0,get:function(){return this._index},set:function(i){this._index=i,this._flagIndex=!0}},firstFrame:{enumerable:!0,get:function(){return this._firstFrame},set:function(i){this._firstFrame=i}},lastFrame:{enumerable:!0,get:function(){return this._lastFrame},set:function(i){this._lastFrame=i}},loop:{enumerable:!0,get:function(){return this._loop},set:function(i){this._loop=!!i}}};var bt=class extends ce{#e={};get ids(){return this.#e}constructor(e){e=Array.isArray(e)?e:Array.prototype.slice.call(arguments),super(e),this.attach(e),this.on(g.Types.insert,this.attach),this.on(g.Types.remove,this.detach)}attach(e){for(let t=0;t0,a=this.vertices,h=o?a.length/2:a.length,l,f=0,c,u,_,d,y,b,m,p,A;for(n?h--:o||(h-=2),c=0,u=h-1;c2&&(e-=1);let t=4/3*Math.tan(Math.PI/(e*2)),s=this._radius,r=s*t;for(let n=0;n2&&(e-=1);let t=4/3*Math.tan(Math.PI/(this.vertices.length*2)),s=this._width/2,r=this._height/2;for(let n=0;nt.toObject()),x.each(Ie.Properties,function(t){typeof this[t]<"u"&&(this[t].toObject?e[t]=this[t].toObject():e[t]=this[t])},this),e}dispose(){if(super.dispose(),this.vertices&&typeof this.vertices.unbind=="function")try{this.vertices.unbind()}catch{}if(this.vertices)for(let e=0;e=n&&l<=o&&(h=this._collection[l],this._renderer.collection.push(h),this._renderer.vertices[a*2+0]=h.x,this._renderer.vertices[a*2+1]=h.y,a++)}return super._update.apply(this,arguments),this}flagReset(){return this._flagVertices=this._flagLength=this._flagFill=this._flagStroke=this._flagLinewidth=this._flagOpacity=this._flagVisible=this._flagSize=this._flagSizeAttenuation=!1,super.flagReset.call(this),this}},He=Ie;w(He,"Properties",["fill","stroke","linewidth","opacity","visible","size","sizeAttenuation","beginning","ending","dashes"]);var Ci={linewidth:{enumerable:!0,get:function(){return this._linewidth},set:function(i){this._linewidth=i,this._flagLinewidth=!0}},opacity:{enumerable:!0,get:function(){return this._opacity},set:function(i){this._opacity=i,this._flagOpacity=!0}},visible:{enumerable:!0,get:function(){return this._visible},set:function(i){this._visible=i,this._flagVisible=!0}},size:{enumerable:!0,get:function(){return this._size},set:function(i){this._size=i,this._flagSize=!0}},sizeAttenuation:{enumerable:!0,get:function(){return this._sizeAttenuation},set:function(i){this._sizeAttenuation=i,this._flagSizeAttenuation=!0}},fill:{enumerable:!0,get:function(){return this._fill},set:function(i){(this._fill instanceof G||this._fill instanceof W||this._fill instanceof X||this._fill instanceof V)&&this._fill.unbind(g.Types.change,this._renderer.flagFill),this._fill=i,this._flagFill=!0,(this._fill instanceof G||this._fill instanceof W||this._fill instanceof X||this._fill instanceof V)&&this._fill.bind(g.Types.change,this._renderer.flagFill)}},stroke:{enumerable:!0,get:function(){return this._stroke},set:function(i){(this._stroke instanceof G||this._stroke instanceof W||this._stroke instanceof X||this._stroke instanceof V)&&this._stroke.unbind(g.Types.change,this._renderer.flagStroke),this._stroke=i,this._flagStroke=!0,(this._stroke instanceof G||this._stroke instanceof W||this._stroke instanceof X||this._stroke instanceof V)&&this._stroke.bind(g.Types.change,this._renderer.flagStroke)}},length:{get:function(){return this._flagLength&&this._updateLength(),this._length}},beginning:{enumerable:!0,get:function(){return this._beginning},set:function(i){this._beginning=i,this._flagVertices=!0}},ending:{enumerable:!0,get:function(){return this._ending},set:function(i){this._ending=i,this._flagVertices=!0}},vertices:{enumerable:!0,get:function(){return this._collection},set:function(i){let e=this._renderer.bindVertices,t=this._renderer.unbindVertices;this._collection&&this._collection.unbind(g.Types.insert,e).unbind(g.Types.remove,t),i instanceof ce?this._collection=i:this._collection=new ce(i||[]),this._collection.bind(g.Types.insert,e).bind(g.Types.remove,t),e(this._collection)}},dashes:{enumerable:!0,get:function(){return this._dashes},set:function(i){typeof i.offset!="number"&&(i.offset=this.dashes&&this._dashes.offset||0),this._dashes=i}}};var ks=Math.cos,Rs=Math.sin,Ye=class extends C{_flagWidth=!1;_flagHeight=!1;_flagSides=!1;_radius=0;_width=0;_height=0;_sides=0;constructor(e,t,s,r){r=Math.max(r||0,3),super(),this._renderer.type="polygon";for(let n in Pi)Object.defineProperty(this,n,Pi[n]);this.closed=!0,this.automatic=!1,typeof s=="number"&&(this.radius=s),typeof r=="number"&&(this.sides=r),this._update(),typeof e=="number"&&(this.translation.x=e),typeof t=="number"&&(this.translation.y=t)}static fromObject(e){let t=new Ye().copy(e);return"id"in e&&(t.id=e.id),t}copy(e){super.copy.call(this,e);for(let t=0;te&&(this.vertices.splice(e-1,s-e),s=e);for(let r=0;r=s?this.vertices.push(new T(a,h)):this.vertices[r].set(a,h),this.vertices[r].command=r===0?k.move:k.line}}return super._update.call(this),this}flagReset(){return this._flagWidth=this._flagHeight=this._flagSides=!1,super.flagReset.call(this),this}clone(e){let t=new Ye(0,0,0,this.sides);t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,t.width=this.width,t.height=this.height,this.matrix.manual&&t.matrix.copy(this.matrix);for(let s=0;s"u"&&typeof s=="number"&&typeof r=="number"&&(n=Math.floor(Math.min(s,r)/12));let o=[];for(let a=0;a<10;a++)o.push(new T(0,0,0,0,0,0,a===0?k.move:k.curve));super(o),this._renderer.type="rounded-rectangle";for(let a in Li)Object.defineProperty(this,a,Li[a]);this.closed=!0,this.automatic=!1,this._renderer.flagRadius=As.bind(this),typeof s=="number"&&(this.width=s),typeof r=="number"&&(this.height=r),typeof n=="number"&&(this.radius=n),this._update(),typeof e=="number"&&(this.translation.x=e),typeof t=="number"&&(this.translation.y=t)}static fromObject(e){let t=new qe().copy(e);return"id"in e&&(t.id=e.id),t}copy(e){super.copy.call(this,e);for(let t=0;te&&(this.vertices.splice(e-1,s-e),s=e);for(let r=0;r=s?this.vertices.push(new T(h,l)):this.vertices[r].set(h,l),this.vertices[r].command=r===0?k.move:k.line}}return super._update.call(this),this}flagReset(){return this._flagInnerRadius=this._flagOuterRadius=this._flagSides=!1,super.flagReset.call(this),this}clone(e){let t=this.innerRadius,s=this.outerRadius,r=this.sides,n=new Ke(0,0,t,s,r);n.translation.copy(this.translation),n.rotation=this.rotation,n.scale=this.scale,n.skewX=this.skewX,n.skewY=this.skewY,this.matrix.manual&&n.matrix.copy(this.matrix);for(let o=0;o{e.children[s]=t.toObject()},this),e}dispose(){if(super.dispose(),this.children)for(let e=0;e=0&&t.push(r),r.children)for(let n=0;n=0&&this.children.splice(r,1),this.children.push(s)}return this}remove(e){let t=arguments.length,s=this.parent;if(t<=0&&s)return s.remove(this),this;e instanceof Array?e=e.slice():e=Array.prototype.slice.call(arguments);for(let r=0;r=0&&this.children.splice(o,1)}return this}getBoundingClientRect(e){let t,s,r,n,o,a;this._update(!0);let h=1/0,l=-1/0,f=1/0,c=-1/0,u=/texture|gradient/i;s=e?this.matrix:this.worldMatrix;for(let _=0;_a+t?(s.beginning=1,s.ending=1):la&&ha&&l0&&t(this._children)),this._children=new bt(i),this._children.bind(g.Types.insert,e),this._children.bind(g.Types.remove,t),this._children.bind(g.Types.order,s),i.length>0&&e(i)}},mask:{enumerable:!0,get:function(){return this._mask},set:function(i){this._mask=i,this._flagMask=!0,x.isObject(i)&&!i.clip&&(i.clip=!0)}}};function ji(i,e){let t=i.parent,s;if(t===e){r();return}if(t&&t.children.ids[i.id]&&(s=Array.prototype.indexOf.call(t.children,i),t.children.splice(s,1),n()),e){r();return}n(),t._flagAdditions&&t.additions.length===0&&(t._flagAdditions=!1),t._flagSubtractions&&t.subtractions.length===0&&(t._flagSubtractions=!1),delete i.parent;function r(){e.subtractions.length>0&&(s=Array.prototype.indexOf.call(e.subtractions,i),s>=0&&e.subtractions.splice(s,1)),e.additions.length>0&&(s=Array.prototype.indexOf.call(e.additions,i),s>=0&&e.additions.splice(s,1)),i.parent=e,e.additions.push(i),e._flagAdditions=!0}function n(){s=Array.prototype.indexOf.call(t.additions,i),s>=0&&t.additions.splice(s,1),s=Array.prototype.indexOf.call(t.subtractions,i),s<0&&(t.subtractions.push(i),t._flagSubtractions=!0)}}var Je=class extends C{constructor(e,t,s,r){let n=[new T(e,t),new T(s,r)];super(n);for(let o in Ui)Object.defineProperty(this,o,Ui[o]);this.vertices[0].command=k.move,this.vertices[1].command=k.line,this.automatic=!1}};w(Je,"Properties",["left","right"]);var Ui={left:{enumerable:!0,get:function(){return this.vertices[0]},set:function(i){if(x.isObject(i))this.vertices.splice(0,1,i),this.vertices[0].command=k.move;else{let e=new ee("Two.Line.left argument is not an object.");console.warn(e.name,e.message)}}},right:{enumerable:!0,get:function(){return this.vertices[1]},set:function(i){if(x.isObject(i))this.vertices.splice(1,1,i),this.vertices[1].command=k.line;else{let e=new ee("Two.Line.right argument is not an object.");console.warn(e.name,e.message)}}}};var Pe={path:/[+-]?(?:\d*\.\d+|\d+)(?:[eE][+-]\d+)?/g,cssBackgroundImage:/url\(['"]?#([\w\d-_]*)['"]?\)/i,unitSuffix:/[a-zA-Z%]*/i},Ms={start:"left",middle:"center",end:"right"},Di=["id","class","transform","xmlns","viewBox"],Os=["x","y","width","height","href","xlink:href"];function Cs(i){return Ms[i]}function Ps(i){let e=i.getAttribute("dominant-baseline"),t=i.getAttribute("alignment-baseline");return e||t}function xt(i){return i.replace(/svg:/gi,"").toLowerCase()}function Wi(i,e){if(e.x+=i.translateX,e.y+=i.translateY,e.x*=i.scaleX,e.y*=i.scaleY,i.rotation!==0){let t=e.length();e.x=t*Math.cos(i.rotation),e.y=t*Math.sin(i.rotation)}}function Ls(i,e){e||(e={});let t=i.split(";");for(let s=0;s"u"||typeof o>"u")continue;let a=n.replace(/\s/g,""),h=o.replace(/\s/g,"");e[a]=h}return e}function Bs(i){let e={},t=Is(i),s=Math.max(t.length,i.style.length);for(let r=0;r=0&&e.splice(r,1)}return e}function Ns(i,e){let t=e.split(/[\s,]/),s=-parseFloat(t[0]),r=-parseFloat(t[1]),n=parseFloat(t[2]),o=parseFloat(t[3]);if(s&&r)for(let c=0;c"u"&&/none/i.test(s.display))||typeof s.visibility>"u"&&/hidden/i.test(s.visibility);for(h in s)switch(l=s[h],h){case"gradientTransform":if(/none/i.test(l)||(a=i.gradientTransform&&i.gradientTransform.baseVal&&i.gradientTransform.baseVal.length>0?i.gradientTransform.baseVal[0].matrix:i.getCTM?i.getCTM():null,a===null))break;switch(u=Ee(a),e._renderer.type){case"linear-gradient":Wi(u,e.left),Wi(u,e.right);break;case"radial-gradient":e.center.x+=u.translateX,e.center.y+=u.translateY,e.focal.x+=u.translateX,e.focal.y+=u.translateY,e.radius*=Math.max(u.scaleX,u.scaleY);break}break;case"transform":if(/none/i.test(l)||(a=i.transform&&i.transform.baseVal&&i.transform.baseVal.length>0?i.transform.baseVal[0].matrix:i.getCTM?i.getCTM():null,a===null))break;Q.AutoCalculateImportedMatrices?(u=Ee(a),e.translation.set(u.translateX,u.translateY),e.rotation=Math.PI*(u.rotation/180),e.scale=new v(u.scaleX,u.scaleY),_=parseFloat((s.x+"").replace("px")),d=parseFloat((s.y+"").replace("px")),_&&(e.translation.x=_),d&&(e.translation.y=d)):(a=i.getCTM(),e._matrix.manual=!0,e._matrix.set(a.a,a.b,a.c,a.d,a.e,a.f));break;case"visible":if(e instanceof K){e._visible=l;break}e.visible=l;break;case"stroke-linecap":if(e instanceof K){e._cap=l;break}e.cap=l;break;case"stroke-linejoin":if(e instanceof K){e._join=l;break}e.join=l;break;case"stroke-miterlimit":if(e instanceof K){e._miter=l;break}e.miter=l;break;case"stroke-width":if(e instanceof K){e._linewidth=parseFloat(l);break}e.linewidth=parseFloat(l);break;case"opacity":case"stroke-opacity":case"fill-opacity":if(e instanceof K){e._opacity=parseFloat(l);break}e.opacity=parseFloat(l);break;case"clip-path":if(Pe.cssBackgroundImage.test(l)&&(y=l.replace(Pe.cssBackgroundImage,"$1"),$.defs.current&&$.defs.current.contains(y)&&(m=$.defs.current.get(y),m&&m.childNodes.length>0)))switch(m=m.childNodes[0],p=xt(m.nodeName),e.mask=$[p].call(this,m,{}),e._renderer.type){case"text":case"path":e.position.add(e.mask.position),e.mask.position.clear();break}break;case"fill":case"stroke":f=(e instanceof K?"_":"")+h,Pe.cssBackgroundImage.test(l)?(y=l.replace(Pe.cssBackgroundImage,"$1"),$.defs.current&&$.defs.current.contains(y)?(m=$.defs.current.get(y),m.object||(p=xt(m.nodeName),m.object=$[p].call(this,m,{})),m=m.object):(b=zs(this),m=b.getById(y)),e[f]=m):e[f]=l;break;case"id":e.id=l;break;case"class":case"className":e.classList=l.split(" "),e._flagClassName=!0;break;case"x":case"y":if(A=e instanceof G,F=e instanceof W,R=e instanceof X,A||F||R)break;l.match("[a-z%]$")&&!l.endsWith("px")&&(S=new ee("only pixel values are supported with the "+h+" attribute."),console.warn(S.name,S.message)),e.translation[h]=parseFloat(l);break;case"font-family":e instanceof he&&(e.family=l);break;case"font-size":e instanceof he&&(l.match("[a-z%]$")&&!l.endsWith("px")&&(S=new ee("only pixel values are supported with the "+h+" attribute."),console.warn(S.name,S.message)),e.size=parseFloat(l));break;case"font-weight":e instanceof he&&(e.weight=l);break;case"font-style":e instanceof he&&(e.style=l);break;case"text-decoration":e instanceof he&&(e.decoration=l);break;case"line-height":e instanceof he&&(e.leading=l);break}return Object.keys(i.dataset).length&&(e.dataset=i.dataset),s}function Vs(i,e){for(let t=0,s=i.childNodes.length;t with no href."),console.warn(t.name,t.message),null;let r=s.slice(1);if(!$.defs.current.contains(r))return t=new ee("unable to find element for reference "+s+"."),console.warn(t.name,t.message),null;let o=$.defs.current.get(r).cloneNode(!0);for(let h=0;h1&&(m=1);break;case"m":case"l":case"t":d.length>2&&(m=2);break;case"s":case"q":d.length>4&&(m=4);break;case"c":d.length>6&&(m=6);break;case"a":d.length>7&&(m=7);break}if(m){for(p=0,A=d.length,R=0;p0)switch(y){case"m":F="l";break;case"M":F="L";break}S.push(F+d.slice(p,p+m).join(" ")),R++}f=Array.prototype.concat.apply(f,S)}else f.push(u)}),x.each(f,function(u,_){let d,y,b,m=u[0],p=m.toLowerCase();l=u.slice(1).trim().match(Pe.path),n=m===p;let A,F,R,S,M,I,P,O,j,N,q,z,ie,ue,te,xe,oe;switch(p){case"z":if(_>=c)r=!0;else{y=a.x,b=a.y,d=new T(y,b,void 0,void 0,void 0,void 0,k.close);for(let Le=s.length-1;Le>=0;Le--){let Ne=s[Le];if(/m/i.test(Ne.command)){a=Ne;break}}}break;case"m":case"l":h=void 0,y=parseFloat(l[0]),b=parseFloat(l[1]),d=new T(y,b,void 0,void 0,void 0,void 0,/m/i.test(p)?k.move:k.line),n&&d.addSelf(a),a=d;break;case"h":case"v":N=/h/i.test(p)?"x":"y",q=/x/i.test(N)?"y":"x",d=new T(void 0,void 0,void 0,void 0,void 0,void 0,k.line),d[N]=parseFloat(l[0]),d[q]=a[q],n&&(d[N]+=a[N]),a=d;break;case"c":case"s":A=a.x,F=a.y,h||(h=new v),/c/i.test(p)?(R=parseFloat(l[0]),S=parseFloat(l[1]),M=parseFloat(l[2]),I=parseFloat(l[3]),P=parseFloat(l[4]),O=parseFloat(l[5])):(j=At(a,h,n),R=j.x,S=j.y,M=parseFloat(l[0]),I=parseFloat(l[1]),P=parseFloat(l[2]),O=parseFloat(l[3])),n&&(R+=A,S+=F,M+=A,I+=F,P+=A,O+=F),a.controls.right.set(R-a.x,S-a.y),d=new T(P,O,M-P,I-O,void 0,void 0,k.curve),a=d,h=d.controls.left;break;case"t":case"q":A=a.x,F=a.y,h||(h=new v),/q/i.test(p)?(R=parseFloat(l[0]),S=parseFloat(l[1]),M=parseFloat(l[0]),I=parseFloat(l[1]),P=parseFloat(l[2]),O=parseFloat(l[3])):(j=At(a,h,n),R=j.x,S=j.y,M=j.x,I=j.y,P=parseFloat(l[0]),O=parseFloat(l[1])),n&&(R+=A,S+=F,M+=A,I+=F,P+=A,O+=F),a.controls.right.set((R-a.x)*.33,(S-a.y)*.33),d=new T(P,O,M-P,I-O,void 0,void 0,k.curve),a=d,h=d.controls.left;break;case"a":A=a.x,F=a.y,ie=parseFloat(l[0]),ue=parseFloat(l[1]),te=parseFloat(l[2]),xe=parseFloat(l[3]),oe=parseFloat(l[4]),P=parseFloat(l[5]),O=parseFloat(l[6]),n&&(P+=A,O+=F),z=new T(P,O),z.command=k.arc,z.rx=ie,z.ry=ue,z.xAxisRotation=te,z.largeArcFlag=xe,z.sweepFlag=oe,d=z,a=z,h=void 0;break}d&&(Array.isArray(d)?s=s.concat(d):s.push(d))})}t=new C(s,r,void 0,!0),t.stroke="none",t.fill="black";let o=t.getBoundingClientRect(!0);return o.centroid={x:o.left+o.width/2,y:o.top+o.height/2},x.each(t.vertices,function(a){a.subSelf(o.centroid)}),Fe.call(this,i,t,e),t.translation.addSelf(o.centroid),t},circle:function(i,e){let t=parseFloat(i.getAttribute("cx")),s=parseFloat(i.getAttribute("cy")),r=parseFloat(i.getAttribute("r")),n=new Me(0,0,r);return n.stroke="none",n.fill="black",Fe.call(this,i,n,e),n.translation.x=t,n.translation.y=s,n},ellipse:function(i,e){let t=parseFloat(i.getAttribute("cx")),s=parseFloat(i.getAttribute("cy")),r=parseFloat(i.getAttribute("rx")),n=parseFloat(i.getAttribute("ry")),o=new Oe(0,0,r,n);return o.stroke="none",o.fill="black",Fe.call(this,i,o,e),o.translation.x=t,o.translation.y=s,o},rect:function(i,e){let t=parseFloat(i.getAttribute("rx")),s=parseFloat(i.getAttribute("ry"));if(!x.isNaN(t)||!x.isNaN(s))return $["rounded-rect"](i);let r=parseFloat(i.getAttribute("width")),n=parseFloat(i.getAttribute("height")),o=r/2,a=n/2,h=new ge(0,0,r,n);return h.stroke="none",h.fill="black",Fe.call(this,i,h,e),h.translation.x+=o,h.translation.y+=a,h},"rounded-rect":function(i,e){let t=parseFloat(i.getAttribute("rx"))||0,s=parseFloat(i.getAttribute("ry"))||0,r=parseFloat(i.getAttribute("width")),n=parseFloat(i.getAttribute("height")),o=r/2,a=n/2,h=new v(t,s),l=new Ce(0,0,r,n,h);return l.stroke="none",l.fill="black",Fe.call(this,i,l,e),l.translation.x+=o,l.translation.y+=a,l},line:function(i,e){let t=parseFloat(i.getAttribute("x1")),s=parseFloat(i.getAttribute("y1")),r=parseFloat(i.getAttribute("x2")),n=parseFloat(i.getAttribute("y2")),o=new Je(t,s,r,n).noFill();return Fe.call(this,i,o,e),o},lineargradient:function(i,e){let t=i.getAttribute("gradientUnits"),s=i.getAttribute("spreadMethod");t||(t="objectBoundingBox"),s||(s="pad");let r=parseFloat(i.getAttribute("x1")||0),n=parseFloat(i.getAttribute("y1")||0),o=parseFloat(i.getAttribute("x2")||0),a=parseFloat(i.getAttribute("y2")||0),h=(o+r)/2,l=(a+n)/2;/userSpaceOnUse/i.test(t)&&(r-=h,n-=l,o-=h,a-=l);let f=[];for(let u=0;u1?p[1]:void 0),b===null?(p=m?m.match(/stop-opacity:\s?([0-9.-]*)/):!1,b=p&&p.length>1?parseFloat(p[1]):1):b=parseFloat(b),f.push(new le(d,y,b))}let c=new W(r,n,o,a,f);return c.spread=s,c.units=t,Fe.call(this,i,c,e),c},radialgradient:function(i,e){let t=i.getAttribute("gradientUnits"),s=i.getAttribute("spreadMethod");t||(t="objectBoundingBox"),s||(s="pad");let r=parseFloat(i.getAttribute("cx"))||0,n=parseFloat(i.getAttribute("cy"))||0,o=parseFloat(i.getAttribute("r")),a=parseFloat(i.getAttribute("fx")),h=parseFloat(i.getAttribute("fy"));x.isNaN(a)&&(a=r),x.isNaN(h)&&(h=n);let l=Math.abs(r+a)/2,f=Math.abs(n+h)/2;/userSpaceOnUse/i.test(t)&&(r-=l,n-=f,a-=l,h-=f);let c=[];for(let _=0;_1?A[1]:void 0),m===null?(A=p?p.match(/stop-opacity:\s?([0-9.-]*)/):!1,m=A&&A.length>1?parseFloat(A[1]):1):m=parseFloat(m),c.push(new le(y,b,m))}let u=new X(r,n,o,c,a,h);return u.spread=s,u.units=t,Fe.call(this,i,u,e),u},text:function(i,e){let t=Cs(i.getAttribute("text-anchor"))||"left",s=Ps(i)||"baseline",r="";i.childNodes.length>0&&i.childNodes[0].tagName==="TSPAN"?r=i.childNodes[0].textContent:r=i.textContent;let n=new he(r);return Fe.call(this,i,n,e),n.alignment=t,n.baseline=s,n},clippath:function(i,e){return $.defs.current&&!$.defs.current.contains(i.id)&&$.defs.current.add(i.id,i),null},image:function(i,e){let t,s=i.getAttribute("href")||i.getAttribute("xlink:href");if(!s)return t=new ee("encountered with no href."),console.warn(t.name,t.message),null;let r=parseFloat(i.getAttribute("x"))||0,n=parseFloat(i.getAttribute("y"))||0,o=parseFloat(i.getAttribute("width")),a=parseFloat(i.getAttribute("height")),h=new je(s,r,n);return x.isNaN(o)||(h.width=o),x.isNaN(a)||(h.height=a),Fe.call(this,i,h,e),h}};function ai(i,e){let t=new XMLHttpRequest;return t.open("GET",i),t.onreadystatechange=function(){t.readyState===4&&t.status===200&&e(t.responseText)},t.send(),t}var tt=class extends ge{_flagTextures=!1;_flagFrameRate=!1;_flagIndex=!1;_amount=1;_duration=0;_index=0;_startTime=0;_playing=!1;_firstFrame=0;_lastFrame=0;_loop=!0;_textures=null;_frameRate=0;_origin=null;constructor(e,t,s,r){super(t,s,0,0);for(let n in Xi)Object.defineProperty(this,n,Xi[n]);this._renderer.flagTextures=js.bind(this),this._renderer.bindTextures=Us.bind(this),this._renderer.unbindTextures=Ds.bind(this),this.noStroke(),this.noFill(),Array.isArray(e)?this.textures=e.map(Hi.bind(this)):typeof e=="string"&&(this.textures=[Hi(e)]),this.origin=new v,this._update(),typeof r=="number"?this.frameRate=r:this.frameRate=tt.DefaultFrameRate,this.index=0}static fromObject(e){let t=new tt().copy(e);return"id"in e&&(t.id=e.id),t}copy(e){super.copy.call(this,e);for(let t=0;t0?(n=this._amount,x.isNaN(this._lastFrame)&&(this._lastFrame=n-1),r=x.performance.now()-this._startTime,l=this._lastFrame+1,o=1e3*(l-this._firstFrame)/this._frameRate,this._loop?r=r%o:r=Math.min(r,o),h=fe(this._firstFrame,l,r/o),h=Math.floor(h),h!==this._index&&(this._index=h,a=e[this._index],a.loaded&&(t=a.image.width,s=a.image.height,this.width!==t&&(this.width=t),this.height!==s&&(this.height=s),this.fill=a,h>=this._lastFrame-1&&this._onLastFrame&&this._onLastFrame()))):(this._flagIndex||!(this.fill instanceof V))&&(a=e[this._index],a.loaded&&(t=a.image.width,s=a.image.height,this.width!==t&&(this.width=t),this.height!==s&&(this.height=s)),this.fill=a)),super._update.call(this),this}flagReset(){return this._flagTextures=this._flagFrameRate=!1,super.flagReset.call(this),this}},it=tt;w(it,"Properties",["textures","frameRate","index","firstFrame","lastFrame","loop"]),w(it,"DefaultFrameRate",30);var Xi={frameRate:{enumerable:!0,get:function(){return this._frameRate},set:function(i){this._frameRate=i,this._flagFrameRate=!0}},index:{enumerable:!0,get:function(){return this._index},set:function(i){this._index=i,this._flagIndex=!0}},textures:{enumerable:!0,get:function(){return this._textures},set:function(i){let e=this._renderer.bindTextures,t=this._renderer.unbindTextures;this._textures&&this._textures.unbind(g.Types.insert,e).unbind(g.Types.remove,t),this._textures=new ce((i||[]).slice(0)),this._textures.bind(g.Types.insert,e).bind(g.Types.remove,t),e(this._textures)}},firstFrame:{enumerable:!0,get:function(){return this._firstFrame},set:function(i){this._firstFrame=i}},lastFrame:{enumerable:!0,get:function(){return this._lastFrame},set:function(i){this._lastFrame=i}},loop:{enumerable:!0,get:function(){return this._loop},set:function(i){this._loop=!!i}}};function js(){this._flagTextures=!0}function Us(i){let e=i.length;for(;e--;)i[e].bind(g.Types.change,this._renderer.flagTextures);this._renderer.flagTextures()}function Ds(i){let e=i.length;for(;e--;)i[e].unbind(g.Types.change,this._renderer.flagTextures);this._renderer.flagTextures()}function Hi(i){if(i instanceof V)return i;if(typeof i=="string")return new V(i)}var li=[],hi=Math.max,Ws=Math.min,Yi=Math.abs,Ct=Math.sin,Pt=Math.cos,Xs=Math.acos,Bt=Math.sqrt,H={isHidden:/(undefined|none|transparent)/i,alignments:{left:"start",middle:"center",right:"end"},baselines:{top:"top",middle:"middle",bottom:"bottom",baseline:"alphabetic"},getRendererType:function(i){return i in H?i:"path"},group:{renderChild:function(i){let e=H.getRendererType(i._renderer.type);H[e].render.call(i,this.ctx,!0,this.clip)},render:function(i){if(!this._visible)return this;x.isFunction(this._renderer.onBeforeRender)&&this._renderer.onBeforeRender(),this._update();let e=this._matrix.elements,t=this.parent;this._renderer.opacity=this._opacity*(t&&t._renderer?t._renderer.opacity:1);let s=this._mask,r=Lt(e),n=!r||!!s;if(this._renderer.context||(this._renderer.context={}),this._renderer.context.ctx=i,n&&(i.save(),r||i.transform(e[0],e[3],e[1],e[4],e[2],e[5])),s){let o=H.getRendererType(s._renderer.type);H[o].render.call(s,i,!0)}if(this._opacity>0&&this._scale!==0)for(let o=0;o0&&(i.lineDashOffset=oe.offset||0,i.setLineDash(oe)),i.beginPath();let Ne,ut,_t,pt,gt,mt,_e;for(let D=0;D=y&&u&&(A=F,j=p.controls&&p.controls.right||v.zero,N=A.controls&&A.controls.left||v.zero,p._relative?(M=j.x+p.x,I=j.y+p.y):(M=j.x,I=j.y),A._relative?(R=N.x+A.x,S=N.y+A.y):(R=N.x,S=N.y),q=A.x,z=A.y,i.bezierCurveTo(M,I,R,S,q,z));break;case k.line:i.lineTo(q,z);break;case k.move:F=p,i.moveTo(q,z);break}return u&&i.closePath(),!ue&&!t&&(H.isHidden.test(o)||(xe=o._renderer&&o._renderer.offset,xe&&(i.save(),i.translate(-o._renderer.offset.x,-o._renderer.offset.y),i.scale(o._renderer.scale.x,o._renderer.scale.y)),i.fill(),xe&&i.restore()),H.isHidden.test(r)||(xe=r._renderer&&r._renderer.offset,xe&&(i.save(),i.translate(-r._renderer.offset.x,-r._renderer.offset.y),i.scale(r._renderer.scale.x,r._renderer.scale.y),i.lineWidth=n/r._renderer.scale.x),i.stroke(),xe&&i.restore())),te||i.restore(),ue&&!t&&i.clip(),oe&&oe.length>0&&i.setLineDash(li),x.isFunction(this._renderer.onAfterRender)&&this._renderer.onAfterRender(),this.flagReset()}},points:{render:function(i,e,t){let s,r,n,o,a,h,l,f,c,u,_,d,y,b,m,p;if(p=this.parent&&this.parent._renderer?this.parent._renderer.opacity:1,a=this._opacity*(p||1),h=this._visible,!e&&(!h||a===0))return this;if(x.isFunction(this._renderer.onBeforeRender)&&this._renderer.onBeforeRender(),this._update(),s=this._matrix.elements,r=this._stroke,n=this._linewidth,o=this._fill,f=this._renderer.collection,c=f.length,y=Lt(s),m=this.dashes,l=this._size,y||(i.save(),i.transform(s[0],s[3],s[1],s[4],s[2],s[5])),o)if(typeof o=="string")i.fillStyle=o;else{let R=H.getRendererType(o._renderer.type);H[R].render.call(o,i,this),i.fillStyle=o._renderer.effect}if(r){if(typeof r=="string")i.strokeStyle=r;else{let R=H.getRendererType(r._renderer.type);H[R].render.call(r,i,this),i.strokeStyle=r._renderer.effect}n&&(i.lineWidth=n)}typeof a=="number"&&(i.globalAlpha=a),m&&m.length>0&&(i.lineDashOffset=m.offset||0,i.setLineDash(m)),i.beginPath();let A=l*.5,F;this._sizeAttenuation||(F=this.worldMatrix.elements,F=Ee(F[0],F[3],F[1],F[4],F[2],F[5]),A/=Math.max(F.scaleX,F.scaleY));for(let R=0;R0&&i.setLineDash(li),x.isFunction(this._renderer.onAfterRender)&&this._renderer.onAfterRender(),this.flagReset()}},text:{render:function(i,e,t){let s=this.parent&&this.parent._renderer?this.parent._renderer.opacity:1,r=this._opacity*s,n=this._visible,o=this._mask,a=this._clip;if(!e&&(!n||a||r===0))return this;x.isFunction(this._renderer.onBeforeRender)&&this._renderer.onBeforeRender(),this._update();let h=this._matrix.elements,l=this._stroke,f=this._linewidth,c=this._fill,u=this._decoration,_=this._direction,d=Lt(h),y=c._renderer&&c._renderer.offset&&l._renderer&&l._renderer.offset,b=this.dashes,m=H.alignments[this._alignment]||this._alignment,p=H.baselines[this._baseline]||this._baseline,A,F,R,S,M,I,P,O,j,N,q;if(d||(i.save(),i.transform(h[0],h[3],h[1],h[4],h[2],h[5])),o){let z=H.getRendererType(o._renderer.type);H[z].render.call(o,i,!0)}if(y||(i.font=[this._style,this._weight,this._size+"px/"+this._leading+"px",this._family].join(" ")),i.textAlign=m,i.textBaseline=p,i.direction=_,c)if(typeof c=="string")i.fillStyle=c;else{let z=H.getRendererType(c._renderer.type);H[z].render.call(c,i,this),i.fillStyle=c._renderer.effect}if(l){if(typeof l=="string")i.strokeStyle=l;else{let z=H.getRendererType(l._renderer.type);H[z].render.call(l,i,this),i.strokeStyle=l._renderer.effect}f&&(i.lineWidth=f)}if(typeof r=="number"&&(i.globalAlpha=r),b&&b.length>0&&(i.lineDashOffset=b.offset||0,i.setLineDash(b)),!a&&!t&&(H.isHidden.test(c)||(c._renderer&&c._renderer.offset?(I=c._renderer.scale.x,P=c._renderer.scale.y,i.save(),i.translate(-c._renderer.offset.x,-c._renderer.offset.y),i.scale(I,P),A=this._size/c._renderer.scale.y,F=this._leading/c._renderer.scale.y,i.font=[this._style,this._weight,A+"px/",F+"px",this._family].join(" "),R=c._renderer.offset.x/c._renderer.scale.x,S=c._renderer.offset.y/c._renderer.scale.y,i.fillText(this.value,R,S),i.restore()):i.fillText(this.value,0,0)),H.isHidden.test(l)||(l._renderer&&l._renderer.offset?(I=l._renderer.scale.x,P=l._renderer.scale.y,i.save(),i.translate(-l._renderer.offset.x,-l._renderer.offset.y),i.scale(I,P),A=this._size/l._renderer.scale.y,F=this._leading/l._renderer.scale.y,i.font=[this._style,this._weight,A+"px/",F+"px",this._family].join(" "),R=l._renderer.offset.x/l._renderer.scale.x,S=l._renderer.offset.y/l._renderer.scale.y,M=f/l._renderer.scale.x,i.lineWidth=M,i.strokeText(this.value,R,S),i.restore()):i.strokeText(this.value,0,0))),/(underline|strikethrough)/i.test(u)){let z=i.measureText(this.value),ie=1;switch(u){case"underline":j=z.actualBoundingBoxDescent,q=z.actualBoundingBoxDescent;break;case"strikethrough":j=0,q=0,ie=.5;break}switch(p){case"top":j+=this._size*ie,q+=this._size*ie;break;case"baseline":case"bottom":j-=this._size*ie,q-=this._size*ie;break}switch(m){case"left":case"start":O=0,N=z.width;break;case"right":case"end":O=-z.width,N=0;break;default:O=-z.width/2,N=z.width/2}i.lineWidth=Math.max(Math.floor(this._size/15),1),i.strokeStyle=i.fillStyle,i.beginPath(),i.moveTo(O,j),i.lineTo(N,q),i.stroke()}return d||i.restore(),a&&!t&&i.clip(),b&&b.length>0&&i.setLineDash(li),x.isFunction(this._renderer.onAfterRender)&&this._renderer.onAfterRender(),this.flagReset()}},"linear-gradient":{render:function(i,e){if(!!e){if(x.isFunction(this._renderer.onBeforeRender)&&this._renderer.onBeforeRender(),this._update(),!this._renderer.effect||this._flagEndPoints||this._flagStops||this._flagUnits){let t,s=this.left._x,r=this.left._y,n=this.right._x,o=this.right._y;/objectBoundingBox/i.test(this._units)&&(t=e.getBoundingClientRect(!0),s=(s-.5)*t.width,r=(r-.5)*t.height,n=(n-.5)*t.width,o=(o-.5)*t.height),this._renderer.effect=i.createLinearGradient(s,r,n,o);for(let a=0;a1){let z=Bt(p);s=z*s,r=z*r,b=s*s,m=r*r}let A=b*y+m*d,F=(b*m-A)/A,R=Bt(hi(0,F));n===o&&(R=-R);let S=R*s*_/r,M=-R*r*u/s,I=Pt(a)*S-Ct(a)*M+(e+h)/2,P=Ct(a)*S+Pt(a)*M+(t+l)/2,O=Gi(1,0,(u-S)/s,(_-M)/r),j=Gi((u-S)/s,(_-M)/r,(-u-S)/s,(-_-M)/r)%J,N=O+j;Hs(i,I,P,s,r,O,N,o===0,a)}},re=class extends g{constructor(e){super();let t=e.smoothing!==!1;this.domElement=e.domElement||document.createElement("canvas"),this.ctx=this.domElement.getContext("2d"),this.overdraw=e.overdraw||!1,typeof this.ctx.imageSmoothingEnabled<"u"&&(this.ctx.imageSmoothingEnabled=t),this.scene=new K,this.scene.parent=this}setSize(e,t,s){return this.width=e,this.height=t,this.ratio=typeof s>"u"?nt(this.ctx):s,this.domElement.width=e*this.ratio,this.domElement.height=t*this.ratio,this.domElement.style&&x.extend(this.domElement.style,{width:e+"px",height:t+"px"}),this.trigger(g.Types.resize,e,t,s)}render(){let e=this.ratio===1;return e||(this.ctx.save(),this.ctx.scale(this.ratio,this.ratio)),this.overdraw||this.ctx.clearRect(0,0,this.width,this.height),H.group.render.call(this.scene,this.ctx),e||this.ctx.restore(),this}};w(re,"Utils",H);function Hs(i,e,t,s,r,n,o,a,h){let l=o-n,f=Qe.Tolerance.epsilon,c=Math.abs(l)0&&E.setAttributes(s,e),s},setAttributes:function(i,e){let t=Object.keys(e);for(let s=0;s=s&&e&&(a.command===k.curve&&(c=r,p=a.controls&&a.controls.right||a,A=c.controls&&c.controls.left||c,a.relative?(u=U(p.x+a.x),_=U(p.y+a.y)):(u=U(p.x),_=U(p.y)),c.relative?(d=U(A.x+c.x),y=U(A.y+c.y)):(d=U(A.x),y=U(A.y)),P=U(c.x),O=U(c.y),f+=" C "+u+" "+_+" "+d+" "+y+" "+P+" "+O),a.command!==k.close&&(f+=" Z")),n+=f+" "}return n},pointsToString:function(i,e){let t="",s=e*.5;for(let r=0;r"u"&&(i.defs._flagUpdate=!0,delete this._renderer.hasFillEffect)),this._stroke&&this._stroke._renderer){this._renderer.hasStrokeEffect=!0,this._stroke._update();let s=E.getRendererType(this._stroke._renderer.type);E[s].render.call(this._stroke,i,!0)}if(this._flagStroke&&(e.stroke=this._stroke&&this._stroke.id?"url(#"+this._stroke.id+")":this._stroke,this._renderer.hasStrokeEffect&&typeof this._stroke.id>"u"&&(i.defs._flagUpdate=!0,delete this._renderer.hasStrokeEffect)),this._flagLinewidth&&(e["stroke-width"]=this._linewidth),this._flagOpacity&&(e["stroke-opacity"]=this._opacity,e["fill-opacity"]=this._opacity),this._flagClassName&&(e.class=this.classList.join(" ")),this._flagVisible&&(e.visibility=this._visible?"visible":"hidden"),this._flagCap&&(e["stroke-linecap"]=this._cap),this._flagJoin&&(e["stroke-linejoin"]=this._join),this._flagMiter&&(e["stroke-miterlimit"]=this._miter),this.dashes&&this.dashes.length>0&&(e["stroke-dasharray"]=this.dashes.join(" "),e["stroke-dashoffset"]=this.dashes.offset||0),this._renderer.elem?E.setAttributes(this._renderer.elem,e):(e.id=this._id,this._renderer.elem=E.createElement("path",e),i.appendChild(this._renderer.elem)),this._flagClip){let s=E.getClip(this,i),r=this._renderer.elem;this._clip?(r.removeAttribute("id"),s.setAttribute("id",this.id),s.appendChild(r)):(s.removeAttribute("id"),r.setAttribute("id",this.id),this.parent._renderer.elem.appendChild(r))}if(this._flagMask)if(this._mask){let s=E.getRendererType(this._mask._renderer.type);E[s].render.call(this._mask,i),this._renderer.elem.setAttribute("clip-path","url(#"+this._mask.id+")")}else this._renderer.elem.removeAttribute("clip-path");return x.isFunction(this._renderer.onAfterRender)&&this._renderer.onAfterRender(),this.flagReset()}},points:{render:function(i){if(this._opacity===0&&!this._flagOpacity)return this;x.isFunction(this._renderer.onBeforeRender)&&this._renderer.onBeforeRender(),this._update();let e={};if((this._matrix.manual||this._flagMatrix)&&(e.transform="matrix("+this._matrix.toString()+")"),this._flagId&&(e.id=this._id),this._flagVertices||this._flagSize||this._flagSizeAttenuation){let s=this._size;if(!this._sizeAttenuation){let n=this.worldMatrix.elements,o=Ee(n[0],n[3],n[1],n[4],n[2],n[5]);s/=Math.max(o.scaleX,o.scaleY)}let r=E.pointsToString(this._renderer.collection,s);e.d=r}if(this._fill&&this._fill._renderer){this._renderer.hasFillEffect=!0,this._fill._update();let s=E.getRendererType(this._fill._renderer.type);E[s].render.call(this._fill,i,!0)}if(this._flagFill&&(e.fill=this._fill&&this._fill.id?"url(#"+this._fill.id+")":this._fill,this._renderer.hasFillEffect&&typeof this._fill.id>"u"&&(i.defs._flagUpdate=!0,delete this._renderer.hasFillEffect)),this._stroke&&this._stroke._renderer){this._renderer.hasStrokeEffect=!0,this._stroke._update();let s=E.getRendererType(this._stroke._renderer.type);E[s].render.call(this._stroke,i,!0)}return this._flagStroke&&(e.stroke=this._stroke&&this._stroke.id?"url(#"+this._stroke.id+")":this._stroke,this._renderer.hasStrokeEffect&&typeof this._stroke.id>"u"&&(i.defs._flagUpdate=!0,delete this._renderer.hasStrokeEffect)),this._flagLinewidth&&(e["stroke-width"]=this._linewidth),this._flagOpacity&&(e["stroke-opacity"]=this._opacity,e["fill-opacity"]=this._opacity),this._flagClassName&&(e.class=this.classList.join(" ")),this._flagVisible&&(e.visibility=this._visible?"visible":"hidden"),this.dashes&&this.dashes.length>0&&(e["stroke-dasharray"]=this.dashes.join(" "),e["stroke-dashoffset"]=this.dashes.offset||0),this._renderer.elem?E.setAttributes(this._renderer.elem,e):(e.id=this._id,this._renderer.elem=E.createElement("path",e),i.appendChild(this._renderer.elem)),x.isFunction(this._renderer.onAfterRender)&&this._renderer.onAfterRender(),this.flagReset()}},text:{render:function(i){this._update();let e={};if((this._matrix.manual||this._flagMatrix)&&(e.transform="matrix("+this._matrix.toString()+")"),this._flagId&&(e.id=this._id),this._flagFamily&&(e["font-family"]=this._family),this._flagSize&&(e["font-size"]=this._size),this._flagLeading&&(e["line-height"]=this._leading),this._flagAlignment&&(e["text-anchor"]=E.alignments[this._alignment]||this._alignment),this._flagBaseline&&(e["dominant-baseline"]=E.baselines[this._baseline]||this._baseline),this._flagStyle&&(e["font-style"]=this._style),this._flagWeight&&(e["font-weight"]=this._weight),this._flagDecoration&&(e["text-decoration"]=this._decoration),this._flagDirection&&(e.direction=this._direction),this._fill&&this._fill._renderer){this._renderer.hasFillEffect=!0,this._fill._update();let s=E.getRendererType(this._fill._renderer.type);E[s].render.call(this._fill,i,!0)}if(this._flagFill&&(e.fill=this._fill&&this._fill.id?"url(#"+this._fill.id+")":this._fill,this._renderer.hasFillEffect&&typeof this._fill.id>"u"&&(i.defs._flagUpdate=!0,delete this._renderer.hasFillEffect)),this._stroke&&this._stroke._renderer){this._renderer.hasStrokeEffect=!0,this._stroke._update();let s=E.getRendererType(this._stroke._renderer.type);E[s].render.call(this._stroke,i,!0)}if(this._flagStroke&&(e.stroke=this._stroke&&this._stroke.id?"url(#"+this._stroke.id+")":this._stroke,this._renderer.hasStrokeEffect&&typeof this._stroke.id>"u"&&(i.defs._flagUpdate=!0,delete this._renderer.hasStrokeEffect)),this._flagLinewidth&&(e["stroke-width"]=this._linewidth),this._flagOpacity&&(e.opacity=this._opacity),this._flagClassName&&(e.class=this.classList.join(" ")),this._flagVisible&&(e.visibility=this._visible?"visible":"hidden"),this.dashes&&this.dashes.length>0&&(e["stroke-dasharray"]=this.dashes.join(" "),e["stroke-dashoffset"]=this.dashes.offset||0),this._renderer.elem?E.setAttributes(this._renderer.elem,e):(e.id=this._id,this._renderer.elem=E.createElement("text",e),i.appendChild(this._renderer.elem)),this._flagClip){let s=E.getClip(this,i),r=this._renderer.elem;this._clip?(r.removeAttribute("id"),s.setAttribute("id",this.id),s.appendChild(r)):(s.removeAttribute("id"),r.setAttribute("id",this.id),this.parent._renderer.elem.appendChild(r))}if(this._flagMask)if(this._mask){let s=E.getRendererType(this._mask._renderer.type);E[s].render.call(this._mask,i),this._renderer.elem.setAttribute("clip-path","url(#"+this._mask.id+")")}else this._renderer.elem.removeAttribute("clip-path");return this._flagValue&&(this._renderer.elem.textContent=this._value),this.flagReset()}},"linear-gradient":{render:function(i,e){x.isFunction(this._renderer.onBeforeRender)&&this._renderer.onBeforeRender(),e||this._update();let t={};if(this._flagId&&(t.id=this._id),this._flagEndPoints&&(t.x1=this.left._x,t.y1=this.left._y,t.x2=this.right._x,t.y2=this.right._y),this._flagSpread&&(t.spreadMethod=this._spread),this._flagUnits&&(t.gradientUnits=this._units),this._renderer.elem?E.setAttributes(this._renderer.elem,t):(t.id=this._id,this._renderer.elem=E.createElement("linearGradient",t)),this._renderer.elem.parentNode===null&&i.defs.appendChild(this._renderer.elem),this._flagStops){let s=this._renderer.elem.childNodes.length!==this.stops.length;if(s)for(;this._renderer.elem.lastChild;)this._renderer.elem.removeChild(this._renderer.elem.lastChild);for(let r=0;r0&&(t.x*=-1),t.y>0&&(t.y*=-1)),(this._flagScale||this._flagLoaded||this._flagRepeat)&&(t.width=0,t.height=0,r)){switch(t.width=r.width,t.height=r.height,this._repeat){case"no-repeat":t.width+=1,t.height+=1;break}this._scale instanceof v?(t.width*=this._scale.x,t.height*=this._scale.y):(t.width*=this._scale,t.height*=this._scale),s.width=t.width,s.height=t.height}return(this._flagScale||this._flagLoaded)&&(this._renderer.image?E.setAttributes(this._renderer.image,s):this._renderer.image=E.createElement("image",s)),this._renderer.elem?Object.keys(t).length!==0&&E.setAttributes(this._renderer.elem,t):(t.id=this._id,t.patternUnits="userSpaceOnUse",this._renderer.elem=E.createElement("pattern",t)),this._renderer.elem.parentNode===null&&i.defs.appendChild(this._renderer.elem),this._renderer.elem&&this._renderer.image&&!this._renderer.appended&&(this._renderer.elem.appendChild(this._renderer.image),this._renderer.appended=!0),x.isFunction(this._renderer.onAfterRender)&&this._renderer.onAfterRender(),this.flagReset()}}},wt=class extends g{constructor(e){super(),this.domElement=e.domElement||E.createElement("svg"),this.scene=new K,this.scene.parent=this,this.defs=E.createElement("defs"),this.defs._flagUpdate=!1,this.domElement.appendChild(this.defs),this.domElement.defs=this.defs,this.domElement.style.overflow="hidden"}setSize(e,t){return this.width=e,this.height=t,E.setAttributes(this.domElement,{width:e,height:t}),this.trigger(g.Types.resize,e,t)}render(){return E.group.render.call(this.scene,this.domElement),E.defs.update(this.domElement),this}};w(wt,"Utils",E);var we={create:function(i,e,t){let s=i.createShader(i[t]);if(i.shaderSource(s,e),i.compileShader(s),!i.getShaderParameter(s,i.COMPILE_STATUS)){let n=i.getShaderInfoLog(s);throw i.deleteShader(s),new ee("unable to compile shader "+s+": "+n)}return s},types:{vertex:"VERTEX_SHADER",fragment:"FRAGMENT_SHADER"},path:{vertex:`
precision mediump float;
attribute vec2 a_position;
uniform mat3 u_matrix;
uniform vec2 u_resolution;
uniform vec4 u_rect;
varying vec2 v_textureCoords;
void main() {
vec2 rectCoords = (a_position * (u_rect.zw - u_rect.xy)) + u_rect.xy;
vec2 projected = (u_matrix * vec3(rectCoords, 1.0)).xy;
vec2 normal = projected / u_resolution;
vec2 clipspace = (normal * 2.0) - 1.0;
gl_Position = vec4(clipspace * vec2(1.0, -1.0), 0.0, 1.0);
v_textureCoords = a_position;
}
`,fragment:`
precision mediump float;
uniform sampler2D u_image;
varying vec2 v_textureCoords;
void main() {
vec4 texel = texture2D(u_image, v_textureCoords);
if (texel.a == 0.0) {
discard;
}
gl_FragColor = texel;
}
`},points:{vertex:`
precision mediump float;
attribute vec2 a_position;
uniform float u_size;
uniform mat3 u_matrix;
uniform vec2 u_resolution;
varying vec2 v_textureCoords;
void main() {
vec2 projected = (u_matrix * vec3(a_position, 1.0)).xy;
vec2 normal = projected / u_resolution;
vec2 clipspace = (normal * 2.0) - 1.0;
gl_PointSize = u_size;
gl_Position = vec4(clipspace * vec2(1.0, -1.0), 0.0, 1.0);
v_textureCoords = a_position;
}
`,fragment:`
precision mediump float;
uniform sampler2D u_image;
void main() {
vec4 texel = texture2D(u_image, gl_PointCoord);
if (texel.a == 0.0) {
discard;
}
gl_FragColor = texel;
}
`}};var It=Ae.Multiply,Ys=[1,0,0,0,1,0,0,0,1],Ze=new ve(9),Gs=re.Utils,qi=new v,fi=new ve([0,0,1,0,0,1,0,1,1,0,1,1]),L={precision:.9,isHidden:/(undefined|none|transparent)/i,canvas:Y.document?Y.document.createElement("canvas"):{getContext:function(){}},alignments:{left:"start",middle:"center",right:"end"},matrix:new Ae,group:{removeChild:function(i,e){if(i.children)for(let t=0;t0&&(p.lineDashOffset=q.offset||0,p.setLineDash(q));let oe,Le,Ne,ut,_t,pt,gt,mt;p.save(),p.scale(F.x,F.y),p.translate(te,xe),p.beginPath();for(let _e=0;_e=ie&&N&&(r=oe,c=D.controls&&D.controls.right||v.zero,u=r.controls&&r.controls.left||v.zero,D._relative?(a=c.x+D.x,h=c.y+D.y):(a=c.x,h=c.y),r._relative?(n=u.x+r.x,o=u.y+r.y):(n=u.x,o=u.y),_=r.x,d=r.y,p.bezierCurveTo(a,h,n,o,_,d));break;case k.line:p.lineTo(_,d);break;case k.move:oe=D,p.moveTo(_,d);break}}N&&p.closePath(),L.isHidden.test(M)||(y=M._renderer&&M._renderer.offset,y&&(p.save(),p.translate(-M._renderer.offset.x,-M._renderer.offset.y),p.scale(M._renderer.scale.x,M._renderer.scale.y)),p.fill(),y&&p.restore()),L.isHidden.test(R)||(y=R._renderer&&R._renderer.offset,y&&(p.save(),p.translate(-R._renderer.offset.x,-R._renderer.offset.y),p.scale(R._renderer.scale.x,R._renderer.scale.y),p.lineWidth=S/R._renderer.scale.x),p.stroke(),y&&p.restore()),p.restore()},getBoundingClientRect:function(i,e,t){let s=1/0,r=-1/0,n=1/0,o=-1/0,a,h;i.forEach(function(l){let f=l.x,c=l.y,u=l.controls,_,d,y,b,m,p;n=Math.min(c,n),s=Math.min(f,s),r=Math.max(f,r),o=Math.max(c,o),l.controls&&(m=u.left,p=u.right,!(!m||!p)&&(_=l._relative?m.x+f:m.x,d=l._relative?m.y+c:m.y,y=l._relative?p.x+f:p.x,b=l._relative?p.y+c:p.y,!(!_||!d||!y||!b)&&(n=Math.min(d,b,n),s=Math.min(_,y,s),r=Math.max(_,y,r),o=Math.max(d,b,o))))}),typeof e=="number"&&(n-=e,s-=e,r+=e,o+=e),a=r-s,h=o-n,t.top=n,t.left=s,t.right=r,t.bottom=o,t.width=a,t.height=h,t.centroid||(t.centroid={}),t.centroid.x=-s,t.centroid.y=-n},render:function(i,e,t){if(!this._visible||!this._opacity)return this;x.isFunction(this._renderer.onBeforeRender)&&this._renderer.onBeforeRender(),this._update();let s=t||this.parent,r=re.Utils.getRendererType(this._renderer.type),n=e[r],o=s._matrix.manual||s._flagMatrix,a=this._matrix.manual||this._flagMatrix,h=this._renderer.parent!==s,l=this._flagVertices||this._flagFill||this._fill instanceof W&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagEndPoints)||this._fill instanceof X&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagRadius||this._fill._flagCenter||this._fill._flagFocal)||this._fill instanceof V&&(this._fill._flagLoaded&&this._fill.loaded||this._fill._flagImage||this._fill._flagVideo||this._fill._flagRepeat||this._fill._flagOffset||this._fill._flagScale)||this._stroke instanceof W&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagEndPoints)||this._stroke instanceof X&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagRadius||this._stroke._flagCenter||this._stroke._flagFocal)||this._stroke instanceof V&&(this._stroke._flagLoaded&&this._stroke.loaded||this._stroke._flagImage||this._stroke._flagVideo||this._stroke._flagRepeat||this._stroke._flagOffset||this._fill._flagScale)||this._flagStroke||this._flagLinewidth||this._flagOpacity||s._flagOpacity||this._flagVisible||this._flagCap||this._flagJoin||this._flagMiter||this._flagScale||this.dashes&&this.dashes.length>0||!this._renderer.texture;if(o||a||h){this._renderer.matrix||(this._renderer.matrix=new ve(9)),this._matrix.toTransformArray(!0,Ze),It(Ze,s._renderer.matrix,this._renderer.matrix),this._renderer.scale instanceof v||(this._renderer.scale=new v);let c,u;this._scale instanceof v?(c=this._scale.x*s._renderer.scale.x,u=this._scale.y*s._renderer.scale.y):(c=this._scale*s._renderer.scale.x,u=this._scale*s._renderer.scale.y),this._renderer.scale.x=c<0?-c:c,this._renderer.scale.y=u<0?-u:u,h&&(this._renderer.parent=s)}if(this._mask){i.clear(i.STENCIL_BUFFER_BIT),i.enable(i.STENCIL_TEST),i.stencilFunc(i.ALWAYS,1,0),i.stencilOp(i.KEEP,i.KEEP,i.REPLACE),i.colorMask(!1,!1,!1,!1);let c=re.Utils.getRendererType(this._mask._renderer.type);L[c].render.call(this._mask,i,e,this),i.stencilFunc(i.EQUAL,1,255),i.stencilOp(i.KEEP,i.KEEP,i.KEEP),i.colorMask(!0,!0,!0,!0)}if(l?(this._renderer.rect||(this._renderer.rect={}),this._renderer.opacity=this._opacity*s._renderer.opacity,L.path.getBoundingClientRect(this._renderer.vertices,this._linewidth,this._renderer.rect),L.updateTexture.call(L,i,this)):(this._fill&&this._fill._update&&this._fill._update(),this._stroke&&this._stroke._update&&this._stroke._update()),this._clip&&!t||!this._renderer.texture)return this;e.current!==n&&(i.useProgram(n),i.bindBuffer(i.ARRAY_BUFFER,e.buffers.position),i.vertexAttribPointer(n.position,2,i.FLOAT,!1,0,0),i.enableVertexAttribArray(n.position),i.bufferData(i.ARRAY_BUFFER,fi,i.STATIC_DRAW),e.resolution.flagged||i.uniform2f(i.getUniformLocation(n,"u_resolution"),e.resolution.width,e.resolution.height),e.current=n),e.resolution.flagged&&i.uniform2f(i.getUniformLocation(n,"u_resolution"),e.resolution.width,e.resolution.height),i.bindTexture(i.TEXTURE_2D,this._renderer.texture);let f=this._renderer.rect;return i.uniformMatrix3fv(n.matrix,!1,this._renderer.matrix),i.uniform4f(n.rect,f.left,f.top,f.right,f.bottom),i.drawArrays(i.TRIANGLES,0,6),this._mask&&i.disable(i.STENCIL_TEST),x.isFunction(this._renderer.onAfterRender)&&this._renderer.onAfterRender(),this.flagReset()}},points:{updateCanvas:function(i,e){let t,s=this.canvas,r=this.ctx,n=i.renderer.ratio,o=e._stroke,a=e._linewidth,h=e._fill,l=e._renderer.opacity||e._opacity,f=e.dashes,c=e._size*n,u=c;L.isHidden.test(o)||(u+=a),s.width=Ut(u),s.height=s.width;let _=u/s.width,d=s.width/2,y=s.height/2;if(r.clearRect(0,0,s.width,s.height),h)if(typeof h=="string")r.fillStyle=h;else{let b=re.Utils.getRendererType(h._renderer.type);L[b].render.call(h,r,e),r.fillStyle=h._renderer.effect}if(o){if(typeof o=="string")r.strokeStyle=o;else{let b=re.Utils.getRendererType(o._renderer.type);L[b].render.call(o,r,e),r.strokeStyle=o._renderer.effect}a&&(r.lineWidth=a/_)}typeof l=="number"&&(r.globalAlpha=l),f&&f.length>0&&(r.lineDashOffset=f.offset||0,r.setLineDash(f)),r.save(),r.translate(d,y),r.scale(L.precision,L.precision),r.beginPath(),r.arc(0,0,c/_*.5,0,J),r.restore(),closed&&r.closePath(),L.isHidden.test(h)||(t=h._renderer&&h._renderer.offset,t&&(r.save(),r.translate(-h._renderer.offset.x,-h._renderer.offset.y),r.scale(h._renderer.scale.x,h._renderer.scale.y)),r.fill(),t&&r.restore()),L.isHidden.test(o)||(t=o._renderer&&o._renderer.offset,t&&(r.save(),r.translate(-o._renderer.offset.x,-o._renderer.offset.y),r.scale(o._renderer.scale.x,o._renderer.scale.y),r.lineWidth=a/o._renderer.scale.x),r.stroke(),t&&r.restore())},render:function(i,e,t){if(!this._visible||!this._opacity)return this;x.isFunction(this._renderer.onBeforeRender)&&this._renderer.onBeforeRender(),this._update();let s=this._size,r=t||this.parent,n=e[this._renderer.type],o=this._sizeAttenuation,a=this._stroke,h=this._linewidth,l=r._matrix.manual||r._flagMatrix,f=this._matrix.manual||this._flagMatrix,c=this._renderer.parent!==r,u=this._renderer.vertices,_=this._renderer.collection.length,d=this._flagVertices,y=this._flagFill||this._fill instanceof W&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagEndPoints)||this._fill instanceof X&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagRadius||this._fill._flagCenter||this._fill._flagFocal)||this._fill instanceof V&&(this._fill._flagLoaded&&this._fill.loaded||this._fill._flagImage||this._fill._flagVideo||this._fill._flagRepeat||this._fill._flagOffset||this._fill._flagScale)||this._stroke instanceof W&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagEndPoints)||this._stroke instanceof X&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagRadius||this._stroke._flagCenter||this._stroke._flagFocal)||this._stroke instanceof V&&(this._stroke._flagLoaded&&this._stroke.loaded||this._stroke._flagImage||this._stroke._flagVideo||this._stroke._flagRepeat||this._stroke._flagOffset||this._fill._flagScale)||this._flagStroke||this._flagLinewidth||this._flagOpacity||r._flagOpacity||this._flagVisible||this._flagScale||this.dashes&&this.dashes.length>0||!this._renderer.texture;if(l||f||c){this._renderer.matrix||(this._renderer.matrix=new ve(9)),this._matrix.toTransformArray(!0,Ze),It(Ze,r._renderer.matrix,this._renderer.matrix),this._renderer.scale instanceof v||(this._renderer.scale=new v);let b,m;this._scale instanceof v?(b=this._scale.x*r._renderer.scale.x,m=this._scale.y*r._renderer.scale.y):(b=this._scale*r._renderer.scale.x,m=this._scale*r._renderer.scale.y),this._renderer.scale.x=b<0?-b:b,this._renderer.scale.y=m<0?-m:m,c&&(this._renderer.parent=r)}if(d){let b=this._renderer.positionBuffer;b&&i.deleteBuffer(b),this._renderer.positionBuffer=i.createBuffer(),i.bindBuffer(i.ARRAY_BUFFER,this._renderer.positionBuffer),i.vertexAttribPointer(n.position,2,i.FLOAT,!1,0,0),i.enableVertexAttribArray(n.position),i.bufferData(i.ARRAY_BUFFER,u,i.STATIC_DRAW)}return y?(this._renderer.opacity=this._opacity*r._renderer.opacity,L.updateTexture.call(L,i,this)):(this._fill&&this._fill._update&&this._fill._update(),this._stroke&&this._stroke._update&&this._stroke._update()),this._clip&&!t||!this._renderer.texture?this:(L.isHidden.test(a)||(s+=h),s/=L.precision,o&&(s*=Math.max(this._renderer.scale.x,this._renderer.scale.y)),e.current!==n&&(i.useProgram(n),e.resolution.flagged||i.uniform2f(i.getUniformLocation(n,"u_resolution"),e.resolution.width,e.resolution.height),e.current=n),e.resolution.flagged&&i.uniform2f(i.getUniformLocation(n,"u_resolution"),e.resolution.width,e.resolution.height),i.bindTexture(i.TEXTURE_2D,this._renderer.texture),i.uniformMatrix3fv(n.matrix,!1,this._renderer.matrix),i.uniform1f(n.size,s*e.resolution.ratio),i.drawArrays(i.POINTS,0,_),x.isFunction(this._renderer.onAfterRender)&&this._renderer.onAfterRender(),this.flagReset())}},text:{updateCanvas:function(i,e){let t=this.canvas,s=this.ctx,r=i.renderer.ratio,n=qi.copy(e._renderer.scale).multiply(r),o=e._stroke,a=e._linewidth,h=e._fill,l=e._renderer.opacity||e._opacity,f=e.dashes,c=e._decoration,u=e._direction;t.width=Math.max(Math.ceil(e._renderer.rect.width*n.x),1),t.height=Math.max(Math.ceil(e._renderer.rect.height*n.y),1);let _=e._renderer.rect.centroid,d=_.x,y=_.y,b,m,p,A,F,R,S,M,I,P,O,j=h._renderer&&h._renderer.offset&&o._renderer&&o._renderer.offset;if(s.clearRect(0,0,t.width,t.height),j||(s.font=[e._style,e._weight,e._size+"px/"+e._leading+"px",e._family].join(" ")),s.textAlign="center",s.textBaseline="middle",s.textDirection=u,h)if(typeof h=="string")s.fillStyle=h;else{let N=re.Utils.getRendererType(h._renderer.type);L[N].render.call(h,s,e),s.fillStyle=h._renderer.effect}if(o){if(typeof o=="string")s.strokeStyle=o;else{let N=re.Utils.getRendererType(o._renderer.type);L[N].render.call(o,s,e),s.strokeStyle=o._renderer.effect}a&&(s.lineWidth=a)}if(typeof l=="number"&&(s.globalAlpha=l),f&&f.length>0&&(s.lineDashOffset=f.offset||0,s.setLineDash(f)),s.save(),s.scale(n.x,n.y),s.translate(d,y),L.isHidden.test(h)||(h._renderer&&h._renderer.offset?(R=h._renderer.scale.x,S=h._renderer.scale.y,s.save(),s.translate(-h._renderer.offset.x,-h._renderer.offset.y),s.scale(R,S),b=e._size/h._renderer.scale.y,m=e._leading/h._renderer.scale.y,s.font=[e._style,e._weight,b+"px/",m+"px",e._family].join(" "),p=h._renderer.offset.x/h._renderer.scale.x,A=h._renderer.offset.y/h._renderer.scale.y,s.fillText(e.value,p,A),s.restore()):s.fillText(e.value,0,0)),L.isHidden.test(o)||(o._renderer&&o._renderer.offset?(R=o._renderer.scale.x,S=o._renderer.scale.y,s.save(),s.translate(-o._renderer.offset.x,-o._renderer.offset.y),s.scale(R,S),b=e._size/o._renderer.scale.y,m=e._leading/o._renderer.scale.y,s.font=[e._style,e._weight,b+"px/",m+"px",e._family].join(" "),p=o._renderer.offset.x/o._renderer.scale.x,A=o._renderer.offset.y/o._renderer.scale.y,F=a/o._renderer.scale.x,s.lineWidth=F,s.strokeText(e.value,p,A),s.restore()):s.strokeText(e.value,0,0)),/(underline|strikethrough)/i.test(c)){let N=s.measureText(e.value);switch(c){case"underline":I=N.actualBoundingBoxDescent,O=N.actualBoundingBoxDescent;break;case"strikethrough":I=0,O=0;break}M=-N.width/2,P=N.width/2,s.lineWidth=Math.max(Math.floor(e._size/15),1),s.strokeStyle=s.fillStyle,s.beginPath(),s.moveTo(M,I),s.lineTo(P,O),s.stroke()}s.restore()},getBoundingClientRect:function(i,e){let t=L.ctx;t.font=[i._style,i._weight,i._size+"px/"+i._leading+"px",i._family].join(" "),t.textAlign="center",t.textBaseline=re.Utils.baselines[i._baseline]||i._baseline;let s=t.measureText(i._value),r=s.width,n=1.15*(s.actualBoundingBoxAscent+s.actualBoundingBoxDescent);this._linewidth&&!L.isHidden.test(this._stroke)&&(r+=this._linewidth*2,n+=this._linewidth*2);let o=r/2,a=n/2;switch(L.alignments[i._alignment]||i._alignment){case L.alignments.left:i.direction==="ltr"?(e.left=0,e.right=r):(e.left=-r,e.right=0);break;case L.alignments.right:i.direction==="ltr"?(e.left=-r,e.right=0):(e.left=0,e.right=r);break;default:e.left=-o,e.right=o}switch(i._baseline){case"bottom":e.top=-n,e.bottom=0;break;case"top":e.top=0,e.bottom=n;break;case"baseline":e.top=-a*1.5,e.bottom=a*.5;break;default:e.top=-a,e.bottom=a}e.width=r,e.height=n,e.centroid||(e.centroid={}),e.centroid.x=o,e.centroid.y=a},render:function(i,e,t){if(!this._visible||!this._opacity)return this;x.isFunction(this._renderer.onBeforeRender)&&this._renderer.onBeforeRender(),this._update();let s=t||this.parent,r=e[this._renderer.type],n=s._matrix.manual||s._flagMatrix,o=this._matrix.manual||this._flagMatrix,a=this._renderer.parent!==s,h=this._flagVertices||this._flagFill||this._fill instanceof W&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagEndPoints)||this._fill instanceof X&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagRadius||this._fill._flagCenter||this._fill._flagFocal)||this._fill instanceof V&&(this._fill._flagLoaded&&this._fill.loaded||this._fill._flagImage||this._fill._flagVideo||this._fill._flagRepeat||this._fill._flagOffset||this._fill._flagScale)||this._stroke instanceof W&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagEndPoints)||this._stroke instanceof X&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagRadius||this._stroke._flagCenter||this._stroke._flagFocal)||this._stroke instanceof V&&(this._stroke._flagLoaded&&this._stroke.loaded||this._stroke._flagImage||this._stroke._flagVideo||this._stroke._flagRepeat||this._stroke._flagOffset||this._fill._flagScale)||this._flagStroke||this._flagLinewidth||this._flagOpacity||s._flagOpacity||this._flagVisible||this._flagScale||this._flagValue||this._flagFamily||this._flagSize||this._flagLeading||this._flagAlignment||this._flagBaseline||this._flagStyle||this._flagWeight||this._flagDecoration||this.dashes&&this.dashes.length>0||!this._renderer.texture;if(n||o||a){this._renderer.matrix||(this._renderer.matrix=new ve(9)),this._matrix.toTransformArray(!0,Ze),It(Ze,s._renderer.matrix,this._renderer.matrix),this._renderer.scale instanceof v||(this._renderer.scale=new v);let f,c;this._scale instanceof v?(f=this._scale.x*s._renderer.scale.x,c=this._scale.y*s._renderer.scale.y):(f=this._scale*s._renderer.scale.x,c=this._scale*s._renderer.scale.y),this._renderer.scale.x=f<0?-f:f,this._renderer.scale.y=c<0?-c:c,a&&(this._renderer.parent=s)}if(this._mask){i.clear(i.STENCIL_BUFFER_BIT),i.enable(i.STENCIL_TEST),i.stencilFunc(i.ALWAYS,1,0),i.stencilOp(i.KEEP,i.KEEP,i.REPLACE),i.colorMask(!1,!1,!1,!1);let f=re.Utils.getRendererType(this._mask._renderer.type);L[f].render.call(this._mask,i,e,this),i.stencilFunc(i.EQUAL,1,255),i.stencilOp(i.KEEP,i.KEEP,i.KEEP),i.colorMask(!0,!0,!0,!0)}if(h?(this._renderer.rect||(this._renderer.rect={}),this._renderer.opacity=this._opacity*s._renderer.opacity,L.text.getBoundingClientRect(this,this._renderer.rect),L.updateTexture.call(L,i,this)):(this._fill&&this._fill._update&&this._fill._update(),this._stroke&&this._stroke._update&&this._stroke._update()),this._clip&&!t||!this._renderer.texture)return this;e.current!==r&&(i.useProgram(r),i.bindBuffer(i.ARRAY_BUFFER,e.buffers.position),i.vertexAttribPointer(r.position,2,i.FLOAT,!1,0,0),i.enableVertexAttribArray(r.position),i.bufferData(i.ARRAY_BUFFER,fi,i.STATIC_DRAW),e.resolution.flagged||i.uniform2f(i.getUniformLocation(r,"u_resolution"),e.resolution.width,e.resolution.height),e.current=r),e.resolution.flagged&&i.uniform2f(i.getUniformLocation(r,"u_resolution"),e.resolution.width,e.resolution.height),i.bindTexture(i.TEXTURE_2D,this._renderer.texture);let l=this._renderer.rect;return i.uniformMatrix3fv(r.matrix,!1,this._renderer.matrix),i.uniform4f(r.rect,l.left,l.top,l.right,l.bottom),i.drawArrays(i.TRIANGLES,0,6),this._mask&&i.disable(i.STENCIL_TEST),x.isFunction(this._renderer.onAfterRender)&&this._renderer.onAfterRender(),this.flagReset()}},"linear-gradient":{render:function(i,e){if(!(!i.canvas.getContext("2d")||!e)){if(x.isFunction(this._renderer.onBeforeRender)&&this._renderer.onBeforeRender(),this._update(),!this._renderer.effect||this._flagEndPoints||this._flagStops||this._flagUnits){let t,s=this.left._x,r=this.left._y,n=this.right._x,o=this.right._y;/objectBoundingBox/i.test(this._units)&&(t=e.getBoundingClientRect(!0),s=(s-.5)*t.width,r=(r-.5)*t.height,n=(n-.5)*t.width,o=(o-.5)*t.height),this._renderer.effect=i.createLinearGradient(s,r,n,o);for(let a=0;a"u"?nt(o):s,this.domElement.width=e*this.ratio,this.domElement.height=t*this.ratio,x.isObject(this.domElement.style)&&x.extend(this.domElement.style,{width:e+"px",height:t+"px"}),this._renderer.matrix[0]=this._renderer.matrix[4]=this._renderer.scale=this.ratio,this._flagMatrix=!0,r=e*this.ratio,n=t*this.ratio,o.viewport(0,0,r,n),this.programs.resolution.width=r,this.programs.resolution.height=n,this.programs.resolution.ratio=this.ratio,this.programs.resolution.flagged=!0,this.trigger(g.Types.resize,e,t,s)}render(){let e=this.ctx;return this.overdraw||e.clear(e.COLOR_BUFFER_BIT),L.group.render.call(this.scene,e,this.programs),this._flagMatrix=!1,this.programs.resolution.flagged=!0,this}};w(vt,"Utils",L);var qs=x.extend({Error:ee,getRatio:nt,read:$,xhr:ai},x,ae,Yt,Dt),dt=class{_events=new g;get _bound(){return this._events._bound}set _bound(e){this._events._bound=e}addEventListener(){return this._events.addEventListener.apply(this,arguments)}on(){return this._events.addEventListener.apply(this,arguments)}bind(){return this._events.addEventListener.apply(this,arguments)}removeEventListener(){return this._events.removeEventListener.apply(this,arguments)}off(){return this._events.removeEventListener.apply(this,arguments)}unbind(){return this._events.removeEventListener.apply(this,arguments)}dispatchEvent(){return this._events.dispatchEvent.apply(this,arguments)}trigger(){return this._events.dispatchEvent.apply(this,arguments)}listen(){return this._events.listen.apply(this,arguments)}ignore(){return this._events.ignore.apply(this,arguments)}type="";renderer=null;scene=null;width=0;height=0;frameCount=0;timeDelta=0;playing=!1;constructor(e){let t=x.defaults(e||{},{fullscreen:!1,fitted:!1,width:640,height:480,type:dt.Types.svg,autostart:!1});if(x.each(t,function(s,r){/fullscreen/i.test(r)||/autostart/i.test(r)||(this[r]=s)},this),x.isElement(t.domElement)){let s=t.domElement.tagName.toLowerCase();/^(CanvasRenderer-canvas|WebGLRenderer-canvas|SVGRenderer-svg)$/.test(this.type+"-"+s)||(this.type=dt.Types[s])}this.renderer=new dt[this.type](this),this.setPlaying(t.autostart),this.frameCount=0,t.fullscreen?(this.fit=Ks.bind(this),this.fit.domElement=window,this.fit.attached=!0,x.extend(document.body.style,{overflow:"hidden",margin:0,padding:0,top:0,left:0,right:0,bottom:0,position:"fixed"}),x.extend(this.renderer.domElement.style,{display:"block",top:0,left:0,right:0,bottom:0,position:"fixed"}),me.bind(this.fit.domElement,"resize",this.fit),this.fit()):t.fitted?(this.fit=$s.bind(this),x.extend(this.renderer.domElement.style,{display:"block"})):typeof t.width=="number"&&typeof t.height=="number"&&(this.renderer.setSize(t.width,t.height,this.ratio),this.width=t.width,this.height=t.height),this.renderer.bind(g.Types.resize,Js.bind(this)),this.scene=this.renderer.scene,dt.Instances.push(this),t.autostart&&kt.init()}appendTo(e){return e.appendChild(this.renderer.domElement),this.fit&&(this.fit.domElement!==window&&(this.fit.domElement=e,this.fit.attached=!1),this.update()),this}play(){return this.playing=!0,kt.init(),this.trigger(g.Types.play)}pause(){return this.playing=!1,this.trigger(g.Types.pause)}setPlaying(e){this.playing=e}release(e){let t,s,r;if(typeof e>"u")return this.release(this.scene);if(typeof e.unbind=="function"&&e.unbind(),typeof e.fill=="object"&&"unbind"in e.fill&&e.fill.unbind(),typeof e.stroke=="object"&&"unbind"in e.stroke&&e.stroke.unbind(),e.vertices){if(typeof e.vertices.unbind=="function")try{e.vertices.unbind()}catch{}for(t=0;t